ROS kinetic外接Realsense D435i跑ORB_SLAM2教程

本机环境:window10+vmware+ubuntu16.04+ROS kinetic+Intel Realsense D435i

基本步骤就四步:
  1.配置好Realsense的SDK以及ros_realsense
  2.配置ORB_SLAM2所需环境及编译ORB_SLAM2
  3.调整相机参数(相机标定)
  4.修改源文件,运行程序

1.配置Realsense的SDK以及ros_realsense

详细过程参考:ubuntu16.04 kinetic外接Intel Realsense D435i配置教程

2.配置ORB_SLAM2所需环境及编译ORB_SLAM2

执行代码如下:

# 安装 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

# 安装BLASLAPACK
$ 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

3.调整相机参数

其实这个过程就是相机标定的过程,网上关于相机标定有很多方法:
  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):
ROS kinetic外接Realsense D435i跑ORB_SLAM2教程_第1张图片
fx,fy,cx,cy按照:
ROS kinetic外接Realsense D435i跑ORB_SLAM2教程_第2张图片
由K依次得到fx,cx,fy,cy

注意:D435i baseline为50mm

相机标定参考:https://blog.csdn.net/Carminljm/article/details/86353775?spm=1001.2014.3001.5501

4.修改源文件,运行程序

  可使用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’
解决办法:
ROS kinetic外接Realsense D435i跑ORB_SLAM2教程_第3张图片

你可能感兴趣的:(嵌入式相关,自动驾驶,人工智能,机器学习)