无人机编队综合实验与分析系统软件设计1.1.1 飞控系统软件设计本文飞控系统软件为基于Ardupilot 进行二次开发,Ardupilot 自驾仪代码由克里斯· 安德森于 2009 年开源,是目前市面上功能最强大的开源自驾仪。图5.7 给出了其基本的软件框图,地面站或机载通信设备通过Mavlink(Micro V ehile Link) 协议与飞行代码进行通信,飞行代码透过硬件抽象层连接不同的操作系统与硬件,本文操作系统采用ChibiOS ,硬件采用CUA V v5+。地面站UI 界面/API 接口 :Mavlink通信层 :飞行代码 :ArduPilot控制与导航规划共享库 (传感器 ,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 地面站软件设计地面站软件需要具备对多无人机进行监视和操纵的能力,具体包含通信模块、飞行数据监视模块、航线规划...