1. ROS相机内参标定核心概念解析
相机标定是机器人视觉系统搭建的第一步,也是ROS环境下视觉处理的基础环节。我见过太多新手在标定环节翻车,导致后续的SLAM、导航、物体识别全部跑偏。所谓内参标定,本质上是建立相机成像的数学模型,把物理世界中的三维点映射到二维图像坐标系的过程。
相机内参主要包括以下核心参数:
- 焦距(fx, fy):决定成像的放大倍数
- 主点坐标(cx, cy):图像坐标系的原点偏移
- 畸变系数(k1, k2, p1, p2, k3):描述镜头导致的图像形变
在ROS生态中,camera_calibration功能包是官方维护的标定工具链,支持单目和双目相机的标定。实测发现,使用8x6的棋盘格(每个格子3cm)在2米距离内标定,可以获得较好的参数精度。
关键提示:标定质量直接影响后续视觉算法效果。我曾遇到一个案例,因为标定时棋盘格摆放距离不足,导致建图时特征点深度计算误差达到15%!
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 标定前环境准备与工具配置
2.1 硬件准备清单
- USB相机或RGB摄像头(推荐Logitech C920以上型号)
- 标准棋盘格(建议打印A3尺寸)
- 平整的硬质标定板(我用的是5mm厚亚克力板)
- 光照均匀的环境(避免反光和阴影)
2.2 软件安装步骤
bash复制# 安装ROS完整版(以Noetic为例)
sudo apt-get install ros-noetic-desktop-full
# 安装相机驱动和标定包
sudo apt-get install ros-noetic-usb-cam ros-noetic-camera-calibration
# 验证安装
rosdep install camera_calibration
对于国内用户,可以使用鱼香ROS的一键安装脚本加速环境搭建:
bash复制wget http://fishros.com/install -O fishros && . fishros
2.3 棋盘格生成技巧
官方推荐使用8x6的棋盘格,每个格子边长建议在2-5cm之间。我常用以下命令生成PDF:
bash复制rosrun camera_calibration create_chessboard.py --square
