D435i相机的标定及VINS-Fusion config文件修改

引言

当我们想使用D435i相机去跑VINS-Fusion时,如果不把标定过的相机信息写入config文件中就运行,这样运动轨迹会抖动十分严重,里程计很容易漂。接下来将介绍如何标定D435i相机,并设置VINS-Fusion的config文件。

一 标定前的准备工作

在标定前我们需要查看相机的加速度在静止时是否正常,标准是加速度计的N:9.8左右。
通过打开realsense-viewer,点击Motion Module按键,然后放在Accel上观察。

D435i相机的标定及VINS-Fusion config文件修改
如果你的此数值不在9.8附近,就需要对IMU进行校准,不然最后运行VINS-Fusion会发生抖动。

; 1.1校准IMU

若IMU加速度计正常,可跳过下面的校准过程。
realsense官方给了进行IMU校准的方法,参考网址为:https://dev.intelrealsense.com/docs/imu-calibration-tool-for-intel-realsense-depth-camera
下载对应的pdf文件,直接从第三节开始看即可。

D435i相机的标定及VINS-Fusion config文件修改
校准完会发现加速度计的值在9.8左右,恢复正常。

; 1.2检查相机的健康状态

参考realsense官网给出的相机健康检查方法
https://www.intelrealsense.com/best-known-methods-for-optimal-camera-performance-over-lifetime
具体的校准方法在第三节部分,如下图所示

D435i相机的标定及VINS-Fusion config文件修改
具体步骤参考官方教程

; 二 D435i相机标定

2.1 标定工具准备

2.1.1 code_utils

1.创建工作空间,将code_utils及imu_utils放入其中,工作空间名称自己定(当然也可以放在你已有的工作空间内)。这两个工具都是imu标定需要用到的,可以标定出imu的噪声密度和随机游走。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ..

catkin_make

2.下载编译code_utils

cd ~/catkin_ws/src
git clone https:
cd ..

catkin_make

2.1.2 imu_utils

cd ~/catkin_ws/src
git clone https:
cd ..

catkin_make

2.1.3 Kalibr

参考官方的Installation步骤
https://github.com/ethz-asl/kalibr/wiki/installation

2.2 IMU标定

1.找到你安装的realsense-ros包,复制launch文件中的rs_camera.launch文件,并重命名为rs_camera2.launch(命名自定),修改如下的参数:
修改前:

<arg name="unite_imu_method"          default=""/>

修改后

<arg name="unite_imu_method"          default="linear_interpolation"/>

修改该参数的目的是为了将加速度计(accel)和陀螺仪(gyro)的数据合并得到imu话题。

运行相机启动文件

roslaunch realsense2_camera rs_camera2.launch

2.打开~/catkin_ws/src/imu_utils/launch(参考自己的安装路径),在此位置打开终端并运行命令

gedit d435i_imu_calibration.launch

写入如下内容:

<launch>

    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
        <!--TOPIC名称和上面一致-->
        <param name="imu_topic" type="string" value= "/camera/imu"/>
        <!--imu_name 无所谓-->
        <param name="imu_name" type="string" value= "d435i"/>
        <!--标定结果存放路径-->
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <!--数据录制时间-min-->
        <param name="max_time_min" type="int" value= "50"/>
        <!--采样频率,即是IMU频率,采样频率可以使用rostopic hz /camera/imu查看,设置为200,为后面的rosbag play播放频率-->
        <param name="max_cluster" type="int" value= "200"/>
    </node>

</launch>

在imu_utils下创建data文件夹,标定结果将存放到此处。
3.录制数据包,将realsense相机静止放置,放置时间要略大于d435i_imu_calibration.launch中设置的录制时间,即大于50min(参考别的博客有设置120min的,也有50min的,经过自己测试50min是可以的)

rosbag record -O imu_calibration /camera/imu

其中imu_calibration是录制bag包的名字,可自己定义,录制的包会生成在当前终端的目录下,/camera/imu是相机发布的IMU话题。

4.运行标定程序

cd /catkin_ws
source ./devel/setup.bash
roslaunch imu_utils d435i_imu_calibration.launch

5.打开新终端,播放录制的数据包

cd 数据包所在路径
rosbag play -r 200 imu_calibration.bag

标定结束后,我们打开/catkin_ws/src/imu_utils/data,其中d435i_imu_param.yaml是我们需要的结果,内容如下:

%YAML:1.0
model_type: PINHOLE
camera_name: camera
image_width: 640
image_height: 480
distortion_parameters:
   k1: 0.002403959808138445
   k2: 0.001212094600722141
   p1: 0.0027975318922339606
   p2: 0.0013305451339391025
projection_parameters:
   fx: 389.1883630968763
   fy: 389.9466918297371
   cx: 322.6505040434058
   cy: 244.3879141231001

(3)right.yaml

`bash
%YAML:1.0

Original: https://blog.csdn.net/m0_46555669/article/details/127277626
Author: Haoyang Liu
Title: D435i相机的标定及VINS-Fusion config文件修改

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/805671/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球