基于ROS1.0的stdr simulation搭建多移动机器人(multiple robots)仿真系统

本文介绍了如何在ROS Melodic和Ubuntu 18.04上利用stdr simulation和Gazebo搭建多移动机器人的仿真环境。重点讲述了配置namespace、tf_prefixes参数以区分多个机器人,并提供了launch文件示例。完成配置后,可在Gazebo中成功创建并控制多个 Turtlebot2 进行导航。同时,文章提到了导航包的配置方法及解决tf2错误的技巧。
摘要由CSDN通过智能技术生成

 

多移动机器人的概念就不叙述了,直接讲如何正确的在ROS系统下构建基于stdr simulation和gazebo平台下的仿真实验。

1    前提准备

安装好如下几个基本的包:

  1. stdr simulation
  2. amcl
  3. move_base
  4. gazebo_ros
  5. turtlebot2的完整包

等其他必要的ROS环境

2    单移动机器人和多移动机器人的配置区别

单移动机器人比较简单,也不用关注与namespace这些问题,二多移动机器人,因为每个机器人都具备同样的基本功能,因此不可避免的需要用到namespace(以下简称ns)的概念将他们区分开,这样就可以一直通过namespace复制同样基本功能的机器人了。如果你不采用ns的方式,而是简单的不断生成新的机器人,即使你保证他们的位置不同,但是因为node名重复,ROS会kill之前的node保留最后一个生成的机器人状态。

但是除了namespace外,还需要配置tf_prefixes的参数值,这是最大的区别之处,也是最重要的,能否成功的生成多个移动机器人。

2.1    要明确的概念

构造多移动机器人在一张map中,这个map可以使slam构建的,无论你是用cartographer,hector_slam,gmapping等。我们都是希望map只有一张,每个机器人是全局共享的。

每个机器人之间除了初始时刻的位姿不同以外,其他的结构,携带的传感器类型都完全一样,没有差别。当然你可以根据自己的需求使得他们不同。如果希望每个机器人都可以通过amcl和move_base进行自主导航和实时定位,那么每个机器人都应当具备amcl和move_base。

因此,map是全局的,不需要ns,机器人的构建,amcl和move_base是需要ns的,因为每个移动机器人都需要具备这些属性。

如下结构所示:

                                        /map
        /robot1/robot_state_publisher        /robot2/robot_state_publisher
        /robot1/robot_pose_ekf               /robot2/robot_pose_ekf
        /robot1/amcl                         /robot2/amcl
        /robot1/move_base                    /robot2/move_base
        /robot1/laser_0                      /robot2/laser_0
        /robot1/sensor0                      /robot2/sensor0
        /robot1/sensor1                      /robot2/sensor0
        .......                              ........

2.2    配置单个机器人的launch文件,然后就可以在其他launch文件中无限的复制单个移动机器人的个数了:

2.2.1      在你的工作空间下新建一个项目:

cd ~/catkin_ns/src
catkin_creat_pkg multi_robots
cd multi_robots
mkdir launch map param rviz 
tree

最终如下所示:

~/catkin_ws/src/multi_robots$ tree
.
├── CMakeLists.txt
├── launch
├── map
├── package.xml
├── param
└── rviz

4 directories, 2 files

在launch文件下,新建one_robot.launch

内容如下:

<!-- 
这是在gazebo平台的仿真实验
本文件名为:one_robot.launch
-->
<launch>
    <arg name="robot_name"/>
    <arg name="init_pose"/>

    <node name="spawn_minibot_model" pkg="gazebo_ros" type="spawn_model"
     args="$(arg init_pose) -urdf -param /robot_description -model $(arg 
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值