从零开始使用Realsense D435i运行VINS-Mono
從零開始使用Realsense D435i運行VINS-Mono
- 從零開始使用Realsense D435i運行VINS-Mono
- (1)安裝測試librealsense SDK 2.0
- (2)安裝測試realsense
- (3)安裝測試VINS-Mono
- (4)在D435i上運行VINS-Mono
從零開始使用Realsense D435i運行VINS-Mono
這次測試D435i過程還是比較順利的,僅僅花了一個下午就搞定了,比之前測試ZR300和SR300要好多了,下面是我用D435i跑VINS-Mono的全過程(沒啥技術含量),首先說下我的電腦配置,
我的電腦的配置:
CPU:Intel? Core? i5-4590 CPU @ 3.30GHz × 4
內存:11.7 GiB
顯卡:GeForce GTX 750 Ti/PCIe/SSE2
系統版本:Ubuntu16.04
系統內核:4.15.0-47-generic(命令:cat /proc/version)
ROS版本:Kinetic
(1)安裝測試librealsense SDK 2.0
librealsense SDK相當于相機的驅動,SR300和ZR300的支持驅動是librealsense SDK 1.0,而D435i是librealsense SDK 2.0,貌似一臺電腦上不能同時裝兩個SDK,所以要注意下。SDK的安裝方式有兩種,一個是從源碼編譯安裝,一個是直接命令行安裝,之前librealsense SDK 1.0我采用的是從源碼編譯安裝,感覺比較麻煩,所以這次用嘗試下了直接命令行安裝,沒想到出乎意料地順利。
官方安裝教程Intel? RealSense? SDK 2.0,這里我把當回搬運工:
運行完上面測試命令之后會彈出來一個看上去還滿酷的SDK界面,打開三個按鈕可以看到RGB、雙目和IMU的結果就證明你的SDK裝成功了。
(2)安裝測試realsense
這個realsense指的是對應的realsense相機的ROS包,官方教程如下ROS Wrapper for Intel? RealSense? Devices
這里就很簡單啦,先進入你的ROS工作空間
然后運行(不加filters:=pointcloud好像沒有點云的節點)
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud打開rviz,添加PointCloud2的mudule就可以看到點云,如下
(3)安裝測試VINS-Mono
這一步先用數據集測試VINS-Mono
同樣,進入你的ROS工作空間
這里編譯可能需要安裝ceres,安裝ceres的步驟自行百度就好,編譯源碼的同時可以把數據集給下了,測試用的bag文件會比較方便,數據集地址
然后打開三個terminal,分別運行
roslaunch vins_estimator euroc.launch roslaunch vins_estimator vins_rviz.launch rosbag play MH_01_easy.bag結果如下圖
有趣的是,數據集里面可以看到測試人員開始的時候拿著攝像頭前后左右晃了晃,這個應該是給IMU初始化用的。
(4)在D435i上運行VINS-Mono
前面都測試好之后就可以再D435i上運行VINS-Mone了,這里特地感謝下博客如何用Realsense D435i運行VINS-Mono等VIO算法 獲取IMU同步數據的作者Manii,讓這個過程變得非常簡單,如果大家需要對這個過程有一個更加詳細的了解可以去參考那個博客,研究出來下面的步驟還是挺費時間的,這里我簡單說下流程:
第一處,修改unite_imu_method如下,這里是讓IMU的角速度和加速度作為一個topic輸出
<arg name="unite_imu_method" default="copy"/>第二處,修改enable_sync參數為true,這里是開機相機和IMU的同步
<arg name="enable_sync" default="true"/>第一處,修改訂閱的topic
imu_topic: "/camera/imu" image_topic: "/camera/color/image_raw"第二處,修改相機內參,這里先再次打開運行realsesne包,然后可以通過如下命令獲取相機內參
rostopic echo /camera/color/camera_info第三處,IMU到相機的變換矩陣,這里我根據注釋的提示修改成2
# Extrinsic parameter between IMU and Camera. estimate_extrinsic: 2 # 0 Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, don't change it.# 1 Have an initial guess about extrinsic parameters. We will optimize around your initial guess.# 2 Don't know anything about extrinsic parameters. You don't need to give R,T. We will try to calibrate it. Do some rotation movement at beginning. #If you choose 0 or 1, you should write down the following matrix.第四處,IMU參數,這里我全部修改注釋給的參數
#imu parameters The more accurate parameters you provide, the better performance acc_n: 0.2 # accelerometer measurement noise standard deviation. #0.2 gyr_n: 0.05 # gyroscope measurement noise standard deviation. #0.05 acc_w: 0.02 # accelerometer bias random work noise standard deviation. #0.02 gyr_w: 4.0e-5 # gyroscope bias random work noise standard deviation. #4.0e-5 g_norm: 9.80 # gravity magnitude第五處,是否需要在線估計同步時差,根據上述博主的建議這里選擇不需要
#unsynchronization parameters estimate_td: 0 # online estimate time offset between camera and imu td: 0.000 # initial value of time offset. unit: s. readed image clock + td = real image clock (IMU clock)第六處,相機曝光改成全局曝光
#rolling shutter parameters rolling_shutter: 0 # 0: global shutter camera, 1: rolling shutter camera rolling_shutter_tr: 0 # unit: s. rolling shutter read out time per frame (from data sheet).3. 打開攝像頭,運行VINS-Mono
roslaunch realsense2_camera rs_camera.launch roslaunch vins_estimator realsense_color.launch roslaunch vins_estimator vins_rviz.launch結果如下:
步驟到此就結束啦,五一假期閑著沒事在實驗室測試了下VINS,之后好好學習下原理讀下源碼,如果可以的話應用到自己項目中來。
此外,對SLAM算法感興趣的同學可以看考我的博客SLAM算法總結——經典SLAM算法框架總結
總結
以上是生活随笔為你收集整理的从零开始使用Realsense D435i运行VINS-Mono的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习框架YOLOv3的C++调用
- 下一篇: 多视图几何总结——基础矩阵、本质矩阵和单