83【无人机】002 mavlink协议

1 引言

本博客是为了记录自己处在无人机行业中,所涉及的技术成长路线。既是记录自己的成长轨迹,亦是总结所学,便于后续持续学习。

本blog记录了在无人机通信领域的mavlink学习知识点,及所遇到的问题,可能存在理解浅薄,请多包涵。

2 mavlink协议

Mavlink 是无人机、机器人系统中常见的上层软件通信协议(非物理层通信协议),采用消息包广播 的方式在总线上传输,支持点对点和广播通信 。每个消息包含目标系统/组件 ID,接收方根据 ID 决定是否处理,发布-订阅模型类似。

截止目前为止,mavlink协议共有连个版本,分别是mavlink v1.0和mavlink 2.0,其协议帧如下所述。

bash 复制代码
┌─────────────────────────────────────────────────────────────┐
│                    MAVLink v1.0 消息帧                      
├──────┬──────┬──────┬──────┬──────┬──────┬──────────┬────────┤
│ STX  │ LEN  │ SEQ  │SYSID │COMPID│MSGID │ Payload  │Checksum│
│ 0xFE │  1   │  1   │  1   │  1   │  1   │  0-255   │   2    │
│ (1B) │ (1B) │ (1B) │ (1B) │ (1B) │ (1B) │  (变长)  │  (2B)  │
└──────┴──────┴──────┴──────┴──────┴──────┴──────────┴────────┘
  ↑      ↑      ↑      ↑      ↑      ↑        ↑         ↑
  │      │      │      │      │      │        │         └─ CRC-16校验和
  │      │      │      │      │      │        └─ 消息数据载荷
  │      │      │      │      │      └─ 消息ID (8位)
  │      │      │      │      └─ 组件ID
  │      │      │      └─ 系统ID
  │      │      └─ 序列号
  │      └─ 载荷长度
  └─ 起始标志

最小帧长: 8字节 (无载荷)
最大帧长: 263字节 (含最大载荷255字节)
bash 复制代码
┌───────────────────────────────────────────────────────────────────────────────────────┐
│                        MAVLink v2.0 消息帧                                            │
├──────┬──────┬──────────┬──────────┬──────┬──────┬──────┬──────────┬────────┬──────────┐
│ STX  │ LEN  │INC_FLAGS │CMP_FLAGS │ SEQ  │SYSID │COMPID│  MSGID   │ Payload│Checksum  │
│ 0xFD │  1   │    1     │    1     │  1   │  1   │  1   │    3     │ 0-255  │    2     │
│ (1B) │ (1B) │   (1B)   │   (1B)   │ (1B) │ (1B) │ (1B) │   (3B)   │ (变长) │   (2B)   │
└──────┴──────┴──────────┴──────────┴──────┴──────┴──────┴──────────┴────────┴──────────┘
  │      │        │           │        │      │      │       │         │         │
  │      │        │           │        │      │      │       │         │         └─ CRC-16校验和
  │      │        │           │        │      │      │       │         └─ 消息数据载荷
  │      │        │           │        │      │      │       └─ 消息ID (24位)
  │      │        │           │        │      │      └─ 组件ID
  │      │        │           │        │      └─ 系统ID
  │      │        │           │        └─ 序列号
  │      │        │           └─ 兼容性标志
  │      │        └─ 不兼容性标志
  │      └─ 载荷长度
  └─ 起始标志

可选签名 (仅当启用签名时):
┌─────────────────────────────────────────────────────────────┐
│ Signature (13字节) - 包含时间戳、链路ID和加密签名              
└─────────────────────────────────────────────────────────────┘

最小帧长: 10字节 (无载荷,无签名)
最大帧长: 280字节 (含最大载荷255字节 + 签名13字节)

字段说明:

字段 长度 (字节) 说明

STX 1 起始标志,v1为0xFE,v2为0xFD。

LEN 1 载荷(Payload)的字节长度 (0-255)。

SEQ 1 包序列号,用于检测丢包。

SYSID 1 发送方系统ID (1-255),区分不同载具。

COMPID 1 发送方组件ID (1-255),区分同一系统内的不同部件。

MSGID 1 (v1) / 3 (v2) 消息ID,决定载荷如何解析。

INC_FLAGS 1 (仅v2) 不兼容性标志,接收方不理解则丢弃。

CMP_FLAGS 1 (仅v2) 兼容性标志,接收方不理解仍可处理。

Payload 0-255 消息的实际数据。

Checksum 2 CRC-16校验和,确保数据完整性。

Signature 0或13 (仅v2) 可选的13字节数字签名,用于链路认证。

上述知识点来着链接:https://blog.csdn.net/u011487024/article/details/155912684

由上可知,mavlink 2.0mavlink 1.0增加了如下特性:

(1)MSGID三字节,可用于描述更多的消息对象,定义远超256个消息;

(2)增加可选的13字节签名数据,使得协议传输安全性更高;

注:最小帧字节从8字节,增长到了14字节。

SYSID系统ID:

同一总线上,不同系统有不同的ID。如:飞控、地面站(不在一个系统中的对象);

COMPID组件ID:

同一系统中,不同的组件设备。如:飞机是一个系统,飞机上有飞控、云台、相机、舵机控制模块等,每个组件都有分配的ID

待补充...

3 项目应用

项目中,使用了物理层串口+上层应用mavlink 2.0协议,实现飞机姿态信息、位置信息到RID模块的通信交互。

4 结束

over!

相关推荐
提伯斯6462 小时前
解决Fast-Drone-250编译相关错误
linux·ros·无人机·fast-drone
YOLO数据集集合3 小时前
智慧林业无人机巡检 松材线虫病害树木实例分割数据集 | 森林枯木识别 深度学习视觉
人工智能·深度学习·目标检测·计算机视觉·无人机
YOLO数据集集合9 小时前
智慧工地AI视觉落地|施工现场建材目标检测开源数据集|无人机航拍建材识别、工地智能化物料盘点深度学习10266期
人工智能·目标检测·无人机
爱吃泡芙的小白白1 天前
无人机机巢:低空经济的自动化基石,一文读懂其原理、应用与未来
运维·自动化·无人机·低空经济
计算机C9硕士_算法工程师1 天前
NWPU VHR-10数据集 无人机遥感目标检测数据集 飞机 储罐 棒球场 网球场篮球场 港口车辆桥梁检测 遥感图像中的地理空间目标检测
目标检测·目标跟踪·无人机
环境倒逼我学习1 天前
无人机地面站之第13章 Mission Planner 入门与界面总览
单片机·嵌入式硬件·无人机
YOLO数据集集合1 天前
航拍输电线路故障识别|线路金具缺陷判别|无人机电力巡检故障检测数据集10262期
人工智能·深度学习·yolo·目标检测·视觉检测·无人机
动物园猫2 天前
无人机灾害场景人体目标检测数据集分享(适用于YOLO系列深度学习分类检测任务)
yolo·目标检测·无人机
Aaron15882 天前
无人机反制中AOA+TDOA联合定位技术与雷达探测定位技术的应用对比分析
arm开发·嵌入式硬件·fpga开发·硬件工程·无人机·信息与通信·信号处理