登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
Pixhawk飞控
›
飞控软件架构
返回列表
发新帖
查看:
493
|
回复:
0
飞控软件架构
[复制链接]
danniker
danniker
当前离线
积分
1501
窥视卡
雷达卡
33
主题
752
帖子
1501
积分
金牌飞友
金牌飞友, 积分 1501, 距离下一级还需 1499 积分
金牌飞友, 积分 1501, 距离下一级还需 1499 积分
积分
1501
飞币
758
注册时间
2017-9-1
发消息
发表于 2022-10-25 15:52:52
|
显示全部楼层
|
阅读模式
笔者非科班出身,从事无人机飞控设计四余年,主要参与飞控系统总体设计,仿真试验及外场试飞,对飞行控制与管理系统方面,限于没有做全面系统性梳理总结,知识属于囫囵又杂散的状态。前段时间组织做过一个界面程序,意图完成总结性工作,目前尚在完善过程中。笔者一直认为飞控系统软件和控制律(算法)是想成为飞控系统设计大神,手里应该掌握的镰刀和榔头!本文为笔者学习飞控软件架构后整理的学习笔记,如有内容错误,欢迎指正。文中对引用他人内容会明确说明,如有疏漏未标明,欢迎指出,笔者将积极回应。
一、飞控系统组成模块
早期无人机没有软件架构,是通过无线电(RC)控制技术发展起来的,笔者在大学本科上的第一门课叫“自动化导论”,记忆深刻,上课开始教授就给出一张图,一个典型的闭环控制系统(包含控制目标,控制器,反馈信息,执行机构),这个也很准备地概括出了早期无人机飞控系统。得益于卫星能力的增强和计算机处理能力、算法发展、实时系统应用、机电飞控系统、导航系统方面的技术进步,目前的飞控系统随着软件架构变化而发展。但无人机飞控系统的基本功能是不变的:主要依靠传感器系统获取位姿信息,反馈到微处理器进行控制系统的运算,输出控制指令给相关子系统(伺服作动/机电系统)。所以飞控软件设计主要负责搭建合理软件流程,使各功能模块协调有效的工作。
当然,设计一个现代无人机飞控系统软件时,就不仅仅是让飞机飞起来那么简单了,也就是说软件模块除了基本要素外,还需有其他扩展功能,一个完整的飞控软件组成模块包括:
1、传感器模块(包括预处理/校准模块)
2、通信模块
3、控制输入模块(来自地面或自动控制模块)
4、导航/制导模块
5、飞行模式管理模块
6、参数管理模块(控制可调参数、性能查值等)
7、飞行控制模块
8、起飞/着陆检测模块
9、应急处置/健康管理模块
10、数据记录模块
11、固件升级模块
…
飞控软件组成模块
二、软件设计方法
笔者在大学期间参加大学生创新大赛时,当时团队三人查资料合计后做的是一款球形机器人(最终结果它只是完成了直线运动,未能实现设计之初设想的万向运动,定点止停),同实验室有同学就做的是涵道无人机,那个时候也就初步接触了一点飞控知识。
跟我们的机器人软件一样,为了方便快捷,软件系统的编写采用前后台操作的方式。前台应用程序是放在mian主函数里面无限循环,调用相应的处理子函数;后台中断程序处理异步触发事件。为保证时间的精确性,有些固定周期执行的任务都要靠中断服务程序来完成,但是在中断处理程序中只标记事件的发生,不做任何处理,转而由后台系统调度处理,这是为了避免在中断程序执行时间过长影响后续和其他中断事件。
目前,很多开源飞控是带OS(片上系统)的飞控设计。across在一篇总结文章中这样描述:这种设计方法是在某一操作系统上进行二次开发,OS通过一个内核的调度来管理CPU,使得所有的模块也就是任务都能正常运行,达到相对意义的“并行”。同时采用基于优先级的可剥夺性调度算法来保证实时性。RTOS 将应用层软件分成多个任务,简化了应用软件的设计,同时使得飞行控制的实时性得到保证。
直观地说,带OS的飞控,其固件同时附带了一系列工具集、系统驱动/模块与外围软件接口层,所有这些软件(包括用户自定义的飞控软件)随OS内核一起,统一编译为固件形式,然后上传到飞控板中,从而实现对飞控板的软件配置。
带OS的飞控系统软件架构中,最有意思的一点在于整个架构的抽象性(多态性),即:为了最大限度保障飞控算法代码的重用性,其将飞控逻辑与具体的底层控制器指令实现进行了解耦合。
博主NeoRAGEx2002在他的一篇博文中对上述两种设计方法有一段总结,我比较认同,摘录如下:有很多搞自动化出身、没太多软件经验的朋友倾向于直接使用底层控制协议来控制飞控板,但实际上PX4架构(笔者注:带OS的飞控设计实例)已经在更高的抽象层面上提供了更好的选择,无论是代码维护成本、开发效率、硬件兼容性都能显著高于前者。很多支持前者方式的开发者的理由主要在于高层封装机制效率较低,而飞控板性能不够,容易给飞控板造成较大的处理负载,但实际从个人感觉上来看,遵循PX4的软件架构模式反倒更容易实现较高处理性能,不容易产生控制拥塞,提升无人机侧系统的并发处理效率。
PX4/Pixhawk飞控软件架构
三、架构进化
Wyle Aerospace Group的Fred Briggs发表过一篇论文《UAV Software Architecture》(无人机软件架构)对相关软件架构进化过程做了综述性梳理,笔者对这部分内容进行简化后分享如下:
A. 开放控制平台
开放控制平台(Open Control Platform,OCP)是一种面向对象的软件基础构件,“提供一条将控制设计快速转换为桌面或嵌入式目标代码的路径,它使得控制设计师可以专注于控制设计而非集成、通信、发布、移植、执行、调度、系统配置和资源管理等软件设计问题。”
B. WITAS分布式UAV架构
此分布式架构使用COBRA作为基础构建用于即插即用的软硬件环境,并且基于一种以反应为中心(reactive concentric)的软件控制方法。最大的设计挑战是控制系统有多个控制模式,可由架构激活以动态调用。此设计的软件架构包括一个慎思、反应和控制部分,因此不再是一个分层递阶 结构而是一个“以反应为中心”的架构。此反应中心的架构是一个高度分布、松散耦合、并发的架构,具有很多反应控制和并发运行的服务进程。
分布式UAV WITAS架构的软件组件(2004)
C. ARL/PSU智能控制器
此IC(智能)架构是一种基于行为(相对于基于模型)的架构,设计采用层级控制,由于从下至上的模式增加了功能复杂性。它经过改进,以满足协作能力的要求。图4所示IC架构包含感知和响应模块。感知模块通过接收传感器的输入数据建立一个外部真实世界的表示。响应模块使用感知模块建立的真实世界的认知生成一个规划,来执行特定任务。
ARL/PSU 智能控制器高层架构(2008)
D. SheLion UAV系统
Cai, G、Chen, B.和Lee, T.在《无人旋翼系统》介绍了一种行为式的架构,他们指出此架构可以普遍应用到无人机,包括机载软件系统和地面控制站的软件系统。飞行控制模块使用多线程框架,用于操作导航传感器和伺服作动器、日志记录飞行数据、与地面站通信以及实施自动控制算法。自动控制采用基于行为的体系结构。SheLion飞行控制系统的框架如图所示。
SheLion飞行控制软件系统框架(2011)
四、示例分析
下面简单介绍一款开源的飞控代码,都是网上找的代码,主要看下软件架构。 基于MDK的开发环境,使用C语言,基于STM32的官方库。
代码结构:
STARTUPCODE:stm32的启动文件;
StdPeriph_Driver:基于3.5版本的库函数的驱动文件;
USB-FS-Device_Driver:USB设备驱动文件;
usb_virture_com:USB的板级支持驱动;
Driver:板级驱动层,包含一些总线和外设的驱动程序;
Modules:传感器模块的驱动程序;
Algorithm:算法程序,包含滤波、数学库等;
Function:飞行应用层,关键模块,比如姿态估计、姿态控制等;
User:主程序和中断应用程序;
ANO_DT:支持匿名地面站协议;
Heigh:高度控制程序;
整个代码的模块化非常细致,比较清晰。 代码设计就是前面所讲的裸机代码的一般实现方法。
先看main文件:
非常简单,上电进行各种初始化,然后大循环,循环执行任务调度。
下面看下loop的函数内容:
将整个飞控代码分成了几个周期分别为5ms,10ms,25ms、50ms和100ms的任务。而每个任务的时间标志flag是由一个时间片函数进行管理的。设了一个tick节拍,2.5ms一次,所以比如计数达到2次,则5ms的定时任务即可执行。
而这个时间片函数是一个定时中断,每隔2.5ms执行一次。
这种程序设计方法如下图所示。定时中断的影响只在任务调度模块里起作用,依次让不同的任务按不同的周期进行执行。要注意的是所设计的每个任务运行时间不能超过设定的周期。
素材部分来自网络:across的《飞控软件设计系统性总结》、Fred Briggs的论文《UAV Software Architecture》、博主NeoRAGEx2002的《PX4/Pixhawk飞控软件结构简介》
源自:知飞之家
软件架构
,
架构
,
软件
,
飞控
相关帖子
•
如何自研无人机飞控?无人机飞行控制系统研发流程详解,无人机飞控研发团队成员分析
•
飞蝶F4V3飞控与INAV5.1固件的固定翼焊接、调参教程
•
【教程】这个设置能让你的A3陀螺仪发挥到极致,同款飞控一定要看!
•
疆域无人机大改装,自带4k相机,图传和控制录像和osd给普通飞控用
•
工程师手搓多旋翼+MuPilot飞控,怎么飞都控得稳,完美!#云轮科技 #Ardupilot #飞控 #无人机
•
当代辣鸡大学生自组ZD680无人机起飞降落踩过的坑以及学习心得(NAZA飞控)
•
司南SNF飞控-LTE铁骑Y3垂起教程 下篇 PID调参教程 内容适用于所有飞控 0基础也能看
•
川大智胜:公司年报显示其在无人机飞控系统研发项目上已取得一定成果
•
第一讲:梦创飞控固件烧录教程
•
无人机飞控技术,无人机飞行控制系统介绍,飞控系统硬件设计原理与实现方法
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表