登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
地面站
›
无人机中级篇:第十四讲:外部通信总线Mavlink服务 ...
返回列表
发新帖
查看:
566
|
回复:
0
无人机中级篇:第十四讲:外部通信总线Mavlink服务
[复制链接]
loveav
loveav
当前离线
积分
1666
窥视卡
雷达卡
47
主题
841
帖子
1666
积分
金牌飞友
金牌飞友, 积分 1666, 距离下一级还需 1334 积分
金牌飞友, 积分 1666, 距离下一级还需 1334 积分
积分
1666
飞币
821
注册时间
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所支持的文件操作指令如下:
无人机
,
通信
,
总线
,
服务
,
外部
相关帖子
•
Mavic3无人机户外充电箱:电池充电保护的新方案
•
无人机30公里控制不是梦!TP5606飞控数传电台来了!
•
飞龙在天!俄罗斯研制喷火FPV无人机来反击乌克兰无人机
•
低空飞航:小型无人机应用全面开花,从三维数码地图到搜救航拍无所不能,引领业界革新潮流,开启低空经济未来无限想象空间【铿锵集】241109
•
珠海航展结束后,美军印太司令改口:与中国作战不能只靠无人机
•
小型无人机航拍哪个牌子好
•
国内无人机飞控技术比较
•
中国出口这么多先进的无人机,自己用什么?不怕技术外泄吗?
•
国产科技‘’纵列双桨无人机“载重1吨”目前同类型最大载重!2025量产#纵列双桨无人机#载重1吨#低空经济 #eVTOL电动飞机 #科技改变生活
•
2024航展科技走进生活: 无人驾驶物流飞行器 eVTOL电动垂直起降航空器 无人机 移动式低空保障车
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表