2. 无人飞行器平台与飞行控制基础
视觉感知与自主飞行融合的第一步,是让算法“知道自己在哪、朝哪、怎么动”。这依赖三个基础:平台特性决定运动能力,坐标系与姿态表示决定状态如何描述,飞控接口与仿真环境决定算法如何接入并验证。本节围绕多旋翼与固定翼的差异、坐标系与姿态表示、飞控接口、PX4/ArduPilot 基础以及仿真环境搭建展开。
一、多旋翼与固定翼平台特性
多旋翼通过多个旋翼转速差产生升力与力矩,典型四旋翼在悬停时四个电机转速相近,通过改变对角电机转速实现偏航,通过前后或左右转速差实现俯仰与横滚。它的优势是垂直起降、悬停、低速机动,适合室内巡检、目标跟踪、精细避障;代价是续航短、巡航速度低、气动效率差。固定翼依靠机翼前向运动产生升力,必须有空速才能维持飞行,优势是航程长、速度快、载重大,适合大范围测绘与巡线;代价是无法悬停、起降需要跑道或弹射回收、低速易失速。
从视觉感知角度看,多旋翼相机可长时间对准同一目标,适合视觉伺服与目标跟踪;固定翼相机随飞行快速平移,图像存在明显运动模糊与尺度变化,更适合正射测绘、条带拼接与远距离目标检测。控制上,多旋翼常以位置—速度—姿态—角速率串级控制,固定翼则需协调滚转、俯仰、油门与偏航,转弯靠滚转产生侧向力,高度靠俯仰与油门配合。
二、坐标系与姿态表示
飞控与视觉算法必须统一坐标系。常用约定为:NED(北—东—地)用于导航,x 指北、y 指东、z 指地,向下为正;FRD(前—右—下)用于机体,x 指机头、y 指右、z 指下。姿态表示有三种:欧拉角(滚转 φ、俯仰 θ、偏航 ψ)直观但存在万向锁;旋转矩阵 R 无奇异但需正交约束;四元数 q=(w,x,y,z) 计算高效、适合姿态更新与插值。视觉中相机坐标系通常为 RDF(右—下—前)或 RUF,接入前必须做轴系变换,否则会出现“图像里目标在左、飞机却往右飞”的方向错误。
姿态更新常用四元数微分方程,角速率来自陀螺仪,经互补滤波或 EKF 融合加速度计、磁力计与 GPS。PX4 与 ArduPilot 内部均以四元数维护姿态,对外通过 MAVLink 提供欧拉角与四元数两种消息。
三、飞控接口与 PX4/ArduPilot 基础
飞控对外接口分三类:通信接口(MAVLink over UART/UDP,用于地面站与机载计算机)、控制接口(Offboard 模式接收位置/速度/姿态/角速率设定值,GUIDED 模式接收航点与起飞降落指令)、执行接口(PWM、DShot、CAN 驱动电调与舵机)。PX4 采用 uORB 发布/订阅消息总线,模块化程度高,Offboard 模式要求以不低于 2 Hz 的频率持续发送设定值,否则触发失效保护;ArduPilot 以 GUIDED 模式为主,通过 MAVLink 的 SET_POSITION_TARGET_LOCAL_NED 消息接收目标,参数体系庞大但文档成熟。
机载计算机接入时,典型链路为:Jetson/Raspberry Pi 通过串口或以太网连接飞控 TELEM 口,运行 MAVSDK 或 MAVROS,将视觉算法输出的目标位置转换为 NED 坐标下的位置设定值,再以 10~50 Hz 发送。注意单位:MAVLink 位置为米,速度 m/s,角度为弧度或度需按消息定义区分。
四、仿真环境搭建
仿真用于在真机试飞前验证视觉算法与接口逻辑。推荐组合:PX4 + Gazebo 或 ArduPilot + Gazebo,配合 ROS 2 与 MAVROS/MAVSDK。搭建步骤:安装 PX4-Autopilot 源码并执行 make px4_sitl gazebo 启动 SITL;在 Gazebo 中加载带相机的四旋翼模型;启动 MAVROS 桥接;用 rostopic echo /mavros/local_position/pose 检查位姿是否更新。若需视觉闭环,可在 Gazebo 中订阅相机图像话题,运行目标检测节点,将结果转为位置设定值发回飞控。
# 示例:启动 PX4 SITL 与 Gazebo
cd ~/PX4-Autopilot
make px4_sitl gazebo
# 另开终端启动 MAVROS
ros2 launch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
# 检查本地位置
ros2 topic echo /mavros/local_position/pose --once
/camera/image_raw,需与视觉节点订阅名一致。