2.驱使机器人建图

由于课题任务的安排,并不需要搞多机器人建图的融合,笔者在此搞了半天的多地图融合,就是没有搞出来,不知道是命名空间的问题还是主题名哪里设置的不对,就用一个机器人创建了一张地图,然后在这张地图上实现导航等功能。以后如果有时间了,再回来研究地图融合。

1.建一个建图的父launch(gmap_main,launch)

catkin_create_pkg gmap_map

<launch>

  <!--- Run gmappings-->
  <include file="$(find multiple_gmapping)/launch/gmapping_robot1.launch"/>

  <include file="$(find multiple_gmapping)/launch/gmapping_robot2.launch"/>

  <include file="$(find multiple_gmapping)/launch/gmapping_robot3.launch"/>

 <!---  Merge of maps -->
  <include file="$(find multirobot_map_merge)/launch/map_merge.launch"/>   


  <!-- Rviz -->
  <arg name="model" default="$(find wpr1_bringup)/urdf/wpr1.urdf"/>

  <param name="robot_description" command="$(find xacro)/xacro $(arg model)" />
  <arg name="rvizconfig" default="$(find wpr_simulation)/rviz/turtlebots_rrt_exploration.rviz" />
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />


</launch>

1.1 为三个机器人皆添加建图部分的程序

  <!--- Run gmappings-->
  <include file="$(find multiple_gmapping)/launch/gmapping_robot1.launch"/>

  <include file="$(find multiple_gmapping)/launch/gmapping_robot2.launch"/>

  <include file="$(find multiple_gmapping)/launch/gmapping_robot3.launch"/>

1.2 构建多地图融合部分

 <!---  Merge of maps -->
  <include file="$(find multirobot_map_merge)/launch/map_merge.launch"/>   

2.gmapping_robot1.launch

<launch>
<group ns="/robot_1">


  <!-- <arg name="scan_topic"  default="/robot1_tf/laser/scan" /> -->
  <arg name="base_frame"  default="/robot_1/base_footprint"/>
  <arg name="odom_frame"  default="/robot_1/odom"/>
  <arg name="map_frame"  default="/robot_1/map"/>

  <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping_robot1" output="screen" ns="/robot_1">
    <param name="base_frame" value="$(arg base_frame)"/>
    <param name="map_frame" value="$(arg map_frame)"/>
    <param name="odom_frame" value="$(arg odom_frame)"/>
    <param name="map_update_interval" value="5.0"/>
    <param name="maxUrange" value="6.0"/>
    <param name="maxRange" value="8.0"/>
    <param name="sigma" value="0.05"/>
    <param name="kernelSize" value="1"/>
    <param name="lstep" value="0.05"/>
    <param name="astep" value="0.05"/>
    <param name="iterations" value="5"/>
    <param name="lsigma" value="0.075"/>
    <param name="ogain" value="3.0"/>
    <param name="lskip" value="0"/>
    <param name="minimumScore" value="200"/>
    <param name="srr" value="0.01"/>
    <param name="srt" value="0.02"/>
    <param name="str" value="0.01"/>
    <param name="stt" value="0.02"/>
    <param name="linearUpdate" value="0.5"/>
    <param name="angularUpdate" value="0.436"/>
    <param name="temporalUpdate" value="-1.0"/>
    <param name="resampleThreshold" value="0.5"/>
    <param name="particles" value="80"/>

    <param name="xmin" value="-1.0"/>
    <param name="ymin" value="-1.0"/>
    <param name="xmax" value="1.0"/>
    <param name="ymax" value="1.0"/>

    <param name="delta" value="0.05"/>
    <param name="llsamplerange" value="0.01"/>
    <param name="llsamplestep" value="0.01"/>
    <param name="lasamplerange" value="0.005"/>
    <param name="lasamplestep" value="0.005"/>
    <!-- <remap from="scan" to="$(arg scan_topic)"/> -->
    <remap from="map" to="/robot_1/map" />


  </node>
  </group>
</launch>

3.map_merge.launch

地图融合模块的官方介绍:http://wiki.ros.org/multirobot_map_merge

<launch>
<group ns="map_merge">
  <node pkg="qiming_map_merge" type="map_merge" respawn="false" name="map_merge" output="screen">
    <param name="robot_map_topic" value="map"/>
    <!-- <param name="robot_map_updates_topic" value="map_updates"/> -->
    <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="false"/>

    <group ns="/robot_1/map_merge">
    <param name="init_pose_x" value="8.950 "/>
    <param name="init_pose_y" value="-15.4501"/>
    <param name="init_pose_z" value="0.0"/>
    <param name="init_pose_yaw" value="0.0"/>
    </group>
    <group ns="/robot_2/map_merge">
    <param name="init_pose_x" value="25.8001"/>
    <param name="init_pose_y" value="-5.5"/>
    <param name="init_pose_z" value="0.0"/>
    <param name="init_pose_yaw" value="0.0"/>
    </group>
    <group ns="/robot_3/map_merge">
    <param name="init_pose_x" value="4.7"/>
    <param name="init_pose_y" value="-26.9"/>
    <param name="init_pose_z" value="0.0"/>
    <param name="init_pose_yaw" value="0.0"/>
    </group>







    <param name="merging_rate" value="4.0"/>
    <param name="discovery_rate" value="0.05"/>
    <param name="estimation_rate" value="0.5"/>
    <param name="publish_rate" value="1.0"/>
    <param name="estimation_confidence" value="0.25"/>
  </node>
</group>
</launch>


4.驱使某一个机器人运动

rosrun teleop_twist_keyboard teleop_twist_keyboard.py /cmd_vel:=/robot_1/cmd_vel

修改/cmd_vel主题即可

在这里插入图片描述

5.保存某一个机器人构建的地图

保存某个机器人创建的地图

rosrun map_server map_saver map:=/robot_1/map -f robot_1_map

参考:https://blog.csdn.net/sylin211/article/details/93779801
如上,修改保存地图的主题map即可。

在这里插入图片描述
5.27文件夹保存在了

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值