news 2026/11/5 1:56:16

编队系列(二)|固定翼如何依靠邻居信息保持队形?一致性控制、通信拓扑与分布式仿真实现,附仿真代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
编队系列(二)|固定翼如何依靠邻居信息保持队形?一致性控制、通信拓扑与分布式仿真实现,附仿真代码

上一篇《编队系列(一)|固定翼领航-跟随如何实现?虚拟结构与 LQR 控制,附仿真代码》采用一架领航机发布状态、其余飞机跟踪编队槽位的方式。该结构的信息关系清晰,适合双机伴飞和小规模编队验证;但随着成员数量增加,领航机的通信负担、单点失效以及长距离状态转发开始成为需要单独处理的问题。

一致性方法提供了另一种协同方式:每架飞机在本地计算控制量,只与通信图中的邻居交换必要状态,并利用邻居误差逐步形成共同的协同变量。该变量可以是位置、速度、航向、到达时间或路径参数。经典一致性理论给出了通信拓扑、拉普拉斯矩阵与收敛条件之间的关系[1][2],但固定翼无法像单积分器质点一样直接沿任意方向移动,因此还需要把一致性项与路径跟踪、速度边界和姿态控制接口结合起来。

本文以迅翼现有六机固定翼一致性仿真例程为基础:每架飞机根据自身位置、航迹方向和预设槽位反推出一个虚拟编队参考点,通过环形通信拓扑交换参考点坐标;一致性项负责减小各机参考点之间的差异,路径跟踪项负责使编队沿闭合折线路径飞行,LQR 和姿态映射再把期望状态转换为 PX4 Offboard 可以执行的指令。

一、从领航机状态转向邻居信息

设系统中共有N架固定翼无人机,第i架飞机的位置、速度和航迹角分别为:

pi= [xi,yi]T,vi= [vx,i,vy,i]T,χi= atan2(vy,i,vx,i)

Leader–follower 中,第i架跟随者主要使用领航机状态生成本机参考;一致性编队中,第i架飞机根据自身状态以及邻居集合Ni中的状态完成计算:

ui=fi(xi, {xj|j∈Ni})

这里的“分布式”是指控制量在各机本地计算,并依赖邻居之间的信息交换。它不表示系统完全不需要通信,也不表示任务路径、编队槽位和安全规则必须在线独立生成。本文仿真通过配置文件为所有节点预设共同路径、队形和通信矩阵,运行时则不再由唯一领航节点集中计算所有成员的编队控制量。

这种结构带来三个直接变化:

  • 通信对象发生变化:每架飞机只订阅图中邻居的参考点信息,不需要持续接收同一架领航机的全部状态。
  • 控制器形式统一:所有成员运行相同的路径跟踪、一致性计算、LQR 和姿态映射逻辑,成员差异主要由编号、槽位和邻居集合决定。
  • 故障影响取决于拓扑:单个成员退出后,只要剩余通信图仍满足相应连通条件,其他成员仍可能继续完成状态协调;若退出导致网络分裂,各连通分量会分别演化,不能继续保证全编队一致。

二、通信拓扑如何写成拉普拉斯矩阵

一致性算法首先需要明确“谁能收到谁的信息”。通信网络可以表示为图:

G= (V,E,A)

其中,V= {1, 2, …,N} 是节点集合,每个节点对应一架飞机;E是通信边集合;A= [aij] 是邻接矩阵。对于无向无权图:

aij= 1(当 (i,j) ∈E),aij= 0(当 (i,j) ∉E)

若aij= 1,第i架飞机在一致性计算中使用第j架飞机的信息。无向图满足aij=aji;加权图则允许aij取非负权重,用于描述不同通信关系或控制增益。

教案中的五节点无向图对应邻接矩阵:

第i个节点的度为di= Σjaij,度矩阵写成:

D= diag(3, 2, 2, 3, 2)

矩阵的第i行直接给出本机与邻居的误差组合:

[Lz]i= Σj∈Niaij(zi−zj)

因此,程序不需要单独遍历所有误差项,只需取L的第i行与全体协同状态相乘。实际分布式实现并不要求本机接收所有节点的信息,因为第i行中非零的非对角元素只对应本机邻居。

1. 一阶平均一致性

先考虑一维一阶系统:

ż=u,z= [z1,z2, …,zN]T

采用一致性协议:

ui= −kcΣj∈Niaij(zi−zj)

写成矩阵形式即ż= −kcLz。对于固定、无向且连通的通信图,L只有一个零特征值,其余特征值为正。系统状态最终收敛到初值的算术平均:

limt→∞zi(t) = (1/N) Σj=1Nzj(0)

参数kc> 0 调整理想模型中的收敛时间尺度,但增大kc也会提高控制变化和对通信噪声的敏感度。工程中还会受到消息周期、时延、控制限幅和飞行器动态的共同限制。

注意:“图连通即可”需要说明适用范围。固定无向图在连通条件下可以实现上述一阶平均一致性。有向图通常需要存在有向生成树才能保证状态趋于共同值,而收敛到算术平均还需要权重平衡等附加条件;切换拓扑、通信时延和丢包也需要分别满足相应假设,不能只用一次静态连通性检查代替[1][2]。

三、普通一致性怎样变成编队一致性

若直接令所有位置pi达到一致,最终结果是所有飞机趋向同一个位置,这与保持安全间隔的编队目标相矛盾。编队控制需要先从各机状态中构造一个应当相同的协同变量,再对该变量执行一致性。

本文采用虚拟结构参考点。设第i架飞机在编队坐标系中的槽位偏置为ri,二维旋转矩阵为:

R(χi) = [cosχi, −sinχi; sinχi, cosχi]

第i架飞机根据自身位置和航迹方向反推出虚拟编队参考点:

ci=pi−R(χi)ri

当所有ci收敛到同一位置,并且各机对编队朝向的估计一致时,有:

pi−pj=R(χc)(ri−rj)

这意味着飞机之间保持由槽位差定义的相对几何关系。虚拟结构方法用于描述队形,一致性协议用于协调各机对结构参考点的估计,两者承担不同功能[3]。

1. 两种可选的一致性变量

协调项给出以下两种实现路线:

  • 参考点坐标一致性:各机交换二维参考点ci= [cx,i,cy,i]T,分别对x、y坐标计算一致性项。方法直观,适合一般折线或平面轨迹,但至少需要传输两个连续量,且还要单独保证公共参考点收敛到任务路径。
  • 路径参数一致性:先把参考点投影到公共参数路径p(τ),再对弧长、相位或虚拟参数τi进行一致性。通信变量可以降为一维,形成后的编队也自然附着在公共路径上,但需要解决闭合路径参数回绕、不同曲率区间的速度映射以及参数投影唯一性。

迅翼六机仿真例程采用第一种方案。每架飞机通过 ROS 发布自身虚拟参考点坐标,并接收环形拓扑中两个邻居的参考点。设cx= [cx,1, …,cx,N]T,cy= [cy,1, …,cy,N]T,二维一致性速度为:

vc,x= −kcLcx,vc,y= −kcLcy

第i架飞机只需计算对应分量:

vc,i= −kcΣj∈Niaij(ci−cj)

四、把路径跟踪与一致性速度合成

一致性项只能减小各机虚拟参考点之间的差异,不能独立决定编队沿哪条任务路径飞行。因此,每架飞机还需要根据本机参考点ci计算路径投影和切向速度。

设公共路径为P,qi是ci在路径上的最近点:

qi= arg minq∈P‖q−ci‖

路径切向单位向量记为ti,巡航速度为Vd。用于参考点路径跟踪的速度可以写成:

vp,i=Vdti+kp(qi−ci)

程序会对合成结果重新归一化,使路径跟踪部分保持给定的名义速度。若路径存在曲率,槽位随编队朝向转动还会产生附加速度。定义平面内旋转 90° 的矩阵J= [0, −1; 1, 0],槽位旋转速度可以写成:

vr,i=ωiJR(χp,i)ri

其中χp,i是路径切向方向,ωi是编队参考方向的角速度。该式等价于程序中先把二维槽位扩展为三维向量,再计算 [0, 0,ωi]T ×ri。于是,飞机的期望速度可以概括为:

vid=vp,i+vr,i+vc,i

三项分别负责沿路径前进、补偿槽位旋转以及减小邻居参考点误差。本文折线路径示例采用零路径半径,合成速度主要由路径切向速度、路径收敛速度和参考点一致性速度构成。对于连续圆弧或大尺度转弯,曲率与槽位旋转速度会直接影响内外侧成员的速度分配,此时应将vr,i纳入期望速度计算。

1. 从期望速度到固定翼姿态指令

与上一期相同,单机水平运动采用双积分近似:

ẋi=Axi+Bai,xi= [pi;vi]

根据路径投影和槽位偏置构造期望位置pid,再与vid组成期望状态xid= [pid;vid]。LQR 反馈生成水平期望加速度:

aid= −Ki(xi−xid)

将aid分解为沿速度方向和法向的分量:

a∥,i= (aid)Tvi/ ‖vi‖,a⊥,i=aid− [(aid)Tvi/ (viTvi)]vi

协调转弯近似下,滚转角参考为:

φid= sgn(vx,iay,id−vy,iax,id) · arctan(‖a⊥,i‖ /g)

期望航迹方向由路径切向速度给出,高度误差转换为俯仰角参考,最终通过[roll, pitch, yaw, a]姿态接口发送给固定翼底层控制器。固定翼输入与速度约束会改变理想一致性系统的收敛过程,因此不能仅凭ż= −Lz的理论结果判断真机编队性能。固定翼集群研究通常需要把协同律与最小空速、最大航向角速度和滚转角等约束同时分析[4]。

从一致性算法到固定翼控制接口。迅翼仿真平台已经连通通信拓扑、协同算法、ROS 消息与 PX4 固定翼控制接口。研究者可以在统一环境中替换编队策略、比较通信结构和调整控制参数,把精力集中在协同方法与飞行表现上。

五、迅翼仿真平台中的六机 ROS 实现

该例程由ConsensusFollow.py实现二维编队与 LQR 计算,consensus_uav.py完成 ROS 通信、三维状态更新和姿态指令发送,spawn_uav.py封装各机的 MAVROS/Gazebo 状态与控制接口。整体程序结构如下:

主要文件职责可以概括为:

文件主要职责
consensus_uav.py发布本机参考点、订阅邻居参考点、更新三维状态并发送姿态指令
ConsensusFollow.py计算虚拟参考点、路径期望状态、一致性速度、LQR 加速度与滚转角
DesirePath.py计算折线路径最近点、路径切向速度和距离信息
FormationFun.py根据飞机数量和间距生成圆形编队槽位
spawn_uav.py读取无人机位置、速度与姿态,并封装 PX4/MAVROS 控制消息
6_consensus_plane.launch启动 6 个一致性节点和 6 个固定翼底层控制节点

1. 环形拓扑如何进入 ROS 订阅关系

示例通过CircleCommunicationMGenerate()生成环形图拉普拉斯矩阵。对于N架飞机,每个节点与前后两个节点通信:

Lii= 2,Li,(i−1) modN= −1,Li,(i+1) modN= −1

每个节点发布话题/uav{i}/consensus_data,消息类型为geometry_msgs/Vector3,其中x、y保存本机虚拟参考点坐标,z保存当前高度。节点只为Lij≠ 0 的邻居建立订阅,从而使通信关系与拉普拉斯矩阵一致。

一致性计算在代码中对应两行核心操作:

consensus_v = -self.L[self.id, :] @ all_agent_pos * self.consensus_k desire_v = path_v + converge_v + consensus_v

实际代码先对path_v + converge_v归一化,再叠加consensus_v,并把一致性速度限制在 4 m/s 内。这项限幅用于避免初始参考点误差较大时产生过高速度修正,但限幅也会延长编队形成时间。

2. 六机示例的主要参数

参数示例设置作用
飞机数量66_consensus_plane.launch启动数量
通信拓扑无向环形图每架飞机与两个邻居交换参考点
任务路径1000 m × 1000 m 闭合折线公共路径参考
名义巡航速度20 m/s路径切向速度
编队间距参数20 m圆形槽位尺度
一致性增益kc= 0.1参考点误差修正强度
路径收敛参数converge_k = 500数值越大,横向收敛速度越小
一致性速度上限4 m/s限制邻居误差引起的速度修正
水平加速度上限5 m/s²限制 LQR 输出
名义高度80 −im按编号设置 1 m 高度差
控制周期约 0.1 sROS 主循环周期

高度按编号错开可以减少初始集结阶段轨迹完全重合的概率,但 1 m 高度差不能替代正式的机间避碰策略。外场试验仍需根据翼展、定位精度、尾涡、通信时延和应急机动能力设置安全间隔。

六、从仿真现象理解一致性编队

该六机例程把通信拓扑、虚拟结构、一致性误差和固定翼控制接口放在同一场景中。通过改变初始位置、通信关系和控制参数,可以直观看到以下几类现象:

  • 一致性收敛与队形形成是两个过程:‖ci−c̄‖ 减小说明各机对虚拟结构参考点的估计逐渐接近;实际相对位置是否满足槽位关系,还要结合编队几何误差判断。参考点已经接近时,飞机仍可能因为速度、滚转角和路径跟踪动态而处于队形调整阶段。
  • 通信拓扑决定误差如何传播:环形图中,每架飞机只与前后邻居交换信息,局部误差会沿链路逐步传递。成员数量增加或链路减少时,拉普拉斯矩阵的代数连通度通常下降,编队达到共同参考所需的时间也会发生变化。
  • 一致性增益需要与飞行约束匹配:增大kc可以提高理想模型中的误差修正速度,但过大的修正量可能更频繁地触发速度、加速度或滚转角限制。此时,理论收敛速度不会直接等同于飞机的实际队形形成速度。
  • 路径几何会影响编队暂态:在折线路径的拐角处,路径切向方向快速变化,各机还要同时完成槽位旋转和一致性修正。路径误差与编队误差可能在转弯阶段同步增大,内外侧成员所需的速度也不相同。
  • 网络连通性决定协同范围:单个节点退出后,环形图通常会变为仍然连通的链式图,剩余成员可以继续交换信息;如果多条链路失效并使网络分裂,不同连通分量将分别形成各自的共同状态,无法继续维持全编队一致。

这些现象说明,一致性协议解决的是邻居信息如何形成共同协同变量,而完整的固定翼编队还需要路径跟踪、状态估计、通信管理和单机控制共同作用。大尺度曲线转弯时,槽位旋转速度ωiJR(χp,i)ri会影响内外侧成员的速度分配;在成员交叉或链路变化的场景中,还要结合安全间隔、冲突预测和失效处置策略分析飞行过程。

因此,阅读或比较一致性编队实验时,可以从三个层次观察结果:协同层关注参考点一致性误差和编队几何误差;通信层关注消息周期、时延与拓扑变化;飞行层关注路径误差、空速以及姿态和控制量是否接近限制。一致性 UAV 实现综述也指出,理论协议进入飞行平台后,需要与状态估计、目标或路径跟踪、通信管理和底层控制器共同评价[5]。这种分层观察方式能够区分“数学状态已经趋同”和“固定翼编队已经稳定可飞”两个结论。

七、从一致性例程到固定翼编队项目

迅翼 SwiftWing 仿真平台已经集成 leader–follower 与一致性固定翼编队例程。研究者可以修改飞机数量、通信拓扑、槽位、路径、LQR 权重和一致性增益,也可以进一步替换为路径参数一致性、切换拓扑、编队重构或分布式 MPC,而不必重新搭建单机 PX4、ROS、Gazebo 和状态接口。

结合SwiftWing S7 固定翼科研平台,现有例程可以继续延伸到机载代码适配、多机通信联调、半实物仿真和外场飞行验证。针对高校、科研院所和项目团队的具体研究目标,迅翼可进一步评估算法移植、接口适配、通信方案、试验设计与定制平台的实现范围。

需要配套代码、仿真平台资料或一致性编队方案的读者,可以在公众号后台回复“一致性编队”,并说明计划验证的飞机数量、通信拓扑、算法阶段和试验目标。

八、总结

一致性编队将通信关系写入邻接矩阵和拉普拉斯矩阵,各机根据本机与邻居的协同变量误差生成局部修正量。普通位置一致性会使成员趋向同一点;固定翼编队需要对带槽位偏置的虚拟参考点、航迹角、速度或路径参数执行一致性,再由路径跟踪和单机制导层生成可飞参考。

本文例程对二维虚拟参考点坐标进行一致性,并将路径速度、路径收敛速度和一致性速度组合为期望运动,再复用 LQR 与姿态控制接口。该结构适合验证静态环形拓扑下的多机编队,但其收敛与安全性仍受消息有效性、通信时延、拓扑变化、速度饱和、转弯曲率和机间避碰约束影响。

参考文献

  1. OLFATI-SABER R, FAX J A, MURRAY R M. Consensus and cooperation in networked multi-agent systems[J]. Proceedings of the IEEE, 2007, 95(1): 215-233. DOI: 10.1109/JPROC.2006.887293.
  2. REN W, BEARD R W. Distributed consensus in multi-vehicle cooperative control: Theory and applications[M]. London: Springer, 2008. DOI: 10.1007/978-1-84800-015-5.
  3. LEWIS M A, TAN K H. High precision formation control of mobile robots using virtual structures[J]. Autonomous Robots, 1997, 4(4): 387-403. DOI: 10.1023/A:1008814708459.
  4. CHEN H, WANG X K, SHEN L C, et al. Formation flight of fixed-wing UAV swarms: A group-based hierarchical approach[J]. Chinese Journal of Aeronautics, 2021, 34(2): 504-515. DOI: 10.1016/j.cja.2020.03.006.
  5. LIZZIO F F, CAPELLO E, GUGLIERI G. A review of consensus-based multi-agent UAV implementations[J]. Journal of Intelligent & Robotic Systems, 2022, 106: 43. DOI: 10.1007/s10846-022-01743-9.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/5 1:55:17

「追问意识,证本寻源」

意识“难问题”,是当代科学最具挑战性的前沿之一:主观体验从何而生,其物理本源至今未有定论。 丘脑被认为可能是意识觉知的核心锚点,在全脑信息汇聚、意识产生中发挥关键作用。多项前沿研究表明,丘脑核团活动与意识水…

作者头像 李华
网站建设 2026/11/5 1:55:14

业财税票档一体化的协同效率从哪里来——发票模块如何完成业务语言到财务语言的自动翻译

业财税票档一体化的协同效率从哪里来 ——发票模块如何完成业务语言到财务语言的自动翻译 把合同、采购、销售、资金、报销、档案逐个打通,只是“系统连着系统”;真正难的是让同一笔业务在不同部门被读出同一个意思。业务侧说“货已发、服务已交付”&…

作者头像 李华
网站建设 2026/11/5 1:55:12

DeepSeek LeetCode 516. 最长回文子序列 Java实现

LeetCode 516. 最长回文子序列 Java 实现 题意 给定字符串 s,求其最长回文子序列的长度。 注意区分"子序列"和"子串":子序列不要求连续,可以跳跃(如 bbbab 的最长回文子序列是 bbbb,长度 4&…

作者头像 李华
网站建设 2026/11/5 1:55:10

【共创稿事节】HarmonyOS 7.0 Navigation路由表:从接入到生产验证

Navigation 是鸿蒙官方点名的路由方案,可健康菜谱助手接入它时,官方示例没有回答的问题比给的多:路由表里塞几十个页面怎么管理、跨模块注册路由表怎么避免冲突、NavDestination 的生命周期和页面栈怎么配合、动态路由(参数决定目标页)怎么落地。这篇复盘 Navigation 路由表从接…

作者头像 李华
网站建设 2026/11/5 1:55:08

从反向传播到 AlexNet:1986 到 2012,中间那二十六年发生了什么

👋 Hi,我擅长 AI 大模型应用落地、意识解码与 AI 开发工具链 。 💡 创业路上,用技术换时间,一起把 AI 变成生产力 🚀 >从反向传播到 AlexNet:1986 到 2012,中间那二十六年发生了什…

作者头像 李华
网站建设 2026/11/5 1:55:08

毕设/课设别再熬夜画图了!SpringBoot个性化在线课程推荐:功能结构图、流程图、数据流图、UML类图、时序图、用例图、三线表、用例表、开题报告,用捷码AI一键生成

个性化在线课程推荐-综合设计成果/ ├── 00-交付清单/ manifest.json README ├── 01-系统图表/ 8 类系统图(E-R / 功能结构 / 数据流 / 架构 / 流程 / 类图 / 时序 / 用例) ├── 02-设计资料/ 数据库脚本 └── 03-交付成…

作者头像 李华