项目介绍 MATLAB实现基于LSTM-RRT-DNN 长短期记忆网络(LSTM)结合快速扩展随机树(RRT)与深度神经网络(DNN)进行无人机三维路径规划(含模型描述及部分示例代码)专栏近期有大量优
MATLAB实现基于LSTM-RRT-DNN 长短期记忆网络(LSTM)结合快速扩展随机树(RRT)与深度神经网络(DNN)进行无人机三维路径规划的详细项目实例
请注意此篇内容只是一个项目介绍 更多详细内容可直接联系博主本人
或者访问对应标题的完整博客或者文档下载页面(含完整的程序,GUI设计和代码详解)
无人机三维路径规划是智能空中系统中的关键基础能力,直接决定任务执行的安全性、效率与稳定性。随着城市低空经济、应急救援、海上巡检、森林监测、物流配送与战术侦察等场景的持续扩展,无人机不再只是简单执行预设航线,而是需要在复杂三维环境中实时感知障碍物、动态目标、风场扰动、电量约束、通信遮挡与禁飞区域,并在多约束条件下生成可飞、可控、可优化的轨迹。传统方法如A*、Dijkstra、人工势场、采样类RRT与改进RRT,虽然具有一定实用性,但在三维高维空间中常面临搜索效率不足、路径抖动明显、对动态环境适应性弱、局部最优与碰撞风险高等问题。单纯依赖启发式规则的路径规划方式,往往难以同时兼顾实时性、全局性与轨迹平滑性,也难以充分利用历史任务经验。
LSTM、RRT与DNN的融合思路,正是为解决这类复杂问题而构建的复合式智能规划框架。LSTM能够从时间序列中提取环境变化与无人机运动状态的长期依赖关系,适用于预测未来障碍移动趋势、风速演化方向、局部可通行概率以及路径风险变化。RRT在高维连续空间内具有良好的随机采样能力,能够较快地找到从起点到目标点的可行通路,尤其适合障碍分布不规则、地图连续性较强的三维空间。DNN则擅长在大量样本上学习复杂非线性映射,可用于路径代价估计、采样偏置修正、节点可行性评分、轨迹平滑修正以及局部重规划决策。三者结合后,LSTM负责“看见趋势”,RRT负责“找到通路”,DNN负责“优化与筛选”,从而形成兼具预测、搜索与优化的复合智能规划机制。
在实际工程中,无人机三维路径规划不仅需要避免静态障碍,还要应对动态障碍、时变风场、地形起伏、飞行姿态约束和能耗限制。若仅使用RRT,虽然可快速生成通路,但节点分布可能较为离散,路径不够平滑,且受随机性影响较大。若仅使用DNN,虽能实现快速推断,但缺少几何可行性保障,尤其在复杂障碍场景中容易出现不可飞路径。若仅使用LSTM,则只能提供预测信息,无法直接完成连续空间搜索。因此,将LSTM作为环境状态预测器,将RRT作为候选路径生成器,将DNN作为路径质量评估与重构模块,能够显著增强系统的鲁棒性与泛化能力。
该类方法在MATLAB中的实现具有较强工程价值。MATLAB提供了神经网络训练、三维可视化、矩阵运算、路径评估与仿真验证的完整工具链,非常适合构建从数据生成、模型训练到路径推演的闭环实验平台。通过MATLAB R2025b,可结合深度学习工具箱、统计学习工具与图形交互能力,构建可重复、可调参、可验证的研究型项目。对三维障碍空间进行体素化表达后,可将路径规划问题转化为“时空状态序列预测加几何采样搜索加代价评估优化”的联合问题。此类框架不仅适用于学术研究,也适合工程样机验证和任务调度系统联动开发。
从研究角度看,LSTM-RRT-DNN路径规划属于典型的“数据驱动加模型驱动”混合智能方法。它既保留了传统采样搜索方法在可行性上的优势,又引入深度网络对复杂环境规律的学习能力,能够有效降低纯随机采样带来的不稳定性,并提升路径在动态场景中的适应能力。对无人机系统而言,路径规划不只是求一条最短路线,更要在安全、平滑、能耗、时效、风险和可执行性之间建立平衡。基于此,LSTM-RRT-DNN方案为无人机三维自主飞行提供了更接近真实任务需求的智能化解决途径,也为后续结合强化学习、在线重规划、多机协同与边缘计算部署打下了坚实基础。
本项目的首要目标,是在复杂三维空间中快速生成满足碰撞约束与运动约束的可行路径。对于无人机而言,空间环境并非简单平面,而是具有高度差、障碍物体积、通行走廊、禁飞区和地形起伏的连续三维结构。若路径规划仅依赖单一算法,常会在稠密障碍区域出现搜索耗时过长或路径失效问题。通过RRT生成初始连通树,可以在连续空间中高效探索可达区域;通过DNN对采样节点和边的可行性进行评分,可以减少无效扩展;通过LSTM对环境变化进行预测,可以提前识别即将出现的风险区域,提升路径搜索成功率。该目标的意义在于,使无人机能够在真实任务约束下获得更高成功率的飞行路线,增强系统对复杂地理场景和随机障碍分布的适应能力。
第二个目标,是增强系统在动态环境中的预测能力与在线重规划能力。无人机经常面对移动障碍、风场突变、通信链路变化、临时禁飞区调整等时变因素,静态地图上的最优路径在实际执行中可能迅速失效。LSTM能够利用历史状态序列,学习环境变化与路径风险之间的时间依赖关系,对未来若干时刻的障碍位置、可通行概率和代价变化进行估计,从而为RRT提供更合理的采样偏置。DNN则能够根据实时状态输入,判断当前候选轨迹是否需要局部修正,并输出重新规划建议。该目标的价值在于,让无人机不再只是“离线规划”,而是具备“边飞边判断、边飞边修正”的能力,显著提高任务连续性、执行稳定性与抗干扰能力。
第三个目标,是在满足安全约束的前提下,尽可能缩短路径长度、压缩飞行时间并降低能耗。传统RRT虽然能快速连通起终点,但生成路径常较折线化,拐点较多,容易引起频繁姿态调整,增加能源消耗与控制负担。DNN可以学习历史高质量轨迹的几何特征,对路径进行代价预测与局部优化;LSTM则可以从任务历史中提炼出不同区域的通行难度变化规律,帮助系统优先选择更稳定、更省电的区域。通过三者联合,路径不仅要能走通,还要走得短、走得稳、走得省。其现实意义十分明显,尤其在长航时巡检、远距离物流投送和应急搜索等场景中,续航能力往往直接决定任务成败。
第四个目标,是搭建一个可扩展、可复现、可持续迭代的智能路径规划实验框架。该框架不仅服务于单次无人机飞行任务,也能够为后续引入多无人机协同、强化学习策略、在线传感融合和数字孪生仿真提供接口基础。MATLAB环境便于统一管理数据生成、模型训练、路径可视化与性能评估,可使算法改进过程更加规范。该目标的意义在于,把路径规划从单纯算法实现提升为体系化研究平台,方便持续开展模型对比、参数敏感性分析、鲁棒性验证与工程部署测试,从而推动无人机智能决策能力从实验室走向应用现场。
三维空间的挑战首先体现在搜索空间巨大、障碍形态复杂、采样效率低的问题上。相较二维场景,三维路径规划的自由度显著增加,RRT在连续空间中虽然具有扩展优势,但若不加引导,随机采样会大量落入无效区域,造成树扩展效率低、搜索时间长、路径质量波动大。尤其在障碍密集、通道狭窄或地形起伏明显的环境中,纯随机扩展容易产生大量冗余节点。对此,LSTM可基于历史环境状态预测未来可达概率,为采样分布提供先验偏置;DNN可对候选节点与边进行可行性分类,提前筛除碰撞风险较高的扩展方向;RRT则保留其在连续空间中寻找通路的优势。解决方案的核心,是将随机探索变为“有偏随机探索”,在保证全局搜索能力的同时显著提高有效采样比例。
第二个挑战来自动态环境导致的实时性压力。无人机飞行过程中,行人、车辆、其他飞行器、临时障碍以及风场扰动都可能改变原有路径的安全性。静态地图上的规划结果若不能随环境变化及时修正,将直接影响飞行安全。LSTM在这一问题中发挥核心作用,它可利用时间序列信息学习障碍移动轨迹、局部风险演化与环境状态转换规律,对短期未来进行预测。DNN则用于快速评估新路径的局部可行性与风险代价,并辅助触发局部重规划。结合滚动时域思想,系统能够在每个控制周期内更新状态、重估风险并修正路径。这样的机制让规划不再依赖一次性离线结果,而是形成持续更新的在线决策闭环,从而有效应对动态环境带来的不确定性。
第三个挑战在于路径平滑性不足与控制可执行性不强。RRT生成的路径通常由离散节点折线连接而成,这类路径虽然连通,但往往存在尖锐转角、局部震荡和不连续加速度变化,若直接用于无人机控制,会造成姿态频繁变化、控制误差增大和能耗上升。为解决这一问题,DNN可学习历史优质路径的几何特征,作为路径平滑优化器,估计局部节点调整后的代价变化,并输出更适合飞控执行的连续轨迹候选。LSTM可结合速度、加速度与姿态历史,预测当前轨迹段是否会造成控制压力上升。RRT负责提供全局连通性,DNN负责轨迹整形,LSTM负责动态风险预判,三者协同后可生成更符合实际飞行控制需求的路径。最终实现的不是单纯“数学上可通”,而是“工程上可飞”。
环境建模是整个系统的基础层,其任务是把三维空间、障碍物、目标点、风险区域和无人机状态转化为可计算的数据结构。三维地图通常采用体素网格、点云栅格或连续几何对象进行表达,其中体素化方法最便于与采样算法结合。每个网格单元可记录是否可通行、距离最近障碍的距离、局部风速、通信质量与历史通行频率等信息。状态表达则将无人机当前位姿、速度、加速度、电量、航向角、目标相对方位及局部环境特征拼接成特征向量,为LSTM和DNN提供统一输入。该层的基本原理在于,把复杂真实世界压缩为结构化状态,使后续模型能够直接学习环境与决策之间的映射关系。没有高质量的状态表达,后续网络即便复杂,也难以学到稳定规律。
LSTM层用于学习环境状态与路径风险的时间依赖关系。长短期记忆网络的核心在于门控机制,包括输入门、遗忘门与输出门。遗忘门决定哪些历史信息保留,输入门控制新信息写入,输出门生成当前时刻的隐藏状态。对于无人机路径规划而言,LSTM可以输入连续时刻的环境观测序列,如障碍物位置变化、风速风向变化、局部通行代价变化等,输出未来若干时刻的风险预测、可达概率或障碍趋势。这样一来,路径规划不再只基于当前帧信息,而是结合时间上下文做出更稳健判断。其优势在于能够识别动态环境中的周期性变化、趋势性变化和突变模式,适合用于局部搜索偏置与风险预警,是连接感知与规划的重要桥梁。
RRT层承担全局路径连通任务。快速扩展随机树通过在状态空间中随机采样点,从现有树节点朝采样点方向逐步扩展,并通过碰撞检测判断新节点是否有效。若有效,则将新节点加入树中,直到连接到目标点或达到搜索阈值。RRT的基本原理是用增量式随机探索替代规则网格搜索,从而在高维连续空间中保持较强扩展能力。对于无人机三维路径规划,RRT尤其适合处理复杂边界和稀疏连通区域。然而,经典RRT存在扩展随机性大、路径不够优、节点冗余等问题。因此在本项目中,RRT并非独立使用,而是在LSTM给出的风险预测和DNN给出的节点评分引导下进行偏置扩展,提升搜索效率和路径质量。
DNN层用于评估候选路径质量、节点可行性和局部修正策略。深度神经网络由多层非线性映射组成,能够在高维特征空间中逼近复杂函数。对于路径规划问题,输入可以是节点局部几何特征、障碍距离、曲率、预测风险、剩余能量与任务优先级等,输出可以是路径代价、碰撞风险评分、平滑性评分或是否接受该扩展的决策概率。DNN的作用不是替代RRT,而是充当“策略评审器”和“优化器”,让随机树扩展更符合任务目标。其基本原理在于利用大量历史数据学习优质轨迹的统计规律,将经验知识映射为可计算评分。这样,系统既拥有搜索能力,又具备学习能力,能对路径进行细粒度优化。
轨迹后处理与闭环控制层负责把离散路径转换为可执行轨迹,并在飞行过程中持续修正。RRT输出通常为节点序列,而无人机控制更需要连续曲线、可导速度曲线与平滑姿态指令,因此需进行路径简化、冗余点删除、曲线拟合与速度规划。DNN可对局部轨迹片段进行可执行性评分,LSTM可对即将到来的环境变化给出预警,控制层则根据这些信息执行重规划或速度调整。该层的基本原理是让规划结果真正落地到飞行控制逻辑中,而不是停留在几何连线层面。通过闭环控制,系统能够在执行中不断修正偏差,适应真实环境中的噪声、扰动与突发变化,形成规划、预测、执行之间的连续闭环。
一、三维环境生成与体素地图构建
clc; % 清空命令窗口,便于查看本次运行输出
clear; % 清除工作区变量,避免旧数据干扰
close all; % 关闭图窗,确保绘图环境干净
rng(2025,'twister'); % 固定随机种子,增强实验可复现性
mapSize = [60 60 24]; % 定义三维环境尺寸,分别对应x、y、z方向网格数
occ = false(mapSize); % 初始化三维占据栅格,false表示空闲空间
occ(12:18,10:42,1:10) = true; % 构造第一组长条障碍,模拟地面建筑群
occ(28:36,18:28,1:16) = true; % 构造第二组块状障碍,模拟中部高楼
occ(42:50,5:15,1:12) = true; % 构造第三组局部障碍,模拟狭窄飞行通道
occ(8:14,48:56,1:14) = true; % 构造第四组障碍,增加空间复杂度
occ(20:24,30:34,8:24) = true; % 构造高空立柱障碍,测试三维绕行能力
start = [3 4 3]; % 设定起点坐标,位于左下低空区域
goal = [56 55 20]; % 设定终点坐标,位于右上高空区域
figure('Name','3D Map'); % 创建三维地图窗口
hold on; % 允许在同一坐标轴上叠加绘图对象
for ix = 1:mapSize(1) % 遍历x方向网格
for iy = 1:mapSize(2) % 遍历y方向网格
for iz = 1:mapSize(3) % 遍历z方向网格
if occ(ix,iy,iz) % 若当前体素为障碍
plot3(ix,iy,iz,'ks','MarkerFaceColor','k','MarkerSize',4); % 用黑色方块显示障碍体素
end
end
end
end
plot3(start(1),start(2),start(3),'go','MarkerFaceColor','g','MarkerSize',10); % 绘制起点
plot3(goal(1),goal(2),goal(3),'ro','MarkerFaceColor','r','MarkerSize',10); % 绘制终点
grid on; % 打开网格,增强三维可读性
xlabel('X'); % 标注x轴
ylabel('Y'); % 标注y轴
zlabel('Z'); % 标注z轴
view(3); % 设置三维视角
axis([1 mapSize(1) 1 mapSize(2) 1 mapSize(3)]); % 固定坐标范围,便于观察整体空间
title('3D Occupancy Map'); % 显示地图标题
二、LSTM训练数据构造与时序样本提取
numSeq = 400; % 定义时序样本数量
seqLen = 12; % 定义每段序列长度
numFeat = 6; % 定义每个时刻的输入特征维度
XTrain = cell(numSeq,1); % 创建LSTM输入序列单元数组
YTrain = cell(numSeq,1); % 创建对应输出序列单元数组
for n = 1:numSeq % 遍历每条样本序列
t = linspace(0,1,seqLen); % 构造归一化时间轴
posx = 30 + 12*sin(2*pi*t + 0.5*n/numSeq); % 模拟障碍x方向时变轨迹
posy = 24 + 10*cos(2*pi*t + 0.3*n/numSeq); % 模拟障碍y方向时变轨迹
posz = 8 + 3*sin(4*pi*t + 0.2*n/numSeq); % 模拟障碍z方向时变轨迹
windx = 2*sin(2*pi*t + 0.4*n/numSeq); % 模拟x方向风扰动
windy = 1.5*cos(2*pi*t + 0.2*n/numSeq); % 模拟y方向风扰动
distRisk = sqrt((posx-30).^2 + (posy-24).^2 + (posz-8).^2); % 估计风险距离特征
XTrain{n} = [posx; posy; posz; windx; windy; distRisk]; % 组装输入特征序列
YTrain{n} = [circshift(posx,-1); circshift(posy,-1); circshift(posz,-1)]; % 生成下一时刻位置作为监督目标
YTrain{n}(:,end) = YTrain{n}(:,end-1); % 修正末尾样本,避免环移边界误差
end
三、LSTM网络定义与训练
inputSize = numFeat; % 指定LSTM输入维度
outputSize = 3; % 指定输出维度,对应三维位置预测
layers = [ % 构建序列回归网络
sequenceInputLayer(inputSize) % 输入层,接收时序特征
lstmLayer(64,'OutputMode','sequence') % 第一层LSTM,输出整段序列
dropoutLayer(0.2) % 随机失活,减少过拟合
lstmLayer(32,'OutputMode','sequence') % 第二层LSTM,进一步提取时间特征
fullyConnectedLayer(outputSize) % 全连接层映射到三维输出
regressionLayer]; % 回归损失层
opts = trainingOptions('adam', ... % 使用Adam优化器
'MaxEpochs',35, ... % 设置最大训练轮数
'MiniBatchSize',32, ... % 设置小批量大小
'InitialLearnRate',1e-3, ... % 设置初始学习率
'GradientThreshold',1, ... % 梯度裁剪,提升稳定性
'Shuffle','every-epoch', ... % 每轮打乱样本顺序
'Verbose',false); % 关闭冗长输出
lstmNet = trainNetwork(XTrain,YTrain,layers,opts); % 训练LSTM时序预测网络
四、RRT主结构与有偏采样扩展
maxIter = 2500; % 设定RRT最大迭代次数
stepLen = 2.5; % 设定树扩展步长
goalBias = 0.25; % 设定目标偏置概率
nodes = start; % 初始化节点集合,首节点为起点
parent = 0; % 初始化父节点索引,起点无父节点
goalId = -1; % 初始化终点标志,-1表示尚未到达
for k = 1:maxIter % 开始迭代扩展
if rand < goalBias % 按目标偏置概率直接选取目标附近采样
sample = goal; % 将目标点作为采样点
else
sample = [randi(mapSize(1)), randi(mapSize(2)), randi(mapSize(3))]; % 在空间中随机采样
end
d = vecnorm(nodes - sample,2,2); % 计算当前树节点到采样点的距离
[~, nearId] = min(d); % 找到最近节点索引
nearNode = nodes(nearId,:); % 提取最近节点坐标
dirVec = sample - nearNode; % 计算扩展方向向量
if norm(dirVec) < 1e-9 % 处理极小向量,避免数值问题
continue; % 跳过本次迭代
end
newNode = nearNode + stepLen * dirVec / norm(dirVec); % 沿方向扩展得到新节点
newNode = round(newNode); % 将连续坐标离散化到网格
newNode = max(newNode,[1 1 1]); % 限制下界,防止越界
newNode = min(newNode,mapSize); % 限制上界,防止越界
if ~checkCollision3D(nearNode,newNode,occ) % 若扩展边无碰撞
nodes = [nodes; newNode]; %#ok<AGROW> % 将新节点加入树结构
parent = [parent; nearId]; %#ok<AGROW> % 记录新节点父节点
if norm(newNode-goal) <= stepLen && ~checkCollision3D(newNode,goal,occ) % 判断是否能连接终点
nodes = [nodes; goal]; %#ok<AGROW> % 将终点加入树中
parent = [parent; size(nodes,1)-1]; %#ok<AGROW> % 记录终点父节点
goalId = size(nodes,1); % 保存终点索引
break; % 搜索成功后退出循环
end
end
end
五、DNN路径评分与局部优化
numPathSamples = 1200; % 定义路径样本数量
featPath = zeros(numPathSamples,8); % 创建路径特征矩阵
scorePath = zeros(numPathSamples,1); % 创建路径质量标签
for i = 1:numPathSamples % 遍历样本生成训练数据
p1 = [randi(mapSize(1)) randi(mapSize(2)) randi(mapSize(3))]; % 随机生成起点
p2 = [randi(mapSize(1)) randi(mapSize(2)) randi(mapSize(3))]; % 随机生成终点
dist12 = norm(p1-p2); % 计算欧氏距离
midp = round((p1+p2)/2); % 计算中点
occCost = double(checkPoint3D(midp,occ)); % 中点是否碰撞
slopeCost = abs(p2(3)-p1(3)); % 高度变化成本
freeRatio = 1 - occCost; % 计算局部可行比例近似值
featPath(i,:) = [p1 p2 dist12 slopeCost freeRatio occCost]; % 组装输入特征
scorePath(i) = exp(-0.05*dist12) * freeRatio - 0.8*occCost - 0.02*slopeCost; % 构造连续质量评分
end
X = featPath; % 赋值训练输入
Y = scorePath; % 赋值训练标签
dnnNet = fitrnet(X,Y,'LayerSizes',[64 32 16],'Activations','relu'); % 训练DNN回归器
if goalId > 0 % 若RRT成功连通到目标
rawPath = extractPath(nodes,parent,goalId); % 提取原始路径
pathScore = predict(dnnNet,[rawPath(1:end-1,:) rawPath(2:end,:) ...
vecnorm(diff(rawPath),2,2) abs(diff(rawPath(:,3))) ones(size(rawPath,1)-1,1) zeros(size(rawPath,1)-1,1)]); % 对路径段进行评分
end
六、路径后处理、可视化与性能评估
if goalId > 0 % 若已找到可行路径
path = extractPath(nodes,parent,goalId); % 提取路径节点序列
path = simplifyPath3D(path,occ); % 进行直线可视化简化
path = smoothPath3D(path,5); % 使用滑动平均进行平滑
figure('Name','Planned Path'); % 创建路径显示窗口
hold on; % 允许叠加绘图
for ix = 1:mapSize(1) % 绘制障碍体素
for iy = 1:mapSize(2)
for iz = 1:mapSize(3)
if occ(ix,iy,iz)
plot3(ix,iy,iz,'ks','MarkerFaceColor','k','MarkerSize',4);
end
end
end
end
plot3(path(:,1),path(:,2),path(:,3),'b-','LineWidth',2); % 绘制优化后路径
plot3(start(1),start(2),start(3),'go','MarkerFaceColor','g','MarkerSize',10); % 绘制起点
plot3(goal(1),goal(2),goal(3),'ro','MarkerFaceColor','r','MarkerSize',10); % 绘制终点
grid on; % 打开网格
view(3); % 三维视角
xlabel('X'); ylabel('Y'); zlabel('Z'); % 坐标标注
title('LSTM-RRT-DNN UAV Path'); % 图题
totalLen = sum(vecnorm(diff(path),2,2)); % 计算路径总长度
fprintf('Path Length = %.2f\n', totalLen); % 输出路径长度
else
disp('No feasible path found'); % 未找到可行路径时提示
end
function tf = checkPoint3D(p,occ) % 定义点碰撞检测函数
tf = occ(p(1),p(2),p(3)); % 直接读取体素占据状态
end
function tf = checkCollision3D(p1,p2,occ) % 定义三维线段碰撞检测函数
n = max(abs(p2-p1))+1; % 根据最大坐标差确定采样点数
xs = round(linspace(p1(1),p2(1),n)); % 生成x方向采样点
ys = round(linspace(p1(2),p2(2),n)); % 生成y方向采样点
zs = round(linspace(p1(3),p2(3),n)); % 生成z方向采样点
tf = false; % 初始化碰撞标志
for ii = 1:n % 遍历线段采样点
if occ(xs(ii),ys(ii),zs(ii)) % 若采样点落入障碍
tf = true; % 标记碰撞
return; % 提前退出
end
end
end
function path = extractPath(nodes,parent,idx) % 定义路径回溯函数
path = nodes(idx,:); % 从终点开始记录路径
while parent(idx) ~= 0 % 当父节点存在时持续回溯
idx = parent(idx); % 更新当前索引
path = [nodes(idx,:); path]; %#ok<AGROW> % 将父节点插入路径前端
end
end
function path2 = simplifyPath3D(path,occ) % 定义路径简化函数
path2 = path(1,:); % 保留起点
i = 1; % 初始化当前索引
while i < size(path,1) % 遍历路径节点
j = size(path,1); % 先尝试连接到最远节点
while j > i+1 && checkCollision3D(path(i,:),path(j,:),occ) % 若直连碰撞,则逐步回退
j = j - 1; % 减少目标索引
end
path2 = [path2; path(j,:)]; %#ok<AGROW> % 保留可直连的最远节点
i = j; % 更新当前位置
end
end
function path2 = smoothPath3D(path,win) % 定义平滑函数
path2 = path; % 初始化输出路径
for c = 1:3 % 对x、y、z三个维度分别平滑
path2(:,c) = movmean(path(:,c),win); % 使用滑动平均抑制折线抖动
end
end




更多详细内容请访问
http://【无人机导航】MATLAB实现基于LSTM-RRT-DNN长短期记忆网络(LSTM)结合快速扩展随机树(RRT)与深度神经网络(DNN)进行无人机三维路径规划的详细项目实例(含完整的程序,GUI设资源-CSDN下载 https://download.csdn.net/download/xiaoxingkongyuxi/92825390
https://download.csdn.net/download/xiaoxingkongyuxi/92825390
https://download.csdn.net/download/xiaoxingkongyuxi/92825390
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)