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,标定部分的主要内容,如果未能解决你的问题,请参考以下文章