概述
联系作者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心跳/连接协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复