单目相机使用kalibr标定全流程
相机4Hz下使用标定板录取bag包
(可以预先调整相机各项参数如曝光频率等)
(参数在哪里找,我是从驱动相机的launch文件里面找到对应的yaml配置文件,修改对应的yaml配置文件相应的代码就可以改图片大小曝光频率等参数)
#先开相机,然后
rosbag record /topic
(这里的topic是相机话题,可以先打开相机看一下话题名称再录制)
rostopic list #列出当下所有topic
然后开始采集标定数据
采集单目标定数据时,注意:
1.标定板的位姿尽量丰富一些,让tag尽量均匀分布在图像里
2.将相机视野划为9宫格,在每个宫格里进行【正视、上翻、下翻、左翻、右翻】五种图像帧
下载编译kalibr
mkdir -p Kalibr_ws/src
cd Kalibr_ws/src
git clone --recursive https://github.com/ori-drs/kalibr
(网络不好可以预先下载拷贝过去然后解压)
然后回到kalibr_ws
catkin_make(catkin build -DCMAKE_BUILD_TYPE=Release -j4)
等待大约10分钟
(中间可能会报错缺少库,根据报错下载对应的库·再重新build)
将录好的bag包和标定板参数配置文件 XX.yaml放置在Kalibr_ws文件夹下
source devel/setup.bash
rosrun kalibr kalibr_calibrate_cameras --bag 1.bag --topics /HKRCams/Cam0 --models pinhole-radtan --target april_6x6_max.yaml
#checkboard 文件直接下载对应的或者直接写一个yaml文件
target_type: 'checkerboard'
targetCols: 11
targetRows: 8
colSpacingMeters: 0.025
rowSpacingMeters: 0.025
–bag包名 –topics话题名 --models 采用什么相机模型 –traget标定板参数
(需要根据实际进行修改)
pinhole-fov: 针孔相机模型 + 视场(FOV)畸变模型,适合广角镜头。
pinhole-radtan:径向和切向畸变模型(常见普通镜头)。
omni-none: 全向相机无畸变。
校准报告结果(参考)
校准报告分析总结(参考)
1. 相机系统参数
相机模型:DistortedPinholeCameraGeometry
使用带有畸变的针孔模型
畸变参数:
[-0.0605, 0.0834, 0.0002, -0.0002],标准差较小,表明畸变估计稳定。
推测为径向畸变(k1, k2)和切向畸变(p1, p2)的组合(与pinhole-radtan模型一致)。
内参(投影参数):
[fx=1276.74, fy=1277.02, cx=649.80, cy=519.71],主点接近图像中心 (假设图像分辨率 为1280x1024),符合预期。
重投影误差:
均值接近零,标准差约0.2像素,校准精度较高,属于优秀范围(通常 <0.5像素即可接
受)。
2. 标定板配置
类型:棋盘格(checkerboard),8行×11列,方格尺寸0.025米。
3. 位姿估计与误差分析
位姿数据误差(第二页):
极坐标误差(第三页):
o误差随极角(0°~20°)增大略有上升,但整体保持在0.8像素以内。
o高频区域(如极角>15°)误差稍高,可能与镜头边缘畸变补偿不足有关。
方位角误差(第四页):
o误差在-100°~100°范围内分布均匀,无明显方向性偏差,表明校准模型对全方位角适应良好。
4. 重投影误差与异常点
误差分布(第五页):
oX/Y方向误差集中在±0.5像素内,仅少数点超出±1.0像素(可能是异常点)。
o图像索引(0~30)的误差趋势平稳,未出现系统性漂移。
异常点(第六页):
o部分角点被移除(图中散点),可能由于运动模糊、标定板遮挡或检测错误导致。
o异常点数量较少,对整体校准影响有限。