4. 相机模型与标定
在无人机视觉精准降落任务中,相机是把三维世界映射到二维图像的关键传感器。若不知道“像素点如何对应真实空间方向”,后续的地面标记检测、位姿估计与下降控制都会失去尺度与几何依据。本节围绕针孔成像、畸变建模、内外参标定、手眼标定以及误差评估,建立从模型到工程落地的完整链路。
一、针孔模型:从三维点到像素坐标
针孔模型是最常用的相机成像近似。设相机坐标系下一点为 P_c = (X_c, Y_c, Z_c),归一化平面坐标为 x = X_c / Z_c、y = Y_c / Z_c,再经内参矩阵投影到像素坐标:
u = fx * x + cx
v = fy * y + cy
[u] [fx 0 cx] [X_c/Z_c]
[v] = [0 fy cy] [Y_c/Z_c]
[1] [0 0 1] [ 1 ]
其中 fx、fy 为焦距(像素单位),cx、cy 为主点。内参描述相机自身属性,外参描述相机相对世界坐标系的旋转 R 与平移 t。无人机降落时,若已知降落标志在世界系中的位置,结合外参即可反推相机位姿,进而得到相对高度与水平偏移。
二、畸变模型:真实镜头的修正
真实镜头存在径向畸变与切向畸变。径向畸变使直线在图像边缘弯曲,常用 k1、k2、k3 描述;切向畸变由镜头与成像平面不平行引起,常用 p1、p2 描述。去畸变过程通常先对归一化坐标修正,再乘内参:
x_dist = x(1 + k1*r^2 + k2*r^4 + k3*r^6)
+ 2*p1*x*y + p2*(r^2 + 2*x^2)
y_dist = y(1 + k1*r^2 + k2*r^4 + k3*r^6)
+ p1*(r^2 + 2*y^2) + 2*p2*x*y
对于降落场景,畸变会直接导致标志中心偏移与角点位置误差。广角镜头在低空近距离时畸变尤为明显,因此必须在检测前完成去畸变,或在校正后的图像上提取角点。
三、内参外参标定与手眼标定
内参标定常用棋盘格或圆点标定板,采集多姿态图像,通过张正友标定法求解内参与畸变系数。外参标定则确定相机相对机体或世界系的安装关系。手眼标定解决的是相机与无人机机体系(或云台、降落平台)之间的坐标变换,典型形式为 AX = XB,其中 X 为待求手眼矩阵。
- 内参标定:输入多张标定板图像,输出
fx、fy、cx、cy、k1、k2、p1、p2。 - 外参标定:确定相机到机体的
R、t,用于把视觉结果转到控制坐标系。 - 手眼标定:通过多组机械运动与对应观测,求解相机与执行机构间的固定变换。
工程中常用 ROS 与 OpenCV 完成标定,命令示例如下:
rosrun camera_calibration cameracalibrator.py \
--size 8x6 --square 0.025 \
image:=/camera/image_raw camera:=/camera
# 标定完成后保存
camera_calibration_parsers
四、标定误差评估与工程复盘
标定不是“跑一次就结束”,误差评估决定视觉降落是否可信。常用指标包括重投影误差、角点残差、位姿重复性与实际降落偏差。重投影误差反映标定参数对训练图像的解释能力,但过低也可能过拟合;更关键的是在独立验证集与真实飞行中的表现。
| 评估项 | 含义 | 典型目标 | 异常处理 |
|---|---|---|---|
| 重投影误差 | 三维点投影回图像与检测点的偏差 | < 0.3 px | 增加姿态多样性,剔除模糊帧 |
| 角点残差分布 | 误差是否集中在图像边缘 | 均匀分布 | 检查畸变模型与标定板覆盖 |
| 位姿重复性 | 同一位置多次估计的波动 | 厘米级 | 检查时间同步与标定板平整度 |
| 实际降落偏差 | 最终落点与目标点距离 | 满足任务指标 | 联合优化手眼矩阵与控制延迟 |
综上,针孔模型给出理想投影关系,畸变模型修正真实镜头偏差,内参外参标定建立像素与空间的桥梁,手眼标定统一相机与机体坐标,误差评估则决定这套参数能否支撑稳定降落。只有把五者串成闭环,视觉精准降落才具备可重复、可验证的工程基础。