iNavFlight之电传MAVLink协议

Posted lida2003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iNavFlight之电传MAVLink协议相关的知识,希望对你有一定的参考价值。

iNavFlight之电传MAVLink协议

本章重点介绍iNav飞控的MAVLink电传协议。

关于【电传框架设计】这里我们都不再重复了。如果前面那篇没有审阅过的同学,请点击iNavFlight之RC遥控CRSF协议

1. 业务逻辑框架

从逻辑角度,需要三个步骤来完成电传的功能:

  1. 电传信息获取: 内部全局变量
  2. 电传信息处理: handleMAVLinkTelemetry
  3. 电传初始化: initMAVLinkTelemetry
taskTelemetry
 └──> telemetryProcess
     └──> handleMAVLinkTelemetry
         ├──> processMAVLinkIncomingTelemetry
         └──> processMAVLinkTelemetry

#ifdef USE_TELEMETRY
    [TASK_TELEMETRY] = 
        .taskName = "TELEMETRY",
        .taskFunc = taskTelemetry,
        .desiredPeriod = TASK_PERIOD_HZ(500),         // 500 Hz
        .staticPriority = TASK_PRIORITY_IDLE,
    ,
#endif
main
 └──> init
     └──> telemetryInit
         ├──> initFrSkyTelemetry
         ├──> initHoTTTelemetry
         ├──> initSmartPortTelemetry
         ├──> initLtmTelemetry
         ├──> **initMAVLinkTelemetry**
         ├──> initJetiExBusTelemetry
         ├──> initIbusTelemetry
         ├──> initSimTelemetry
         ├──> initCrsfTelemetry
         ├──> initSrxlTelemetry
         ├──> initGhstTelemetry
         └──> telemetryCheckState
	         ├──> checkFrSkyTelemetryState
	         ├──> checkHoTTTelemetryState
	         ├──> checkSmartPortTelemetryState
	         ├──> checkLtmTelemetryState
	         ├──> **checkMAVLinkTelemetryState**
	         ├──> checkJetiExBusTelemetryState
	         ├──> checkIbusTelemetryState
	         ├──> checkSimTelemetryState
	         ├──> checkCrsfTelemetryState
	         ├──> checkSrxlTelemetryState
             └──> checkGhstTelemetryState

2. MAVLink电传报文

2.1 MAVLink电传报文格式

略,详见:PX4模块设计之四:MAVLink简介

2.2 iNav支持地面站报文(接收)

  1. MAVLINK_MSG_ID_HEARTBEAT 0
  2. MAVLINK_MSG_ID_MISSION_CLEAR_ALL 45
  3. MAVLINK_MSG_ID_MISSION_COUNT 44
  4. MAVLINK_MSG_ID_MISSION_ITEM 39
  5. MAVLINK_MSG_ID_MISSION_REQUEST_LIST 43
  6. MAVLINK_MSG_ID_MISSION_REQUEST 40
  7. MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE 70

2.3 iNav支持飞控报文(发送)

  1. MAVLINK_MSG_ID_SYS_STATUS 1
  2. MAVLINK_MSG_ID_RC_CHANNELS_RAW 35
  3. MAVLINK_MSG_ID_GPS_RAW_INT 24
  4. MAVLINK_MSG_ID_ATTITUDE 30
  5. MAVLINK_MSG_ID_VFR_HUD 74
  6. MAVLINK_MSG_ID_HEARTBEAT 0
  7. MAVLINK_MSG_ID_BATTERY_STATUS 147
  8. MAVLINK_MSG_ID_SCALED_PRESSURE 29
  9. MAVLINK_MSG_ID_STATUSTEXT 253

3. MAVLink报文处理

MAVLink是轻量级飞控与地面端,飞控与伴机电脑内部数据交互的消息协议,且具有非常久远的历史。详见:MAVLink Developer Guide

4. 参考资料

【1】iNavFlight之RC遥控MSP协议
【2】iNavFlight之RC遥控CRSF协议
【3】PX4模块设计之四:MAVLink简介
【4】PX4模块设计之五:自定义MAVLink消息
【5】MAVLink Developer Guide

以上是关于iNavFlight之电传MAVLink协议的主要内容,如果未能解决你的问题,请参考以下文章

BetaFlight模块设计之十二:电传任务分析

Android音视频之协议介绍

Android音视频之协议介绍

iNavFlight之MSP DJI协议分析

iNavFlight之MSP DJI协议天空端请求报文

iNavFlight之RC遥控MSP协议