在Gazebo中仿真SLAM

安装gmapping相关软件包

$ sudo apt-get install ros-kinetic-gmapping

先安装move_base_msgs的功能包,但下载后,要放在自己的工作环境下

$ git clone https://github.com/ros-planning/navigation_msgs.git

在catkin_ws/src创建功能包mrobot_navigation geometry_msgs move_base_msgs roscpp rospy tf visualization_msgs并回到工作空间状态下编译 并source 最后在mrobot_navigation文件夹下创建config launch scripts maps rviz五个文件夹
在mrobot_navigation/launch/gmapping.launch完成以下内容

<launch>
    <arg name="scan_topic" default="scan" />

	<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" clear_params="true">
        <param name="odom_frame" value="odom"/>
        <param name="map_update_interval" value="5.0"/>
        <!-- Set maxUrange < actual maximum range of the Laser -->
        <param name="maxRange" value="5.0"/>
        <param name="maxUrange" value="4.5"/>
        <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="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)"/>
    </node>
</launch>

重点检查两个参数的输入配置
(1)里程计坐标系的设置,odom_frame参数需要和机器人本身的里程计坐标系一致
(2)激光雷达的话题名,gmapping节点订阅的激光雷达话题名是“/scan”,如果与机器人发布的激光雷达话题名不一致,需要使用进行映射。
创建一个启动gmapping例程的mrobot_navigation/launch/gmapping_demo.launch文件

<launch>

  <include file="$(find mrobot_navigation)/launch/gmapping.launch"/>

  <!-- 启动rviz -->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find mrobot_navigation)/rviz/gmapping.rviz"/>

</launch>

首先

$ roscore
$ roslaunch mrobot_gazebo mrobot_laser_nav_gazebo.launch

在这里插入图片描述

$ roslaunch mrobot_navigation gmapping_demo.launch
$ roslaunch mrobot_teleop mrobot_teleop.launch

使用键盘控制机器人在仿真环境下移动
在这里插入图片描述
Fixed Frame-map,添加RobotModel,Map(Topic-/map Alpha-0.5 Color Scheme-map Resolution-0.05 Orientation-0 0 0 1) LaserScan(Topic-/scan Style-Spheres Size-0.1 Alpha-1)
在输入启动键盘节点控制

$ roslaunch mrobot_teleop mrobot_teleop.launch

这样控制机器人在地图中走一圈,构建地图
在输入命令保存地图之前
先安装

$ sudo apt-get install ros-kinetic-map_server

再启动

$ rosrun map_server map_saver

这样地图会保存在当前终端所在目录下,默认命名为map,不仅包含一个map.pgm地图数据文件,还包含一个map.yaml文件。map.pgm地图数据文件可以使用GIMP等软件进行编辑。

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值