ROS多机器人协同建图

一、环境配置

参考turtlebot3-多机交互程序:多机交互-创客智造
上位机和小车的基本通信配置见:静态IP+host/master设置
主体代码可访问github:ros-multi-robot

git clone https://github.com/shunyiwang/ROS_MULTI/MULTI_ROBOT.git

小车:

  • Ubuntu-mate16.04+ROSkinetic;
  • 必要的bringup.launch文件(包括雷达信息、IMU、编码器信息、电器驱动),详情见bringup详解

上位机:

  • Ubuntu16.04+ROSkinetic
  • 安装多机地图合并软件包ros-kinetic-multirobot-map-merge:
sudo apt-get install ros-kinetic-multirobot-map-merge
git clone https://github.com/ROBOTIS-GIT/turbot3.git
cd ~/catkin_ws && catkin_make

二、主要命令

  • 开启小车底盘和雷达(小车端),其他小车同理:
roslaunch clbrobot robot.launch robot_name:="robot1"
  • 开启单个小车的slam建图并设定初始位置和建图算法(以下均在上位机端运行):
roslaunch multi_slam multi_slam.launch robot_name:="robot1" robot_y_pos:="10.0" slam_methods:=gmapping
  • 开启键盘控制:
roslaunch multi_slam keyboard.launch robot_name:="robot1"
  • 运行多机建图并打开rviz:
roslaunch multi_slam map_merge.launch
  • 完成多机建图后保存地图
rosrun map_server map_saver -f /home/catkin_ws/src/multi_robot/map
  • 修改 map.yaml 中的 origin 为:
origin: [0.000000, 0.000000, 0.000000]

三、模块分析

multi_slam.launch 代码如下:

<launch>
  <arg name="robot_name" default=""/>
  <arg name="robot_x_pos" default="0.0"/>
  <arg name="robot_y_pos" default="0.0"/>
  <arg name="robot_z_pos" default="0.0"/>
  <arg name="robot_yaw"   default="0.0"/>
  <arg name="slam_methods" default="gmapping" doc="slam type [gmapping, hector, karto]"/>
  
  <!-- robot_model -->
  <include file="$(find robot_model)/model_robot.launch">   
    <arg name="robot_name" value="$(arg robot_name)"/>
  </include>
  
  <!-- init_pose -->
  <include file="$(find multi_slam)/launch/init_pose.launch">   
    <arg name="robot_name" value="$(arg robot_name)"/>
    <arg name="robot_x_pos"   value="$(arg robot_x_pos)"/>
    <arg name="robot_y_pos"   value="$(arg robot_y_pos)"/>
    <arg name="robot_z_pos"   value="$(arg robot_z_pos)"/>
    <arg name="robot_yaw" value="$(arg robot_yaw)"  />
  </include>
  
  <!-- slam_methods -->
  <include file="$(find multi_slam)/launch/slam.launch">   
    <arg name="robot_name" value="$(arg robot_name)"/>
    <arg name="slam_methods" value="$(arg slam_methods)"/>
  </include>

</launch>
           

map_merge.launch 代码如下:

<launch>
  <!-- multirobot_map_merge -->
  <node pkg="multirobot_map_merge" type="map_merge" respawn="false" name="map_merge" output="screen">
    <param name="robot_map_topic" value="map"/>
    <param name="robot_namespace" value="robot"/>
    <param name="merged_map_topic" value="map"/>
    <param name="world_frame" value="map"/>
    <param name="known_init_poses" value="true"/>
    <param name="merging_rate" value="0.5"/>
    <param name="discovery_rate" value="0.05"/>
    <param name="estimation_rate" value="0.1"/>
    <param name="estimation_confidence" value="1.0"/>
  </node>

  <!-- multirobot_rviz -->
  <include file="$(find multi_slam)/launch/multi_rviz.launch"/>
</launch>

四、实现效果

rqt_tf_tree

slam_tf_tree

rqt_graph

rqt_graph

rviz效果图

建图

建图结果

建图结果下一章:ROS多机器人导航

  • 5
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值