1 ubuntu 16.04下编译orbslam2
可参考官网https://github.com/raulmur/ORB_SLAM2,基本没有坑
1.1 安装依赖包
sudo apt install autotools-dev ccache doxygen dh-autoreconf git liblapack-dev libblas-dev libgtest-dev libreadline-dev libssh2-1-dev pylint clang-format-3.8
另外需要安装Pangolin(可参考https://www.cnblogs.com/liufuqiang/p/5618335.html)和Eigen3(可参考https://blog.csdn.net/qq_35508344/article/details/80485973)
1.2 github下载orbslam源码
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
1.3 安装编译
cd ORB_SLAM2
chmod +x build.sh
./build.sh
1.3.1 错误一
当电脑性能不好时,直接运行1.3可能会卡住,因此可手动将build.sh打开,将其中的make -j修改为make,再进行编译
1.3.2 错误二
/home/melanie/source/SmartCar/ORM_SLAM2/ORB_SLAM2/src/Viewer.cc:159:28: error: ‘usleep’ was not declared in this scope
usleep(3000);
^
CMakeFiles/ORB_SLAM2.dir/build.make:494: recipe for target ‘CMakeFiles/ORB_SLAM2.dir/src/Viewer.cc.o‘ failed
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/src/Viewer.cc.o] Error 1
CMakeFiles/Makefile2:178: recipe for target ‘CMakeFiles/ORB_SLAM2.dir/all‘ failed
make[1]: *** [CMakeFiles/ORB_SLAM2.dir/all] Error 2
Makefile:83: recipe for target ‘all‘ failed
make: *** [all] Error 2
在以下文件里添加#include
Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/RGB-D/rgbd_tum.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc
1.4 验证是否安装成功
此处通过tum数据集进行验证
从http://vision.in.tum.de/data/datasets/rgbd-dataset/download下载数据集,如此处下载fr1/xyz。
1.4.1 运行以下命令验证单目效果
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
其中TUMX可根据下载的包进行修改,此处修改为TUM1,PATH_TO_SEQUENC_FOLDER修改为存放fr1/xyz的路径。
1.4.2 运行以下命令验证RGBD效果
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
其中TUMX和PATH_TO_SEQUENC_FOLDER修改方法同1.4.1,ASSOCIATIONS_FILE修改为对应的txt文件,此处为/ORB_SLAM2/Examples/RGB-D/associations/fr1_xyz.txt,注意要根据自己的实际地址进行修改。
如果想验证更多的功能,建议参考官网:https://github.com/raulmur/ORB_SLAM2
2 ros kinetic下编译orbslam2
注意:此处按照官网的安装方式进行容易报错,主要说明如何解决报错问题。
2.1 ros环境下编译
高能预警:运行第二条命令的时候容易开始报错(建议看完2.1.1-2.1.3,将引起错误的项设定好之后直接运行此步命令)
chmod +x build_ros.sh
./build_ros.sh
2.1.1 错误一:内存不够容易卡死
解决方法同1.3,只是此处修改的是build_ros.sh文件
2.1.2 错误二:
CMake Error at /opt/ros/kinetic/share/ros/core/rosbuild/public.cmake:129 (message):
Failed to invoke rospack to get compile flags for package 'ORB_SLAM2'.
Look above for errors from rospack itself. Aborting. Please fix the
broken dependency!
Call Stack (most recent call first):
/opt/ros/kinetic/share/ros/core/rosbuild/public.cmake:207 (rosbuild_invoke_rospack)
CMakeLists.txt:4 (rosbuild_init)
-- Configuring incomplete, errors occurred!
先通过终端命令sudo gedit ~/.bashrc修改bashrc,在其末端加入
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
并在加入保存后在终端运行source ~/.bashrc
2.1.3 错误三
MakeFiles/Makefile2:718: recipe for target 'CMakeFiles/Mono.dir/all' failed
make[1]: *** [CMakeFiles/Mono.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** No rule to make target '/opt/ros/kinetic/lib/libopencv_calib3d3.so.3.2.0', needed by '../RGBD'. Stop.
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/RGBD.dir/all' failed
make[1]: *** [CMakeFiles/RGBD.dir/all] Error 2
make[2]: *** No rule to make target '/opt/ros/kinetic/lib/libopencv_calib3d3.so.3.2.0', needed by '../Stereo'. Stop. CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/Stereo.dir/all' failed
make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2
此时修改ORB_SLAM2/Examples/ROS/ORB_SLAM2路径下的CMakelists.txt,在set那里添加-lboost_system:
set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS} ${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
-lboost_system
)
2.2 运行
可参考官网:https://github.com/raulmur/ORB_SLAM2
3 实时运行kinect v1
3.1 安装驱动
3.1.1 安装libfreenect
git clone git://github.com/OpenKinect/libfreenect.git
cd libfreenect
mkdir build
cd build
make
sudo make install
或者直接
sudo apt-get install libfreenect-dev
此时运行freenect-glview可以看到深度图和rgb图像输出,若不行,命令前面加sudo。
3.1.2 安装freenect_stack
sudo apt-get install ros-kinetic-freenect-launch
3.1.3 验证依赖项是否安装成功
roslaunch freenect_launch freenect.launch
3.3 配置launch文件
在ORB_SLAM2中新建文件kinect_orbslam2.launch,其中的内容为
其中第4行和第5行修改为对应的路径,另外,根据需要将value的值进行修改,博主在操作的过程中按照默认没有出现结果,当将所有的false都修改为true时,能够实时运行。
3.4 运行orbslam2
cd ORB-SLAM2
./build.sh
roslaunch kinect_orbslam2.launch