D435i跑通ORB-SLAM2
摘自:<>
D435i跑通ORB-SLAM2
junjun_robotic 2019-03-24 22:09:35 2228 收藏 12
分类专栏:Simultaneous Localization and Mapping 文章标签:SLAM D4355i ORB-slam2
版权
这篇文章主要记录我的实现过程。根据官方安装文档,并参考以下两篇博客,可以比较顺利的实现:
在Ubuntu系统中依次安装软件开发库(SDK)以及ROS封装层(ROS Wrapper),然后按照以下步骤依次运行ORB-SLAM2算法框架、基于特定特特特特的定位算法RTAB以及高精度定位算法VINS-Mono以上流程即可完成设置过程
通过Realsense D435摄像头在ROS Kinetic环境下成功实现了ORB-SLAM2算法的集成
感谢他们辛勤工作的努力与慷慨付出。 作为学习参考的权威资料,请读者务必仔细阅读官方文档中的相关内容(文中已做标注),同时建议深入理解相关知识时,请参考本人之前发表的两篇相关文章。
操作系统为 Ubuntu 16.x;
内核版本为 4.x.x;
ROS版本采用 Kinetic内核;
支持 IMU 配置的博世 BMI08x(约 6DOF)的 D+系列 SDK 使用 librealsense 框架运行于 Ubuntu 上的 D+平台;
USB接口采用USB 2.x标准;
一.安装Realsense SDK

1. 配置内核驱动包 :请参考官方文档https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md
安装完成后,请运行realsense-viewer并单击左侧按钮以进入工作状态。即可呈现上述图像。
2. 安装依赖项: 请按照以下步骤参考官方文档https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md进行操作。
官方文档详细阐述了多种Linux版本的安装方法,在不习惯英语的情况下可能会造成混乱。根据我的系统配置, 安装命令具体步骤如下
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
Access the librealsense github repository by downloading or cloning its repository:
Access the librealsense root directory and execute the provided scripts.
Avoid connecting anyIntel RealSense cameras.
cmake 3.8+ 以上
sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
sudo apt-get install libglfw3-dev
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
./scripts/patch-realsense-ubuntu-lts.sh
echo 'hid_sensor_custom' | sudo tee -a /etc/modules
在终端中执行 ./scripts/patch-realsense-ubuntu-lts.sh 时出现这个错误:无法插入 'videodev':缺少所需的键 #3354([https://github.com/IntelRealSense/librealsense/issues/3354](https://github.com/IntelRealSense/librealsense/issues/3354))。
按上述网页解决以后,
Navigate to librealsense root directory and run: mkdir build&& cd build
Run CMake:
cmake ../- Configure the build to produce core shared objects and unit tests in debug mode.cmake ../ -D...- Construct librealsense along with its demo and tutorial examples.cmake ../ -D... --no-graphical-demos- Configure librealsense but not its graphical demo examples, targeting systems without OpenGL or X11.
Recompile and install the librealsense binary files:
sudo remove dependencies, clean up, build, and then install dependencies.
至此,SDK安装完毕。
二.ORB-SLAM2编译,参考官方文档 官方安装文档
问题1:运行
./build.sh
未能明确指出错误原因。方法:启动build.sh文件后,请将make命令的参数从 -j 更改为 -j4 以确保成功运行。
问题2:运行 ./build_ros.sh,编译出现问题。
办法:进入指定路径下的CMakeLists.txt文件,并添加-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)
该RGBD-TUM数据集的实验性验证位于ORBSLAM2目录下,并将执行相应的操作。
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM2.yaml ~/tum_dataset/rgbd_dataset_freiburg2_large_with_loop ~/tum_dataset/rgbd_dataset_freiburg2_large_with_loop/associate.txt

Caption
三.ROS-wraper安装
参考官方文档:ros-wraper 安装
注意安装后这样操作:
检验是否能在ros使用realsense相机:
安装rgbd_launch包并配置深度图像采集系统
测试效果:

四. D435i 跑orb-slam2
1.首先应修改相机内参信息。
roslaunch realsense2_camera rs_rgbd.launch
rostopic echo /camera/color/camera_info

这里只是测试,故可以使用Asus.yaml中的参数。
运行rs_rgbd.launch 后,运行 rostopic list 发布的信息如下:

发布节点所生成的rgbd图像和深度信息主题名称与ORB-SLAM2订阅的RGB图像主题名称及深度信息主题名称存在差异。修改说明如下:在指定路径~/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src文件夹内找到ros_rgbd.cc文档,并执行相应代码更改。
订阅器函数用于图像颜色订阅器的绑定。
message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/cameras[color]/image_raw", 1);
= "subscriber for sensor messages of type Image", reading from camera feed camera/depth_registered/image_raw with parameter 1;
message_filters::subscriber<sensor_msgs::Image> depth_submitted_node(nh, "/camera/aligned_depth_to_color/image_raw_path", 1);
最后在ORB_SLAM2工作目录下,运行
rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml
运行成功!

