ROS_kinetic下rgbdslam_V2的安装和使用

来源:互联网 发布:数据库设计与开发 下载 编辑:程序博客网 时间:2024/06/05 04:56
1、软硬件
1)软件--装有ROS kinetic ubuntu 16.04 同时兼容 ROS Indigo ubuntu 14.04

2)硬件--笔记本、kinect2摄像头


2、建立orbslam_ws工作空间

$ cd ~/rgbdslam_ws/src $ cd rgbdslam_ws $ catkin_make $ source devel/setup.bash 

3、获取rgbdslam_v2包--注意:ros_kinetic下务必下载对应kinetic版本的package

1) 方式一
$ cd ~/rgbdslam_ws/src $ wget -q http://github.com/felixendres/rgbdslam_v2/archive/kinetic.zip $ unzip -q kinetic.zip $ cd ~/rgbdslam_ws/ 
2) 方式二
--直接到作者github网址下载https://github.com/felixendres/rgbdslam_v2
--解压后放到目录 /rgbdslam_ws/src 下即可

4、安装及编译rgbdslam_v2包
$ rosdep update $ rosdep install rgbdslam 

catkin_make之前rgbdslam_v2包的cmakelists.txt文件下的第6行加入

add_compile_options(-std=c++11)

如下图所示


终端执行catkin_make

$ catkin_make 

如果编译成功,如下所示:



5、添加rgbdslam_ws工作空间到.bashrc文件下

$ echo "source /home/ljl/rgbdslam_ws/devel/setup.bash" >> ~/.bashrc$ source ~/.bashrc

6、修改rgbdslam_v2包的cmakelists文件

将第7行的

set(USE_SIFT_GPU  1 CACHE BOOL "build with support for siftgpu") 

改成

set(USE_SIFT_GPU  0 CACHE BOOL "build with support for siftgpu") 

如下图红框所示:



7、修改rgbdslam_v2包launch文件夹下的rgbdslam.launch文件和openni+rgbdslam.launch文件

修改1 ) ~/rgbdslam_ws/src/rgbdslam_v2/launch/rgbdslam.launch文件中13、14行的value值设置为ORB

<param name="config/feature_detector_type" value="ORB"/><param name="config/feature_extractor_type" value="ORB"/>

修改2 ) ~/rgbdslam_ws/src/rgbdslam_v2/launch/openni+rgbdslam.launch文件中13、14行的value值设置为ORB

<param name="config/feature_detector_type" value="ORB"/><param name="config/feature_extractor_type" value="ORB"/>

8、下载rgbd数据集

数据集网址:https://vision.in.tum.de/data/datasets/rgbd-dataset/download,这里我下了个最小的,如下图所示,下载完成后,解压到rgbdslam_v2/src/rgbdslam/目录下;



9、开始测试

1)打开一个终端,输入

$ roscore

2) 打开第二个终端,cd到rgbd数据集所在目录下,然后输入

$ rosbag play rgbd_dataset.bag

3) 打开第三个终端,输入

$ roslaunch rgbdslam rgbdslam.launch

10、BUG解决

如果您遇到了“required process[rgbdslam-2] has died”......Iinitiating down问题,请不要着急,该问题主要是由于rgbdslam依赖库g2o和pcl不兼容引起的;

解决方法源网址https://hubpages.com/technology/Instructions-for-compiling-rgbdslam-v2-on-a-fresh-Ubuntu-1604-install-ros-kinetic-in-virtualbox

我的解决方法:已测试成功

1 )如果你之前已经安装了g2o,请将其卸载,卸载方法如下:

解决方法为:(1)删除/usr/local/include/g2o,指令为sudo rm -rf /usr/local/include/g2o;(2)删除/usr/local/lib下有关libg2o_*.so的库文件,先进入目录cd /usr/local/lib,然后挨个(可多个同时)删除sudo rm -rf libg2o_*.so libg2o_*.so libg2o_*.so(我一个一个删的我会说……)

2 ) 下载Eigen3库到rgbdslam_vs/src目录下

$ cd rgbdslam_vs/src$ wget http://bitbucket.org/eigen/eigen/get/3.2.10.tar.bz2$ mkdir eigen$ tar -xvjf 3.2.10.tar.bz2 -C eigen --strip-components 1

3 ) 使用上面下载的eigen3.2配置g2o

编辑g2o包下的cmakelists.txt文件,将第251行

SET(G2O_EIGEN3_INCLUDE ${EIGEN3_INCLUDE_DIR} CACHE PATH "Directory of Eigen3")

改成

SET(G2O_EIGEN3_INCLUDE "你的Eigen3的绝对路径" CACHE PATH "Directory of Eigen3")

4 ) 下载rgbdslam作者的g2o并利用cmake编译

$ cd rgbdslam_vs/src$ git clone https://github.com/felixendres/g2o.git$ cd ~/rgbdslam/src/g2o$ mkdir build$ cd build$ cmake ..$ make $ sudo make install
5 ) 下载PCL1.8并修改其cmakelist.txt

$ cd ~/rgbdslam_vs/src$ wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz$ tar -xvzf pcl-1.8.0.tar.gz
修改cmakelist.txt,在其第146行加入并保存

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
6 )编译PCL1.8

$  cd ~/temp_test_ws/src/pcl-pcl-1.8.0$ mkdir build$ cd build$ cmake ..$ make VERBOSE=1$ sudo make install 
7 ) 更改rgbdslam_v2包下的cmakelist.txt文件,并重新编译

--将rgbdslam_v2包下的cmakelist.txt文件的第79行

find_package(PCL 1.7 REQUIRED COMPONENTS common io)

改成

find_package(PCL 1.8 REQUIRED COMPONENTS common io)

8 )将rgbdslam_ws下的build和devel文件夹删除,并重新编译

$ cd rgbdslam_ws$ catkin_make

9 ) 至此,bug已解决


11、重新测试

1)打开一个终端,输入

roscore
2) 打开第二个终端,cd到rgbd数据集所在目录下,然后输入

rosbag play rgbd_dataset.bag

3) 打开第三个终端,输入

roslaunch rgbdslam rgbdslam.launch

测试成功,如下图所示:








原创粉丝点击