无人机编队综合实验与分析系统软件设计
1.1.1 飞控系统软件设计
本文飞控系统软件为基于Ardupilot进行二次开发,Ardupilot自驾仪代码由克里斯·安德森于2009年开源,是目前市面上功能最强大的开源自驾仪。图5.7给出了其基本的软件框图,地面站或机载通信设备通过Mavlink(Micro Vehile Link)协议与飞行代码进行通信,飞行代码透过硬件抽象层连接不同的操作系统与硬件,本文操作系统采用ChibiOS,硬件采用CUAV v5+。
UI界面/API接口:通信层:飞行代码:机载通信设备MavlinkArduPilot控制与导航规划共享库(传感器,EKF数据融合)硬件抽象层(HAL)地面站操作系统:NUTTXPixhawk v2LinuxNAVIOChibiOSCUAV v5+IIC/SPI/串口硬件:扩展传感器
图5.7 飞控系统基本软件框图
飞行代码主要包含控制与导航规划、共享库、硬件抽象层三部分。控制与导航规划模块负责接收地面站和机载通信设备传入的导航规划指令并运行控制算法,控制部分包含八个控制器,外环包括改进L1控制器、OTR控制器、TECS控制器和纵向串级PID控制器,内环包括滚转角控制器、俯仰角控制器、偏航角控制器和油门控制器;共享库为上层飞行器共同拥有,具体包括:传感器驱动、姿态与位置估计(如EKF数据融合)、伺服器驱动等;硬件抽象层保证了飞行代码可以移植到不同的平台运行,顶层定义了一个AP_HAL的虚类,该虚类提供了特定功能函数的接口。每种板载类型都有一个继承AP_HAL虚类的子类,在子类中重写虚类的特定功能函数。
本飞控软件系统设计了四种主要的飞行模式,分别为手动模式、增稳模式、自动模式和编队模式。手动模式将遥控器的输入指令直接映射到伺服器输出通道,该模式无需控制器接入,适合紧急情况下切入;增稳模式将遥控器输入转换为期望的滚转、俯仰和偏航角,经过滚转角控制器、俯仰角控制器、偏航角控制器计算得到伺服器输出;自动模式将任务命令先经过改进L1控制器和TECS控制器计算得到期望的滚转、俯仰、偏航和油门,再将这四通
道的期望指令经过内环控制器计算得到伺服器输出。编队模式工作于编队飞行阶段,其内环控制器和自动模式一致,外环将期望的目标点经过OTR控制器和纵向串级PID控制器计算得到期望的滚转、俯仰、偏航和油门,最后经过内环计算得到伺服器输出。
1.1.2 地面站软件设计
地面站软件需要具备对多无人机进行监视和操纵的能力,具体包含通信模块、飞行数据监视模块、航线规划模块、日志保存与分析模块、编队任务设置模块。
通信模块用于与多架无人机进行数据交互,并根据不同的系统ID和载具ID来区分不同无人机。无人机与地面站的通信采用Mavlink协议,为了提高通信模块的兼容性,本文设计的地面站同时支持COM、UDP、TCP形式的机载端数据接入。
飞行数据监视模块包含仪表盘形式的姿态、速度和高度显示,并且支持实时的地图位置显示。所有遥测数据既可以数字形式显示给用户,也可以用波形图形式显示。此外还有参数设置界面,用户可以随时设置无人机内部的各种配置或者控制参数。
航线规划模块中地图可以支持谷歌、必应、百度等主流电子地图。用户可以分别为每架飞机设置预定的自动模式飞行航点、地理围栏等,可以支持离线和在线加载任务。
日志保存与分析模块可以将重要的飞行数据以及参数保存在tlog文件中,待编队飞行结束后用于用户分析数据或者回放刚刚的飞行过程。
编队任务设置模块主要用于设置编队的一些重要参数,包含队形形状、队形间距、避障参数等。除此之外,还用于发送编队操纵指令,如开始编队,退出编队等。
本文地面站在开源MissionPlanner之上进行开发,开发语言为C#,开发环境为Win10,编译器为VS2017。图5.8~图5.12给出了其主要功能模块的界面显示。
图5.8 飞行数据显示界面
图5.9 编队状态监视界面
图5.10 航点规划界面
图5.11 队形设置界面
图5.12 编队参数设置界面
地面站软件的工作流程如图5.13。首先根据不同的端口号依次连接飞机,连接成功后给每架飞机进行自检,自检通过后分别为每架飞机规划自动模式下的航点任务,然后进入编队任务界面设置长机和编队队形等编队参数,设置完毕后,依次起飞各机,当所有飞机到达安全高度,发送编队集结指令,集结完成发送编队保持指令。最后根据任务需求判断是否需要进行队形变换以及是否结束任务。
开始依次连接所有无人机否连接成功?是所有无人机执行自检否否自检通过?是规划所有无人机航点设置长机与队形等参数依次起飞每架无人机发送编队集结命令编队保持队形变换?是新队形保持任务结束?是结束否
图5.13 地面站软件工作流程图