摘自:https://blog.csdn.net/qq_36898914/article/details/88780649
D435i跑通ORB-SLAM2
junjun_robotic 2019-03-24 22:09:35 2228 收藏 12
分类专栏: slam 文章标签: SLAM D4355i ORB-slam2
版权
这篇文章主要记录我的实现过程。根据官方安装文档,并参考以下两篇博客,可以比较顺利的实现:
Realsense D435i 在ubuntu上安装SDK与ROS Wrapper 运行ORB-SLAM2、RTAB和VINS-Mono
使用Realsense D435相机在ROS Kinetic中跑通ORB-SLAM2
感谢他们的细致整理与无私奉献。 建议读者参考官方文档(文中附),并结合上两篇博客学习实践。
- 系统:Ubuntu16.04
- 内核:4.15.0-46-generic
- ROS 版本:Kinetic
- D435i (D435上集成了IMU 网上说是6DOF 博世BMI055?) SDK:librealsense 2.19.1
- usb3.0
一.安装Realsense SDK
1.安装内核驱动包:参考官方文档https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md
安装完毕后,运行 realsense-viewer ,点击左侧按钮,显示on.即可显示如上图像:
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
Download/Clone librealsense github repository:
Navigate to librealsense root directory to run the following scripts.
Unplug any connected Intel RealSense camera.
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 时出现这个错误could not insert 'videodev': Required key not available #3354
按上述网页解决以后,
-
Navigate to librealsense root directory and run:
mkdir build && cd build
-
Run CMake:
cmake ../
- The default build is set to produce the core shared object and unit-tests binaries in Debug mode. Use-DCMAKE_BUILD_TYPE=Release
to build with optimizations.cmake ../ -DBUILD_EXAMPLES=true
- Builds librealsense along with the demos and tutorialscmake ../ -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=false
- For systems without OpenGL or X11 build only textual examples
-
Recompile and install librealsense binaries:
sudo make uninstall && make clean && make && sudo make install
至此,SDK安装完毕。
二.ORB-SLAM2编译,参考官方文档 官方安装文档
问题1:运行
./build.sh
出现错误(具体忘记了)。办法:将build.sh 文档打开,将make -j 修改为 make -j4 成功运行。
问题2:运行 ./build_ros.sh,编译出现问题。
办法:打开~/ORB_SLAM2/Examples/ROS/ORB_SLAM2 下的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数据集测试:在ORB-SLAM2目录下,运行
./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 。执行如下命令:
sudo apt-get install ros-kinetic-rgbd-launch //不安装这个 打开终端执行下个命令时,找不到rs_rgbd.launch文件,不知到为啥
roslaunch realsense2_camera rs_rgbd.launch
再打开一个终端,输入rviz
此时并不能看到什么结果
左上角 Displays 中 Fixed Frame 选项中,下拉菜单选择 camera_link
这是主要到Global Status变成了绿色
点击该框中的Add -> 上方点击 By topic -> /depth_registered 下的 /points 下的/PointCloud2
点击该框中的Add -> 上方点击 By topic -> /color 下的 /image_raw 下的image
---------------------
引自:Carminljm https://blog.csdn.net/Carminljm/article/details/86353775
测试效果:
四. 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, "/camera/rgb/image_raw", 1);
-
message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/color/image_raw", 1);
-
// message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "camera/depth_registered/image_raw", 1);
-
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "/camera/aligned_depth_to_color/image_raw", 1);
最后在ORB_SLAM2工作目录下,运行
rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml
运行成功!