realsense435i运行vins-mono,标定部分

Posted chengwei0019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了realsense435i运行vins-mono,标定部分相关的知识,希望对你有一定的参考价值。

相机标定

1.安装kalibr;

参考:

https://blog.csdn.net/wangbaodong070411209/article/details/112248834
https://blog.csdn.net/weixin_40628128/article/details/95945945

2.生成棋盘格

生成棋盘格:rosrun kalibr kalibr_create_target_pdf --type checkerboard --nx 8 --ny 11 --csx 0.05 --csy 0.05
生成tag:rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.002 --tspace 0.3

3.录制bag

首先打开传感器,打开rviz显示图像
之后使用throttle控制图像频率:rosrun topic_tools throttle messages /camera/color/image_raw 4.0 /color
最后,开始录制:rosbag record -O camera_calib /color

4. 相机标定

相机标定:kalibr_calibrate_cameras --bag ./camera_calib.bag --topics /camera/color/image_raw --models pinhole-radtan --target checkboard.yaml --show-extraction

标定结果验证:kalibr_camera_validator --cam camchain.yaml --target target.yaml

5.标定结果

标定结果,会存储在你打开终端的同级目录下;

主要结果保存在camchain-.camera_calib.yaml中

 

imu噪声标定

1. 安装imu_utils

安装依赖:sudo apt-get install libdw-dev
编译code_utils和imu_utils
mkdir -p imu-calibration/src
cd imu-calibration/src
git clone https://github.com/gaowenliang/code_utils.git
cd ..
catkin_make
cd imu-calibration/src
git clone https://github.com/gaowenliang/imu_utils.git
cd ..
catkin_make

参考:https://blog.csdn.net/learning_tortosie/article/details/89878769

2. 采集imu数据

在 IMU 静止时收集数据,持续两小时。

3.imu标定

启动标定程序:roslaunch imu_utils A3.launch
启动imu数据bag:rosbag play *.bag -r 100  #100倍速播放

注意修改launch文件中的imu_topic名称,这里imu_name是后续保存标定结果的名称,可以自定义一个;之后就是根据你bag的时间长短,修改max_time_min,单位分钟
<launch>
    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
        <param name="imu_topic" type="string" value= "/djiros/imu"/>
        <param name="imu_name" type="string" value= "A3"/>
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <param name="max_time_min" type="int" value= "120"/>
        <param name="max_cluster" type="int" value= "100"/>
    </node>
</launch>

4. 标定结果如下图

5.绘制allan方差曲线 

在/catkin_ws/src/imu_utils/scripts这个文件夹,有一些matlab的脚本,用于绘制allan方差曲线。需要修改data文件存放的路径和名字,但这些脚本没有提供计算函数,只是绘图,根据5个斜率值可以从曲线计算出yaml文件对应的项目。
Matlab中具体的参数读取参考这个博主即可。

camera-imu联合标定

1.采集数据

采集标定数据
打开realsense传感器
利用throttle工具降低图像和imu的频率
rosrun topic_tools throttle messages /camera/color/image_raw 20.0 /color
rosrun topic_tools throttle messages /camera/gyro/image_info 200.0 /imu
录制bag:rosbag record -O camera_imu_calib /color /imu

标定动作参考:

Camera IMU calibration · ethz-asl/kalibr Wiki · GitHub

https://www.youtube.com/watch?app=desktop&v=puNXsnrYWTY

2.准备所需配置文件及bag

checkerboard.yaml同相机标定           [checkboard.yaml]

target_type: 'checkerboard' #gridtype
targetCols: 6               #number of internal chessboard corners 注意是内角点数目
targetRows: 9               #number of internal chessboard corners 注意是内角点数目
rowSpacingMeters: 0.0205      #size of one chessboard square [m]
colSpacingMeters: 0.0205      #size of one chessboard square [m]

相机内参,不变,拷贝过来直接使用  [camchain-.camera_calib.yaml]

cam0:
  cam_overlaps: []
  camera_model: pinhole
  distortion_coeffs: [0.1545332787281201, -0.29328728253932357, 0.0009158856796984043,
    -0.004117037989201413]
  distortion_model: radtan
  intrinsics: [895.8593377600124, 895.4889540186401, 630.3012145333126, 365.7491491175651]
  resolution: [1280, 720]
  rostopic: /color

imu.yaml,从标定结果中按如下调整;从imu标定结果中拷贝加速度计何陀螺仪噪声项

rostopic: /imu
update_rate: 200.0 #hz

accelerometer_noise_density: 2.2425918487046337e-02
accelerometer_random_walk: 6.8297332761668706e-04
gyroscope_noise_density: 1.8220181282912146e-03
gyroscope_random_walk: 1.8991478955472981e-05

3. 标定

kalibr_calibrate_imu_camera --target ./checkboard.yaml --cam ./camchain-.camera_calib.yaml --imu ./imu.yaml --bag ./camera_imu_calib.bag --bag-from-to 5 170 --show-extraction

4. 标定结果

标定结果保存在camchain-imucam-.camera_imu_calib.yaml中

 参考:Realsense D435I标定_小岛_神酱的博客-CSDN博客_realsense标定

以上是关于realsense435i运行vins-mono,标定部分的主要内容,如果未能解决你的问题,请参考以下文章

realsense435i运行vins-mono,标定部分

realsense435i运行vins-mono,标定部分

RealSense435i,运行VINS-mono

RealSense435i,运行VINS-mono

RealSense435i,运行VINS-mono

RealSense435i,运行VINS-mono