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_makeecho "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.launchroslaunch 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”
- ORB_SLAM2安装及运行——VMware+Ubuntu+ROS
- ORB_SLAM运行详细过程(ubuntu14.04系统和ROS Indigo环境搭建,配置及测试运行)
- ORB-SLAM2安装与运行(非ROS环境下)
- Ubuntu 16 ORB_SLAM2使用KinectV2在ROS上运行总结
- 编译安装及运行单目ORBSLAM2在Ubuntu14.04
- 编译安装及运行单目ORBSLAM2在Ubuntu14.04
- SLAM: Ubuntu14.04_Kylin安装ROS-Indigo
- Ubuntu 14.04 LTS+ ROS indigo+ORB-SLAM1
- 在Ubuntu操作系统上安装mono和jexus搭建.NET的运行环境
- ubuntu下安装ROS并运行一个小例程
- ORB-SLAM2(单目slam、ROS环境)安装总结
- REMODE+ORBSLAM运行配置(1) 把ORB编译成ROS工程
- Ubuntu下使用单目相机运行ORB SLAM2
- ORB_SLAM2安装与运行
- ORB_SLAM2学习记录1-ORB_SLAM2的安装与运行
- Ubuntu14.04虚拟机中安装运行ROS操作系统indigo
- Ubuntu14.04 ROS Indigo安装,卸载方法 ,以及roscore运行错误解决
- SLAM学习1 Ubuntu16.04安装ROS-kinetic
- Ubuntu14.04运行ORB_SLAM2总结
- rtab_map ubuntu ROS 安装