仅用激光雷达数据跑GMapping算法(实测可用)

9 篇文章 0 订阅

1.缘起

  实体机器人是GMapping算法的必需品,必须要有里程计的输入数据。然而,ROS中提供了Laser_scan_matcher包可以被用于里程计估计器,因此可以比较好的胜任所需要的任务:使用激光数据构建一个里程计供GMapping使用。

2.软硬件条件

软件:Ubuntu 18.04,ROS Melodic
硬件:RPLidar A1.

3.如何实现?

3.1 laser_scan_matche 源码安装及测试

  可能时本人菜,没有找到laser_scan_matche的ROS安装方式,只能采用源码安装方式。

cd catkin_ws/src

git clone https://github.com/ccny-ros-pkg/scan_tools.git

cd ..

catkin_make // 会发现 fail, 此时进入到scan_tools/ 目录下把除laser_scan_matcher 目录之外的所有文件(夹)都删掉。

catkin_make //  此时又报错,如:CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:415

source devel/setup.bash

若是第9行报错,请参考“在编译laser_scan_matcher相关软件包,出现CMake Error at …” 解决。

  安装完成后,输入下面的命令进行测试。

roslaunch laser_scan_matcher demo.launch

3.2 运行Demo

  在~/turtlebot_ws/src/laser_scan_matcher/demo文件夹下,有launch文件demo_gmapping.launch,运行该launch文件,会出现用bag数据的GMapping运行结果,我们对其进行修改,用激光数据替代bag数据,代码如下(可以直接替换)。

<!-- 
Example launch file: uses laser_scan_matcher together with
slam_gmapping 
-->

<launch>

  #### set up data playback from bag #############################
  <!-- 此处,用激光数据 替换掉bag数据  -->
  <!-- <param name="/use_sim_time" value="true"/> -->
  <!-- <node pkg="rosbag" type="play" name="play" 
    args="$(find laser_scan_matcher)/demo/demo.bag delay=5 clock"/> -->

  <include file="$(find rplidar_ros)/launch/rplidar.launch"/>
 

  #### publish an example base_link -> laser transform ###########

  <node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" 
    args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /laser 40" />

  #### start rviz ################################################

  <node pkg="rviz" type="rviz" name="rviz" 
    args="-d $(find laser_scan_matcher)/demo/demo_gmapping.rviz"/>

  #### start the laser scan_matcher ##############################

  <node pkg="laser_scan_matcher" type="laser_scan_matcher_node" 
    name="laser_scan_matcher_node" output="screen">

    <param name="fixed_frame" value = "odom"/>
    <param name="max_iterations" value="10"/>

  </node>

  #### start gmapping ############################################

  <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
    <param name="map_udpate_interval" value="1.0"/>
    <param name="maxUrange" value="12.0"/>
    <param name="sigma" value="0.1"/>
    <param name="kernelSize" value="1"/>
    <param name="lstep" value="0.15"/>
    <param name="astep" value="0.15"/>
    <param name="iterations" value="1"/>
    <param name="lsigma" value="0.1"/>
    <param name="ogain" value="3.0"/>
    <param name="lskip" value="1"/>
    <param name="srr" value="0.1"/>
    <param name="srt" value="0.2"/>
    <param name="str" value="0.1"/>
    <param name="stt" value="0.2"/>
    <param name="linearUpdate" value="1.0"/>
    <param name="angularUpdate" value="0.5"/>
    <param name="temporalUpdate" value="0.4"/>
    <param name="resampleThreshold" value="0.5"/>
    <param name="particles" value="10"/>
    <param name="xmin" value="-10.0"/>
    <param name="ymin" value="-10.0"/>
    <param name="xmax" value="10.0"/>
    <param name="ymax" value="10.0"/>
    <param name="delta" value="0.02"/>
    <param name="llsamplerange" value="0.01"/>
    <param name="llsamplestep" value="0.05"/>
    <param name="lasamplerange" value="0.05"/>
    <param name="lasamplestep" value="0.05"/>
  </node>

</launch>

4.致谢

  非常感谢我的同事hhy,是他教我如何进行修改的。对于一个职场小白,我还有很多不懂需要麻烦他。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值