iNavFlight之电传MAVLink协议
本章重点介绍iNav飞控的MAVLink电传协议。
关于【电传框架设计】这里我们都不再重复了。如果前面那篇没有审阅过的同学,请点击iNavFlight之RC遥控CRSF协议。
1. 业务逻辑框架
从逻辑角度,需要三个步骤来完成电传的功能:
- 电传信息获取: 内部全局变量
- 电传信息处理: handleMAVLinkTelemetry
- 电传初始化: 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支持地面站报文(接收)
- MAVLINK_MSG_ID_HEARTBEAT 0
- MAVLINK_MSG_ID_MISSION_CLEAR_ALL 45
- MAVLINK_MSG_ID_MISSION_COUNT 44
- MAVLINK_MSG_ID_MISSION_ITEM 39
- MAVLINK_MSG_ID_MISSION_REQUEST_LIST 43
- MAVLINK_MSG_ID_MISSION_REQUEST 40
- MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE 70
2.3 iNav支持飞控报文(发送)
- MAVLINK_MSG_ID_SYS_STATUS 1
- MAVLINK_MSG_ID_RC_CHANNELS_RAW 35
- MAVLINK_MSG_ID_GPS_RAW_INT 24
- MAVLINK_MSG_ID_ATTITUDE 30
- MAVLINK_MSG_ID_VFR_HUD 74
- MAVLINK_MSG_ID_HEARTBEAT 0
- MAVLINK_MSG_ID_BATTERY_STATUS 147
- MAVLINK_MSG_ID_SCALED_PRESSURE 29
- 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