本机环境:window10+vmware+ubuntu16.04+ROS kinetic+Intel Realsense D435i
基本步骤就四步:
1.配置好Realsense的SDK以及ros_realsense
2.配置ORB_SLAM2所需环境及编译ORB_SLAM2
3.调整相机参数(相机标定)
4.修改源文件,运行程序
详细过程参考:ubuntu16.04 kinetic外接Intel Realsense D435i配置教程
执行代码如下:
# 安装 g++
$ sudo apt-get install gcc g++
# 安装 Pangolin
$ sudo apt-get install libglew-dev #安装Glew
$ sudo apt-get install cmake #安装CMake
$ sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev #安装Boost
$ sudo apt-get install libpython2.7-dev #安装Python2'Python3
$ git clone https://github.com/stevenlovegrove/Pangolin.git
$ cd Pangolin
$ mkdir build
$ cd build
$ cmake -DCPP11_NO_BOOST=1 ..
$ make
$ sudo make
# 安装Opencv
$ sudo apt-get update
$ sudo apt-get install libcv-dev
# 安装Eigen
$ sudo apt-get install libeigen3-dev
# 安装BLAS,LAPACK
$ sudo apt-get install libblas-dev
$ sudo apt-get install liblapack-dev
# 编译ORB SLAM2
$ cd catkin_ws/src
$ git clone https://github.com/raulmur/ORB_SLAM2.git
$ cd ORB_SLAM2
$ chmod +x build.sh
$ ./build.sh #如果运行电脑卡死的话,请修改build.sh文件中所有的make -j为make
$ ./build_ros.sh
参考:https://www.jianshu.com/p/dbf39b9e4617
其实这个过程就是相机标定的过程,网上关于相机标定有很多方法:
1)用matlab/usb_cam手动标定
2)自动标定(未实现),参考:https://www.jianshu.com/p/9e3d31ba35da
3)利用话题订阅标定(本例使用):
本例使用的是比较简单操作的方法
首先确定相机标文件路径为任意一个yaml文件:/home/max/ORB_slam2_test/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
标定文件修改内容:fx,fy,cx,cy,bf
获得修改值,执行步骤如下图(roslaunch可修改,取决于想用哪个摄像头,也可以rs_camera.launch):
fx,fy,cx,cy按照:
由K依次得到fx,cx,fy,cy
注意:D435i baseline为50mm
相机标定参考:https://blog.csdn.net/Carminljm/article/details/86353775?spm=1001.2014.3001.5501
可使用RGB-D,可使用单目,在此介绍两种。运行之前都要首先订阅指定话题(rgbd要改两个,Mono改一个)
1)使用RGB-D:
修改源文件路径:/home/max/ORB_slam2_test/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ros_rgbd.cc
修改内容:订阅话题,改成下图这样:
修改后再./build_ros.sh
然后三个终端再执行命令(2,3的顺序无所谓。参数可以绝对路径,可以相对路径,相对路径的话必须在ORB_SLAM2的包下面):
roscore
rosrun ORB_SLAM2 RGBD /home/max/ORB_slam2_test/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/max/ORB_slam2_test/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/my.yaml
roslaunch realsense2_camera rs_rgbd.launch
2)使用单目
修改源文件路径:
/home/max/ORB_slam2_test/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ros_mono.cc
修改内容:订阅话题,改成下图这样:
修改后再./build_ros.sh
然后再执行命令(2,3的顺序无所谓。参数可以绝对路径,可以相对路径,相对路径的话必须在ORB_SLAM2的包下面):
roscore
rosrun ORB_SLAM2 Mono /home/max/ORB_slam2_test/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/max/ORB_slam2_test/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/my.yaml
roslaunch realsense2_camera rs_camera.launch
注意:修改yaml文件后一定要./build_ros.sh
运行build_ros.sh时可能会报错,报错信息如下:
/usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol ‘_ZN5boost6system15system_categoryEv’
解决办法: