【MATLAB例程】无人机三维路径规划|A*,RRT(快速随机树算法), APF(人工势场法)算法对比|可自定义起终点、障碍物坐标。附下载链接

【MATLAB例程】无人机三维路径规划|A*,RRT(快速随机树算法), APF(人工势场法)算法对比|可自定义起终点、障碍物坐标。附下载链接
在这里插入图片描述
针对无人机在三维复杂环境中的自主路径规划问题,本文选取了三种具有代表性的规划方法进行对比分析,分别为 A* 算法、快速扩展随机树(Rapidly-exploring Random Tree, RRT) 算法以及 人工势场法(Artificial Potential Field, APF)。三种算法在搜索机理、适用场景及规划性能方面各具特点,具有较强的互补性。
完整代码压缩包解压后,直接用MATLAB运行主函数即可。

文章目录

程序介绍

A* 算法

A* 算法是一种基于启发式搜索的确定性路径规划方法,通常在离散化的栅格空间中工作。该算法通过构造代价函数
f ( n ) = g ( n ) + h ( n ) f(n)=g(n)+h(n) f(n)=g(n)+h(n)
在保证搜索最优性的同时提升搜索效率,其中g(n)表示从起点到当前节点的累计代价,h(n)为当前节点到目标点的启发式估计代价。
在三维路径规划问题中,A* 算法能够在已知环境下稳定地搜索到一条全局最优或次优路径,路径质量高、可重复性强,常作为路径规划算法性能评估的基准方法。但其计算复杂度随空间维度和分辨率快速增长,对环境建模和存储资源要求较高。

RRT 算法

RRT(Rapidly-exploring Random Tree)算法是一种基于随机采样的增量式路径规划方法,主要面向高维连续空间的可行路径搜索问题。该算法通过在状态空间中随机采样,并不断向采样点方向扩展搜索树,从而快速覆盖可行空间并寻找从起点到目标点的连通路径。
在三维无人机路径规划场景下,RRT 算法具有较强的全局探索能力和环境适应性,尤其适合障碍物分布复杂或空间维度较高的情况。然而,由于其随机性特征,RRT 生成的路径通常并非最优,路径平滑性较差,规划结果在不同运行中存在一定差异。

人工势场法(APF)

人工势场法是一种基于连续空间建模的实时路径规划方法,其核心思想是将目标点视为产生吸引势场的源,将障碍物视为产生斥力势场的源,无人机在合力作用下沿势场梯度方向运动。
该方法计算结构简单、实时性强,适合对计算资源和响应速度要求较高的无人机在线规划任务。但在复杂障碍环境中,人工势场法容易陷入局部极小点,缺乏全局最优性和完备性保障,通常需要与随机扰动或全局规划方法结合使用。

综合对比分析

总体而言,A* 算法在路径最优性和稳定性方面表现突出,适合已知环境下的全局规划;RRT 算法在高维复杂空间中具有良好的可行性和扩展能力,适合快速获得可行路径;人工势场法则在计算效率和实时性方面具有优势,适用于局部路径调整与在线避障。通过在统一三维仿真环境下对三种算法进行对比,可以直观地分析不同规划策略在路径质量、计算复杂度及适用场景方面的差异,为无人机路径规划算法的选择与改进提供参考依据。

代码运行结果

规划的路径对比:

在这里插入图片描述


高度剖面:

在这里插入图片描述

命令行截图:

在这里插入图片描述


XoY投影对比:

在这里插入图片描述

MATLAB代码

主函数:

%% 无人机三维路径规划A*, RRT, APF% 作者:matlabfilter% 2026-01-26/Ver1 clear; clc; close all;rng(0);%% ========== 环境参数 ========== mapSize =[40,40,30];% 三维空间尺寸 start =[2,2,2];%起点坐标 goal =[35,35,18];%终点坐标% 障碍物位置定义 [顶点x y z,长宽高dx dy dz] obstacles =[15151101010;3010181512;20211532];%% 路径规划%A* [pathA, lenA]=Astar3D(start, goal, mapSize, obstacles);%RRT [pathR, lenR]=RRT3D(start, goal, mapSize, obstacles);% ===APF[pathP, lenP]=APF3D(start, goal, obstacles, mapSize);%% ========== 统一绘图 ========== figure; hold on; grid on;xlabel('X');ylabel('Y');zlabel('Z');title('UAV三维路径规划对比');view(3);% 障碍物fori=1:size(obstacles,1)drawCuboid(obstacles(i,:));end% 起点终点plot3(start(1),start(2),start(3),'go','MarkerSize',8,'LineWidth',2,'DisplayName','起点');plot3(goal(1),goal(2),goal(3),'ro','MarkerSize',8,'LineWidth',2,'DisplayName','终点');% 路径plot3(pathA(:,1),pathA(:,2),pathA(:,3),'b-','LineWidth',2,...'DisplayName','A*');plot3(pathR(:,1),pathR(:,2),pathR(:,3),'m--','LineWidth',2,...'DisplayName','RRT');plot3(pathP(:,1),pathP(:,2),pathP(:,3),'k-.','LineWidth',2,...'DisplayName','APF');legend('Location','best');% xlim([0 mapSize(1)]); ylim([0 mapSize(2)]); zlim([0 mapSize(3)]);%% 路径长度输出fprintf('\n路径长度比较:\n');fprintf('A* : %.2f\n', lenA);fprintf('RRT : %.2f\n', lenR);fprintf('APF : %.2f\n', lenP);

完整代码:
https://download.ZEEKLOG.net/download/callmeup/92590826

或:

Read more

从零开始学 Spring Boot:小白也能轻松上手的 Java Web 开发全指南

从零开始学 Spring Boot:小白也能轻松上手的 Java Web 开发全指南 🌟 本文专为零 Java Web 基础的学习者设计——不假设你会 Servlet,不默认你懂 Maven,连 pom.xml 都会逐行解释。 ① 技术栈用途介绍:Spring Boot 到底是“谁”?能帮你做什么? 想象你是一家奶茶店老板,想开发一个「线上点单小程序」: * 需要用户登录(安全) * 要展示菜单(页面/接口) * 要下单并存入数据库(数据操作) * 还得快速上线、方便改菜单(开发效率) 传统 Java Web 开发就像自己盖房子:先打地基(Servlet 容器)、砌墙(配置 web.xml)、装门窗(

《Web 自动化测试入门:从概念到百度搜索实战全拆解》

《Web 自动化测试入门:从概念到百度搜索实战全拆解》

一、自动化的核心概念 1. 定义:通过自动方式替代人工操作完成任务,生活中常见案例(自动洒水机、自动洗手液、超市闸机)体现了 “减少人力消耗、提升效率 / 质量” 的特点。 2. 软件自动化测试的核心目的: * 用于回归测试:软件迭代新版本时,验证新增功能是否影响历史功能的正常运行。 3. 常见面试题解析: * 自动化测试不能完全取代人工测试:需人工编写脚本,且功能变更后需维护更新,可靠性未必优于人工。 * 自动化测试不能 “大幅度降低工作量”:仅能 “一定程度” 减少重复工作,需注意表述的严谨性。 二、自动化测试的分类 自动化是统称,包含多种类型,核心分类及说明如下: 分类说明接口自动化针对软件接口的测试,目的是验证接口的功能、性能、稳定性等。UI 自动化 针对软件界面的测试,包含: 1. 移动端自动化:通过模拟器在电脑上编写脚本,测试手机应用;稳定性较差(受设备、

【OpenClaw从入门到精通】:Web控制台使用全解析——可视化配置与监控(2026实操版)

【OpenClaw从入门到精通】:Web控制台使用全解析——可视化配置与监控(2026实操版)

【OpenClaw从入门到精通】:Web控制台使用全解析——可视化配置与监控(2026实操版) 引言 在OpenClaw的多种管理方式中,Web控制台提供了最直观、最友好的用户体验。通过图形化界面,用户可以轻松完成复杂的配置任务,实时监控系统状态,以及进行各种管理操作。对于不熟悉命令行的用户来说,Web控制台是最佳选择。 本文将详细介绍OpenClaw Web控制台的各项功能,从基本操作到高级配置,从实时监控到数据分析。通过本文的学习,你将掌握Web控制台的使用技巧,能够高效地管理和监控OpenClaw系统。 Web控制台概览 访问方式 基本访问 # 启动Gateway服务 openclaw gateway --port18789--verbose# 打开浏览器访问 http://127.0.0.1:18789/ 安全

ReAct Agent 与 Agent 编排:从单 Agent 闭环到多 Agent 协作(纯享版)

ReAct Agent 与 Agent 编排:从单 Agent 闭环到多 Agent 协作(纯享版)

ReAct Agent 与 Agent 编排:从单 Agent 闭环到多 Agent 协作 本篇文章,大概会花费你10分钟时间,带你对Agent进行更加深入的了解。 目录: * ReAct Agent 与 Agent 编排:从单 Agent 闭环到多 Agent 协作 * 一、这 10 分钟到底会讲什么 * 二、我将会分8节来讲 * 第 1 节:为什么要讲 ReAct 和 Agent 编排 * 时间:1 分钟 * 第 2 节:先讲清 Agent 的最小运行时骨架 * 时间:1 分钟