Kalibr联合标定Camera-IMU (总结)

本文详细介绍Kalibr工具的安装配置,包括依赖库安装与工作空间创建;指导如何自制标定板,进行相机标定的数据采集、标定及验证;并概述了IMU标定流程与相机-IMU联合标定方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Kalibr安装

  • 安装依赖库
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-indigo-vision-opencv ros-indigo-image-transport-plugins ros-indigo-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev

sudo pip install python-igraph --upgrade
  • 创建工作空间
mkdir -p ~/catkin_kalibr/src
cd ~/catkin_kalibr/src
catkin_init_workspace

cd ..
catkin_make

echo "source ~/catkin_kalibr/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

cd ~/catkin_kalibr/src
git clone https://github.com/ethz-asl/Kalibr.git

cd ..
catkin_make

等待一段时间(20分钟左右),安装编译完成.

2. 制作标定板

使用aprilgrid标定板,可以使用kalibr自带工具自定义生成不同大小的标定板,命令行如下:

 kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]

// 例如
kalibr_create_target_pdf --type apriltag --nx 5 --ny 5 --tsize 0.025 --tspace 0.4

将以上命令生成的标定板PDF格式(例子使用的是A4纸大小),直接无缩放比例打印出来,就可以直接使用。

  • 可能会出现问题

No moudule named pyx
译器报错,import不到pyx这个包(pyx这个python包用于产生pdf文件)

  • 解决方法

输入一下命令安装即可,pip安装的话,没有效果,依旧存在错误,(很迷)

sudo apt-get install python-pyx

3. Camera标定

3.1采集数据

  • 设置采样频率,并转换话题

制作好标定板之后,就可以使用相机对标定板进行拍摄,进行数据采集,相机要从多个角度对标定进行拍摄,这样相机pose要足够多。命令行如下:

rosrun topic_tools throttle messages /camera/rgb/image_color 5.0 /kinect

命令行中 topic_tools throttle 为ROS中改变 topic 发布频率的命令,通常设备采集频率为30Hz左右,这会使得标定的图像太多,急剧增加计算量,最好将 ros topic 降到 5hz左右进行数据采集。要确保图像不要模糊,运动不要太快!

  • 制作rosbag

数据采集好了之后就可以进行 bag 的制作了,命令行如下:

rosbag record -O mono_calibra.bag /kinect

3.2开始标定

kalibr_calibrate_cameras --bag '/home/guofeng/mono_calibra.bag'  --topics /kinect  --models pinhole-equi --target april_5x5_25x10mm.yaml

3.3标定验证

可以使用calibration validator进行标定结果的验证,原理是对重投影误差进行量化分析。命令行如下:

kalibr_camera_validator --cam camchain.yaml --target april_5x5_25x10mm.yaml

命令行中 camchain.yaml 与 target.yaml 分别为上述中 camera 标定的结果以及标定板的 yaml 文件。

4. IMU标定

参见另一篇博客:IMU标定及Allan方差分析

5. Camera与IMU联合标定

### Camera-IMU 标定方法 Camera-IMU联合标定旨在精确确定相机和惯性测量单元(IMU)之间的相对位置和姿态关系。这一过程对于融合这两种传感器的数据至关重要,尤其是在机器人导航、自动驾驶等领域。 #### 方法概述 一种常见的做法是通过视觉里程计(VO)IMU数据的时间同步来实现外参数的估计。具体来说: - **特征匹配**:从连续图像帧中提取并匹配特征点。 - **运动模型构建**:利用这些匹配点计算相隔时间内的相机位移变换\( R_{\text{camera}} \),以及同一时间段内由IMU积分获得的姿态变化 \( R_{\text{imu}} \)[^2]。 - **优化求解**:将上述两个变换量作为约束条件设置成最小化问题,并采用奇异值分解(SVD)或其他数值算法寻找最优解——即代表两者之间转换关系的旋转和平移向量。 #### 使用Kalibr进行快速上手 为了简化这个复杂的过程,可以借助开源软件包如[Kalibr](https://github.com/ethz-asl/kalibr),它提供了完整的工具链来进行摄像头单体及多模态系统的内外参标定工作。安装方式简单明了: ```bash mkdir -p ~/kalibr_ws/src && cd ~/kalibr_ws/src git clone https://github.com/ethz-asl/kalibr.git . cd .. catkin_make source devel/setup.bash ``` 完成环境搭建之后,按照官方文档指引准备棋盘格图案及其尺寸规格等必要材料即可开展实验[^3]。 #### VINS-Fusion的应用实例 [VINS-Fusion](http://wiki.ros.org/vins_fusion) 是另一个强大的框架,在实际应用中有很好的表现效果。该方案不仅能够处理静态场景下的标定任务,还特别擅长于动态环境中实时调整外部参数。其核心在于巧妙地结合了双目视差信息与加速度计读数间的关联特性,从而实现了更加鲁棒可靠的估计性能。 ### 相关问题 1. 如何评估不同条件下Camera-IMU标定结果的好坏? 2. Kalibr支持哪些类型的传感器组合用于联合标定? 3. 在VINS-Fusion中标定时如何选择合适的初始猜测值? 4. 是否存在其他流行的Camera-IMU联合标定库或工具? 5. 对于初学者而言,学习Camera-IMU标定的最佳起点是什么?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值