登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
地面站
›
无人机中级篇:第十四讲:外部通信总线Mavlink服务 ...
返回列表
发新帖
查看:
618
|
回复:
0
无人机中级篇:第十四讲:外部通信总线Mavlink服务
[复制链接]
loveav
loveav
当前离线
积分
1679
窥视卡
雷达卡
49
主题
847
帖子
1679
积分
金牌飞友
金牌飞友, 积分 1679, 距离下一级还需 1321 积分
金牌飞友, 积分 1679, 距离下一级还需 1321 积分
积分
1679
飞币
828
注册时间
2017-9-11
发消息
发表于 2022-10-28 07:05:33
|
显示全部楼层
|
阅读模式
Mavlink为无人机与外部通信的接口,在mavlink文件夹中的内容是mavlink协议所要用的头文件内容,实际上就是mavlink各类协议的定义部分和公共调用函数部分。文件夹中的内容如下:
mavlink/
└─include
└─ mavlink
└─ v2.0
├─ common
│ ├─ common.h
│ ├─ mavlink_msg_actuator_control_target.h
│ ├─ mavlink_msg_adsb_vehicle.h
│ ├─ mavlink_msg_altitude.h
│ └─ ...
├─ protocol.h
├─ checksum.h
├─ mavlink_helpers.h
└─ mavlink_types.h
需要注意的是,在此文件夹中所存放的只是Mavlink协议的头文件和公共调用函数,而不是飞控与地面站通信的功能实现。目前Mavlink的版本为2.0,在mavlink/include/mavlink/v2.0中定义了此版本中所有的头文件。common文件夹中以mavlink_msg_开头的文件,都是Mavlink的消息,目前的支持的消息有164个。下表中列出了的一些常用的Mavlink消息:
Mavlink服务是无人机与外部系统通信的数据总线源代码位置在src/modules/mavlink中。其目录文件列表如下:
mavlink/
├── CMakeLists.txt
├── mavlink_bridge_header.h
├── mavlink.c
├── mavlink_command_sender.cpp
├── mavlink_command_sender.h
├── mavlink_ftp.cpp
├── mavlink_ftp.h
├── mavlink_main.cpp
├── mavlink_main.h
├── mavlink_messages.cpp
├── mavlink_messages.h
├── mavlink_mission.cpp
├── mavlink_mission.h
├── mavlink_parameters.cpp
├── mavlink_parameters.h
├── mavlink_receiver.cpp
├── mavlink_receiver.h
├── mavlink_stream.cpp
└── mavlink_stream.h
主要包括发送和接收两个大的方向:在发送功能中飞控程序将无人机当前的主状态、导航状态、姿态、速度、位置等信息发送给地面站程序,以便地面站程序能够实时了解无人机的状态。于此同时,地面站程序可以向飞机发送特定的指令和飞行航线,例如:对飞控锁定/解锁、切换飞行状态、上传飞行任务航迹点等。数据在飞控和地面站交互数据的过程都是通过Malvink协议来完成的。如下图:
MavlinkStream是所有周期下发消息类的基类,它定义了整个周期下发消息统一格式,包括消息ID、消息名称、消息大小、发送频率、最近发送时间、实际发送函数等等。而其它实际消息都继承了MavlinkStream类。在实际消息发送时使用MavlinkStream的指针对象指向每一个实际的子类对象,然后通过这个指针来统一发送消息,下面我们来看一下MavlinkStream基类和其派生类的关系:
MavlinkReceiver:负责Malvink消息的接收,解析和处理工作。MavlinkReceiver负责接收消息,MavlinkReceiver主要功能为有:从底层链路读取数据;解析Mavlink消息数据;处理一般消息和命令;处理任务相关消息;处理参数相关消息;处理文件传输协议等相关内容。在消息接收过程中,MavlinkReceiver并没有将消息转换为具体的不同类型的消息,而是直接将消息交给不同的业务功能自行处理。例如,当MavlinkReceiver接收到一条mavlink_message_t消息之后,并没有进一步的分析是任务航迹点消息(mavlink_mission_item_t)还是参数设置消息(mavlink_param_set_t),而是直接将mavlink_message_t同时消息交给各个不同业务的处理程序同时分析这个消息包。各个业务程序分析mavlink_message_t消息,如果此消息类型与当前业务符合,则继续处理,否则直接抛弃。
MavlinkMissionManager:主要用于地面站与飞控之间传输任务之间相关数据,包括航迹点、电子围栏点、集结点等相关内容。包括任务信息的上传与下载。通常情况下在无人机起飞前需要使用地面站程序规划一系列的自动飞行任务航迹点,并通过Mavlink消息将这些任务信息点上传到飞控当中。飞控会接收这些航迹点并将其保存到SDCard当中,为飞行时使用。另外,地面站还可以根据需要将飞控中已经保存好的所有任务点下载到本地。我们来看一下上传任务时的工作流程:
MavlinkMissionManager的功能主要分为3个部分:接收地面站请求任务数据,向地面站发送任务数据,将任务数据保存到SDCard当中,或从SDCard中读取任务数据。
MavlinkParametersManager:主要负责处理地面站向飞控发送参数读写的相关功能。主要分为3个部分:处理参数请求列表、设置参数、读取参数。相对来说参数的处理过程较为简单,不做过多介绍。
MavlinkFTP:是一个文件传输服务,负责处理所有地面站向飞控传输的文件相关操作,包括文件夹的创建,删除,显示列表和文件的创建,读写,删除等等一系列功能。地面站程序在使用MavlinkFTP服务时可以将飞控程序当作一个文件操作服务器,向其发送相应的指令,服务器即为地面站返回相应的数据内容。如下图所示:
实际上地面站可以根据需要在文件服务器上创建或删除文件和文件或文件夹,并根据需要上传或下载相应的文件。MavlinkFTP所支持的文件操作指令如下:
无人机
,
通信
,
总线
,
服务
,
外部
相关帖子
•
大型纪录片《无人机下跪事件》持续为您播出!!!!!!!!!
•
南京金城三国申请无人机机库抓手装置专利,可在同一工位下实现更换电池和挂载
•
俄称乌无人机袭击喀山民用基础设施 乌暂无回应
•
美媒:美国多地上空“神秘无人机”引关注,拜登“打破沉默”作出回应
•
遇事不决赖“中国”!“中国间谍无人机”将美国耍得犹如草台班子,美军竟只能坐以待毙
•
乌军破解三三制战术,无人机猎杀朝鲜士兵,打得朝军动弹不得
•
美国一军事基地证实:无人机被多次用来走私违禁品进监狱
•
突发!无人机直冲俄高层住宅,发生猛烈爆炸!附近三座机场已关闭
•
无人机控制中心:地面站
•
乌军历史首次,只用FPV无人机袭击俄军阵地:泽连斯基有特殊计划
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表