【多智能体】基于最优互斥避障(ORCA)算法实现多智能体运动规划与碰撞避免附matlab代码
✅作者简介热爱科研的Matlab仿真开发者擅长数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 往期回顾关注个人主页Matlab科研工作室 关注我领取海量matlab电子书和数学建模资料个人信条格物致知,完整Matlab代码获取及仿真咨询内容私信。 内容介绍近年来连续空间中的多智能体路径规划领域因其在众多实际应用场景中的重要性而受到广泛关注。本研究旨在解决以下联合问题为多个智能体规划最优路径并生成可行且平滑的轨迹。这要求确保智能体既不与地图边界及障碍物发生碰撞也不与其它智能体发生碰撞。为实现这一目标本文提出的方法融合了多种基于优化的算法首先采用四叉树算法构建环境路线图该算法通过将空间高效划分为更小的区域为路径规划提供便利其次应用基于图的优化算法——Dijkstra算法为每个智能体确定从起点到终点的最短路径为后续运动规划奠定基础最后针对最短路径上离散点之间轨迹的生成采用最小 jerk 方法该方法旨在最小化轨迹中的 jerk即加速度的变化率。通过将运动规划问题转化为二次优化问题最小 jerk 方法可生成既高效又平滑、且对智能体而言舒适的运动轨迹。此外为防止智能体之间发生碰撞本研究采用了最优互斥避障ORCA算法。ORCA 算法将避障问题转化为一组线性约束条件并通过线性规划求解为每个智能体计算出最优运动速度从而确保其实现安全且无碰撞的导航。该算法特性解决了运动规划环节的关键问题确保所生成的运动轨迹均无碰撞风险。为系统呈现本研究报告的内容全文将按以下章节展开第 2 节深入阐述多智能体路径规划与运动规划相关的理论基础及核心概念并明确本研究的具体问题定义与研究目标第 3 节详述本研究所采用的各类算法与方法包括用于环境建图的四叉树算法、用于路径规划的 Dijkstra 算法、用于生成平滑轨迹的最小加速度变化法以及用于避障的 ORCA 算法第 4 节描述本研究所提方法的实现过程第 5 节展示实验结果第 6 节总结研究结论突出本研究的主要贡献并对该领域的后续改进与研究方向进行探讨。本文通过对所提出的方法论进行探索旨在揭示多智能体路径规划与运动规划中面临的挑战同时突出该组合方法的优势与有效性。通过研究并应对这些挑战我们可进一步提升智能系统在真实应用场景中的能力与性能。2.2 C空间的探索与离散化 对构型空间进行探索与离散化是路径规划中的关键步骤因为它可将C空间表示为图或网格结构。这一过程对于有效导航及分析复杂构型空间至关重要。探索与离散化C空间主要有两种方法其一为基于采样的规划法即通过随机且渐进的方式探索C自由空间并构建采样构型构成的图结构典型方法包括概率性路线图PRMHsu等1998与快速探索随机树RRTsLaValle等2001。其二为组合规划法该方法以拓扑图(G)的形式对C自由空间进行简洁表征从而捕捉C空间的连通性特征常用技术包括精确细胞分解、近似细胞分解及最大间隙法。采用组合规划法离散化C空间具有简洁性、高效性及可扩展性等优势可在表征C空间连通性方面发挥重要作用。完成C自由空间的离散化后即可构建出路线图进而建立C空间的高层抽象模型从而简化可行路径的搜索过程。通过在路径图上应用 Dijkstra 算法Frana 等2010或 A* 算法Hart 等1968等搜索算法我们可以从给定的起始构型到目标构型中找到一条最短且无碰撞的路径。图 2 展示了一个 C 自由空间路径图的示例。本研究的问题建模聚焦于协调三个智能体在共享的二维工作空间内协同作业的任务。该工作空间为封闭矩形区域各智能体均被限制在该矩形边界内运行。工作空间内存在障碍物为简化模型这些障碍物均被假设为凸多边形。每个障碍物的位置与形状均可由用户指定同时每个智能体的初始位置与目标位置亦可由用户设定。规划算法需基于这些用户定义的参数适配不同场景。图 4 展示了一个示例工作空间黑色边框表示地图边界中心处的蓝色多边形表示用户定义的障碍物。随后用户为三个智能体分别指定起始点与目标点各智能体的起始点与目标点均以同色实心点标示。ORCA 算法从 VO 算法中引入速度空间中的碰撞检测功能并整合了 RVO 的倒数度量。在空间中存在大量智能体的场景中为每个智能体计算 VO 可能会带来巨大的计算复杂度。ORCA 算法通过将这一问题转化为一个低维线性规划任务简化了这一难题。ORCA 算法的基本思想是为每个智能体计算一组速度约束这些约束综合考虑了智能体的当前位置、当前速度及目标速度。这些约束共同定义了一个速度障碍区该区域代表了若智能体持续保持这些速度则可能导致碰撞的速度集合。为了找到无碰撞速度ORCA 算法构建了一个优化问题其目标是在确保智能体始终处于速度障碍区内的前提下最小化与目标速度的偏差。该优化问题通过寻找满足避障条件的速度约束的最优线性组合来解决。如此一来ORCA 算法便能有效引导智能体在空间中导航避免潜在碰撞。 通过引入 VO 算法中的相对坐标系概念ORCA 算法引入了时间窗的概念以进一步规范速度域中的坐标系。为此ORCA 算法将前一个圆盘 Bˆ 的中心与半径除以一个记作 τ 的时间窗。因此若当前相对速度 vAB 位于由从原点出发、以 (pB − pA)/τ 为圆心、以 (rA rB)/τ 为半径的两条射线所围成的截头圆锥体之外则只要物体 A 与 B 在时间窗口 τ 内保持其当前速度即可保证二者不会发生碰撞。⛳️ 运行结果 部分代码function s_new rov_dynamics(s, thrust, dt)%ROV_DYNAMICS Simplified 6-DOF ROV dynamics with hydrodynamic drag%% State vector s [x y z roll pitch yaw vx vy vz]% Thrust vector [Fx Fy Fz Mz] (body frame forces yaw moment)% ── Vehicle parameters ──────────────────────────────────m 12.0; % mass [kg]Iz 0.8; % yaw inertia [kg·m²]Cd_t [8 8 12]; % translational drag coefficientsCd_r 2.0; % rotational drag (yaw)% ── Unpack state ────────────────────────────────────────xs(1); ys(2); zs(3);rolls(4); pitchs(5); yaws(6);vxs(7); vys(8); vzs(9);% ── Body→World rotation (yaw only, simplified) ──────────cy cos(yaw); sy sin(yaw);Rot [cy -sy 0; sy cy 0; 0 0 1];% ── Forces in world frame ────────────────────────────────F_body [thrust(1); thrust(2); thrust(3)];F_world Rot * F_body;% ── Translational acceleration ───────────────────────────v [vx; vy; vz];drag_t -diag(Cd_t) * (v .* abs(v));a (F_world drag_t) / m;% ── Yaw dynamics ─────────────────────────────────────────yaw_rate_prev 0; % simplified (no state for yaw rate)d_yaw thrust(4)/Iz - Cd_r*yaw_rate_prev;% ── Integrate (Euler) ────────────────────────────────────vx_n vx a(1)*dt;vy_n vy a(2)*dt;vz_n vz a(3)*dt;x_n x vx*dt 0.5*a(1)*dt^2;y_n y vy*dt 0.5*a(2)*dt^2;z_n z vz*dt 0.5*a(3)*dt^2;yaw_n yaw d_yaw*dt;pitch_n pitch * 0.98; % passive dampingroll_n roll * 0.98;% ── Depth floor (seabed constraint) ─────────────────────if z_n 0; z_n 0; vz_n 0; end % surfaceif z_n -50; z_n -50; vz_n 0; end % max depths_new [x_n y_n z_n roll_n pitch_n yaw_n vx_n vy_n vz_n];end 参考文献往期回顾扫扫下方二维码
上一篇/下一篇内容由系统自动关联
返回资讯列表 →