kalibr相机标定和IMU标定

相机标定#

打印标定板和对应的aprilgrid.yaml#

Copy
target_type: 'aprilgrid' #gridtype tagCols: 6 #number of apriltags tagRows: 6 #number of apriltags tagSize: 0.038 #size of apriltag, edge to edge [m] tagSpacing: 0.3 #ratio of space between tags to tagSize

录制.bag#

使用rosbag record -O cam /camera_topic_name录制bag包

录一分钟左右,录的时候对着标定板移动,按下ctrl+c 结束录制

标定#

Copy
kalibr_calibrate_cameras --target aprilgrid.yaml --bag camd4.bag --models pinhole-radtan --topics /camera_topic_name --show-extraction

我调用出错,应该使用rosrun去运行:

Copy
rosrun kalibr kalibr_calibrate_cameras --target aprilgrid.yaml --bag camd.bag --models pinhole-radtan --topics /camera_topic_name --show-extraction

IMU标定#

标定加速度偏差和零偏#

在realsense驱动目录下librealsense/tools/rs-imu-calibration运行:

Copy
python rs-imu-calibration.py

我的路径:~/MyCodes/realsense/librealsense

标定其噪声模型#

  • 安装imu标定工具到~/MyCatkinWs/imu_ws
  • 建立对应的launch文件:(~/MyCatkinWs/imu_ws/src/imu_utils/launch/d455_imu_calibration.launch)
Copy
<launch> <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen"> <param name="imu_topic" type="string" value= "/camera/imu"/> <param name="imu_name" type="string" value= "d455_imu_calibration"/> <param name="data_save_path" type="string" value= "$(find imu_utils)/data2/"/> <param name="max_time_min" type="int" value= "10"/> <param name="max_cluster" type="int" value= "100"/> </node> </launch>

其中 是标定时间的意思

  • 修改 rs_camera.launch:(/opt/ros/noetic/share/realsense2_camera/launch/rs_camera.launch)
Copy
<arg name="gyro_fps" default="200"/> # 这里我擅自修改 <arg name="accel_fps" default="200"/># 这里我擅自修改 <arg name="enable_gyro" default="true"/> <arg name="enable_accel" default="true"/> <arg name="enable_sync" default="false"/> #这里存疑,这里我擅自修改 <arg name="unite_imu_method" default="linear_interpolation"/>
  • 静止录制bag
Copy
roscore roslaunch realsense2_camera rs_camera.launch rosbag record -O imu_calibration /camera/imu
  • 标定
    终端1:
    Copy
    source ~/MyCatkinWs/imu_ws/devel/setup.sh roslaunch imu_utils d455_imu_calibration.launch
    终端2:
    Copy
    source ~/MyCatkinWs/imu_ws/devel/setup.sh cd ~/MyCatkinWs/imu_ws //数据包在这个文件夹下 rosbag play -r 200 imu_calibration.bag
    看(1)的terminal,会有一串东西产生,而且该terminal已经可以输入命令了(意味着标定进程已经结束),说明已经标定好了,这时候要看结果
    Copy
    cd ~/MyCatkinWs/imu_ws/src/imu_utils/data2

里面有一个文件:
d455_imu_calibration_imu_param.yaml

联合标定#

运行realsense后映射话题:

Copy
roslaunch realsense2_camera rs_camera.launch # 运行realsense # 映射话题 rosrun topic_tools throttle messages /camera/color/image_raw 20.0 /color rosrun topic_tools throttle messages /camera/imu 200.0 /imu

录制bag,要对着棋盘格(~/MyCatkinWs/kalibr_workspace/target.pdf),录制将近两分钟:

Copy
rosbag record -O dynamic /color /imu

根据第二部标定的imu(d455_imu_calibration_imu_param.yaml)。生成imu.yaml文件:

标定:

Copy
rosrun kalibr kalibr_calibrate_imu_camera --target checkerboard.yaml --cam camd435i.yaml --imu imu.yaml --bag dynamic.bag --show-extraction

生成好多个文件,主要关注一个文件:
camchain-imucam-dynamic.yaml
并且确认重投影误差,我的误差为0.56个像素我看网上其他人能到0.15以下已经是很好的了。

参考:
https://blog.csdn.net/Hanghang_/article/details/103546033
https://zhuanlan.zhihu.com/p/396368225

posted @   小帆敲代码  阅读(588)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2019-10-27 python语法学习第六天--集合
2019-10-27 python语法学习第六天--字典
2019-10-27 表单提交方式
点击右上角即可分享
微信分享提示
CONTENTS