目的和范围
本文档介绍了PX4的MAVLink协议实现,该协议提供自动驾驶仪与地面控制站、配套计算机和其他支持MAVLink的系统之间的主要通信接口。该实现处理消息序列化/反序列化、多实例支持、参数管理以及与内部uORB消息系统的集成。
系统架构
PX4 的 MAVLink 实现基于多实例架构,支持通过不同的传输层(UART、UDP)进行同时通信,并具有可配置的消息流和参数同步功能。
核心组件架构

多实例管理

消息处理流程
传入消息处理
MAVLink 接收器通过集中式调度系统处理传入的消息,该系统将 MAVLink 消息转换为 uORB 发布。
外发消息流
消息流通过基于模板的系统进行管理,其中每个 MAVLink 消息类型都有一个对应的流类。

参数管理系统
MAVLink 参数系统可实现自动驾驶仪和地面控制站之间的飞行参数双向同步。
参数同步流程

配置和初始化
串口配置
MAVLink 实例通过参数驱动系统进行配置,该系统将逻辑端口名称映射到物理设备。
| 范围 | 描述 | 默认值 |
|---|---|---|
MAV_${i}_CONFIG | 串口分配 | [TEL1, "", ""] |
MAV_${i}_MODE | 流配置模式 | [0, 2, 0](正常,机载,正常) |
MAV_${i}_RATE | 最大传输速率(B/s) | [1200, 0, 0] |
MAV_${i}_FORWARD | 启用消息转发 | [true, false, false] |
MAVLink 模式和流配置
该系统支持多种预配置模式,这些模式决定了要传输哪些消息以及传输速率:
| 模式 | 目的 | 关键流 |
|---|---|---|
| 正常(0) | 标准地面控制站通信 | 心跳、GPS、姿态、系统状态 |
| 机上(2) | 配套电脑 | 高速率IMU定位,低带宽占用 |
| OSD(3) | 屏幕显示 | 显示器的最小遥测 |
| 最小(7) | 带宽受限的链路 | 仅重要信息 |
| 外部视野(8) | 基于视觉的导航 | 里程计,视觉位置估计 |
传输层支持

与 uORB 系统集成
MAVLink 实现充当外部 MAVLink 协议和 PX4 内部 uORB 消息传递系统之间的桥梁。
消息类型映射
| MAVLink 消息 | uORB 主题 | 处理函数 |
|---|---|---|
COMMAND_LONG | vehicle_command | handle_message_command_long |
HEARTBEAT | 内部状态跟踪 | handle_message_heartbeat |
GPS_RAW_INT | sensor_gps | 仅流(出站) |
ATTITUDE | vehicle_attitude | 仅流(出站) |
HIL_GPS | sensor_gps | handle_message_hil_gps |
BATTERY_STATUS | battery_status | handle_message_battery_status |
DISTANCE_SENSOR | distance_sensor | handle_message_distance_sensor |
uORB 发布者/订阅者管理

高级功能
实例间消息转发
该系统支持在不同实例之间自动转发 MAVLink 消息,从而实现诸如地面控制站通过自动驾驶仪与云台通信等场景。

硬件在环 (HIL) 支持
该实现方案包括启用 HIL 模式时对模拟消息的专门处理。

1827

被折叠的 条评论
为什么被折叠?



