ubuntu16.04 ros kinetic下安装 orbslam2并运行kinect v1

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或#include "unistd.h"

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

 

你可能感兴趣的:(slam,slam,ros,ubuntu,orbslam,kinect)