我是靠谱客的博主 娇气裙子,最近开发中收集的这篇文章主要介绍Mavlink心跳/连接协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

联系作者QQ 843230304
本文翻译自 https://mavlink.io/en/services/heartbeat.html

Mavlink心跳/连接协议

心跳协议用于通告MAVLink网络上系统的存在,以及其系统和组件ID,飞行器类型,飞行堆栈,组件类型和飞行模式。

心跳允许其他组件执行以下操作:

  • 发现连接到网络的系统并推断它们何时断开连接。如果定期收到系统的HEARTBEAT消息,则认为该系统已连接到网络;如果未收到许多预期的消息,则认为该系统已断开。
  • 根据系统类型和其他属性(例如,根据飞行器类型配置GCS接口)适当地处理来自系统的其他消息。
  • 将消息路由到不同接口上的系统。

消息/枚举摘要

消息类型描述
HEARTBEAT广播系统的存在和响应以及系统的类型和其他属性。
枚举类型描述
MAV_TYPE系统类型(4旋翼,直升飞机等),组件使用与其关联系统相同的类型
MAV_AUTOPILOT自动驾驶仪类型/等级
MAV_MODE_FLAG系统模式标志
MAV_STATE系统状态标志

心跳广播频率

组件必须定期广播HEARTBEAT并监视其他组件/系统的心跳。

HEARTBEAT必须广播消息的速率,以及在系统被认为已超时/从网络断开之前,可能“丢失”多少消息,取决于信道(MAVLink并未定义)。在RF遥测链路上,组件通常以1 Hz的频率发布心跳,并且如果未收到四个或五个消息,则认为另一个系统已断开连接。

如果系统未检测到其他系统,则它可能选择不广播信息,并且它将在接收心跳时继续向系统发送消息。因此,重要的是系统:

  • 即使不命令远程系统也可以广播心跳。
  • 当它们处于故障状态时,请不要广播心跳(即,不要从不知道组件其余部分状态的单独线程中发布心跳)。

连接到GCS或MAVLink API

在HEARTBEAT也被用于GCS(或开发者API),以确定是否可以连接到飞行器以便收集遥测信息和发送任务/命令。

例如,QGroundControl将仅连接到飞行器系统(即不连接到另一个GCS ,云台或机载控制器),并且在显示飞行器连接消息之前还检查其系统ID是否为非零。QGC还使用特定类型的飞行器和其他心跳信息来控制GUI的布局。

可在MultiVehicleManager.cc中找到用于连接到QGroundControl的特定代码(请参阅参考资料void MultiVehicleManager::_vehicleHeartbeatInfo)。

最后

以上就是娇气裙子为你收集整理的Mavlink心跳/连接协议的全部内容,希望文章能够帮你解决Mavlink心跳/连接协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部