Realsense D435i 在ubuntu上安装SDK与ROS Wrapper 运行ORB-SLAM2、RTAB和VINS-Mono

前言

等了一个月的realsense d435i终于发货了!
这款D435i(见下图)在D435的基础上,另外搭载了博世的惯性测量单元(IMU),可以作为研究VIO及其他SLAM算法的良好传感器组。本文将介绍自己一步步搭建d435i环境,并成功跑通ORB-SLAM2、RTAB和VINS-Mono的过程,供大家参考。
在这里插入图片描述

安装环境

系统:ubuntu 16.04 内核 4.15.0-43-generic
ROS: Kinetic
传感器:intel realsense d435i
环境上已经成功搭建并使用dateset跑过ORB-SLAM2、VINS-Mono与RTAB。

安装Realsense SDK

github:https://github.com/IntelRealSense/librealsense
安装可以参考文档:https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md

1、下载source

git clone https://github.com/IntelRealSense/librealsense
cd librealsense

2、安装依赖项

sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev

3、Install Intel Realsense permission scripts located in librealsense source directory:

sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger 

4、这边需要注意把realsense拔下来
Build and apply patched kernel modules for:
根据不同的ubuntu版本安装:对于Ubuntu 14/16/18 LTS

./scripts/patch-realsense-ubuntu-lts.sh
sudo dmesg | tail -n 50

这里可以看一下UVC是否安装成功了

5、基于cmake的编译

mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install

-DBUILD_EXAMPLES=true 这个选项表示带演示和教程的

6、进入/librealsense/build/examples/capture,试一下效果

./rs-capture 

在这里插入图片描述
在这里插入图片描述
大功告成!


安装ROS Wrapper

https://github.com/intel-ros/realsense

直接按照github上的教程即可:
1、建立workspace,已经有的可以跳过

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
catkin_init_workspace 
cd ..
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

2、在catkin_ws/src/下载源程序

cd src
git clone https://github.com/intel-ros/realsense.git

3、catkin_make

cd ..
catkin_make

4、如果没有错误说明,已经装好了,启动相机节点

roslaunch realsense2_camera rs_rgbd.launch

5、看一下发布的topic

rostopic list

在这里插入图片描述

6、打开RVIZ看看效果
在这里插入图片描述


内参获取

若不进行标定,可以先从Realsense ROS Wrapper发布的topic中获得相机的内参。

rostopic echo /camera/color/camera_info 
rostopic echo /camera/aligned_depth_to_color/camera_info

解释一下topic中所有aligned_depth_to_color是指已经将深度信息通过相机到RGBD的外参映射到彩色图像上嗯了

在这里插入图片描述


ORB-SLAM

1、在ORB-SLAM2/Examples/ROS/ORB-SLAM2/src中修改ros_rgbd.cc的topic订阅:

message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/color/image_raw", 1);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "/camera/aligned_depth_to_color/image_raw", 1);

2、重新编译ORB-SLAM2

chmod +x build_ros.sh
./build_ros.sh

3、连接realsense d435i,启动ROS realsense2_camera:

roslaunch realsense2_camera rs_rgbd.launch

4、先用TUM1.yaml的参数运行一下试试看:

rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml 

在这里插入图片描述程序正常运行!

5、修改yaml文件中的部分参数再试试看!

rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/realsense_d435i.yaml 

在这里插入图片描述


RTAB

RTAB建议源码安装。
可以参考:https://www.ncnynl.com/archives/201709/1991.html

1、源码安装rtabmap

$ git clone https://github.com/introlab/rtabmap.git rtabmap
$ cd rtabmap/build
$ cmake -DCMAKE_INSTALL_PREFIX=~/catkin_ws/devel ..
$ make -j4
$ make install

2、源码安装rtabmap_ros

$ cd ~/catkin_ws
$ git clone https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros
$ catkin_make -j1 

3、修改catkin_ws/src/rtabmap_ros/launch中的rtabmap.launch

 <!-- RGB-D related topics -->
  <arg name="rgb_topic"               default="/camera/color/image_raw" />
  <arg name="depth_topic"             default="/camera/aligned_depth_to_color/image_raw" />
  <arg name="camera_info_topic"       default="/camera/color/camera_info" />
  <arg name="depth_camera_info_topic" default="$(arg camera_info_topic)" /> <!-- RGB-D related topics -->
  <arg name="rgb_topic"               default="/camera/color/image_raw" />
  <arg name="depth_topic"             default="/camera/aligned_depth_to_color/image_raw" />
  <arg name="camera_info_topic"       default="/camera/color/camera_info" />
  <arg name="depth_camera_info_topic" default="$(arg camera_info_topic)" />

4、运行

roslaunch realsense2_camera rs_rgbd.launch 
roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start"

在这里插入图片描述
实验效果如上图,在局部进行建图效果还可以,但是比如绕房间走一圈,闭环容易出问题,还需要进一步调试。


VINS-Mono

这个的坑比较大,主要问题在于realsense d435i在ROS中发布的imu topic是分开来的,同时这两个的时间戳也不太一样:
/camera/gyro/sample 发布角速度
/camera/accel/sample 发布线加速度

目前网上对realsense d435i的IMU问题的相关资料很少,到目前我还没有调试稳定。
先发一张我暂时成功的图,有关于我如何实现的我将单独写一个博客。

后来发现其实realsense官方是做好了同步的!
直接修改launch文件(如rs_camera.launch)中的:

<arg name="enable_sync"           default="true"/>
<arg name="unite_imu_method"      default="copy"/>

重新启动roslaunch 就可以得到topic:“/camera/imu”
在这里插入图片描述

  • 34
    点赞
  • 287
    收藏
    觉得还不错? 一键收藏
  • 37
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值