3、摄像头选型与安装:摄像头类型(单目、双目、深度相机)、分辨率、帧率、视场角、安装位置与校准
视觉避障系统的性能上限,在硬件选型阶段就已经被锁定。PX4 飞控负责融合传感器数据并输出避障决策,但“看得清、看得准、看得远”完全取决于摄像头本身。本章围绕摄像头选型与安装展开,重点解决三个问题:选择什么类型的摄像头、如何确定关键光学参数、以及如何正确安装与校准,使视觉数据能够稳定服务于 PX4 的避障算法。
3.1 摄像头类型选择:单目、双目与深度相机的工程权衡
PX4 视觉避障对深度数据的获取方式决定了系统架构的复杂度。三种主流摄像头方案在原理、精度、成本和计算负载上差异显著,需要根据无人机平台的实际约束进行选择。
核心原理对比
- 单目相机:仅输出 2D 图像,深度信息需要通过运动恢复结构(SfM)或深度学习模型估计。PX4 中常配合光流传感器使用,利用连续帧之间的视差推算障碍物距离。优点是成本低、体积小、功耗低;缺点是深度估计误差随距离增大而急剧上升,且对纹理稀疏环境敏感。
- 双目相机:通过两个固定间距的相机同步采集图像,利用三角测量原理计算视差图,从而获得稠密深度。基线长度(两个镜头中心距)直接决定有效测距范围:基线越长,远距离精度越高,但体积也越大。典型基线 6cm~12cm 的双目相机在 0.5m~8m 范围内精度可达 1%~3%。
- 深度相机(ToF/结构光):主动发射红外光或激光,通过测量飞行时间或光斑形变直接获取深度。在室内弱纹理环境下表现优异,但户外强光下信噪比会显著下降。PX4 生态中较少直接使用深度相机作为主避障传感器,更多用于室内无人机或 SLAM 建图场景。
| 对比维度 | 单目相机 | 双目相机 | 深度相机 |
|---|---|---|---|
| 深度获取方式 | 算法估计(SfM/深度学习) | 视差三角测量 | ToF / 结构光主动测距 |
| 有效测距范围 | 0.5m~5m(误差较大) | 0.3m~10m(基线决定) | 0.1m~5m(室内) |
| 深度精度 | 距离的 5%~10% | 距离的 1%~3% | 距离的 0.5%~2% |
| 户外强光适应性 | 好 | 较好 | 差(红外干扰) |
| 计算负载 | 低(但算法复杂) | 高(立体匹配) | 低(硬件直接输出) |
| 典型成本 | ¥100~500 | ¥500~2000 | ¥1000~4000 |
| PX4 适配度 | 配合光流使用 | 推荐(可直接输出深度) | 需额外驱动开发 |
实战场景:小型四旋翼的避障选型
某款轴距 450mm 的小型四旋翼需要实现 10m/s 前飞时的避障功能。初始方案采用单目相机 + 光流,但在实际测试中发现:当无人机以 8m/s 速度飞行时,单目深度估计的延迟导致制动距离不足,在距离障碍物 3m 处才能触发避障,而安全制动距离需要 4.5m。更换为基线 8cm 的双目相机(分辨率为 640×480,帧率 30fps)后,深度数据延迟降低至 30ms 以内,有效测距达到 6m,避障触发距离提前至 5m,成功满足安全裕度要求。
3.2 分辨率、帧率与视场角的参数匹配
这三个参数相互制约,不能独立选择。PX4 的避障算法(如 local_planner)对输入图像有明确的处理管线,参数不匹配会导致数据饥饿或计算过载。
判断方法:参数匹配流程
- 确定最小探测距离:根据无人机最大飞行速度 v 和制动时间 t,计算所需最小探测距离 d = v × t + 安全余量。例如 v=10m/s,t=1.5s,则 d ≥ 15m。
- 计算所需分辨率:在最小探测距离处,障碍物(如树枝,直径 5cm)在图像中至少应占据 3~5 个像素。使用公式:所需焦距 f = (d × 像素数 × 像素尺寸) / 障碍物尺寸。若传感器像素尺寸 3μm,需要 5 像素覆盖 5cm 障碍物,在 15m 处所需焦距约为 45mm,对应水平 FOV 约 30°。
- 选择帧率:帧率应保证相邻帧之间障碍物位移不超过图像宽度的 20%。以水平 FOV 60°、分辨率 640px 为例,10m/s 速度下,若障碍物在 5m 处,每帧位移约 0.33m,对应图像位移约 42px,占 6.5%,30fps 即可满足。
- 平衡计算负载:PX4 的避障模块通常运行在机载计算机(如 Raspberry Pi 4 或 Jetson Nano)上。1080p@30fps 的立体匹配计算量约为 640×480@30fps 的 5 倍以上,需评估 CPU/GPU 占用率。
分辨率:640×480(VGA)或 1280×720(HD)
帧率:30fps(最低),60fps(推荐,用于高速飞行)
水平 FOV:70°~100°(兼顾视野宽度和边缘畸变)
垂直 FOV:40°~60°(覆盖地面到水平线以上)
接口:USB3.0 或 CSI 接口,确保带宽充足
案例拆解:FOV 选择失误的教训
某团队为植保无人机选择了水平 FOV 120° 的超广角镜头,期望获得更大视野。但实际飞行中发现:图像边缘畸变严重,PX4 的避障算法在边缘区域产生大量误检;同时,广角镜头导致相同分辨率下每个障碍物所占像素减少,10m 外直径 10cm 的树枝仅占 2 个像素,无法被稳定检测。最终更换为 90° FOV 镜头,并配合 1280×720 分辨率,检测距离从 6m 提升至 12m,误检率下降 70%。
3.3 安装位置与机械设计
摄像头安装位置直接影响避障算法的有效视野和姿态解算的准确性。PX4 的视觉惯性里程计(VIO)和避障模块对相机外参有严格要求。
安装原则
- 前向避障:相机应安装在机头正前方,光轴与机体 X 轴平行或向下倾斜 10°~15°。向下倾斜可同时覆盖前方障碍物和地面纹理,便于 VIO 特征提取。
- 避免遮挡:确保螺旋桨、起落架、天线等部件不进入相机 FOV。建议在 CAD 中模拟 FOV 锥体,检查遮挡情况。
- 减震隔离:无人机飞行中的高频振动会导致图像模糊和 IMU 数据噪声。使用减震球或橡胶垫将相机与机架隔离,但必须保证刚性连接,避免低频晃动。
- 重心平衡:相机重量(通常 20~80g)会改变无人机重心,安装后需重新进行重心校准。
校准流程:内参与外参
内参标定:使用棋盘格或 AprilTag 标定板,采集 15~20 张不同角度的图像,通过 OpenCV 或 Kalibr 工具计算焦距、主点坐标和畸变系数。标定结果以相机参数文件形式提供给 PX4 或机载计算机。
# 使用 kalibr 标定双目相机示例
kalibr_calibrate_cameras \
--target april_6x6_50x50cm.yaml \
--models pinhole-equi \
--cam cam0 cam1 \
--bag stereo_data.bag \
--topics /cam0/image_raw /cam1/image_raw
外参标定:确定相机坐标系相对于飞控机体坐标系的旋转和平移。在 QGroundControl(QGC)中,通过“传感器” → “相机” 页面设置相机朝向(前向、下向、后向等),并输入精确的安装角度偏移。对于双目相机,还需确保左右相机光轴平行,基线长度准确。
实战案例:安装角度偏差导致的避障失效
某无人机团队在更换相机支架后,未重新标定外参。原支架使相机下倾 10°,新支架实际下倾 15°。飞行测试中,PX4 在距离障碍物 4m 处才触发避障,且绕行方向偏移约 1.2m。通过 QGC 查看相机姿态数据,发现相机坐标系与机体坐标系存在 5° 俯仰角偏差。重新标定后,避障触发距离恢复至 6m,绕行轨迹误差小于 0.3m。复盘结论:任何机械结构变更后,必须执行完整的外参标定流程,不能依赖经验值。
3.4 常见误区与总结复盘
在摄像头选型与安装环节,以下问题在工程实践中反复出现,需要特别注意:
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 盲目追求高分辨率 | 帧率下降、延迟增加、计算负载过高 | 根据探测距离需求反推分辨率 |
| 忽略 FOV 与焦距的关系 | 广角导致远处障碍物像素过少 | 在 FOV 和最小探测距离间取平衡 |
| 安装位置遮挡 | 图像部分区域无效,算法失效 | CAD 模拟 FOV 锥体,检查遮挡 |
| 减震过度或不足 | 图像模糊或低频晃动 | 使用合适硬度的减震球,测试验证 |
| 外参标定一次了事 | 机械变更后避障失效 | 每次拆装后重新标定 |
1. 明确飞行速度与制动距离,计算最小探测距离;
2. 根据探测距离选择焦距和 FOV,再确定分辨率与帧率;
3. 优先选择双目相机,确保深度数据质量;
4. 安装时保证光轴方向、减震和重心平衡;
5. 完成内参和外参标定,并在 QGC 中验证;
6. 进行实飞测试,记录避障触发距离和轨迹误差,迭代优化。
硬件选型和安装的质量,决定了后续所有避障算法的上限。一个参数匹配、安装规范的摄像头系统,能让 PX4 的避障模块发挥出应有的性能;反之,再优秀的算法也无法弥补硬件层面的缺陷。在实际项目中,建议预留至少 20% 的探测距离余量,以应对传感器噪声和算法延迟带来的不确定性。