ROS实战之多个turtlebot2建图

ROS实战之多个turtlebot2建图

首先在远程主机和turtlebot的上位机配置好turtlebot2的各启动文件。具体可以参考创客智造。
1.远程控制多turtlebot
(1)在各个turtlebot主机上配置网络:

sudo gedit ~/.bashrc

export ROS_HOSTNAME={turtlebot的ip}
export ROS_MASTER_URI=http://{主机的ip}:11311

写入bashrc文件的最后。
(2)在远程控制的PC端配置网络:

sudo gedit ~/.bashrc

export ROS_HOSTNAME={主机的ip}
export ROS_MASTER_URI=http://{主机的ip}:11311

写入bashrc文件的最后。
(2)主机控制多turtlebot
首先主机端启动roscre。
然后分别ssh连接到各turtlebot上

ssh cuiyunxuan@{启动的机器人的ip} 

然后在各个机器人终端启动底盘,同时加上命名:
例如其中一台turtlebot的终端输入:

ROS_NAMESPACE=tb2_0 roslaunch turtlebot_bringup minimal.launch --screen

加上ROS_NAMESPACE=tb2_0,将使得小车对应的各话题前带上/tb2_0的命名空间,方便后续多地图融合及多机器人导航的配置。
同样,另一台turtlebot的终端输入:

ROS_NAMESPACE=tb2_1 roslaunch turtlebot_bringup minimal.launch --screen

最后在主机打开两个终端分别启动键盘控制:

ROS_NAMESPACE=tb2_0 roslaunch turtlebot_teleop keyboard_teleop.launch
ROS_NAMESPACE=tb2_1 roslaunch turtlebot_teleop keyboard_teleop.launch

2.多个turtlebot2协同建图
(1)各小车分别启动建图模块
另起两个终端并ssh连接到两个turtlebot小车上并分别启动建图的launch文件:

ROS_NAMESPACE=tb2_0 roslaunch turtlebot_navigation rplidar_gmapping_demo.launch 
ROS_NAMESPACE=tb2_1 roslaunch turtlebot_navigation rplidar_gmapping_demo.launch 

(2)启动map-merge融合地图
在主机端另起两个新的终端输入:

 roslaunch turtlebot_navigation multi_map_merge.launch 
 rviz

具体multi_map_merge.launch文件的内容如下:

<launch>
  <arg name="first_tb2"  default="tb2_0"/>
  <arg name="second_tb2" default="tb2_1"/>
 
  <arg name="first_tb2_x_pos" default="0.0"/>
  <arg name="first_tb2_y_pos" default="0.5"/>
  <arg name="first_tb2_z_pos" default=" 0.0"/>
  <arg name="first_tb2_yaw"   default=" 0.0"/>
 
  <arg name="second_tb2_x_pos" default="0.0"/>
  <arg name="second_tb2_y_pos" default="-0.5"/>
  <arg name="second_tb2_z_pos" default=" 0.0"/>
  <arg name="second_tb2_yaw"   default=" 0.0"/>
 
 
  <group ns="$(arg first_tb2)/map_merge">
    <param name="init_pose_x"   value="$(arg first_tb2_x_pos)"/>
    <param name="init_pose_y"   value="$(arg first_tb2_y_pos)"/>
    <param name="init_pose_z"   value="$(arg first_tb2_z_pos)"/>
    <param name="init_pose_yaw" value="$(arg first_tb2_yaw)"  />
  </group>
 
  <group ns="$(arg second_tb2)/map_merge">
    <param name="init_pose_x"   value="$(arg second_tb2_x_pos)"/>
    <param name="init_pose_y"   value="$(arg second_tb2_y_pos)"/>
    <param name="init_pose_z"   value="$(arg second_tb2_z_pos)"/>
    <param name="init_pose_yaw" value="$(arg second_tb2_yaw)"  />
</group>
 
 
  <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="tb2"/>
    <param name="merged_map_topic" value="map"/>
    <param name="world_frame" value="map"/>
    <param name="known_init_poses" value="false"/>
    <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>
 
  <node pkg="tf" type="static_transform_publisher" name="world_to_$(arg first_tb2)_tf_broadcaster"  args="0 0 0 0 0 0 /map /$(arg first_tb2)/map 100"/>
  <node pkg="tf" type="static_transform_publisher" name="world_to_$(arg second_tb2)_tf_broadcaster" args="0 0 0 0 0 0 /map /$(arg second_tb2)/map 100"/>
  <!-- <node pkg="tf" type="static_transform_publisher" name="world_to_$(arg third_tb2)_tf_broadcaster" args="0 0 0 0 0 0 /map /$(arg second_tb2)/map 100"/> -->
 
 
 
</launch>

控制小车运动实现地图构建与融合。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值