安装的ros版本若是“full”,则是自带opencv,无需自己重新安装,但是在系统中找不到这个opencv
建议在安装之前下载好数据集,PCL1.8,这两个下载非常慢
PCL1.8 下载地址
RGBDSLAM数据集下载(bag版本)
1.建立工作空间
mkdir -p ~/robot_ws/src
cd ~/catkin_ws
catkin_make
这里的文件夹随便自己如何建立,最好是全英文路径,~代表自己的路径,因此在复制代码时,注意将此改为自己的路径。同时您也可以手动打开文件夹,在文件夹内运行终端,这样可以避免路径出错
2.下载RGBD-SLAM
cd ~/robot_ws/src
git clone https://github.com/felixendres/rgbdslam_v2
3.卸载g2o
如果之前安装过g2o则需要卸载,安装作者自己改动过的g2o.
删除g2o的头文件,位于/usr/local/include/g2o下.
sudo rm -r /usr/local/include/g2o
删除g2o的库文件,位于/usr/local/lib下.
sudo rm -r /usr/local/lib/libg2o*
删除g2o的可执行文件,位于/usr/local/bin下.
sudo rm -r /usr/local/bin/g2o*
4.安装g2o依赖项
sudo apt-get install libsuitesparse-dev
5.下载并提取eigen 3.2.10头文件
eigen只包含头文件,没有要编译或链接的二进制lib
cd ~
wget http://bitbucket.org/eigen/eigen/get/3.2.10.tar.bz2
注:若上述方法行不通,可直接在CSDN下载压缩包,若压缩包下载需要积分可以在淘宝中找代替下载,并解压后命名为eigen.
6.下载g2o
cd ~/robot_ws/src
git clone https://github.com/felixendres/g2o.git
cd ~/robot_ws/src/g2o
mkdir ~/robot_ws/src/g2o/build
cd ~/robot_ws/src/g2o/build
7.配置g2o头文件
gedit ~/robot_ws/src/g2o/CMakeLists.txt
将其中的第251行的
SET(G2O_EIGEN3_INCLUDE ${EIGEN3_INCLUDE_DIR} CACHE PATH "Directory of Eigen3")
替换为:
SET(G2O_EIGEN3_INCLUDE "<自己的路径>/eigen" CACHE PATH "Directory of Eigen3")
注意:将自己的路径替换上去
8.编译g2o
如果上一步出错,则编译将失败.
cd ~/robot_ws/src/g2o/build
cmake ../
make
sudo make install
9.下载PCL
可以先下载好,直接拷贝进文件夹
cd ~
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz
tar -xvzf pcl-pcl-1.8.0.tar.gz
10.用C++ 2011支持配置PCL编译
我们需要用c++2011支持来编译pcl,因为我们将用c++2011支持来编译rdbgslam,如果不这样做,rgbdslam将在启动时出错。
默认安装在Ubuntu16.04上的PCL1.7库不支持c++2011编译。
cd ~/pcl-pcl-1.8.0
gedit CMakeLists.txt
将以下内容添加到CMakeLists.txt的第146行(在endif()之后)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
11.编译并安装PCL
cd ~/pcl-pcl-1.8.0
mkdir build
cd build
cmake ../
为了确认C++支持PCL,运行
make VERBOSE=1
如果编译过程中出现了"-stdc++11",那证明成功了,“-std=c++11"也可以。如果没有出现,那么应该就是修改CMakeList时出了问题。使用crtl+C打断编译过程.
sudo make install
12.配置RGBD-SLAM
cd ~/robot_ws/src/rgbdslam_v2
gedit CMakeLists.txt
找到第79行
find_package(PCL 1.7 REQUIRED COMPONENTS common io)
修改为:
find_package(PCL 1.8 REQUIRED COMPONENTS common io)
13.构建siftgpu库(与rgbdslam绑定)
cd ~/robot_ws/src/rgbdslam_v2/external/SiftGPU
sudo apt-get install libglew-dev
sudo apt-get install libdevil1c2 libdevil-dev
make
若执行第3条时出现下面错误,用下面指令解决。
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
14.建构rgbdslam
cd ~/robot_ws
gedit src/rgbdslam_v2/CMakeLists.txt
第六行加入:
add_compile_options(-std=c++11)
最低部加入:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
编译:
cd ~/robot_ws
catkin_make
15.添加robot_ws工作空间到.bashrc文件下
$ echo "source ~/robot_ws/devel/setup.bash" >> ~/.bashrc$
source ~/.bashrc
16.测试数据集
下载数据集:
cd ~
mkdir bag-data
cd ~/bag-data
wget http://vision.in.tum.de/rgbd/dataset/freiburg1/rgbd_dataset_freiburg1_xyz.bag
修改 rgbdslam_v2 的 launch文件 rgbdslam.launch 中的 图像topic.
<param name="config/topic_image_mono" value="/camera/rgb/image_color"/>
<param name="config/topic_image_depth" value="/camera/depth/image"/>
打开一个终端:
$ roscore
打开一个终端:
roslaunch rgbdslam rgbdslam.launch
打开一个终端:
cd ~/bag-data
rosbag play rgbd_dataset_freiburg1_xyz.bag