最近事务太多,鸭梨山大,加上能力欠佳,折腾了好久才把RGBD SLAM跑起来,刚从坑里爬出来,分享一些解决方法,亲测有效!
RGB-D SLAM
先简单介绍一下下,RGBD SLAM 将SLAM领域的图像特征、优化、闭环检测、点云、octomap等技术融为一体。
RGBD SLAM V2
设计最初是利用SIFT特征进行特征的提取,比较耗时,现在随着ORB等二值化特征的广泛应用,已经可以摆脱GPU的加速。
论文提出:
Endres et al, 3D Mapping with an RGB-D camera, TRO, 2014.
开源代码地址:
https://github.com/felixendres/rgbdslam_v2
下面也该进入正题了,
一起来看看这些小坑
1
编译的过程中可能会出现几个报错:
Scanning dependencies of target rgbdslam
/usr/bin/ld: cannot find -lGLEW
/usr/bin/ld: cannot find -lglut
/usr/bin/ld: cannot find -lIL
collect2: error: ld returned 1 exit status
make[3]: *** [siftgpu] Error 1
这时需要安装相应的库:(一 一对应)
$ sudo apt-get install libglew-dev ros-indigo-qglv-toolkit freeglut3-dev libdevil1c2 libdevil-dev
2
成功编译后找不到launch文件,一度以为还没装上rgbdslam v2
注意在运行 roslaunch rgbdslam rgbdslam.launch之前必须source(或者在./bashrc文件中进行设置)
$ source devel/setup.bash
3
ubuntu16.04下,安装完成后,成功编译,但是运行报错“required process[rgbdslam-2] has died”......Iinitiating down,似乎是rgbdslam都没有启动:
https://hubpages.com/technology/Instructions-for-compiling-rgbdslam-v2-on-a-fresh-Ubuntu-1604-install-ros-kinetic-in-virtualbox
Ps.主要是由于rgbdslam依赖库g2o和pcl不兼容引起,下面的网址给出了解决bug的方法,超好用!
https://blog.csdn.net/zhuoyueljl/article/details/78536996?reload
Ps.其中,
“https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz”,
可以换别的下载,安装好PCL1.8.0即可。(注意,改CmakeList.txt的时候要和对应好位置,就因为放错位置,我可是在这吃了点苦头)
4
4、记得在launch文件把Kinect或者数据集的话题对应好,先 $ rostopic list 看一下话题名称。
5
5、编译的时候找不到“cv_bridge”、“PCL”等等的问题(T T)
重装PCL期间不小心卸了ROS kinetic自带的OpenCV3,包括里面的cv_bridge库等,freenect整个包也不知道去哪了。。。(T T)
这种时候还是谷歌靠谱,按照这个重装了OpenCV和一些库(kinetic)
https://answers.ros.org/question/262329/how-to-install-cv_bridge/
$ sudo apt-get install ros-(ROS version name)-cv-bridge
$ sudo apt-get install ros-(ROS version name)-vision-opencv
然后重装Kinect驱动(依然是创客制造)
Ps.感觉这个可能会有用,分享一下~
ubuntu系统下ros系统问题的解决方法示例:
https://blog.csdn.net/Groot_Lee/article/details/79202507
领取专属 10元无门槛券
私享最新 技术干货