D435i跑通ORB-SLAM2

2023-05-16

这篇文章主要记录我的实现过程。根据官方安装文档,并参考以下两篇博客,可以比较顺利的实现:

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 tutorials
    • cmake ../ -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

运行成功!

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

D435i跑通ORB-SLAM2 的相关文章

随机推荐

  • Jetson Xavier NX 的SD卡系统镜像制作

    Jetson Xavier NX 的SD卡系统镜像制作 一 SD卡系统查看二 系统镜像制作三 系统镜像烧录 一 SD卡系统查看 现有的SD卡的内存为128G xff0c 其中64G内存并未分配 span class token commen
  • 嵌入式Linux下使用crond服务

    参考 xff1a https www linuxidc com Linux 2014 02 97369 htm http www linuxidc com Linux 2014 02 97360 htm https blog csdn ne
  • 关于Flexsns Sky 卡80%,以及乱码的解决问题

    一直被 flexsns sky 这个应用折磨好久了 xff0c 刚开始的时候安装成功 但是打开界面一直卡在80 那里 xff0c ucenter 里面的设置也是对的 官网也是挂的 xff01 于是百思不得解 接下来 我来说说我的解决办法把
  • Ubuntu18.04运行ORB-SLAM3(Demo+本地Realsense D415运行)

    ORB SLAM3论文地址 xff1a https arxiv org abs 2007 11898 代码地址 xff1a https github com UZ SLAMLab ORB SLAM3 一 安装库 根据ORB SLAM3源代码
  • ROS中的坐标与坐标系转换

    ROS中的TF 官网建议新工作直接使用tf2 xff0c 因为它有一个更清洁的界面 xff0c 和更好的使用体验 xff08 自ROS Hydro以来 xff0c tf第一代已被 弃用 xff0c 转而支持tf2 xff09 TF介绍 TF
  • 激光雷达与相机融合(二)-----基于openCV的YOLO目标检测

    代码解析 1 加载模型 span class token comment load image from file span cv span class token operator span Mat img span class toke
  • 线程优先权Thread Priority概念总结

    全文参考 WIN32多线程设计 一书 为什么会有线程优先权 xff1a 为什么CPU处理线程时会按优先级执行 xff1f 想象在忙碌的一天中 xff0c 有很多事情待做但时间又不够 xff0c 其中有很多紧急的事情 比如当晚的英语在线测试
  • 将ros cv_bridge关联到自己安装的Opencv版本

    有时候需要同时使用较高版本的openCV 但一般默认安装的ros系统的cv bridge包关联的Opencv版本都较低 xff0c 这时候就需要将cv bridge关联到自己安装的高版本OpenCV 成功方法为第三条 xff0c 前两条为遇
  • chmod +x 与chmod 777的区别

    chmod 43 x 是将文件状态改为可执行 xff0c 而chmod 777 是改变文件读写权限 在linux中使用man命令查看chmod的大纲我们可以得出以下有用的信息 xff1a chmod OPTION MODE MODE FIL
  • WIndowsServer2012 DHCP服务器配置

    DHCP服务器配置 WIndowsServer2012 DHCP服务器配置服务器配置保留IP设置作用域选项 客户机设置 WIndowsServer2012 DHCP服务器配置 服务器配置 1 首先打开服务器管理器 xff0c 点击工具 xf
  • JavaScript设计模式:四、发布订阅模式

    JavaScript设计模式 xff1a 四 发布订阅模式 文章目录 JavaScript设计模式 xff1a 四 发布订阅模式一 概述1 观察者模式2 发布订阅模式3 观察者模式是不是发布订阅模式 一 概述 观察者模式 xff1a 观察者
  • FreeRTOS教程——二值信号量(四)

    二值信号量 信号量简介 目的 xff1a 共享资源访问 与任务同步 信号量类型 xff1a 二值信号量 计数型信号量 互斥信号量 递归互斥信号量 本质上是一种只包含一个项数的队列 二值信号量 0 和 1 xff0c 一种内核机制 内核同步
  • Bug:Warning: [antd: ***] overlay is deprecated. Please use menu instead.以及解决方案

    Ant Design Pro umi4Bug记录 xff1a Bug xff1a Warning antd overlay is deprecated Please use menu instead 解决方案 xff1a yarn add
  • 前端初学者的Ant Design Pro V6总结(上)

    前端初学者的Ant Design Pro V6总结 xff08 上 xff09 一 UI组件开发流程 61 gt 通用 xff08 异步 xff09 函数useEmotionCss 定义CSSuseModel获取全局状态useCallbac
  • 关于C语言在VS2017上开头格式

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • Java中Long和long的区别

    Java中Long和long的区别 Java的数据类型分为两种 xff1a 1 基本类型 xff1a byte 8 short 16 int 32 long 64 float 32 double 64 char 16 boolean 1 2
  • Windows 10 下如何彻底关闭 Hyper-V 服务

    CMD运行bcdedit set hypervisorlaunchtype off 恢复使用 xff1a bcdedit set hypervisorlaunchtype auto
  • 从百度运维实践谈“基于机器学习的智能运维”

    清华大学计算机系副教授裴丹于运维自动化专场发表了题为 基于机器学习的智能运维 的演讲 xff0c 上篇参看 科研角度谈 如何实现基于机器学习的智能运维 文章 xff0c 此为下篇 从百度运维实践谈基于机器学习的智能运维 以下为演讲实录 xf
  • python通过udp传输图片

    首先要了解UDP的工作模式 对于服务器 xff0c 首先绑定IP和端口 xff0c 本机测试的时候可以使用127 0 0 1是本机的专有IP xff0c 端口号 大于1024的是自定义的 xff0c 所以用大于1024的端口号 xff0c
  • D435i跑通ORB-SLAM2

    这篇文章主要记录我的实现过程 根据官方安装文档 xff0c 并参考以下两篇博客 xff0c 可以比较顺利的实现 xff1a Realsense D435i 在ubuntu上安装SDK与ROS Wrapper 运行ORB SLAM2 RTAB