ROS下无机器人,仅用激光雷达数据跑GMapping
写在前面:本文为原创,如需转载请注明出处。欢迎大家留言共同探讨,有误的地方也希望指出。另如果有好的SLAM、ROS等相关交流群也希望可以留言给我,在此先谢过了。
参考:
0 背景
GMapping是一个依赖里程计的算法,他需要有里程计的输入作为运算的前提,比如轮子的光栅数据等。现在我正在算法调研阶段,暂时手头上没有可以跑的机器人底盘,想用激光雷达的数据先跑成GMapping算法。网上很多教程都明确指出,实体机器人是GMapping算法的必需品,必须要有里程计的输入数据(如运行ROS gmapping包所必须的条件等文)。因此,我想到了可不可以用某种方式虚构一个里程计,先把流程跑下来。经过一番查找,确实可以实现,现放出GMapping的跑图,然后分步介绍。
虚拟里程计的GMapping地图1 Laser_scan_matcher介绍
根据参考2:
The laser_scan_matcher package is an incremental laser scan registration tool. The package allows to scan match between consecutive sensor_msgs/LaserScan messages, and publish the estimated position of the laser as a geometry_msgs/Pose2D or a tf transform.
The package can be used without any odometry estimation provided by other sensors. Thus, it can serve as a stand-alone odometry estimator. Alternatively, you can provide several types of odometry input to improve the registration speed and accuracy.
指出,Laser_scan_matcher包可以被用于里程计估计器,因此可以比较好的胜任所需要的任务:使用激光数据构建一个里程计供GMapping使用。
2 Laser_scan_matcher安装
安装过程按照参考3中的教程从apt安装:
首先认为ROS系统已经安装完毕,然后执行
apt-get install ros-%ROS_DISTRO%-scan-tools
其中%ROS_DISTRO%换为你的ROS版本名。
3 运行Demo
在~/catkin_ws/src/scan_tools-indigo/laser_scan_matcher/demo文件夹下,有launch文件demo_gmapping.launch,运行该launch文件,会出现用bag数据的GMapping运行结果。
demo_gmapping.launch运行过程图
4 用自己的激光数据来跑GMapping
上一步还是用bag中的激光数据来跑算法,为了使用自己的激光数据,需要对launch文件进行修改,添加进自己的激光ros驱动信息即可。