✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。
🔥 内容介绍
一、引言
在城市环境中,无人机执行低空任务时,需要精确的路径规划以避开建筑物、电线等障碍物。A 星算法作为一种经典的路径搜索算法,结合激光雷达仿真和 3D 占据栅格地图构建,能够为低空单无人机提供高效、安全的路径规划方案。通过激光雷达仿真获取环境信息,构建 3D 占据栅格地图来表示城市环境,再利用 A 星算法在地图中搜索最优路径,可有效应对城市复杂环境带来的挑战。
二、激光雷达仿真
(一)激光雷达工作原理
激光雷达通过向周围环境发射激光束,并测量激光反射回来的时间来确定目标物体的距离。其工作过程如下:激光发射器发射激光脉冲,当激光遇到物体表面时,部分光线被反射回来,被激光接收器接收。根据激光往返的时间t和光速c,可以计算出物体与激光雷达之间的距离d=21ct。通过不断发射激光脉冲并测量距离,激光雷达能够获取周围环境的三维点云数据。
(二)仿真环境搭建
利用专业的仿真软件,如 MATLAB 的 Simulink 或 Gazebo 等,搭建城市环境的激光雷达仿真模型。在仿真环境中,构建包含建筑物、树木、电线杆等典型城市障碍物的三维场景。将激光雷达模型放置在无人机模型上,设置激光雷达的参数,如扫描角度、测距范围、采样频率等。通过调整这些参数,可以模拟不同性能的激光雷达在城市环境中的数据采集过程。例如,设置扫描角度为360∘,测距范围为100米,采样频率为10Hz,以获取较为全面和准确的环境信息。
(三)数据生成与处理
运行激光雷达仿真模型,模拟无人机在城市低空飞行时激光雷达的数据采集过程。激光雷达将生成大量的三维点云数据,这些数据包含了环境中物体的位置信息。对采集到的点云数据进行预处理,包括去除噪声点、滤波等操作,以提高数据质量。例如,使用统计滤波器去除离群点,通过设定合适的统计阈值,将偏离大部分点的噪声点滤除。经过预处理后,点云数据能够更准确地反映城市环境的真实情况,为后续的 3D 占据栅格地图构建提供可靠的数据基础。
三、3D 占据栅格地图构建
(一)栅格化原理
将城市环境空间划分为一个个大小相等的三维栅格单元。每个栅格单元具有两种状态:被占据(表示该栅格内存在障碍物)或空闲(表示该栅格内没有障碍物,无人机可以通过)。根据激光雷达采集到的点云数据,确定每个栅格单元的状态。例如,如果点云数据中的某个点落在某个栅格单元内,则将该栅格单元标记为被占据状态;如果在一定范围内没有点云数据,则将该栅格单元标记为空闲状态。通过这种方式,将连续的城市环境空间离散化为易于处理的 3D 占据栅格地图。
(二)地图构建步骤
确定栅格尺寸:根据无人机的尺寸、飞行精度要求以及环境复杂程度,确定合适的栅格尺寸。如果栅格尺寸过大,可能会忽略一些小障碍物;如果栅格尺寸过小,会增加地图数据量和计算复杂度。例如,对于低空飞行的小型无人机,栅格尺寸可以设置为1米×1米×1米。
初始化地图:创建一个三维数组来表示 3D 占据栅格地图,数组的每个元素对应一个栅格单元,初始状态下所有栅格单元都设置为空闲状态。
填充地图:遍历激光雷达采集到的点云数据,将点云数据中的每个点投影到 3D 占据栅格地图中对应的栅格单元,将这些栅格单元标记为被占据状态。同时,考虑到无人机的实际飞行安全,对被占据栅格周围的一定范围内的栅格也进行标记,以形成一个安全缓冲区,避免无人机过于靠近障碍物。
地图优化:对构建好的 3D 占据栅格地图进行优化,去除一些孤立的、不影响路径规划的小障碍物栅格,或者对一些边界模糊的障碍物栅格进行平滑处理,以提高地图的准确性和实用性。
(三)地图表示与存储
3D 占据栅格地图可以用三维数组的形式进行表示和存储。数组的每个元素可以用一个布尔值表示栅格的状态(True 表示被占据,False 表示空闲),或者用一个整数表示栅格的属性(如 0 表示空闲,1 表示被占据,2 表示危险区域等)。同时,为了方便路径规划算法的使用,还可以记录地图的尺寸、栅格尺寸、原点位置等信息。将地图数据存储在文件中,以便后续 A 星算法读取和使用。例如,可以使用 MATLAB 的.mat 文件格式或 Python 的 numpy 数组格式进行存储。
四、A 星算法路径规划
(一)A 星算法原理
A 星算法是一种启发式搜索算法,它在搜索路径时,综合考虑从起点到当前节点的实际代价g(n)和从当前节点到目标节点的估计代价h(n),通过评估函数f(n)=g(n)+h(n)来选择下一个扩展节点。其中,g(n)可以通过累计从起点到当前节点的移动代价来计算,例如在 3D 占据栅格地图中,每次移动到相邻栅格的代价可以设置为 1;h(n)通常使用启发函数来估计,常见的启发函数有曼哈顿距离、欧几里得距离等。在 3D 占据栅格地图中,可以使用欧几里得距离作为启发函数,计算当前栅格到目标栅格的直线距离。A 星算法通过不断扩展f(n)值最小的节点,直到找到目标节点或确定不存在路径为止。
(二)算法实现步骤
初始化:在 3D 占据栅格地图中,确定无人机的起点和目标点对应的栅格位置。创建两个列表,一个用于存储已扩展的节点(称为 closed 列表),另一个用于存储待扩展的节点(称为 open 列表),并将起点加入 open 列表。
节点扩展:从 open 列表中选择f(n)值最小的节点进行扩展。检查该节点的相邻栅格(在 3D 空间中,相邻栅格包括上下、前后、左右六个方向),如果相邻栅格是空闲的且未被扩展过,则计算其g(n)、h(n)和f(n)值,并将其加入 open 列表。同时,记录该节点的父节点,以便后续回溯路径。
目标判断:检查扩展后的节点是否为目标节点。如果是,则通过回溯父节点找到从起点到目标点的最优路径;如果不是,则重复步骤 2,继续扩展节点。
路径生成:当找到目标节点后,从目标节点开始,沿着父节点指针回溯到起点,生成无人机的飞行路径。路径以一系列栅格坐标的形式表示,将这些坐标转换为实际的三维空间坐标,即可得到无人机在城市环境中的飞行轨迹。
(三)算法优化
为了提高 A 星算法在 3D 占据栅格地图中的搜索效率,可以对算法进行一些优化。例如,使用双向 A 星算法,从起点和目标点同时进行搜索,当两个搜索方向相遇时,即可找到最优路径,通常可以减少搜索空间和时间复杂度。另外,可以采用动态窗口法,根据无人机的运动学模型和当前速度,限制每次扩展的相邻栅格范围,避免无效搜索,进一步提高算法的运行效率。
⛳️ 运行结果
📣 部分代码
% Creat UAV ScenariosimTime = 12;updateRate = 3;scene = uavScenario("UpdateRate",updateRate, "StopTime",simTime,"ReferenceLocation",[0 0 0]);% Add a gound plane.GrayColor = [0.6 0.6 0.6];addMesh(scene,"Polygon", {[0 0; 85 0; 85 85; 0 85], [-1 0]}, GrayColor);% Add BuildingsGreenColor = [0 1 0];addMesh(scene,"polygon",{ [5 5; 10 5; 10 10; 5 10] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [15 5; 22 5; 22 12; 15 12] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [28 5; 35 5; 35 11; 28 11] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [40 5; 48 5; 48 13; 40 13] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [55 5; 63 5; 63 12; 55 12] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [5 18; 12 18; 12 25; 5 25] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [18 18; 25 18; 25 26; 18 26] ,[0 30]}, GreenColor);addMesh(scene,"polygon",{ [30 18; 38 18; 38 24; 30 24] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [42 18; 50 18; 50 27; 42 27] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [55 18; 65 18; 65 25; 55 25] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [5 32; 14 32; 14 40; 5 40] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [18 32; 26 32; 26 41; 18 41] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [30 32; 40 32; 40 38; 30 38] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [45 32; 55 32; 55 42; 45 42] ,[0 10]}, GreenColor);addMesh(scene,"polygon",{ [60 32; 70 32; 70 39; 60 39] ,[0 10]}, GreenColor);
🔗 参考文献
🍅更多创新智能优化算法模型和应用场景可扫描关注
🌟机器学习/深度学习类:BP、SVM、RVM、DBN、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、SAE、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、XGBoost、LightGBM、TCN、BiTCN、ESN、Transformer、模糊小波神经网络、宽度学习等等均可~
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌟组合预测类:CNN/TCN/BiTCN/DBN/Transformer/Adaboost结合SVM、RVM、ELM、LSTM、BiLSTM、GRU、BiGRU、Attention机制类等均可(可任意搭配非常新颖)~
🌟分解类:EMD、EEMD、VMD、REMD、FEEMD、TVFEMD、CEEMDAN、ICEEMDAN、SVMD、FMD、JMD等分解模型均可~
🌟路径规划类:旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻、公交车时间调度、水库调度优化、多式联运优化等等~
🌟小众优化类:生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位、冷链、时间窗、多车场等、选址优化、港口岸桥调度优化、交通阻抗、重分配、停机位分配、机场航班调度、通信上传下载分配优化、微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)、电动汽车充放电优化、微电网日前日内优化、储能优化、家庭用电优化、供应链优化\智能电网分布式能源经济优化调度,虚拟电厂,能源消纳,风光出力,控制策略,多目标优化,博弈能源调度,鲁棒优化等等均可~
🌟 无人机应用方面:无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌟通信方面:传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌟信号处理方面:信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌟电力系统方面:
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)、电动汽车充放电优化、微电网日前日内优化、储能优化、家庭用电优化、供应链优化\智能电网分布式能源经济优化调度,虚拟电厂,能源消纳,风光出力,控制策略,多目标优化,博弈能源调度,鲁棒优化
🌟原创改进优化算法(适合需要创新的同学):原创改进2025年的波动光学优化算法WOO以及三国优化算法TKOA、白鲸优化算法BWO等任意优化算法均可,保证测试函数效果,一般可直接核心