PX4-Autopilot代码解析(19)- MAVLink 实现

目的和范围

本文档介绍了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]

该系统支持多种预配置模式,这些模式决定了要传输哪些消息以及传输速率:

模式目的关键流
正常(0)标准地面控制站通信心跳、GPS、姿态、系统状态
机上(2)配套电脑高速率IMU定位,低带宽占用
OSD(3)屏幕显示显示器的最小遥测
最小(7)带宽受限的链路仅重要信息
外部视野(8)基于视觉的导航里程计,视觉位置估计

传输层支持

与 uORB 系统集成

MAVLink 实现充当外部 MAVLink 协议和 PX4 内部 uORB 消息传递系统之间的桥梁。

消息类型映射

MAVLink 消息uORB 主题处理函数
COMMAND_LONGvehicle_commandhandle_message_command_long
HEARTBEAT内部状态跟踪handle_message_heartbeat
GPS_RAW_INTsensor_gps仅流(出站)
ATTITUDEvehicle_attitude仅流(出站)
HIL_GPSsensor_gpshandle_message_hil_gps
BATTERY_STATUSbattery_statushandle_message_battery_status
DISTANCE_SENSORdistance_sensorhandle_message_distance_sensor

uORB 发布者/订阅者管理

高级功能

实例间消息转发

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

硬件在环 (HIL) 支持

该实现方案包括启用 HIL 模式时对模拟消息的专门处理。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值