MAVLink协议深度解析与自定义消息实战
📚 共计 30 章节
01
MAVLink协议概述
协议起源、设计哲学、在无人机生态中的地位。
起源
生态
02
MAVLink 1.0 vs 2.0
版本差异、签名机制、兼容性策略。
版本
签名
03
消息帧结构深度解析
起始标志、载荷长度、序列号、系统ID、组件ID、消息ID、载荷、校验。
帧结构
校验
04
XML消息定义文件
XML Schema结构、消息定义、枚举类型、包含文件。
XML
Schema
05
数据编码与序列化
Little-Endian编码、位域、数组、字符串的序列化规则。
编码
序列化
06
CRC校验机制
CRC-16-CCITT算法、CRC Extra计算、校验失败处理。
CRC
校验
07
心跳包(HEARTBEAT)
系统类型、自动舵类型、自定义模式、状态标志。
心跳
状态
08
GPS定位消息(GLOBAL_POSITION_INT)
经纬度、海拔、地速、航向。
GPS
定位
09
姿态消息(ATTITUDE)
四元数、滚转/俯仰/偏航、角速度。
姿态
四元数
10
系统状态消息(SYS_STATUS)
传感器健康度、电池电压、通信丢包率。
系统状态
电池
11
命令协议(COMMAND)
命令长消息、命令确认、常用命令集。
命令
确认
12
任务协议(MISSION)
任务项列表、上传/下载、任务重规划。
任务
上传
13
参数协议(PARAM)
参数读写、参数列表、参数变更通知。
参数
读写
14
遥控与手动控制(RC_CHANNELS)
通道映射、PWM值、信号丢失检测。
遥控
PWM
15
日志与调试消息
命名值、调试向量、日志擦除与下载。
日志
调试
16
自定义消息设计原则
消息ID范围、载荷大小限制、向后兼容性。
设计
兼容
17
生成自定义XML定义
定义新消息、添加枚举、使用现有库。
XML
自定义
18
使用MAVSDK生成C++代码
代码生成器配置、编译集成、调用自定义消息。
C++
MAVSDK
19
使用pymavlink生成Python代码
Python绑定、动态消息处理、测试。
Python
pymavlink
20
自定义消息的序列化与反序列化
手动编码/解码、使用生成器代码。
序列化
编码
21
自定义消息的CRC处理
计算CRC Extra、更新CRC表、验证。
CRC
Extra
22
在PX4固件中添加自定义消息
uORB消息定义、MAVLink消息映射、发布/订阅。
PX4
uORB
23
在ArduPilot中添加自定义消息
GCS_MAVLink库、消息处理回调、参数绑定。
ArduPilot
回调
24
地面站QGroundControl自定义消息处理
QML插件、MAVLink Inspector、自定义Widget。
QGC
QML
25
MAVLink路由器与多链路
mavlink-router配置、UDP/TCP/串口桥接、消息过滤。
路由
多链路
26
MAVLink安全机制
签名密钥管理、时间戳防重放、加密传输。
安全
签名
27
性能优化
消息频率控制、批量传输、零拷贝技术。
性能
优化
28
调试与抓包工具
Wireshark MAVLink解析器、mavlink-inspector、日志回放。
调试
Wireshark
29
实战项目一:自定义传感器数据消息
如激光雷达点云。
实战
传感器
30
实战项目二:自定义控制指令消息
如机械臂关节角度。
实战
控制