MAVLink 常用消息解析与应用指南
一、系统状态与心跳类消息
1. HEARTBEAT(心跳消息)
- 核心功能:标识系统存在与组件类型,接收端据此处理后续消息(如根据自动驾驶仪类型布局UI)
- 关键字段:
type:设备类型(如四旋翼、直升机、相机等)autopilot:自动驾驶仪类型(非飞控设为MAV_AUTOPILOT_INVALID)system_status:系统状态标志(如MAV_STATE_ACTIVE表示正常运行)
- 应用场景:地面站启动时通过心跳判断连接设备类型,适配不同控制界面
2. SYSTEM_TIME(系统时间)
- 时间同步:提供UNIX时间戳(
time_unix_usec)和启动时间(time_boot_ms) - 实用价值:
- 日志文件时间戳统一
- 多设备协同任务时间对齐
- 替代TIMESYNC实现轻量级时间同步
二、位置与导航类消息
1. GPS_RAW_INT(原始GPS数据)
- 数据特性:
- 经纬度(
lat/lon)以degE7格式存储(1e7倍精度,如39.9°N为399000000) - 海拔(
alt)单位为mm,区分MSL(平均海平面)与椭球高度(alt_ellipsoid) - HDOP/VDOP(
eph/epv)反映定位精度(数值越小精度越高)
- 经纬度(
- 典型问题:
- 当
satellites_visible < 4时,fix_type为NO_FIX(0) - 高空作业时需关注
eph > 100(精度低于1m)的情况
- 当
2. GLOBAL_POSITION_INT(滤波后全球位置)
- 工程优化:
- 整型存储避免浮点精度丢失(如
lat=399000000对应39.9°N) relative_alt表示相对起飞点高度,用于定高模式hdg为航向角(0-35999,对应0.0-359.99°)
- 整型存储避免浮点精度丢失(如
- 与GPS_RAW_INT区别:
特性 GLOBAL_POSITION_INT GPS_RAW_INT 数据来源 融合GPS与惯性导航 原始GPS传感器数据 精度 更高(滤波后) 原始值(可能含噪声) 应用场景 导航控制 传感器状态监控
三、姿态与运动类消息
1. ATTITUDE(姿态数据)
- 坐标系定义:
- 航空坐标系(NED):X前、Y右、Z下
- 欧拉角(roll/pitch/yaw)范围:-π到+π
- 角速度单位:rad/s(如
rollspeed=1.0表示1弧度/秒)
- 控制应用:
- 无人机稳定控制的核心输入
- 航拍摄影时的云台姿态补偿
- 运动规划中的姿态约束检查
2. LOCAL_POSITION_NED(本地NED坐标)
- 坐标系统:
- 东北天(NED)右手系:X北、Y东、Z下(正值向下)
- 速度分量(
vx/vy/vz)单位:m/s
- 典型用途:
- 室内定位(如光流+IMU融合)
- 自主避障的相对位置计算
- 定点悬停控制的反馈输入
四、任务与控制类消息
1. MISSION_CURRENT(当前任务项)
- 任务管理:
seq:当前执行的任务项序号total:任务项总数(UINT16_MAX表示无任务)mission_state:任务状态机(如MISSION_STATE_EXECUTING)
- 地面站交互:
- 任务进度可视化
- 异常时跳转到指定任务项(MAV_CMD_DO_SET_MISSION_CURRENT)
- 任务重规划的状态同步
2. COMMAND_ACK(命令回执)
- 指令闭环:
command:执行的命令ID(如MAV_CMD_COMPONENT_ARM_DISARM)result:执行结果(MAV_RESULT_ACCEPTED/FAILED等)progress:进度百分比(仅当result为IN_PROGRESS时有效)
- 错误排查:
- 当
result=MAV_RESULT_DENIED时,检查result_param2的错误码 - 连续指令发送需等待前一指令回执(避免指令队列溢出)
- 当
五、传感器与状态类消息
1. BATTERY_STATUS(电池状态)
- 关键参数:
- 电压监测:
voltages[0]为总电压(mV),voltages[1-10]为单体电压 - 容量计算:
current_consumed(mAh)与energy_consumed(hJ) - 健康状态:
battery_remaining(剩余百分比)与fault_bitmask(故障码)
- 电压监测:
- 安全策略:
- 当
battery_remaining < 20%时触发低电量报警 - 单体电压差超过100mV时标记电池不平衡(
fault_bitmask设为MAV_BATTERY_FAULT_CELLS_UNBALANCED)
- 当
2. STATUSTEXT(状态文本)
- 通信规范:
severity: severity等级(如MAV_SEVERITY_WARNING/ERROR)text:50字节状态文本(无终止符,需手动解析)id/chunk_seq:长文本分块传输标识
- 应用建议:
- 限制发送频率(如不超过10Hz)
- 重要错误使用高severity等级(如MAV_SEVERITY_CRITICAL)
- 地面站可按severity分级显示(红色=错误,黄色=警告)
六、开发实践建议
-
消息订阅策略:
- 高频消息(如ATTITUDE):10-50Hz(视控制周期而定)
- 低频消息(如MISSION_CURRENT):1-2Hz
- 按需请求消息(如HOME_POSITION):使用MAV_CMD_REQUEST_MESSAGE触发
-
数据解析优化:
- 对degE7格式数据:
latitude_deg = latitude / 1e7 - 对cdeg格式数据:
heading_deg = heading / 100.0 - 时间戳处理:
time_boot_ms用于相对时间,time_unix_usec用于绝对时间
- 对degE7格式数据:
-
异常处理场景:
- 当
fix_type < 3(非3D定位)时,禁用依赖GPS的功能 battery_remaining = -1时,使用电压估算剩余电量satellites_visible = UINT8_MAX时,标记GPS状态未知
- 当

浙公网安备 33010602011771号