无人直升机自主飞行控制系统设计与工程实现

发表时间:2020/11/5   来源:《科学与技术》2020年19期   作者:刘涛
[导读] 无人直升机因造价低、效益好、无人员伤亡、使用灵活等特点,广泛应用于军事
        刘 涛
        航天神舟飞行器有限公司  天津 300450
        摘要:无人直升机因造价低、效益好、无人员伤亡、使用灵活等特点,广泛应用于军事、民用以及科研领域。但无人直升机有着操纵响应迟缓、稳定性差、通道耦合严重等缺点,尤其是在悬停小速度段不稳定性更为明显,再加上飞行模态众多,因此对无人直升机飞行控制系统有着很高的要求。无人直升机自主飞行控制技术涉及多学科交叉技术,具有极大的研究价值。另外,无人机自主飞行控制技术是编队飞行控制技术的基础,只有实现良好的自主飞行性能,才能实现多机编队飞行。因此无人直升机自主飞行控制技术研究是具有十分重要的意义。
        关键词:无人直升机;自主飞行控制;系统设计;工程实现
        1无人直升机自主飞行控制系统概述
        飞行控制系统包含飞行控制器硬件、软件及算法设计;飞行地面站包含硬件平台和软件设计两部分;数据链路通信系统由物理线路、软件通信协议和通信拓扑结构构成。无人直升机飞行控制系统是自主飞行控制系统的载体,是自主飞行控制系统的执行层。飞行地面站系统是自主飞行控制系统的控制指令生成及发送终端,是自主飞行控制系统的决策层。数据链路通信系统是飞行控制系统和地面站系统的信息交互桥梁,是自主飞行控制系统的数据交互层。地面站系统通过无线数据链路向无人直升机飞行控制系统发送航点等飞行指令,无人直升机飞行控制系统收到指令后,运行控制算法按照指定路线飞行,同时与地面站保持实时通信,地面站软件实时显示无人直升机飞行轨迹并可以随时改变其飞行轨迹,由此形成了本文无人直升机自主飞行控制系统基本逻辑。
        2无人直升机飞行控制器设计
        2.1飞行控制器总体设计
        无人直升机飞行控制器总体设计包含硬件和软件两大部分。控制器硬件部分由内置主控电路、传感器电路、输入输出电路设计、外置硬件选型及无线数传设备等部分组成。软件设计由飞行控制、传感器数据融合、无线数据通信与解析、任务管理、舵机驱动等模块构成。底层硬件为上层软件提供数据来源及硬件基础,上层硬件为底层硬件提供数据驱动,底层硬件和上层软件有机地结合,构成了一个完整的无人直升机自主飞行控制器系统。
        2.2飞行控制器硬件设计
        飞行控制器的硬件架构分为内置硬件和外置硬件,图中细线框表示内置硬件,粗线框表示外置硬件。内置硬件包括惯性测量传感器、微控制器以及各种接口,外接硬件包括GPS模块、电子调速器(ESC)、遥控器接收机、蜂鸣器安全开关以及无线数传。本文飞行控制器内置硬件的主处理器采用168MHzCortexM4外加FPU浮点运算核心的STM32F427微控制器,主要用于传感器数据读取、运行姿态解算位置估计以及控制导航算法。内置硬件集成了多冗余IMU设计,包含三轴14位加速度计、三轴16陀螺仪、MS5611气压计、电子罗盘,支持多传感器数据融合,保证了数据的真实准确性。内置硬件也预留了丰富的扩展口,14个PWM舵机电调输出接口、5个UART串口,支持S.BUS协议输入输出,此外还具有强大的综合供电系统,支持冗余供电输入,所有的输入均具备过流保护以及输入防静电。
        2.3飞行控制器软件设计
        本文无人直升机控制器软件采用模块化设计,主要有遥控器信号处理、控制率运算、传感器数据读取、电机输出、飞行任务管理及数据管理六大模块。本文飞行控制器软件采用裸机单线程前后台程序设计方法,即通过STM32定时器TIM定时1ms作为程序定时任务的节拍,然后在main()主循环中根据节拍计数循环执行各子程序模块任务。飞行控制器软件设计包含众多软件模块,其中飞行控制算法模块、姿态估计算法模块以及针对不同飞机类型设计的电机控制分配模块最为重要。
        2.4无线数据链路设计
        无人直升机自主飞行需要地面站软件通过无线数据链路发送控制指令来完成,无线数据链路的好坏直接影响系统性能。无线数据链路有物理线路、通信协议、拓扑结构三大要点。物理线路是指具有一定性能指标、标准接口的通信硬件;通信协议是指通信双方对数据格式、同步方式、传输速率、传输步骤、检查错误方式及控制字符等问题做出统一的规定;拓扑结构则是通信节点之间组成的网络结构。无人直升机飞行控制器和地面站平台都需具备无线数据链路硬件接口和通信协议软件。


        3无人直升机地面站软件设计
        3.1地面站软件总体设计
        3.1.1开发语言工具选择
        本文无人直升机地面站软件基于.NetFramework4.6.2平台C#编程语言开发。C#是面向对象编程语言,支持类、对象、继承、接口、集合、事件委托等编程方法,使得程序能够良好的代码复用性。另外许多地图、航空仪表控件均采用C#语言编写,开发时直接引用即可,提高了开发效率。地面站软件开发采用微软公司VisualStudio2017Community集成开发环境(IDE)编辑代码,方便调试、定位代码。
        3.1.2软件方案设计
        无人直升机地面站软件是一种多线程的窗体应用程序,分为前端序和后端程序,前端程序主要负责主窗体界面更新,后端程序主要负责底层数据处理、逻辑处理,另外C#的事件触发机制可以触发任意用户程序,前端、后端及事件的交互构成了一个完整的地面站软件系统。数据通信是地面站的核心,没有通信数据来源地面站将无法工作。地面站软件以Mavlink通信线程为主,飞行数据显示功能、航点规划功能、两机编队控制等主要功能子函数与通信主线程数据交互,以此构成本文地面站软件运行基本逻辑。
        3.2地面站飞行数据显示设计
        在VisualStudio2017中新建基于.NetFramework4.6.2的C#WinForm窗体项目,使用Panel容器控件将主界面初步划分为航空仪表区、飞行数据区、故障报警提示区、子页面功能区、地图显示区以及指令控制区这六大分区,后续的其他控件将填放在Panel之中。主窗体页面六大分区作用如下:航空仪表区,采用虚拟航空仪表控件,控件的大部分用于显示直升机的滚转角和俯仰角,两侧左端数值表示飞机当前爬升速率,右端表示当前飞行高度。飞行数据区。飞行数据区设计了5个不同的操作界面,点击控件上端TagPages属性可以切换显示不同页面,基本数据页面显示了无人直升机飞行时的基本数据,可供操作人员观察。飞行故障报警区。当无人直升机飞行控制系统运行出现故障时,地面站软件会将错误信息打印于TextBox控件中,提醒地面操作人员。子页面功能区。在主页面的右侧上端设计了单机、多机、航点规划以及系统配置按钮,以便调出相应子页面。地图航点规划区。地图显示区是地面站界面的主要部分,实现了航点规划、航线显示等功能。指令控制区。在主页面的右侧下端设计了解锁/上锁、降落、起飞以及返航等常用控制指令按钮,以供操作人员快捷操作。
        3.3地面站通信软件设计
        地面站软件Mavlinlk通信部分一方面需要解析飞行控制器发来的数据包并实时更新到控件中显示,另一方面将控制指令和航点规划任务封装成Mavlink协议发送至飞行控制器,因此Mavlink通信部分是地面站软件的核心。地面站软件大多时候均在接收飞行控制器飞行数据,并实时解析。Mavlink数据解析有重要的三个判断,第一判断起始位STX是否为0xFE,由此作为是否继续向下读数据的依据;第二个判断,判断MSG_ID指定消息与长度LEN是否一致,一致则继续向下读取PLAYLOAD中消息数据,最后CRC检验,更新数据至Mavlink数据缓冲区。数据封装用于地面站给飞行控制器发送解锁、起飞等控制指令,主要是通过计算需要发送消息长度N实例化消息包数组packet[N+6+2],其中有6个起始位,2个校验位,然后依次写入起始位相关信息,加入地面站自己的SYS_ID、COMPID,加入有效数据PLAYLOAD部分,最后计算CRC写入串口数据流。
        4结束语
        本文从直升机飞行控制理论出发,对无人直升机自主飞行控制系统、地面站软件系统、数据链路系统进行分析设计及工程实现研究。
        参考文献
        [1]王怡怡,赵志良.二自由度无人直升机的非线性自抗扰姿态控制[J/OL].自动化学报:1-14[2020-09-17].https://doi.org/10.16383/j.aas.c190521.
        [2]刘念,周炎,祖家奎.小型无人直升机分布式飞控系统的设计与实现[J].电子测量技术,2019,42(10):120-125.
        [3]刘念.无人直升机分布式飞行控制系统软件设计与开发[D].南京航空航天大学,2019.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: