刘祖均,何 明,马子玉,顾凌枫
陆军工程大学 指挥控制工程学院,南京 210007
单架无人机执行大型复杂任务时,效率低,成功率低。从时间上看,单架无人机续航较短。对于一些需要大规模搜索的复杂任务(如自然灾害巡逻和森林救援),其最大行程将受到限制;从空间上看,单架无人机的活动半径有限,将严重缩小大规模军事侦察任务范围,降低完成效率;从任务层面来看,单架无人机抗干扰能力较弱,探测能力和负载能力有限,增加了任务失败的概率。相比之下,多架无人机的协同编队可以解决时间、空间和任务层面的冲突。当任务比较复杂,飞行区域比较大时,整个任务可以划分为一些简单的小任务。每架无人机携带不同的探测设备完成自己的任务,使总任务可以一次完成,从而大大提高了任务的效率。
编队是指两架或多架飞机以合作关系形成一定秩序的飞行。无人机群协同编队控制的研究已经得到了广泛的研究,研究方法主要有:人工势场法[1]、主机-从机[2]、一致性理论[3]、行为方法[4]等。
编队协同控制方式大致可分为集中式控制和分布式控制。集中式控制是指以队长的身份对整个编队的一个成员进行监控,并对每个成员下达控制指令,实现对整个编队的控制。分布式控制没有系统控制的中心点,通过系统中相邻个体之间的相互协商完成信息交换,最终完成整体的编队行为。由于没有控制中心,分布式控制系统具有较高的灵活性,可以动态地改变控制网络的结构。
Boid模型是著名的生物团簇运动模型,由Reynolds于1986 年提出。在仿真模型中,集群中的每只鸟都能在一定范围内获得相邻的个体飞行信息,并遵循对齐、内聚、分离三个基本行为规则来进行飞行决策。基于无人机编队飞行与生物集群社会行为的相似性,文献[5-7]分析了多架无人机仿生自主编队飞行的机理。然而,基于Reynolds 框架的无人机编队控制无法实现严格的避障,仿生方法实现自主编队[8]尚需要更深入的技术研究。传统基于人工势场的控制方法存在局部极小化问题,难以考虑实际约束。
近年来,许多学者致力于基于分布式信息交互的协同控制算法,取得了一致性算法的研究成果[9-10]。文献[11-12]对一致性算法进行了深入研究,并基于一致性理论研究了多机器人系统的队形控制问题。朱旭提出了一种具有高阶、非线性和时滞特性的一致性判据,研究了基于一致性控制的无人机编队保持算法以及编队重构[13]策略。Kuriki Y 等人充分考虑了无人机编队的防撞问题,结合防撞算法和一致性控制算法,有效解决了无人机编队中无人机的碰撞现象[14]。在利用虚拟导航仪研究分布式无人机编队控制方法时,文献[15]引入了虚拟力的概念和基于无向图的控制算法,将加速度转化为径向速度和角速度的更新,实现自主编队并跟踪虚拟导航仪的航迹。
本文综合了相关方法,采用主机-从机的控制方案,在分布式和一致性的基础上,引入一种相对通用、简单的多无人机编队协同方法。
无人机编队协同控制由协同飞行控制系统和协同航迹控制系统两部分组成。协同飞行控制系统是一个控制飞行姿态的内环;协同航迹控制系统是一个控制飞行轨迹的外环,外环的输出是内环的输入。协同航迹控制系统根据期望的移动位置,计算出相应的姿态信息,如俯仰角、偏航角、速度等,并传送给协同飞行控制系统。飞行控制系统收到指令后,通过新的姿态信息计算出旋翼推力并发送电机指令控制运动。如果不提前设定航路,编队就可以自由飞行,航迹控制的任务就会变得简单,只需要在飞行中注意避碰。在本文无人机编队协同控制中,设计了一种基于一致性算法的反馈控制律来完成编队和姿态协调任务。
各无人机的控制系统结构如图1 所示。外环的主要任务是控制每架无人机的位置、速度。基于外回路产生的控制指令,内回路完成飞行姿态控制。
图1 无人机控制系统模型
为了实现控制目标,设计了速度控制子系统,获取所需的时变推力大小和方向,将所需的姿态信息发送给姿态控制子系统进行跟踪。
与传统的集中式协同编队控制理论相比,基于分布式结构的协同编队控制方法具有通信控制框架灵活、个体数量不限、计算量小、易于工程实现等优点。无人机之间的通信是双向的,双向通信有利于无人机编队协同飞行完成各种任务。同时,当编队无人机数量增加到3架以上时,可提高稳定性和可靠性。图2展示了多架无人机的分布式结构,其中每架无人机都在通信距离R的范围内。
图2 分布式结构
(1)无人机指挥员
无人机指挥员在无人机编队中起着指挥和控制的作用,引导整个团队按照预先设定的航迹飞行。它与地面控制中心和其他无人机保持实时通信。任务流程预装在每架无人机上,可以在领导者失败时由地面控制站激活。
(2)无人机跟随者
无人机追随者跟随他们的领导者。与地面控制中心保持联系,不断接受无人机指挥员的指挥。每两个无人机跟随者之间也可以进行通信。
本文将“老兵规则”[15]与经典的“领导者跟随者”通信机制相结合,根据局部领导者与局部追随者之间的距离来设计各种经验值,然后可以很容易地获得预期的拉普拉斯矩阵L。
一旦获得编队变化次序,就可以计算矩阵L。假设无人机群的数量为6,并且当前位置为图3所示的“T”形,当队形变换到八面体形时,则得到的通信拓扑如图4所示,矩阵L为:
图3 当前6个UAV位置
图4 6个UAV通信拓扑
根据上述建立的分布式结构,结合智能群体理论和具体的实际情况,给出无人机编队过程中的协同机制如下:
(1)一致性
在给定编队结构的情况下,无人机领导者朝给定位置飞行,将领导者的相关位姿信息分配给相应的无人机追随者,使其分别达到位置和速度的一致性。
(2)任务分配
无人机跟随者从无人机领导者接收信息,每个无人机追随者的首要任务就是飞向期望位置。
(3)避碰
预先设置安全距离D(0 <D<R) ,如果将每两个UAV 之间的最小距离减小为D,则会采取一些相应的措施来避免碰撞。
以上协同机制的三个步骤是每个无人机需要遵循并完成的工作,将会在下一章协同编队设计分步具体展开。
在本章中,介绍了一种分布式UAV 编队控制的设计。设计了一致性控制器、任务分配策略和避障策略。将一致性控制器的输出加速度发送到高层控制层,每个UAV 的避障模块修改所需的加速度。最后,将期望的加速度发送到低层控制层,最终实现期望的编队。
考虑到一组N个UAV,每个UAV 在其动力学模型的基础上可以被建模为一个积分器模型,则可以描述为:
这里输入ai是UAVi的加速度,ξi和μi分别是UAVi的位置和速度状态。所有的UAV 在m维空间中移动,在本文的模拟中m=3。目标状态是所有的UAV 达到一个给定的编队模式。编队控制器如下:
ωij是邻接矩阵W的元素,当且仅当ωij>0 时,表示UAVj与UAVi通信。δi为无人机i的编队偏移量,由最终期望的编队构型及其期望位置决定。γi是一个可调参数,关系到系统的稳定性和收敛性。
由于系统的一致性与编队的稳定性是等价的,所以本文系统可以在文献[16]条件下达到编队的稳定性。
对于n架无人机,定义其通信拓扑结构为Gn,L为Gn相应的拉普拉斯矩阵,令L=[lij]∈RN×N,它的元素定义为:
令c=[c1,c2,…,cN]T,ξ=[ξ1,ξ2,…,ξN]T,δ=[δ1,δ2,…,δN]T,μ=[μ1,μ2,…,μN]T,系统(3)可以写为:
图5 KM算法的匹配和筛选结果
这里Im=[1,1,…,1]T∈Rm,在本文仿真中m=3。
考虑到参数γ的设置,根据文献[15],当且仅当以下成立,系统达到稳定:
λi是 -L的第i个特征值,Re(λi)和 Im(λi)是λi的实数和虚数部分。很明显,原满足条件式(7)的参数在改变矩阵L后是脆弱的,这可能会大大降低仿真平台的可扩展性。因此,对于任何数量的无人机,都非常需要通用的通信拓扑规则和参数γ。
在执行任务时,考虑环境影响以及无人机自身续航能力,不同的无人机设置在不固定的编队位置,将编队变换视为一种任务分配,优化目标是获得编队任务点分配的最小代价,以使编队在最短的理想总距离范围和时间内收敛。为了降低分布式任务分配的难度,并结合仿真平台的特点,采用基于Kuhn-Munkres 算法的变种算法进行任务分配。
考虑n个无人机当前所在顶点位置与变换后顶点位置为两组顶点集合,组内任意两个顶点间没有边相连,只有两个集合之间存在边,设其为二部图A。本节任务目标要完成二部图的完美匹配,即两集合存在n!个双射匹配组合。A中每个元素aij的值表示前编队偏移量和当前的编队偏移量两点之间的距离dij,即这条边的权重或代价。算法流程如下:
(1)初始化每个无人机可行路线的权重。
(2)使用匈牙利最大匹配算法判断是否有符合条件的增广路。
(3)若找到符合的增广路则修改当前可行路线的值。
(4)重复(2)、(3)直到找到最佳匹配为止。
本算法获得的分配是最佳的分组,总代价最小[17]。例如,在简化模拟器中将编队配置“T”形变换为正八面体时,然后KM算法的匹配和筛选结果如图5所示。
图6 为避障策略。假设无人机的信息感知范围为圆球体,则R为无人机最大通信半径,d为无人机最大安全避障半径,r为两UAV之间距离矢量,指向安全范围内障碍UAV,a为UAV1 的避障矢量,a′为UAV2 的避障矢量。a和a′方向相反,垂直于r。
图6 避障策略
如算法1 所示,利用两个辅助向量h1和h2来避免向量积结果趋近于零。kP是一个比例因子,lp是一个修正因子,根据两飞机距离来修整正避障矢量的大小。如果在d米范围内有超过一个UAV,则会对避障矢量a进行多次修改。最后的a从协同层添加到期望的加速度中,然后将期望的加速度发送到低层控制层。
算法1避碰策略
loop
Initialization:a0=[0 ,0,0];h1=[1 , 0,0];h2=[0 ,1,0];i=0
whilei<d米范围内无人机的do
ifri⋅h1<ri⋅h2then
a0=a0+(kP*ri×h1)lp;
else
a0=a0+(kP*ri×h2)lp;
end if
end while
end loop
如图7 所示,在4.1 节中简要介绍了仿真平台的分布式架构,五个层通过通信层相互通信。该架构的灵感来自于文献[18],它是一个实用的UAV 集群的多层次分布式架构。4.2 节进行了简化模拟器Matplotlib 和实景Gazebo 下的仿真实验,验证上述协同控制方法的有效性。
图7 分布式UAV协同仿真平台架构
通信层负责所有UAV和地面控制站之间的消息传输,该层是整个仿真平台的基础。ROS、MAVLink 和MAVROS在通信层中提供消息传递。
仿真层提供了无人机动态模型、传感器、虚拟场景和一些其他类型的机器人,所提供的这些都是可以编程定制的,因此开发人员可以根据自己的需要修改动力学模型,或向无人机添加其他需要的传感器。这一层主要的模拟器是Gazebo。此外,为了在早期阶段快速开发算法,提供了一种基于Matplotlib的简化模拟器[19]。
低层控制层是基于PX4 自驾仪的软件在环仿真(SITL)实现,使用到的主要是官方的PX4 Firmware 固件包,其中包含状态估计和基础控制,例如位置控制、姿态控制和飞行模式。
高层控制层包含感知和运动规划。例如路径规划、避障等均在此层中。后期若需要研究视觉SLAM、目标追踪等算法,也应在此层中进行设计。对于无人机群,该层接收从协同层分配的任务,然后每个无人机完成任务。
协同层负责与用于任务协调的无人机之间的协商(例如,任务分配)有关的任务。它将总任务划分为不同的小任务,然后将它们发送到高层控制层。该层非常灵活,可以根据不同的任务和协同策略包含不同的模块。在4.2 节仿真实验中,任务分配和一致性控制器位于此层中。
人机交互层是开发人员用来控制和监视UAV群的一组接口。常用的人机交互界面是地面控制站,如QGroundControl。QGroundControl 通过 MAVLink 与 PX4 SITL通信(如图7中虚线箭头所示),因此开发人员可以监视和调整底层控制层的参数和目标。此外,日志记录对于分析算法和调试代码至关重要,可以使用一些用户友好的软件分析ULog文件。
仿真主要包含两个python 类,一个用于Leader,另一个用于Follower。开发人员可以继承这两个类来修改通信和控制方案。通过启动多个ROS 节点,可以模拟多个UAV控制器。
(1)Leader.py:初始化了一个leader,follower跟随其变化。
(2)Follower.py:编程设计每个follower无人机进行编队变换需要完成的一致性控制协议、任务点分配和避障策略的算法。
图8 展示了在简化模拟器中实现的6 个UAV 的协同编队,图9展示了在Gazebo中实现的6个UAV的协同编队,从左到右完成三个构型的变换:T形、正八面体和三角形。
为了验证本文分布式协同控制算法,从PX4 中获取了飞行日志,并且对两次编队变换无人机群位置响应数据进行分析,曲线如图10 所示。在PX4 日志中选择记录频率为60 点位/s,即每幅图的横坐标轴表示记录位置频率。其中,图10(a)~(c)表示T 形编队到正八面体编队构型的变换中六架无人机XYZ位置响应;图10(d)~(f)表示正八面体编队到三角形编队构型的变换中六架无人机XYZ位置响应;尽管在响应曲线上可以看到一些过冲,但最终整个编队都能够很快地达到稳定,从而验证了本文提出分布式协同控制方法的有效性。
图8 在简化的模拟器中实现6UAV的编队
图9 6UAV在Gazebo中的仿真
图10 两次编队变换位置响应曲线
本文针对多无人机协同编队控制问题,分析了多无人机的协同机制,基于传统的领航-跟随结构设计了一致性协同编队控制器,利用匈牙利算法实现机群队形变换中距离代价最小,为了使无人机移动过程中避免碰撞,提出一种简单有效的避障算法。最后分别在简易模拟器和基于ROS-Gazebo 的实景模拟器进行仿真验证,实现了6架无人机协同编队,验证了本文一致性算法和分布式控制方法的有效性。
由于多机通信问题较为复杂,尤其在ROS 的仿真环境下实现困难,下一步研究工作将会探索如何优化基于ROS 的多机仿真,并且应进一步考虑通信时延环境下的无人机集群协同编队问题。