资讯动态

多无人机与无人车异构最优编队控制:协同方法与工程实践

发布时间:2026/10/17 9:23:27 来源:尧图企业网站定制
一提到多无人机系统的最优编队控制和多无人车系统的最优编队控制我第一反应是这两套东西可以分开做空中按空中跑地面按地面走。直到半年前接手一个异构协同控制的模拟项目要求用三架微型四旋翼和两辆差速无人车共同完成厂区覆盖搜索任务我才意识到真正的难点并不是单域编队而是异构系统之间怎么统一建模、怎么同步优化、怎么在通信条件不理想的情况下维持同一个任务目标。项目刚开始某导师的意见很简单先让无人机编队扫一遍再让无人车编队按航点跑一遍两边都能用现成方法。但真正把任务排进时间轴才发现无人机即使发现了可疑目标也没法降落确认细节无人车等后面出发又会因为缺少空中实时更新而绕远路。最优编队控制如果只在各自队伍内部成立整个异构系统整体性能仍然不是最优的跨域耦合才是关键。这篇我把自己做异构系统协同控制的建模思路、控制律设计、调参过程和踩过的坑整理一遍。内容会同时覆盖多无人机编队和多无人车编队重点讲两者怎么在一个框架下协同以及最优控制到底在优化什么。适合正在做多智能体编队、机器人集群协同或者想从单一机器人过渡到多机系统的同学参考。1. 为什么异构是绕不开的坎1.1 异构性体现在三个层面很多人把异构系统理解成不同厂家、不同参数的设备。从协同控制角度看真正影响控制律设计的异构性至少有三个层面。第一是运动学异构。无人机在三维空间里可以近似为二阶积分模型位置、速度、加速度在三个通道上相对解耦无人车则不同差速车和阿克曼车都受到非完整约束控制量必须分解为线速度和角速度两个通道且线速度方向永远只能沿当前航向。同样是编队控制无人机那边的输出期望加速度可以直接算车辆这边就得先考虑速度方向能不能实现这个加速度。第二是通信异构。无人机之间一般有较好的视距链路数据率高、丢包少无人机与地面车辆之间的链路容易受建筑、植被遮挡地面车辆之间又会遇到多径和环境噪声。如果控制协议对三类链路一视同仁网络中最差的那条链路会拖累整个编队。第三是任务时序异构。无人机偏向大范围侦察、覆盖、中继无人车偏向接近目标、载荷处置和现场确认。任务逻辑上存在典型时序依赖无人机先发现并锁定目标区域无人车随后到达做精细作业。这种跨域的任务耦合决定了协同不是两个编队控制器输出相加而是要把时序关系显式写进控制器结构里。1.2 场景收益与编队控制的分工异构编队最典型的应用场景是厂区巡检、灾后勘测和果园植保。无人机负责大范围扫描发现异常后生成带时间戳的目标坐标传给地面无人车无人车按最优编队前往坐标并在接近时反馈实时画面反过来指导无人机调整覆盖航线。两类节点的互补收益可以归纳如下互补维度无人机无人车视野大范围俯瞰全局态势感知快近距离细节观察贴近目标续航短若干分钟到几十分钟长可长时间待命地形通过性不受地面障碍物影响可进入室内、涵洞等遮蔽环境失效影响坠机后空中视野中断车辆瘫痪不影响空中侦察典型协同贡献提供动态目标和覆盖区执行到达与处置动作很多团队把任务排成先无人机、后无人车两个阶段这其实是把协同降级为顺序执行浪费了同时空协同的潜力。最优编队控制要解决的是两者同时在线、目标不同域的耦合问题无人机编队动态调整覆盖路线无人车编队同步逼近目标点两者的运动轨迹在时间维度上相互约束。1.3 为什么顺序执行不是最优解顺序执行看似省事但它切断了一个重要的负反馈回路。无人机按规划航迹飞完之后如果无人车到达现场发现目标状态和预期不符无人机已经没法利用这个信息调整覆盖策略。只有把两个编队放进同一个协同框架让空中实时感知能影响地面路径地面到达结果反过来触发空中重规划整体系统才算真正闭环。从优化角度看顺序执行的系统总代价是无人机阶段代价无人车阶段代价缺少了跨域时间差代价。而这个时间差恰恰决定了任务总时长。所以异构系统的最优编队控制目标函数里必须同时出现空中编队代价、地面编队代价和跨域衔接代价三者权重需要一起调。2. 编队控制的形式化从图论一致性到最优性指标2.1 一致性协议和编队偏移量编队控制最基础的理论工具是图论上的一致性协议。假设系统里每个智能体都是一阶模型 x_dot u给定一张通信拓扑图其中邻接矩阵元素 a_ij 表示节点 i 能否收到节点 j 的信息。控制律取 u_i -Σ a_ij (x_i - x_j)只要图连通所有状态都会收敛到同一个值。拉普拉斯矩阵 L 可以理解为一张信息差异资产负债表每个节点累计自己与邻居的状态差谁差得多就补偿谁。比如三个节点按 1—2、2—3 连边拉普拉斯矩阵为[[1,-1,0],[-1,2,-1],[0,-1,1]]乘上状态向量后得到的就是各节点与邻居的差异之和逻辑非常直观。编队控制在一致性基础上加一个锚点偏移要求状态关系收敛到 x_i - x_j δ_i - δ_j其中 δ_i 是第 i 个智能体在队形中的固定位置。控制律改成 u_i -Σ a_ij [(x_i - x_j) - (δ_i - δ_j)]收敛后队形成立。这套方法理论成熟但它只保证收敛不保证收敛过程的最优性可能出现过冲、速度峰值过高和振荡。2.2 最优性指标编队准确度与控制能耗的统一要谈最优编队控制就得先把最优两个字写成数学形式。最常用的指标是二次型代价函数 J ∫[(编队误差)^T Q (编队误差) u^T R u] dt。Q 越大表示越看重编队准确度R 越大表示越不想消耗控制能量。对于线性系统这个问题可以写成线性二次型调节器LQR形式通过求解代数 Riccati 方程得到状态反馈增益。工程上比较常用的做法是离线针对固定通信拓扑计算出增益矩阵在线每个控制周期只做一次矩阵乘法计算量非常小。这个方案的优点是稳定、响应快缺点是只适用于线性模型和固定拓扑一旦通信链路断裂或者拓扑变化离线增益就不再是最优。真正的分布式最优控制往往需要引入模型预测控制MPC。MPC 的思想是在每个控制周期以当前状态为初值在有限预测时域内求解一个开环优化问题把求解出的第一个控制量施加到系统下一个周期再滚动求解。它天然支持约束比如最大加速度、最大速度、避碰距离这些在实际系统中非常关键。2.3 搭最优编队前必须定好的三件事我在做项目时总结出三个必须先确定的事否则后面全是重复返工。一是状态选什么。无人机编队用位置和速度即可因为姿态由下层控制器负责无人车编队除了位置、航向还要把线速度、角速度边界写进去。二是通信拓扑是否固定。如果任务中无人机可能退出编队那么最优控制器的设计必须考虑拓扑切换场景。三是指定约束边界包括执行器饱和、最大速度和最小安全间距。约束没进入优化问题之前所谓最优解可能根本物理不可行。3. 多无人机系统的最优编队控制分布式MPC的落地方式3.1 把无人机当成双积分器是合理的多无人机编队控制的设计建议分成两个时间尺度。内环姿态控制通常由飞控系统完成频率高、实时性强外环编队控制只负责产生期望加速度或期望速度指令。这样分层之后编队控制器完全可以把单架无人机建模为双积分器 p_dot vv_dot u。我遇到过不少同学纠结要不要建全六自由度动力学模型。除非做特技飞行或重载运输否则编队层用双积分模型足够。原因是编队控制带宽很低控制周期往往在 0.1 秒左右而姿态内环已经能把姿态误差在几十毫秒内消除。把内环和建模细节都塞进编队层只会让优化问题变得庞大求解速度变慢控制效果却没有实质提升。三架无人机要组成三角形编队时偏移量可以定义为 δ1(0,0,0)、δ2(1.5,0,0)、δ3(0.75,1.2,0)。通信用完整图连接每个节点都能收到另外两个节点的状态。编队误差向量是各节点与邻居期望相对位置的偏差。3.2 分布式MPC的优化问题与通信逻辑分布式模型预测控制Distributed MPC的落地方式是把全局优化问题分解到每个节点上。每个无人机在控制周期开始时从邻居节点获取最新预测轨迹把它们当成已知参数代入自己的优化问题求解后只执行第一步然后把本地预测轨迹广播给邻居进入下一个周期。单个节点的优化问题可以写成min Σ [ (编队误差)^T Q (编队误差) u^T R u ] s.t. v_min v v_max a_min u a_max 相对邻居的预测位置保持安全距离参考编队位置由邻居预测轨迹和偏移量确定。如果邻居 j 的预测位置是 p_j(k)那么节点 i 在 k 时刻的期望位置就是 p_j(k) δ_i - δ_j。这样每个节点都在跟踪一个由邻居状态构造的动态参考点编队误差自然被压缩。伪代码可以这样写while running: # 1. 从消息通道取邻居最新预测轨迹 neighbor_preds receive(neighbor_nodes) # 2. 构造参考轨迹期望位置 邻居预测 编队偏移差 ref_traj build_reference(neighbor_preds, formation_offset) # 3. 求解有限时域二次规划 u_seq solve_qp(ref_traj, constraints) # 4. 施加第一个控制量 apply_control(u_seq[0]) # 5. 把本地预测轨迹广播给邻居 broadcast(ref_traj, u_seq)通信逻辑实际上做的是状态预测交换。每个节点广播的不是简单状态而是未来十几个周期的预测轨迹。这样其他节点在构造参考点时可以提前看到邻居未来要走的路避免临时急转。3.3 权重矩阵、预测时域和控制周期的调试心得我调试时常用的一组起始参数是控制周期 Ts0.1s预测时域 N12Q_position100Q_velocity10R0.5。最大加速度限制在 3m/s²左右这是小型四旋翼能稳定输出的水平。预测时域太长机群对领航者的机动响应会明显滞后因为优化窗口内包含了太多未来的空想预测时域太短输入序列又容易振荡相邻控制周期的动作不连贯。N8到15之间是比较合理的区间具体数值取决于任务动态性。高速机动的场景取小值平稳编队取大值。关于 Q 和 R 的比例我的经验是不要追求极端。把 Q_position 从 30 调到 100编队形成时间可能缩短 40%但输入峰值会翻倍甚至更多反过来把 R 调大振荡会明显减小但队形收敛变慢。最优参数往往在总代价曲线出现拐点的位置而不是在某一个指标最好看的位置。还有一个重要提醒分布式 MPC 每个周期都要解一个二次规划仿真环境里求解器一般够快实机却要重点检查最差情况耗时。我曾经在切换队形时遇到求解器迭代次数超限控制指令没有及时发出编队短暂失控。后来在求解器里加了最大迭代次数超限情况则沿用上一周期最优解的第一项问题就消失了。4. 多无人车系统的最优编队控制非完整约束下的协调4.1 车辆运动学建模与车身坐标误差无人车编队比空中编队麻烦根源在于非完整约束。差速车模型 x_dot v cosθy_dot v sinθθ_dot ω线速度 v 和角速度 ω 是控制量阿克曼车还要加一个轴距和前轮转角的关系。两条模型的共同特点是车辆只能在当前航向方向前进不能横向平移。这意味着编队误差不能直接在惯性坐标系下做简单的三通道反馈。更合适的做法是把相对领航者的误差转换到车身坐标系用距离误差 e_d 方位角误差 e_α描述。控制量分解时距离误差主要给线速度修正方位角误差主要给角速度修正两边分工明确。如果强行在惯性系下计算位置误差然后把它当作控制输入向量直接输出会出现一个很致命的问题控制器要求车辆产生横向速度分量而车辆物理上做不到结果等效成了剧烈的航向摆动。4.2 领航者-跟随者加路径跟踪的组合方案多无人车编队我推荐领航者-跟随者结构配合路径跟踪而不是所有车辆都用一致性收敛。原因很简单领航者-跟随者天然匹配车辆运动学领航者的轨迹就是跟随者的参考曲线跟随者沿着参考曲线保持相对位姿即可。实现步骤可以分四步领航者规划全局参考路径这条路径要满足车辆的运动学约束比如最小转弯半径根据目标队形把每个跟随者的期望参考轨迹离线或在线生成相当于把编队偏移投影到领航者航向坐标系每个跟随者独立执行路径跟踪同时周期接收领航者和邻近车辆的状态修正在执行层把队形保持误差作为反馈项叠加进路径跟踪控制形成全局路径跟踪局部队形修正的双环结构。路径跟踪层的控制周期一般取 0.1 到 0.2 秒。线速度由前视距离误差决定角速度由航向误差和前视点方向误差决定。队形修正量可以限制在小范围内只负责纠正偏差不干扰领航者的全局规划。4.3 一个典型的蛇形轨迹问题及排查过程之前做仿真时我们把无人机编队控制律直接搬到无人车上几何编队误差很快收敛但车辆运动轨迹剧烈横向摆动阿克曼车频繁出现接近原地打转的现象。第一反应是 MPC 权重没调好调了一整天 Q 和 R完全没有改善。后来把轨迹画出来才看懂问题本质几何误差收敛是惯性坐标系下的结果但车辆每一步都在用横向位置误差去纠偏控制器输出里有一个物理不可达的横向速度分量。这个分量被车辆运动学强行转成了原地转向于是一边往前开一边不断修正方向轨迹变成蛇形。解决办法很直接把位置误差投影到车身坐标系下只保留前进方向分量用于线速度控制横向分量丢弃转由航向误差单独控制角速度。修改后蛇形现象立刻消失。这个案例让我彻底理解了一个结论非完整约束系统的误差反馈必须投影到速度可行空间而不是直接套用全驱动系统的向量反馈。5. 异构系统联合协同分层架构与跨域接口设计5.1 指挥层、协调层、执行层的分工把多无人机和多无人车放进一个系统时我建议采用三层架构而不是让所有节点跑同一套分布式算法。指挥层负责任务拆解把厂区搜索转成一个个带时间窗的航点和目标区协调层管理跨域接口变量比如无人机提供的目标点、无人车反馈的到达事件、两者之间的等待点执行层才是单独的无人机编队控制器和无人车编队控制器。这个架构的优点是各层各司其职更换算法不影响整体框架。协调层的核心是定义清晰的接口契约。我在项目里用的消息类型大致有几类消息类型发送方接收方内容目标点更新无人机编队无人车编队目标坐标、置信度、时间戳覆盖区重规划请求无人车编队无人机编队异常事件触发空中重扫到达通知无人车编队指挥层已到达目标点中继状态协同层两编队通信链路健康度通信不稳定时消息不能只靠单次广播要有握手和重发机制。无人机发给无人车的目标点如果无人车没有回应 ACK无人机需要判断是数据丢失还是车辆掉线据此决定是否重新规划覆盖路径。5.2 时间尺度失配与事件触发协同无人机和无人车的时间尺度差异非常大。无人机速度快位置控制周期可以到 50 赫兹无人车速度慢控制周期通常 10 到 20 赫兹就足够。如果强行让两个系统按最高频率同步通信和计算量都会爆炸。工程上的处理方式是以慢系统的时间基准为主快系统在两次同步之间自治运行。协同层按 0.5 秒这样一个折中周期交换状态无人机的高频编队控制内部照跑无人车的低频编队控制也不受影响。跨域数据在协调层做零阶保持也就是把最近一帧值一直用到下一次更新。比周期同步更高效的是事件触发协同。不需要每周期互相广播全域状态只在特定事件发生时进行跨域通信。典型触发条件包括检测到目标、编队误差超阈值、到达航点、通信链路恢复。在我们的模拟项目里改成事件触发之后跨域通信量下降了七成以上编队性能几乎没有损失。if norm(p_uav - target_ugv) R_trigger or target_detected: send_message(TARGET_UPDATE, payload)触发半径 R_trigger 不能设得太大否则退化成周期通信也不能太小否则车辆总是处于信息滞后状态。一般是根据无人机定位精度和无人车速度估算我常用的是车辆约 2 到 3 秒行驶距离作为半径。5.3 跨域性能指标如何统一进全局优化跨域协同最容易被忽略的是代价函数里的跨域项。这个指标可以反映任务的时间耦合程度比如无人车到达目标点与无人机完成区域覆盖之间的时刻差。全局代价可以写成 J w_a * 无人机编队代价 w_b * 无人车编队代价 w_c * 跨域衔接代价。w_c 对总时长影响最大实际调参时我通常先固定 w_c 为主导再调节 w_a 和 w_b 的相对比例。这样做的原因是异构系统的任务总时长往往取决于慢的一方如果只优化各自编队的能耗和跟踪误差整体任务时效可能并不理想。跨域衔接代价的典型形式是时间偏差的平方项或者当前点位相对期望交接窗口的横向偏差。把这项写进优化目标之后无人机在规划覆盖路径时会主动避免飞离目标区域太远无人车也会适当调整等待点以保持与空中任务的时序一致性。6. 仿真验证与实机实测的工程建议6.1 仿真分层推进不要一口气上实机我习惯把验证分成三个层次。第一层是纯数学仿真只验证控制律第二层是通信模拟和物理引擎同时启用的半实物仿真验证消息延迟、丢包和传感器噪声第三层才上小规模硬件平台先用两架飞机加两台车跑基础场景。数学仿真环境适合快速调试控制权重运行速度快可以批量跑参数扫描。物理引擎和机器人操作系统结合的半实物仿真能暴露控制器没问题但通信有延迟这类问题但这个阶段要特别注意消息缓冲区设计否则仿真本身会成为瓶颈。实机测试再小规模也建议先做编队单项验证再做联合任务。6.2 三个高频踩雷点通信时延、转弯半径、电池衰减第一个坑是通信时延。仿真环境里我常用零时延结果在模拟 50ms 固定时延后无人机编队转弯时误差明显变大无人车队伍更是出现了追踪滞后。解决方案有两个方向一是在预测模型里把通信时延当成状态项补进去二是利用邻居预测轨迹做前馈补偿。第二种更好落地因为分布式 MPC 本来就在交换预测轨迹前馈信息现成。第二个坑是转弯半径。仿真里差速车可以原地自旋实车如果是阿克曼转向结构最小转弯半径限制必须进入约束条件。把前轮转角限幅写进 MPC 之后地面编队在窄通道里的表现才真正接近实车。第三个坑是电池衰减。小型无人机电压下降后可用加速度会显著降低。最优控制器如果还按满电时的加速度上限去期望飞机执行跟踪误差会变大形成恶性循环。我用的做法是做一个简单的增益调度表根据剩余电量减小允许的最大加速度和最大速度控制器参考值也会相应降级。6.3 调参数的经验曲线和收尾建议联合调试时改参数要一次只改一个维度。曾经有次同时把无人机位置权重、无人车角速度权重和跨域权重都调大后果是无人机快速收敛了新队形无人车却还在缓慢调整协调层判定事件触发失败整个任务乱成一团。改动后的验证也建议看两个曲线总代价函数曲线和编队误差曲线。如果总代价下降但误差振荡明显优先考虑增加 R 或者约束最大加速度如果误差收敛慢优先增大 Q_position而不是盲目增大跨域权重。我个人在做异构协同控制时最深的体会是最优编队控制日常里真正难的并不是推导最优点而是让不同运动学模型、不同通信条件、不同时间尺度的机器人在不理想环境下依然维持同一个任务目标。设计协同控制器时多想想通信失败、时钟不同步和模型失配这些脏情况比多算几个理想最优点更能提升系统可用性。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑