zoukankan      html  css  js  c++  java
  • Mavlink消息包解析

    Byte Index

    字节索引

    Content

    内容

    Value

    Explanation

    说明

    0

    包起始标志

    v1.0: 0xFE (v0.9: 0x55)

    指示新消息帧的开始v1.0版本中以“FE”作为起始标志。这个标志位在mavlink消息帧接收端进行消息解码时有用处。

    1

    有效载荷长度

    0 - 255

     

    表示以下的有效载荷的长度。mavlink消息帧接收端可以用它和实际收到的有效载荷的长度比较,以验证有效载荷的长度是否正确。

    2

    包序列号

    0 - 255

             

    每个组件计数了他的发送序列。允许检测包丢失每次发完一个消息,这个字节的内容会加1,加到255后会从0重新开始。这个序号用于mavlink消息帧接收端计算消息丢失比例用的,相当于是信号强度

    3

    系统ID

    1 - 255

    发送包的ID。允许在同一网络上区分不同的微型飞行器。用于mavlink消息帧接收端识别是哪个设备发来的消息。(PIXHAWK默认1

    4

    组件ID

    0 - 255

    发送包组件的ID。允许区分同一系统的不同组分,例如在IMU和自动驾驶仪用于mavlink消息帧接收端识别是设备的哪个单元发来的消息(PIXHAWK默认50

    5

    消息ID

    0 - 255

    消息的ID - 标识定义了有效载荷的“意义”应该如何正确解码。mavlink消息帧接收端要根据这个编号来确定有效载荷里到底放了什么消息包并根据编号选择对应的方式来处理有效载荷里的信息包。

    6 to

    (n+6)

    数据

    (有效载荷)

    (0-255)bytes

    消息数据,取决于消息的ID

    (n+7) to

    (n+8)

    校验和(低字节,高字节)

    最后两个字节是16位校验位,ckb是高八位,cka是低八位校验码由crc16算法得到,算法将整个消息(从起始位开始到有效载荷结束,还要额外加上个MAVLINK_CRC_EXTRA字节)进行crc16计算,得出一个16位的校验码。之前提到的每种有效载荷里信息包(由消息包编号来表明是哪种消息 包)会对应一个MAVLINK_CRC_EXTRA,这个 MAVLINK_CRC_EXTRA 是由生成mavlink代码的xml文件生成的,加入这个额外的东西是为了当飞行器和地面站使用不同版本的mavlink协议时,双方计算得到的校验码会 不同,这样不同版本间的mavlink协议就不会在一起正常工作,避免了由于不同版本间通讯时带来的重大潜在问题。

     





  • 相关阅读:
    LeetCode 动态规划专题
    LeetCode 双指针、滑动窗口、单调队列专题
    LeetCode 单调栈专题
    LeetCode DFS搜索与回溯专题
    LeetCode树专题
    操作系统思维导图| IO管理篇
    2020-为什么换了工作
    深入浅出Spring MVC
    rocketmq初识
    线上故障处理手册
  • 原文地址:https://www.cnblogs.com/daxuezhidao/p/5750095.html
Copyright © 2011-2022 走看看