• 首页
    • 旋翼飞行器
    • 固定翼飞行器
    • 无人车UGV
    • 飞艇
    • 潜航器
    • 天线跟踪器
    • Mission Planner地面站
    • APM Planner 2
    • MAVProxy
    • 配套计算机
    • 开发人员
  • 下载
    • Mission Planner地面站
    • APM Planner 2
    • 高级用户工具
    • 开发人员工具
    • 固件
  • 社区
    • 支持论坛
    • 在 Facebook 上
    • 开发人员聊天室(Discord)
    • 开发人员语音(Discord)
    • 联系我们
    • 参与
    • 商业支持
    • 开发团队
    • 无人机系统培训中心
  • 商店
  • 关于
    • 历史
    • 许可证
    • 商标
    • 致谢
    • 维基编辑指南
    • 合作伙伴计划
开发 标志
  • 许可证(GPLv3)
  • AP_ 外围设备
  • 下载代码/使用 Git
  • 编写代码
  • 编辑器和集成开发环境
  • 学习代码
  • 模拟 & 测试
  • 调试
  • Linux 上的 ArduPilot
  • 支持代理
  • 贡献代码
  • MAVLink 接口
    • MAVLink 基础知识
    • 请求(飞行)控制器提供数据
    • 获取和设置参数
    • 旋翼飞行器指令(制导模式)
    • 平面指令(制导模式)
    • UGV无人车指令(引导模式)
    • 获取和设置原点和/或 EKF 原点
    • 上膛和撤膛
    • 获取和设置飞行模式
    • 摄像机命令
    • 云台/相机支架
    • 任务上传/下载
    • 移动伺服器
    • 卷扬机命令
    • MAVLink 路由
    • 其他命令
    • 任务指令列表
    • 任务指令包格式
  • CAN 和 DroneCAN/UAVCAN
  • 配套计算机
  • ROS1/ROS2
  • Lua 脚本
  • 移植到新的飞行控制器
  • OEM 定制
  • 安全固件
  • 远程 ID
  • 高级硬件信息
  • MAVProxy 开发人员 GCS
  • 为 GCS 开发人员提供的资源
  • RTF 载具开发人员信息
  • 团队如何工作
  • 活动
  • 培训中心
  • GSoC
  • 2021 年开发者大会
  • 2022 年路线图
  • 维基编辑指南
  • USB ID
  • 用户警报
  • 涉及 ArduPilot 的学术作品
  • 附录


个人 合作伙伴 SWAG 商店
开发
  • MAVLink 接口
  • MAVLink 基础知识
  • 在 GitHub 上编辑

MAVLink 基础知识¶

MAVLink 是一种串行协议,最常用于在载具和地面站之间发送数据和命令

  • 该协议定义了一大套报文,可在 common.xml 和 ardupilot.xml

  • MAVLink 信息几乎可以通过任何串行连接发送,不依赖于底层技术(wifi、900mhz 无线电等)。

  • 这些信息并不保证一定会送达,这意味着地面站或配套计算机必须经常检查飞行器的状态,以确定命令是否已被执行

信息格式¶

./_images/mavlink-frame.png
  • 信息不超过 263 字节(Mavlink 版本 1.0)或 280 字节(Mavlink 版本 2.0)。

  • 发件人总是填写 系统 身份证 和 组件 身份证 字段,以便接收方知道数据包来自哪里。数据包 系统 身份证 是每个载具或地面站的唯一 ID。地面站通常使用 "255 "这样的高系统 ID,而载具默认使用 "1"(可通过设置 SYSID_THISMAV 参数)。参数 组件 身份证 地面站或飞行控制器通常为 "1"。飞行器上其他具有 MAVLink 功能的设备(如配套电脑、云台)应使用相同的 "1"。 系统 身份证 作为飞行控制器,但使用不同的 组件 身份证

  • "这款" 留言 身份证 字段中可以看到 common.xml 和 ardupilot.xml 旁边的信息名称。例如 心跳 消息 ID 为 "0"

  • "这款" 数据 报文部分包含发送的各个字段值

  • 有关如何 新增对 MAVLink 消息的支持

高级信息流¶

./_images/mavlink-message-flow.png
  • 连接打开后,每个设备(又称 "系统")都会发送 心跳 信息频率为 1 赫兹

  • 地面站或配套计算机 要求提供数据 通过发送以下类型的信息来确定它想要的信息(以及速率

    • 请求数据流 支持设置信息组的速率

    • 命令长 含有 设置信息间隔 命令可精确控制信息的发送(及其速率),但仅支持 ArduPilot 4.0 及更高版本

  • 地面站或配套计算机向载具发送指令。支持的命令详情如下 这里是旋翼飞行器 和 飞机

MAVLink1 vs MAVLink2¶

  • MAVLink2 报文的最大长度为 280 字节,因为它们采用了兼容性标志并支持签名。

  • MAVLink2 扩展了 MAVLink1,允许在现有的 MAVLink1 报文中添加新字段,支持带有 留言 身份证 超过 "255",并增加了对签署信息的支持

  • MAVLink2 与 MAVLink1 向后兼容,这意味着如果设备能理解 MAVlink2 信息,它当然也能理解 MAVLink1 信息。

  • 如果只能理解 MAVLink1 的设备接收到包含附加字段(在 MAVLink2 下添加)的信息,设备将只能看到原始字段。也就是说,设备可以读取信息,但不能 "看到 "附加字段。

  • 飞行控制器的串行端口(可能连接到遥测无线电)可通过设置 SERIALx_PROTOCOL 参数设置为 "2"(其中 "x "为飞行控制器上的串行端口号)

  • 参见 Mavlink2 文档 以获取更多信息(尤其是有关信息扩展名的信息)

上一页 下一页

有关本页面的问题、事项和建议可在 论坛.问题和建议可在论坛或 Github 问题跟踪.

知识共享许可协议© 版权 2024 年,ArduPilot 开发团队。