kalibr相机标定和IMU标定
相机标定#
打印标定板和对应的aprilgrid.yaml#
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 结束录制
标定#
kalibr_calibrate_cameras --target aprilgrid.yaml --bag camd4.bag --models pinhole-radtan --topics /camera_topic_name --show-extraction
我调用出错,应该使用rosrun去运行:
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运行:
python rs-imu-calibration.py
我的路径:~/MyCodes/realsense/librealsense
标定其噪声模型#
- 安装imu标定工具到~/MyCatkinWs/imu_ws
- 建立对应的launch文件:(~/MyCatkinWs/imu_ws/src/imu_utils/launch/d455_imu_calibration.launch)
<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)
<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
roscore
roslaunch realsense2_camera rs_camera.launch
rosbag record -O imu_calibration /camera/imu
- 标定
终端1:
终端2:source ~/MyCatkinWs/imu_ws/devel/setup.sh roslaunch imu_utils d455_imu_calibration.launch
看(1)的terminal,会有一串东西产生,而且该terminal已经可以输入命令了(意味着标定进程已经结束),说明已经标定好了,这时候要看结果source ~/MyCatkinWs/imu_ws/devel/setup.sh cd ~/MyCatkinWs/imu_ws //数据包在这个文件夹下 rosbag play -r 200 imu_calibration.bag
cd ~/MyCatkinWs/imu_ws/src/imu_utils/data2
里面有一个文件:
d455_imu_calibration_imu_param.yaml
联合标定#
运行realsense后映射话题:
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),录制将近两分钟:
rosbag record -O dynamic /color /imu
根据第二部标定的imu(d455_imu_calibration_imu_param.yaml)。生成imu.yaml文件:
标定:
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源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 表单提交方式