【论文分析】无人机轨迹规划,Fast-Planner:实时避障+全局最优的路径引导优化算法
这篇论文《Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths》由香港科技大学提出,主要针对无人机(UAV)在复杂环境中的实时轨迹重新规划问题,提出了一种结合梯度优化和拓扑路径搜索的鲁棒方法。以下从几个方面对论文进行分析。
1. 研究背景与问题
论文指出,基于梯度优化的轨迹规划(GTO)在无人机实时重新规划中广泛应用,但其存在局部极小值问题,导致规划失败或轨迹不理想。局部极小值的出现源于碰撞代价函数的非凸性,使得优化过程容易陷入无效解。现有方法(如随机重启或迭代优化)未能从根本上解决这一问题,限制了无人机在复杂或高速飞行场景中的应用。
2. 主要贡献
论文提出了三个核心贡献:
路径引导优化(PGO):通过几何路径引导优化过程,避免陷入局部极小值,显著提高重新规划的成功率。
拓扑路径搜索算法:在三维环境中快速生成多条拓扑独特的路径,为并行优化提供多样化的初始解,提升轨迹质量。
实验验证:通过基准测试和实际飞行实验,验证了方法在成功率和轨迹最优性上的优势。
3. 方法创新
(1)路径引导优化(PGO)
-
两阶段优化:
-
第一阶段:利用几何路径(如A或RRT生成的路径)生成“预热轨迹”,将初始轨迹吸引到自由空间附近。目标函数结合平滑性代价和路径引导代价(控制点与路径点的距离)。
-
第二阶段:基于B样条的梯度优化,进一步优化预热轨迹,确保动态可行性和安全性。
-
-
优势:通过几何路径的引导,避免了ESDF(欧几里得符号距离场)梯度突变导致的优化失败。
(2)拓扑路径搜索
-
均匀可见性变形(UVD):提出一种新的拓扑等价关系,比传统的同伦或可见性变形(VD)更高效,适用于实时应用。
-
紧凑路线图构建:通过区分“守卫点”和“连接点”,生成无冗余的拓扑路径集合,每条路径代表不同的绕障策略。
-
路径剪枝与缩短:去除冗余路径并对路径进行优化,确保其适合引导轨迹优化。
(3)实时重新规划框架
-
并行优化:利用多条拓扑路径并行启动PGO,从多个局部解中选择最优轨迹。
-
计算效率:通过限制路径数量和长度,平衡计算复杂性与解的最优性。
4. 实验与结果
-
基准测试:在随机生成的不同复杂度环境中,与Ewok和TRR方法对比,论文方法在成功率和轨迹平滑性上显著优于现有方法(成功率100%,其他方法随环境复杂度下降)。
-
实际飞行实验:在室内外复杂场景中,无人机在有限感知范围内完成高速避障飞行,验证了方法的鲁棒性和实时性(计算时间:路径搜索3ms,优化10ms)。
总结
这篇论文针对无人机轨迹重新规划的局部极小值问题,提出了一种结合路径引导和拓扑搜索的高效方法,在理论和实验上均取得了显著进展。且该算法有其显著优势,算力小,效率极高,内存需求低。
论文创新点
梯度优化的短板:依赖初始路径,易陷入局部最优。
拓扑搜索的作用:提供多条高质量的初始路径,引导梯度优化探索更广的解空间。
结果:既保留梯度优化的高效性,又通过拓扑多样性提升全局最优性。
类比解释
梯度优化 ≈ “局部微调”:像汽车导航的实时避障,但可能导进死胡同。
拓扑搜索 ≈ “全局备选路线”:提前规划绕开拥堵的左、右、高架三条路线,再分别微调。
应用场景扩展
机器人导航:服务机器人在动态环境中规划多条备选路径。
自动驾驶:高速场景下的紧急避障策略生成。
什么是梯度优化(Gradient-based Optimization)?
梯度优化是一种通过迭代计算目标函数的梯度(导数),逐步调整参数以最小化目标值的方法。在轨迹规划中,目标函数通常包括:
平滑性(如加速度/加加速度最小化)
安全性(如远离障碍物)
动态可行性(如速度/加速度约束)
工作流程:
-
初始化轨迹:给定一条初始路径(可能碰撞或不平滑)。
-
计算梯度:对目标函数求导,得到每个轨迹点的优化方向(如远离障碍物的梯度方向)。
-
迭代更新:沿梯度反方向调整轨迹点,直到收敛到局部最优解。
优点:计算高效,适合实时调整。缺点:易陷入局部极小值(如轨迹卡在障碍物之间的“峡谷”中无法逃脱)。
碰撞代价函数:基于ESDF(欧几里得符号距离场),距离障碍物越近,代价越高。
梯度方向:轨迹点会被“推离”障碍物
什么是拓扑路径搜索(Topological Path Searching) ?
拓扑路径搜索旨在找到拓扑意义不同的多条路径(如绕障碍物左侧或右侧的路径),而不仅仅是几何上的最短路径。关键思想是捕捉环境的结构多样性。
拓扑等价性:
同伦(Homotopy):路径可通过连续变形相互转换,且不跨越障碍物(适用于2D)。
均匀可见性变形(UVD):论文提出的新关系,适用于3D环境,比传统方法更高效。
路线图(Roadmap):通过采样(如PRM算法)生成路径的拓扑结构。
工作流程
-
环境采样:在自由空间中随机生成“守卫点”(Guard)和“连接点”(Connector)。
-
路径分类:根据UVD规则过滤冗余路径,保留拓扑独特的路径(如左绕/右绕)。
-
路径优化:对每条路径缩短并平滑处理。
优点:提供全局多样性,避免优化陷入单一局部解。缺点:计算复杂度较高,需平衡路径数量与实时性。
多条备选路径:生成绕柱子的左侧、右侧、上方三条路径。
并行优化:每条路径引导一个独立的梯度优化过程,最终选择最优轨迹。
相关文章:
【论文分析】无人机轨迹规划,Fast-Planner:实时避障+全局最优的路径引导优化算法
这篇论文《Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths》由香港科技大学提出,主要针对无人机(UAV)在复杂环境中的实时轨迹重新规划问题,提出了一种结合梯度优化和拓扑路径搜…...
李飞飞、吴佳俊团队新作:FlowMo如何以零卷积、零对抗损失实现ImageNet重构新巅峰
目录 一、摘要 二、引言 三、相关工作 四、方法 基于扩散先前的离散标记化器利用广告 架构 阶段 1A:模式匹配预训练 阶段 1B:模式搜索后训练 采样 第二阶段:潜在生成建模 五、Coovally AI模型训练与应用平台 六、实验 主要结果 …...
AutoDev 2.0 正式发布:智能体 x 开源生态,AI 自动开发新标杆
在我们等待了几个月之后,国内终于有模型(DeepSeek V3-0324)能支持 AutoDev 的能力,也因此是时候发布 AutoDev 2.0 了!在 AutoDev 2.0 中,你可以: 编码智能体 Sketch 进行自动化编程自动化编程的…...
PHP 应用MYSQL 架构SQL 注入跨库查询文件读写权限操作
MYSQL 注入:(目的获取当前 web 权限) 1 、判断常见四个信息(系统,用户,数据库名,版本) 2 、根据四个信息去选择方案 root 用户:先测试读写,后测试获取…...
鸿蒙-全屏播放页面(使用相对布局)---持续更新中
最终实现效果图: 实现步骤 创建FullScreenPlay.ets全品播放页面 并将其修改为启动页面。 全屏播放,屏幕必然横过来,所以要将窗口横过来。 编辑 src/main/ets/entryability/EntryAbility.ets 若写在/EntryAbility.ets中,则所有…...
第4期:重构软件测试体系——生成式AI如何让BUG无所遁形
真实战场报告 某金融系统上线前,测试团队用AI生成3000条边缘用例,发现了一个隐藏极深的并发漏洞——该BUG在传统用例覆盖下需要7年才会触发一次。这次发现直接避免了可能上亿元的资金风险! 一、测试革命:当AI遇见质量保障 场景1&…...
力扣.旋转矩阵Ⅱ
59. 螺旋矩阵 II - 力扣(LeetCode) 代码区: class Solution {const int MAX25; public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> ans;vector<int> hang;int len_nn;int arry[25][25]…...
Docker 安装部署Harbor 私有仓库
Docker 安装部署Harbor 私有仓库 系统环境:redhat x86_64 一、首先部署docker 环境 定制软件源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install -y yum-utils device-mapper-persistent-data lvm2…...
SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景
以下是 SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景: 数据类型类别数据类型解释内存占用适用场景整数类型bigint用于存储范围较大的整数,范围是 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)8 字节需要…...
javascript实现一个函数,将字符串中的指定子串全部替换为另一个字符串的原理,以及多种方法实现。
大白话javascript实现一个函数,将字符串中的指定子串全部替换为另一个字符串的原理,以及多种方法实现。 在JavaScript里,要是你想把字符串里的指定子串都替换成另外一个字符串,有不少方法可以实现。下面我会详细介绍实现的原理&a…...
Python 3 与 MySQL 数据库连接:mysql-connector 模块详解
Python 3 与 MySQL 数据库连接:mysql-connector 模块详解 概述 在Python 3中,与MySQL数据库进行交互是一个常见的需求。mysql-connector是一个流行的Python模块,它提供了与MySQL数据库连接和交互的接口。本文将详细介绍mysql-connector模块…...
HCIA-Datacom高阶:基础的单区域 OSPF 与多区域 OSPF的配置
动态路由协议是实现网络高效通信的关键技术之一。开放式最短路径优先(Open Shortest Path First,OSPF)协议作为内部网关协议(IGP)的一种,因其高效性、稳定性和扩展性,在大型网络中得到了广泛应用…...
蓝桥杯单片机刷题——E2PROM记录开机次数
设计要求 使用E2PROM完成数据记录功能,单片机复位次数记录到E2PROM的地址0中。每复位一次数值加1,按下按键S4,串口发送复位次数。串口发送格式如下: Number:1 备注: 单片机IRC振荡器频率设置为12MHz。 …...
杂草YOLO系列数据集4000张
一份开源数据集——杂草YOLO数据集,该数据集适用于农业智能化、植物识别等计算机视觉应用场景。 数据集详情 训练集:3,664张高清标注图像测试集:180张多样性场景样本验证集:359张严格筛选数据 下载链接 杂草YOLO数据集分…...
Python自动化面试通关秘籍
Python自动化测试工程师面试,不仅仅是考察你的代码能力,更看重你如何在项目中灵活运用工具和框架解决实际问题。如果你正准备面试,这篇文章将为你总结最常见的高频考题及答题技巧,帮助你快速上手,通关面试,…...
机器学习的一百个概念(1)单位归一化
前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...
Python 笔记 (二)
Python Note 2 1. Python 慢的原因2. 三个元素3. 标准数据类型4. 字符串5. 比较大小: 富比较方法 rich comparison6. 数据容器 (支持*混装* )一、允许重复类 (list、tuple、str)二、不允许重复类 (set、dict)1、集合(set)2、字典(dict)3、特殊: 双端队列 deque 三、数据容器的共…...
【商城实战(97)】ELK日志管理系统的全面应用
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102 章内容层层递进。无论是想…...
3.使用epoll实现单线程并发服务器
目录 1. epoll的概述 2. 多线程与epoll的处理流程 2.1 多线程处理流程 2.2 epoll处理流程 3. epoll与多线程的比较 4. epoll的操作函数 4.1 epoll_create() 4.2 epoll_ctl() 4.3 epoll_wait() 5. 示例代码 6. epoll的工作模式 7. 使用O_NONBLOCK防止阻塞 8.运行代…...
蓝桥杯真题------R格式(高精度乘法,高精度加法)
对于高精度乘法和加法的同学可以学学这几个题 高精度乘法 高精度加法 文章目录 题意分析部分解全解 后言 题意 给出一个整数和一个浮点数,求2的整数次幂和这个浮点数相乘的结果最后四舍五入。、 分析 我们可以发现,n的范围是1000,2的1000次方非常大&am…...
PyCharm操作基础指南
一、安装与配置 1. 版本选择 专业版:支持 Web 开发(Django/Flask)、数据库工具、科学计算等(需付费)。 社区版:免费,适合纯 Python 开发。 2. 安装步骤 访问 JetBrains 官网 下载对应版本。…...
21 python __name__ 与 __main__
在办公室里,每个员工都有自己的工牌,上面写着姓名和部门。 一、__name__:模块的名字 Python 模块也有类似的 "工牌"——__name__属性,它记录了模块的身份: 直接运行时 → __name__ "__main__"&…...
NixVis 开源轻量级 Nginx 日志分析工具
NixVis NixVis 是一款基于 Go 语言开发的、开源轻量级 Nginx 日志分析工具,专为自部署场景设计。它提供直观的数据可视化和全面的统计分析功能,帮助您实时监控网站流量、访问来源和地理分布等关键指标,无需复杂配置即可快速部署使用。 演示…...
elementUI el-image图片加载失败解决
是不是,在网上找了一些,都不行,这里一行代码,解决,后端返回图片路径,el-image图片加载失败的问题 解决办法, vue项目里,index.html文件里加一行代码就可 <meta name"refe…...
lxd-dashboard 图形管理LXD/LXC
前言 LXD-WEBGUI是一个完全用AngularJS编写的Web应用程序,无需应用服务器、数据库或其他后端服务支持。只需要简单地托管静态HTML和JavaScript文件,就能立即投入使用。这个项目目前处于测试阶段,提供了直观的用户界面,帮助用户便捷地管理和控制LXD实例。 安装lxd-dashboa…...
C# MemoryStream 使用详解
总目录 前言 在.NET开发中,流(Stream)是一个用于处理输入和输出的抽象类,MemoryStream是流的一个具体实现,它允许我们在内存中读写数据,就像操作文件一样,而无需涉及磁盘 I/O 操作。尤其适合需…...
(二)万字长文解析:deepResearch如何用更长的思考时间换取更高质量的回复?各家产品对比深度详解
DeepResearch的研究背景 业务背景:用更长的等待时间,换取更高质量、更具实用性的结果 当前AI技术发展正经历从“即时响应”到“深度思考”的范式转变。用户对延迟的容忍度显著提升,从传统200ms的交互响应放宽至数秒甚至数分钟,以…...
Redis场景问题1:缓存穿透
Redis 缓存穿透是指在缓存系统(如 Redis)中,当客户端请求的数据既不在缓存中,也不在数据库中时,每次请求都会直接穿透缓存访问数据库,从而给数据库带来巨大压力,甚至可能导致数据库崩溃。下面为…...
数据结构(并查集,图)
并查集 练习版 class UnionFindSet { public:void swap(int* a, int* b){int tmp *a;*a *b;*b tmp;}UnionFindSet(size_t size):_ufs(size,-1){}int UnionFind(int x){}void Union(int x1, int x2){}//长分支改为相同节点int FindRoot(int x){}bool InSet(int x1, int x2)…...
深度学习篇---断点重训模型部署文件
文章目录 前言一、断点重训(Checkpoint)文件1. 动态图(DyGraph)模式.pdparams 文件.pdopt 文件.pdscaler 文件.pdmeta 或 .pkl 文件 2. 静态图(Static Graph)模式.pdparams 和 .pdopt 文件.ckpt 文件 3. 恢…...
chromem-go + ollama + bge-m3 进行文档向量嵌入和查询
Ollama 安装 https://ollama.com/download Ollama 运行嵌入模型 bge-m3:latest ollama run bge-m3:latestchromem-go 文档嵌入和查询 package mainimport ("context""fmt""runtime""github.com/philippgille/chromem-go" )func ma…...
运维面试题(十一)
1.如果一个硬盘 IO 时阻塞了,会发生什么情况? 进程/线程挂起:发起I/O操作的进程或线程会被操作系统置为阻塞状态(等待状态),直到I/O完成。CPU资源释放:阻塞的线程会让出CPU,操作系统…...
深度学习中常见的专业术语汇总
本硕博都是搞机械的匠人,当然也想做一下交叉学科的东西,蹭一下人工智能的热点。虽然世界是个草台班子,但是来都来了,咱也要把这场戏演好。 记得之前网上爆料有位大学生发了很多水文,对,是交叉学科的&#x…...
人工智能赋能医疗:开启智慧医疗新时代
在当今数字化浪潮的推动下,人工智能(AI)技术正以前所未有的速度渗透到各个行业,其中医疗领域更是成为AI技术大放异彩的重要舞台。从疾病诊断到治疗方案制定,从医疗影像分析到药物研发,AI正在为传统医疗带来…...
stable diffusion 本地部署教程 2025最新版
前提: 需要环境 git git下载地址Git - Downloading Package 直接装即可 python3.10.6 下载地址 Python Release Python 3.10.6 | Python.org 记得python环境一定要3.10.6!!! 第一个版本 项目地址https://github.…...
[Mac]利用Hexo+Github Pages搭建个人博客
由于我这台Mac基本没啥环境,因此需要从零开始配置,供各位参考。 注意⚠️:MacBook (M4)使用/bin/zsh作为默认Shell,其对应的配置文件为~/.zshrc 参考文档: HEXO系列教程 | 使用GitHub部署静态博客HEXO | 小白向教程 文…...
罗杰斯特回归
定义 逻辑回归其实就是原来的线性回归加了激活函数,这个函数其实就是sigmoid函数,把一个回归的连续数值压缩到了0到1的空间,其实只要有函数能够满足把数值压缩到0,1之间就可以(因为0到1之间的数值就是概率值) 对于分类…...
27_promise
插入一下前端助手测试,顺手可以用来做安全 promise promise 是一个es6新增的语法 汉语:承诺的意思 作用:是专门用来解决回调地狱!!!! 什么是回调函数? <script>// 回调函数 callback回调// 就是把函数A当作参数传递到函数B中// 在函…...
【机械视觉】C#+VisionPro联合编程———【六、visionPro连接工业相机设备】
【机械视觉】C#VisionPro联合编程———【六、visionPro连接工业相机设备】 目录 【机械视觉】C#VisionPro联合编程———【六、visionPro连接工业相机设备】 前言: 连接步骤说明 一. 硬件连接 支持的相机接口类型: 连接步骤 2. 软件配置 Visio…...
红宝书第十九讲:详解JavaScript的Fetch API与Ajax请求
红宝书第十九讲:详解JavaScript的Fetch API与Ajax请求 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、基本概念:为什么需要Fetch? Fetch API是浏览器提供的现代网络请求工…...
【深度学习新浪潮】具身智能及其发展前景分析
一、具身智能的定义 具身智能(Embodied Intelligence) 是指通过物理载体(如机器人)与环境实时交互,实现感知、决策与行动闭环的智能系统。其核心在于将人工智能与物理实体结合,强调“智能源于身体与环境的互动”,而非仅依赖虚拟算法。具身智能的典型特征包括多模态感知…...
练习题:111
目录 Python题目 题目 题目分析 需求理解 关键知识点 实现思路分析 代码实现 代码解释 指定文件路径和名称: 定义要写入的内容: 打开文件并写入内容: 异常处理: 输出提示信息: 运行思路 结束语 Python题…...
第三次作业
1、将你的虚拟机的网卡模式设置为nat模式,给虚拟机网卡配置三个主机位分别为100、200、168的ip地址 首先将虚拟机在vmware编辑里将网卡模式改为nat 然后用nmcli c mod ens160 ipv4.addresses 192.168.254.100 nmcli c mod ens160 ipv4.addresses 192.168.254.200…...
Oracle数据库数据编程SQL<3.1 PL/SQL 匿名块 及 流程控制中的条件判断、循环、异常处理和随机函数应用>
PL/SQL部分 在SQL的基础上增加了一些过程化的控制语句。 过程化控制语句包括:类型定义、判断、循环、游标、异常处理(例外处理) 目录 PL/SQL匿名块 一、匿名块基本结构 1、匿名块由三个部分组成: 2、注意事项: …...
CEF 给交互函数, 添加控制台是否显示交互参数log开关
CEF 控制台添加一函数,枚举 注册的供前端使用的CPP交互函数有哪些 CEF 多进程模式时,注入函数,获得交互信息-CSDN博客 这两篇文章,介绍了注入函数,在控制台中显示 各自提供的交互函数信息。 有些场景下,我们还需要更详细的信息,比如想知道 彼此传递的参数, 如果每次调…...
如何用 Postman 正确传递 Date 类型参数,避免服务器解析错误?
如何在 Postman 中传递 Date 类型参数。调试工具如何模拟发送用户端的当前时间呢? Postman 传递 Date 类型参数教程...
从代码学习深度学习 - 含并行连结的网络(GoogLeNet)PyTorch版
文章目录 前言一、GoogLeNet的理论基础1.1 背景与创新点1.2. Inception模块的工作原理二、完整代码实现与解析2.1. 环境准备与工具函数2.2. 数据加载 - Fashion-MNIST2.3. Inception模块设计2.4. GoogLeNet完整模型2.5. 训练函数2.6. 运行训练三、训练结果与分析3.1. 性能分析3…...
进程Kill杀死后GPU显存没有释放仍然被占用,怎么杀死僵尸进程
参考链接: https://blog.csdn.net/qq_37591986/article/details/131118109 使用下面的命令: fuser -v /dev/nvidia0 | awk {print $0} | xargs kill -9一般来说他会杀掉整个用户的所有进程。...
Deepseek API+Python 测试用例一键生成与导出 V1.0.3
** 功能详解** 随着软件测试复杂度的不断提升,测试工程师需要更高效的方法来设计高覆盖率的测试用例。Deepseek API+Python 测试用例生成工具在 V1.0.3 版本中,新增了多个功能点,优化了提示词模板,并增强了对文档和接口测试用例的支持,极大提升了测试用例设计的智能化和易…...
【字符设备驱动开发–IMX6ULL】(一)简介
【字符设备驱动开发–IMX6ULL】(一)简介 一、Linux驱动与裸机开发区别 1.裸机驱动开发回顾 1、底层,跟寄存器打交道,有些MCU提供了库。 spi.c:主机驱动(换成任何一个设备之后只需要调用此文件里面的…...