前言
博主本来是想自己将生成的激光数据和ros中的地图构建工具生成地图的,结果搜了一下github发现这项工作已经被大牛们写好并且打包上传了,可以只利用激光数据不需要里程计数据来构建地图,不过还是把过程写一下,mark一下。
准备
- ros,openni的准备就参考前文吧~
- 安装hector_slam,最简单的方式是直接apt-get
sudo apt-get install ros-indigo-hector-slam
当然你可以从github上下载源码编译一下:hector_slam github.网站上还有ros wiki的介绍链接大家可以去学习一下 - 下载hector_slam_example:下载地址,编译好之后,记住需要将这个文件加入ros包中
ROS_PACKAGE_PATH=/home/cxz/projects/hector_slam_example:$ROS_PACKAGE_PATH
当然路径改成你自己的路径。 - Install the dependency packages:
rosdep install hector_slam_example
- 然后就是喜闻乐见的roslaunch了:
roslaunch hector_slam_example hector_openni.launch
结果
只需要移动摄像头就可以去构建地图了,当然这里面用的生成模拟极光的方法是depthimage_to_laserscan并不是博主前文提到的pointcloud_to_laserscan,代码的方法速度更快但是要求摄像头要相对稳定,并且尽量水平放置,大家最好固定好再去生成地图。
无图无真相~
ps:这种方法没有使用里程计来矫正激光数据,所以误差会比较大,而且稳定性也不强,可以作为一种测试方法,不过真正用到机器人上还是要跟其他数据融合一下才能更精准。
后面会有更精准的地图构建的敬请期待