RGBD-SLAM_v2 github地址
环境配置英文教程(很详细)
CSDN其他教程
需要环境ubuntu16.04 ROS Kinetic
ROS Kinetic安装教程
安装的ros版本若是“full”,则是自带opencv,无需自己重新安装,但是在系统中找不到这个opencv
建议在安装之前下载好数据集,PCL1.8,这两个下载非常慢
PCL下载地址
RGBDSLAM数据集下载(bag版本)
这种操作类似于深度学习经常会做的建立虚拟环境,使得多个环境之间不互相影响
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
这里的文件夹随便自己如何建立,最好是全英文路径,~代表自己的路径,因此在复制代码时,注意将此改为自己的路径(下文所有出现的src均为工作空间文件夹下的src)。同时您也可以手动打开文件夹,在文件夹内运行终端,这样可以避免路径出错
cd ~/catkin_ws/src
git clone https://github.com/felixendres/rgbdslam_v2
如果之前安装过g2o则需要卸载,安装作者自己改动过的g2o
dpkg -l | grep [Gg]2[Oo]
ls /usr/local/lib
ls /usr/lib | grep [Gg]2[Oo]
我因为是新装的系统,没有安装过g2o。没有验证此段指令的有效性
sudo apt-get install libsuitesparse-dev
eigen只包含头文件,没有要编译或链接的二进制lib
mkdir ~/src
cd ~/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
此处应在文件夹catkin_ws下打开。即在catkin_ws文件夹下新建src文件夹,可手动查看是否建立成功
cd ~/src
git clone https://github.com/felixendres/g2o.git
cd ~/src/g2o
mkdir ~/src/g2o/build
cd ~/src/g2o/build
src在文件夹catkin_ws下,确认路径无误
gedit ~/src/g2o/CMakeLists.txt
将其中的第251行的
SET(G2O_EIGEN3_INCLUDE ${EIGEN3_INCLUDE_DIR} CACHE PATH "Directory of Eigen3")
替换为:
SET(G2O_EIGEN3_INCLUDE "<自己的路径>/src/eigen" CACHE PATH "Directory of Eigen3")
注意:将自己的路径替换上去
如果上一步出错,则编译将失败
cd ~/src/g2o/build
cmake ../
make
sudo make install
可以先下载好,直接拷贝进文件夹
cd ~/src
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz
tar -xvzf pcl-1.8.0.tar.gz
我们需要用c++2011支持来编译pcl,因为我们将用c++2011支持来编译rdbgslam,如果不这样做,rgbdslam将在启动时出错。
默认安装在Ubuntu16.04上的PCL1.7库不支持c++2011编译。
cd ~/src/pcl-pcl-1.8.0
gedit CMakeLists.txt
将以下内容添加到CMakeLists.txt的第146行(在endif()之后):
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
mkdir build
cd build
cmake ../
为了确认C++支持PCL,运行
make VERBOSE=1
如果编译结果中出现了"-stdc++11",那证明成功了,“-std=c++11"也可以。
如果没有出现,那么应该就是修改CMakeList时出了问题。使用crtl+C打断编译过程
sudo make install
cd ~/catkin_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)
cd ~/catkin_ws/src/rgbdslam_v2/external/SiftGPU
sudo apt-get install libglew-dev
sudo apt-get install libdevil1c2 libdevil-dev
make
cd ~/catkin_ws
gedit src/rgbdslam_v2/CMakeLists.txt
第六行加入:
add_compile_options(-std=c++11)
最低部加入:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
运行:
catkin_make
make VERBOSE=1
make install
cp ~/catkin_ws/devel/lib/rgbdslam/rgbdslam ~/catkin_ws/install/share/rgbdslam/
mkdir ~/catkin_ws/install/share/rgbdslam/launch
cp ~/catkin_ws/src/rgbdslam_v2/launch/* ~/catkin_ws/install/share/rgbdslam/launch/
cp ~/catkin_ws/src/rgbdslam_v2/test/*.launch ~/catkin_ws/install/share/rgbdslam/launch/
cp -R ~/catkin_ws/src/rgbdslam_v2/rgbd_benchmark ~/catkin_ws/install/share/rgbdslam/
注意路径
$ echo "source /home/XXXX/rgbdslam_ws/devel/setup.bash" >> ~/.bashrc$
source ~/.bashrc
XXXX修改为自己的路径
下载数据集:
cd ~/catkin_ws/src/rgbdslam_v2/test
wget http://vision.in.tum.de/rgbd/dataset/freiburg1/rgbd_dataset_freiburg1_xyz.bag
打开一个终端:
$ roscore
打开另外一个终端
roslaunch rgbdslam test_settings.launch bagfile_name:="/home/自己的路径/catkin_ws/src/rgbdslam_v2/test/rgbd_dataset_freiburg1_xyz.bag(自己的下的数据集名字)"