总算有人把无人机飞控软件架构技术讲全了!(珍藏版)

笔者非科班出身,从事无人机飞控设计四余年,主要参与飞控系统总体设计,仿真试验及外场试飞,对飞行控制与管理系统方面,限于没有做全面系统性梳理总结,知识属于囫囵又杂散的状态。前段时间组织做过一个界面程序,意图完成总结性工作,目前尚在完善过程中。笔者一直认为飞控系统软件和控制律(算法)是想成为飞控系统设计大神,手里应该掌握的镰刀和榔头!本文为笔者学习飞控软件架构后整理的学习笔记,如有内容错误,欢迎指正。文中对引用他人内容会明确说明,如有疏漏未标明,欢迎指出,笔者将积极回应。

一、飞控系统组成模块

早期无人机没有软件架构,是通过无线电(RC)控制技术发展起来的,笔者在大学本科上的第一门课叫“自动化导论”,记忆深刻,上课开始教授就给出一张图,一个典型的闭环控制系统(包含控制目标,控制器,反馈信息,执行机构),这个也很准备地概括出了早期无人机飞控系统。得益于卫星能力的增强和计算机处理能力、算法发展、实时系统应用、机电飞控系统、导航系统方面的技术进步,目前的飞控系统随着软件架构变化而发展。但无人机飞控系统的基本功能是不变的:主要依靠传感器系统获取位姿信息,反馈到微处理器进行控制系统的运算,输出控制指令给相关子系统(伺服作动/机电系统)。所以飞控软件设计主要负责搭建合理软件流程,使各功能模块协调有效的工作。

当然,设计一个现代无人机飞控系统软件时,就不仅仅是让飞机飞起来那么简单了,也就是说软件模块除了基本要素外,还需有其他扩展功能,一个完整的飞控软件组成模块包括:

1、传感器模块(包括预处理/校准模块)

2、通信模块

3、控制输入模块(来自地面或自动控制模块)

4、导航/制导模块

5、飞行模式管理模块

6、参数管理模块(控制可调参数、性能查值等)

7、飞行控制模块

8、起飞/着陆检测模块

9、应急处置/健康管理模块

10、数据记录模块

11、固件升级模块

总算有人把无人机飞控软件架构技术讲全了!(珍藏版)飞控软件组成模块

二、软件设计方法

笔者在大学期间参加大学生创新大赛时,当时团队三人查资料合计后做的是一款球形机器人(最终结果它只是完成了直线运动,未能实现设计之初设想的万向运动,定点止停),同实验室有同学就做的是涵道无人机,那个时候也就初步接触了一点飞控知识。

跟我们的机器人软件一样,为了方便快捷,软件系统的编写采用前后台操作的方式。前台应用程序是放在main主函数里面无限循环,调用相应的处理子函数;后台中断程序处理异步触发事件。为保证时间的精确性,有些固定周期执行的任务都要靠中断服务程序来完成,但是在中断处理程序中只标记事件的发生,不做任何处理,转而由后台系统调度处理,这是为了避免在中断程序执行时间过长影响后续和其他中断事件。

目前,很多开源飞控是带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飞控软件结构简介》

源自:知飞之家

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2161241530@qq.com 举报,一经查实,本站将立刻删除。如若转载,请注明出处:https://www.woiwrj.com/uncategorized/12976/

(1)

相关推荐

  • 翔仪•明珠MZ-100/MZ-400/MZ-600系列飞控新品发布

    ★产品介绍★ 明珠飞控MZ-100/MZ-400/MZ-600是专为小型固定翼无人机、小型垂直起降无人机、小型倾转垂直起降无人机打造的小体积、高可靠、低成本导航测量与飞行控制设备,…

    2020年9月12日
    1.2K
  • 无人机飞控姿态调参

    无人机的调试工作很大一部分是对飞行控制参数的调试,广义的飞控参数包含了制导、导航、控制律以及各种控制策略中的可调参数。一般的飞控都有上百项需要人为调试的参数,有的甚至是几百上千个。…

    2020年8月26日
    1.5K
  • 无人机飞控的原理是什么?

    10年前,无人机行业考虑的是如何让飞机稳定飞起来、飞得更快、飞得更高。无人机的应用也主要是在军事等神秘领域。如今,随着芯片、人工智能、大数据技术的发展,无人机开始向智能化、终端化、…

    2020年8月24日
    2.1K
  • 无人机飞控调试方法

     一,刷机。   设置板接上飞控。接法如图:   按照上述方法接线之后(特别注意RX和TX的对应关系),就可以插上电脑。USB设置板驱动给装上。接着安装并运行STM32刷机软件“F…

    2020年8月26日
    4.1K
  • 启飞智能Venus飞控系统

                     Venus飞控系统 为解决中国农业的自动化、智能化、信息…

    2020年8月27日
    1.2K
  • 无人机飞控系统的原理是什么呢?它是由什么组成的呢?

    无人机飞控系统的原理是什么呢? 它是由什么组成的呢?刚接触无人机的小伙伴们是不是有很多疑问,我爱无人机网总结了下面的知识大家就一起来了解一下吧。 01 飞控:全称为飞行控制系统 飞…

    2020年12月28日
    2.2K
  • 飞控专家教小白如何快速掌握飞控技术

    无人机涉及哪些工作 自开公众号以来,陆续有不少关注者提问怎么去学习无人机技术,尤其是对于入门者。其实无人机是一个复杂的系统,它涉及到许多学科。所以你首先要给你自己一个定位,你是要从…

    2020年9月14日
    896
  • 致导科技倾力打造性价比王者-金牛座飞控

    致导科技充分调研市场及用户需求后,倾力打造金牛座无人机飞控,在AheadX团队的不懈努力下,金牛座Taurus面世了! ====性能不妥协==== 金牛座Taurus主打性价比 在…

    2020年9月17日
    2.2K
  • 全可编程无人机飞控Phenix Pro

    Phenix Pro 是全球第一款专用于工业应用的全可编程飞控,来应对多场景、小批量、定制化程度高、需求变化快等挑战。Phenix Pro无人机飞控依照航空电子要求设计制造,具有高…

    2020年12月12日
    1.6K
  • 大疆A3飞控拆解图文教程

    大疆A3飞控拆解图文教程 大疆A3飞控是提供无人机全新的工业系统解决方案,它可集成厘米级精度的D-RTK GNSS模块、智能电调、智能电池和Lightbridge 2高清图传。配备…

    2020年9月28日
    2.9K