公司动态

【无人机巡航】基于遗传算法和BiRRT算法实现高层建筑密集障碍环境下无人机集群任务分配和全局路径规划附Matlab代码

📅 2026/7/19 23:00:54
【无人机巡航】基于遗传算法和BiRRT算法实现高层建筑密集障碍环境下无人机集群任务分配和全局路径规划附Matlab代码
✅作者简介热爱科研的Matlab仿真开发者擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。完整代码获取 定制创新 论文复现私信个人信条做科研博学之、审问之、慎思之、明辨之、笃行之是为博学慎思明辨笃行。1. 相关介绍2.1 算法层面(1)高精度城市仿真环境构建 该系统整合了OpenStreetMap建筑数据与GMTED2010地形高程数据基于occupancyMap3D构建出逼真的三维曼哈顿仿真环境。该环境既保留了真实的建筑布局和地形变化又保证了计算可处理性为多无人机路径规划、任务分配及障碍物规避算法提供了复杂且可复现的实验场景。(2)全球路径规划算法的比较分析 在构建的曼哈顿三维占用网格地图上系统性地对比了五种全局路径规划算法—— RRT 、 RRT 、PRM、A和BiRRT。综合考虑路径长度、规划时间和稳定性后选择BiRRT作为主要算法。该方法能在复杂城市环境中高效搜索可行路径在规划精度与计算效率之间取得平衡非常适合大规模三维多无人机任务场景。基于实际约束条件的多无人机任务分配  具备续航与充电约束的任务规划为应对无人机电池容量限制在城市场景中预先设置多个充电站支持任务执行期间的充电及路径中继功能确保长时间任务的可行性。基于 MTSP 的任务分配建模多任务与多无人机调度问题被转化为多旅行商问题MTSP优化目标在满足能量限制、任务可达性及充电站位置约束的前提下最小化总飞行距离与任务完成时间。改进型遗传算法优化采用增强版遗传算法寻找最优分配方案通过个体编码及自适应交叉-变异策略提升全局搜索效率与解的稳定性。自适应权重系数机制适应度函数动态调整权重系数以平衡飞行距离、能耗及任务时长约束实现不同运行场景下的灵活调度。能量预测与预防性返航机制系统在执行每项任务前会预估剩余电池电量若预测值低于20%的安全阈值无人机将自动返回充电站有效避免任务中断并提升系统安全性和可靠性。基于最小夹点法的动态可行轨迹平滑算法该系统对BiRRT生成的分段轨迹进行平滑处理。通过采用七阶多项式模型和二次规划优化方法生成时空连续的轨迹曲线。该优化过程同时约束速度与加速度参数在确保动态可行性的同时保持路径在真实城市环境中的平滑性。2.2 系统级设计(1)高效的本地动态障碍物规避系统 本系统采用去中心化的本地化障碍物规避框架使每架无人机都能独立感知环境并规划自身的避障路径。通过融合雷达与激光雷达数据系统利用跟踪器预测周围障碍物的运动状态避障规划模块直接在无人机自身轨迹与其他飞行器预测轨迹之间进行“线对线”碰撞检测取代了传统的“轨迹-体素地图”方法。该方案显著降低了计算复杂度并提升了实时性能。(2)类MPC短时程执行与频繁重规划机制 本系统采用“感知-预测-规划-执行”闭环结构每架无人机仅执行当前轨迹的局部时段控制步骤而非完整的选定完整轨迹随后立即启动新的规划周期从而实现对动态障碍物的快速响应及持续路径修正确保在复杂多变环境中稳定运行。(3)平滑安全的轨迹管理机制 在 manhattan_3d_planning .m主仿真循环中系统确保飞行过程的连续性与物理真实性当无人机接近当前轨迹段终点时系统会预加载下一轨迹以维持平稳运动。在进入最终航段前无人机会根据物理动力学原理自动减速并停止飞行。当无人机与先前航段保持足够距离后系统会清除历史数据以释放内存空间从而实现无缝的轨迹切换和高效的资源管理。(4)高度参数化且稳健的系统架构主程序 manhattan_3d_planning .m采用高度参数化的架构设计可灵活调整任务规模、无人机配置及环境分辨率等核心参数这种设计最大限度减少了代码修改量并提升了系统的复用性和适应性。运行过程中系统会针对规划失败、路径冲突或感知误差等潜在问题提供交互式提示及备用机制确保在复杂环境下实现稳定持续的运行性能。3. 详细实现流程该系统以主程序 manhattan_3d_planning .m为核心整合了城市环境构建、任务生成与分配、全局路径规划、轨迹平滑处理以及局部动态障碍物规避仿真等模块形成了从环境设置到执行操作的完整工作流程。该项目基于真实的曼哈顿地理数据构建了一个三维路径规划仿真环境。该系统整合了OpenStreetMap建筑数据与GMTED2010地形高程数据生成occupancyMap3D模型。具体流程包括 通过XY投影使用convhull、多边形或矩形近似法提取建筑轮廓  利用inpolygon技术逐层为不同高度层级分配体素值实现基于体素的建模 应用自适应网格细分算法及安全裕度扩展机制构建支持复杂三维导航与碰撞检测的障碍物地图。最终生成的三维城市场景在规模、结构和分辨率方面均满足仿真与规划需求。3.2 任务生成与分配3.2.1 充电站布局 系统采用自适应布局策略根据站点数量自动确定最优分布方案当站点数少于4个时选址于场景角落当数量为9或16个时则分别采用 3×3 and 4×4 网格布局其余站点则采用基于平方根的自适应均匀网格进行布置。所有充电站均设置为相同海拔高度并均匀分布于场景边界内同时预留50–100米的安全间距。生成完成后碰撞检测程序会验证任务部署的有效性若检测到与建筑物或障碍物重叠系统会自动将站点高度提升至场景顶部附近以确保定位安全且准确。3.2.2 任务定义与生成(1)任务定义任务指无人机从充电站起飞向三维空间目标投递货物的任务。数据存储于N×3的双精度矩阵 tasks_3d 中每行[xyz]代表单个投递目标的坐标。该定义对应现实世界中的物流场景——无人机将包裹从仓库配送至分布式的客户点。(2)任务生成模块根据配置参数在预定义的三维工作空间内生成任务点。首先通过随机采样生成候选坐标并使用checkOccupancy函数检查是否存在碰撞仅保留位于空闲区域占用率0.5的样本。为防止在密集环境中出现无限循环设置参数maxAttempts100×任务数量以限制最大采样次数从而保证任务生成的稳健性和稳定性。3.2.3 任务分配(1)函数定义与概述文件 MTSP .m定义了自定义函数 MTSP 该函数通过求解多旅行商问题MTSP自动将多个任务点分配给多架无人机。改进后的遗传算法GA作为核心优化引擎综合考虑障碍物感知、能量限制及时间约束从而生成可行的全局任务分配方案。(2)障碍物感知型三维距离模型该系统用结合曼哈顿距离与垂直飞行惩罚因子的障碍物感知距离模型替代传统欧几里得距离。沿两点连线处采集占用率数据曼哈顿障碍物模式并采用与采样占用率成比例的惩罚系数调整线段距离从而在城市环境约束下获得更真实的成本估算结果。(3)多约束适应度函数遗传算法适应度函数 computeFitness_MTSP 根据多重约束条件对每个个体进行评估。2. 运行效果展示3. 部分代码呈现function res compute_min_time_scale(ref, params, varargin)% Robust compute_min_time_scale that tolerates various ref.acc shapes.% Keeps same API as before.opts struct(rotor_count,4, s_max,20, tol,1e-3);for k1:2:numel(varargin)opts.(varargin{k}) varargin{k1};endm params.mass;g params.grav;maxF params.maxF;maxAngle params.maxangle;rotors opts.rotor_count;% normalize acc to Nx3acc [];if isfield(ref,acc)acc ref.acc;endif isempty(acc)% nothing to check; treat as trivial (no accel feasible)res.maxFreq 0;res.maxFper 0;res.viol_times_F [];res.viol_times_angle [];res.s_est 1;res.s_min 1;return;end% acc may be (N x 3) or (3 x N) or (1 x 3) etc. Convert to N x 3.sz size(acc);if sz(2) 3 sz(1) 1accN acc; % N x 3elseif sz(1) 3 sz(2) 1accN acc; % transpose to N x 3elseif numel(acc) 3accN reshape(acc, 1, 3);else% unknown shape: try to linearize if possibletryaccv acc(:);if mod(numel(accv),3) 0accN reshape(accv, 3, []);else% cannot reshape to Nx3warning(compute_min_time_scale:badacc, ref.acc has unexpected size [%d x %d] and cannot be reshaped to Nx3, sz(1), sz(2));res.maxFreq NaN; res.maxFper NaN; res.viol_times_F []; res.viol_times_angle [];res.s_est NaN; res.s_min NaN;return;endcatchwarning(compute_min_time_scale:badacc2, ref.acc cannot be parsed; returning NaN);res.maxFreq NaN; res.maxFper NaN; res.viol_times_F []; res.viol_times_angle [];res.s_est NaN; res.s_min NaN;return;endendN size(accN,1);a_des accN; % 3 x N% compute original (s1) valuesFreq zeros(N,1);tilt zeros(N,1);for i1:Na_i a_des(:,i);a_with_g a_i [0;0;g];Freq(i) m * norm(a_with_g);% guard against zero vectorif norm(a_with_g) 0b3z 1;elseb3 a_with_g / norm(a_with_g);b3z b3(3);endtilt(i) acos( min(max(b3z,-1),1) );endF_per Freq / rotors;res.maxFreq max(Freq);res.maxFper max(F_per);res.viol_times_F []; res.viol_times_angle [];tvec ref.t(:);if numel(tvec) Nres.viol_times_F tvec(F_per maxF);res.viol_times_angle tvec(tilt maxAngle);else% if time vector length mismatch, just return indicesres.viol_times_F find(F_per maxF);res.viol_times_angle find(tilt maxAngle);end% simple thrust-based estimateif res.maxFreq 0 ~isnan(res.maxFreq)res.s_est max(1, sqrt( res.maxFreq / (rotors * maxF) ));elseres.s_est 1;end% If already feasibleif all(F_per maxF) all(tilt maxAngle)res.s_min 1;return;end% find feasible hi boundlo 1; hi max(2, res.s_est);ok_hi false;while hi opts.s_maxfeasible true;for i1:Na_with_g (a_des(:,i)/(hi^2)) [0;0;g];Freq_s m * norm(a_with_g);if Freq_s / rotors maxFfeasible false; break;endif norm(a_with_g) 0b3z 1;elseb3 a_with_g / norm(a_with_g);b3z b3(3);endif acos(min(max(b3z,-1),1)) maxAnglefeasible false; break;endendif feasible, ok_hi true; break; endhi hi * 2;endif ~ok_hires.s_min NaN;return;end% bisectionwhile (hi - lo) opts.tolmid (lo hi) / 2;feasible true;for i1:Na_with_g (a_des(:,i)/(mid^2)) [0;0;g];Freq_s m * norm(a_with_g);if Freq_s / rotors maxFfeasible false; break;endif norm(a_with_g) 0b3z 1;elseb3 a_with_g / norm(a_with_g);b3z b3(3);endif acos(min(max(b3z,-1),1)) maxAnglefeasible false; break;endendif feasiblehi mid;elselo mid;endendres.s_min hi;end4. 参考文献[1] 杜晓凯.无人机集群混合式任务实时分配算法研究[D].西安电子科技大学,2020.[2] 张彪,康峰,许舒婷.基于改进RRT与GA的多目标路径规划[J].北京林业大学学报, 2025, 47(s):1-13.DOI:10.12171/j.1000-1522.20240356.更多免费数学建模和仿真教程关注领取如果觉得内容不错那就请分享和点个“在看”呗