Github地址https://github.com/felixendres/rgbdslam_v2
(目前木有找到哪位大佬写过RGBD SLAM的论文或者代码解析,可以看看笔者写的论文笔记:
http://www.cnblogs.com/voyagee/p/7027076.html,
欢迎交流)
网上教程大多都是基于ROS older version,现在最好使用ROS新的kinetic版本
首先安装ROS KINETIC
http://wiki.ros.org/kinetic/ 按照installation instruction一步一步来
安装完Kinetic后,需要先安装一个依赖:(否则编译时会出现cholmod相关的错误)
sudo apt-get install libsuitesparse-dev
然后按照Github上作者发布的install.sh安装rgbdslam
注意:作者使用的g2o是自己的fork版本,如果之前装过G2O,可能会出现冲突问题,最好确保之前的G2O删除干净再安装RGBDSLAM
安装完成后就可以跑一下看看效果啦。
如果你使用kinect相机 ,
sudo apt-get install ros-kinetic-openni-launc
roslaunch rgbdslam openni+rgbdslam.launch
(第一次用ROS的新手注意了:在roslaunch 你的launch之前,要另外开一个终端,输入roscore,回车)
一个漂亮的界面出来啦(偷拍我们老板)
一个常见的问题:roslaunch rgbdslam openni+rgbdslam.launch之后,提示
No devices connected..
一般是kinect的驱动没有安装
如果你是使用kinect1代,则安装SensorKinect即可:
Git clone http://github.com/avin2/SensorKinect.git
cd Bin
tar xjf SensorKinect093-Bin-Linux-x64-v5.1.2.1.tar.bz2
cd Sensor-Bin-linux-x64-v5.1.2.1
./install.sh
如果是kinect2代(xbox one):使用这个答案中的方法可以解决http://answers.ros.org/question/234659/rgbdslam-v2-on-kinect-v2-no-devices-connected-waiting-for-devices-to-be-connected/
如果手上没有kinect相机,
。
。
。
那就去买一个
如果买不起
。
。
可以到TUM上下载数据集来模拟live data,记得下载.bag格式的
http://vision.in.tum.de/data/datasets/rgbd-dataset
选一两个数据集,点击后面的more info,找到bag格式的下载下来
方法一:
新开一个终端
rosbag play yourbagpath.bag
再开一个终端
rostopic list 查看发布的topic(rosbag被以topic形式发布)
也可以rosrun rviz rviz来查看该数据集 , 在跳出来的窗口中点击add->topic,找到你发布的topic,可以动态显示图片
此时你应该已经知道topic的名字了,现在更改rgbdslam.launch,让他收听该topic
vi yourlpath/launch/rgbdslam.launch
把这两行参数分别改为你的color和depth对应的topic名称
<param name="config/topic_image_mono" value="/camera/rgb/image_color"/>
<param name="config/topic_image_depth" value="/camera/depth/image "/>
然后
roslaunch rgbdslam rgbdslam.launch
或者,想要快速看一下在数据集上运行是个什么效果的话,
方法二:
roslaunch rgbdslam test_settings.launch bagfile_name:="..../*.bag"
方法三:
方法三可以在数据集对RGB-D SLAM进行evaluate,得到ATE(absolute trajectory error )的最大值,均值等等
把*.bag与对应的 bagname_groundtruth.txt保存到 ../rgbdslam/test目录下,然后在终端运行 run_tests.sh
完工
另一个要注意的问题:再新开的终端要运行roslaunch rgbdslam rgbdslam.launch的话,要先
source ....../rgbdslam_catkin_ws/devel/setup.bash
否则会出现错误
[rgbdslam.launch] is neither a launch file in package [rgbdslam] nor is [rgbdslam] a launch file name
The traceback for the exception was written to the log file
对你有帮助的话别忘了顶一下啦啦啦~