路径规划算法综述

2023-05-16

路径规划算法综述

路径规划算法综述


文章目录

  • 路径规划算法综述
  • 路径规划算法主要问题
  • 一、主要问题及现有解决方案
    • 1.环境建模问题
    • 2.收敛速度和局部最优解
  • 二、路径规划算法分类及简介
    • 2.1传统算法
      • 2.1.1全局路径规划算法
        • 2.1.1.1 A*算法
        • 2.1.1.2 禁忌搜索算法
        • 2.1.1.3 RRT算法
      • 2.1.2局部路径规划算法
        • 2.1.2.1 人工势场法
        • 2.1.2.2 D*算法
    • 2.2智能算法
      • 2.2.1 遗传算法
      • 2.2.2 粒子群算法
      • 2.2.3 蚁群算法
      • 2.2.4 基于强化学习的路径规划算法
  • 总结
  • 参考文献


路径规划算法主要问题

路径规划算法是机器人导航中的重要环节,主要是指机器人在相应区域内自动规划一条从起始点至目标点的路径,在这个过程中,需要保证不发生碰撞,并且寻路代价较低。目前路径规划存在的问题主要为环境建模困难算法收敛素速度慢容易陷入局部最优解,此外传统的路径规划算法需要在建立全局地图的基础上进行路径规划,即在已知地图中进行,这种算法导致了感知和决策分离,难以应用到位置环境中,因此后来相关研究者将兴趣放到了智能算法的研究上。


提示:以下是本篇文章正文内容

一、主要问题及现有解决方案

1.环境建模问题

  • 在环境建模中,从维度上可划分为二维地图和三维地图,其中三维地图无论从计算量还是存储量上都要比二维地图复杂,并且目前多数路径规划算法都是针对二维平面进行规划的,当面对三维地图时,其算法复杂度以及计算量将要增加很多。
  • 对于二维地图,主要采用栅格法进行构建,栅格法对机器人环境描述更加简便,处理时也比较方便,可以简化路径规划过程。
  • 对于三维环境,我们则是将多个二维平面在高度上进行叠加得来,并且处理的时候也将其映射到二维上。

2.收敛速度和局部最优解

  • 对于路径规划算法收敛速度以及局部最优解问题,通常的解决方法是对算法进行结构上的改进,增加算法参数的自适应能力,可降低算法陷入局部最优解的概率。此外也可以将算法进行结合来优化算法性能。

二、路径规划算法分类及简介

2.1传统算法

2.1.1全局路径规划算法

全局规划算法是适用于静态环境中的算法针对动态环境并不适用

2.1.1.1 A*算法

  • A*算法是应用较为广泛的路径规划算法,其收敛速度比较快,稳定性较高。
  • 算法最早追溯到1968年在论文《A Formal Basis for the Heuristic Determination of Minimum Cost Paths》中被提出
  • A*算法是一种启发式搜索算法,将广度优先搜索(BFS)和常规路径规划算法Dijkstra算法相结合。通过利用一个启发函数来改变其搜索性能,从而可以更快的找到路径,并且找到的一定是最短路径。
  • 针对A *算法计算量较大,运行时间较长等问题,后续学者又提出了很多改进的A *算法。

2.1.1.2 禁忌搜索算法

  • 禁忌搜索算法是在贪婪思想的基础上发展的。贪婪算法最大的问题在于容易陷入局部最优,为了解决这个问题,研究人员引入了禁忌表,使其具有较强的全局搜索能力,禁忌表主要用于记录已经经过的点,其中内容是动态更新的,在这里的点在以后的搜索中将会直接跳过。
  • 禁忌搜索算法要优于爬山启发式算法,爬山式启发算法局部搜索能力较强,收敛速度快但是容易陷入局部最优解,禁忌搜索算法在此基础上引入禁忌表后便可跳出局部最优解,转向寻找其他局部最优解,因此具备全局搜索能力。

2.1.1.3 RRT算法

  • RRT算法是一种基于采样的路径规划算法,搜索效率较高,并且该算法适用于高维空间。该算法是随机树在空间扩展过程中进行碰撞检测,在样点足够情况下能够得出较优路径,但是不适用于狭长和动态空间中。

2.1.2局部路径规划算法

2.1.2.1 人工势场法

  • 人工势场法是将运动物体在规定区域内的运动类比于在虚拟力场中的合力运动,障碍物对机器人产生斥力,目标点对运动物体产生引力,运动物体在虚拟力场的合力作用下逼近目标位置。
  • 人工势场法生成的路径较为平滑,但是算法也存在一些问题,当引力与斥力相同情况下并且速度为0时将会导致运动物体无法运动陷入局部最优,规划路径也不是最优路径,因此针对人工势场算法,后续也提出了很多改进的算法。

2.1.2.2 D*算法

  • 在A算法基础上又提出了D算法,这是一种适用于动态环境下的路径规划算法,在距离较短情况下可以快速找到合适的路径,虽然其可以进行全局规划,但是当空间较大时其收敛速度较慢,因此D*算法通常结合其他算法进行路径规划。

2.2智能算法

2.2.1 遗传算法

  • 遗传算法是一种搜索最优解的优化算法,通过模拟基因的选择、交叉、变异来进行仿真,在搜索过程中具备自我学习能力,能够自适应控制搜索过程来获取最优解。
  • 选择是将父代个体的信息不做改变地复制传递给子代。每个个体对当前环境的适应度存在差异,在复制过程中,适应度高的个体被选中复制的概率大,经过不断迭代,群体中优秀个体比重越来越多,相应的路径也被不断优化。
  • 交叉是将同一代不同个体间部分基因进行交换,产生新个体,产生的新个体将有可能生成更加优良的个体,相应的也会产生新的路径,从而提供更多选择。
  • 变异是使个体基因发生突变,提供更多的基因组合,在小范围内寻找最优解,变异增加了基因种类,使得组合的时候有更多可能,算法寻优范围进一步扩大,变异操作对应于路径上可能是增删某个路径点或者移动路径点,这种操作具有不确定性,路径的适应值有提高或者降低的可能。
  • 遗传算法具备较好地收敛性和全局搜索能力,但是局部搜索能力较差,并且容易陷入局部最优。遗传算法也具有很多的改进算法。

2.2.2 粒子群算法

  • 粒子群算法是一种集群优化算法,其算法通过模拟群觅食行为相互合作机制寻求最优解。算法首先在空间中初始化粒子,然后粒子经过迭代寻找全局最优解。
  • 粒子群算法结构简单、容易实现,但是算法比较容易陷入局部最优解,算法的收敛速度随着迭代次数和搜索范围增加不断变慢,甚至最终停滞,算法开始时参数设定比较依赖经验。

2.2.3 蚁群算法

  • 蚁群算法是一种模拟蚂蚁觅食行为数学模型的一种正反馈算法,具有启发式思想,算法主要利用蚂蚁在觅食过程中释放信息素的原理,信息素浓度高的地方对蚂蚁有较大吸引力,最短路径上的蚂蚁信息素浓度最高,据此可以找到最优路径。
  • 面对较为复杂的状态空间时,蚁群算法容易陷入局部最优,并且实时性难以保证,因此后来出现了很多蚁群算法与其他算法相结合的算法。

2.2.4 基于强化学习的路径规划算法

  • 强化学习是机器学习中一种重要的学习方法,是系统从环境到行为映射的学习,目的是是奖励信号函数值最大,即是一种学习如何从状态映射到行为以使得获取的奖励最大的学习机制,一个动作需要不断在环境中进行实验,环境对动作做出奖励,系统通过环境的奖励不断优化行为。
  • 强化学习不存在监督学习中的正确标签,而是从自身的经验中去学习,强化学习的目标也不是寻找隐藏的结构,而是最大化奖励。

总结

  • 本文介绍了路径规划算法,包括传统路径规划算法和智能算法,传统算法与智能算法目前都有一定的优缺点和应用场景。目前来看,算法主要问题仍然在于算法收敛速度和容易陷入局部最优化等问题,针对各种算法, 许多学者也都进行了改进,以扩大算法的应用面。相信随着研究的深入,将会有越来越多的算法被提出以及现有算法将会得到更好的改善。

参考文献

[1]王鹤静,王丽娜.机器人路径规划算法综述[J/OL].桂林理工大学学报:1-15[2022-12-21].http://kns.cnki.net/kcms/detail/45.1375.N.20221213.1104.001.html
[2]杨思明,单征,曹江,郭佳郁,高原,郭洋,王平,王景,王晓楠.基于模型的强化学习在无人机路径规划中的应用[J].计算机工程,2022,48(12):255-260+269.DOI:10.19678/j.issn.1000-3428.0063156.
[3]于效民. 基于深度强化学习的移动机器人路径规划研究[D].大连理工大学,2022.DOI:10.26991/d.cnki.gdllu.2022.002364.
[4]基于强化学习的智能机器人路径规划算法研究,https://blog.csdn.net/qq_53162179/article/details/128356575


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路径规划算法综述 的相关文章

  • tenda某路由器信息泄露查找

    本文作者 xff1a i春秋作家 icqb32d3a26 1 前期准备 1 路由器固件 一般获取固件的方法有以下几种 官方网站根据对应版本下载 xff08 xff09 xff0c 点击下载在点击更新固件时抓取对应的更新固件链接拆开路由器 x
  • 安装Django,提示pip版本低,更新又失败

    最近想要看看Django xff0c 以前安装过python xff0c 现在想按照教程来学习 xff0c 结果发现在安装Django包 xff08 命令 xff1a pip install django xff09 时候出问题了 xff0
  • 【2018.04.19 ROS机器人操作系统】机器人控制:运动规划、路径规划及轨迹规划简介之一...

    参考资料及致谢 本文的绝大部分内容转载自以下几篇文章 xff0c 首先向原作者致谢 xff0c 希望自己能在这些前辈们的基础上能有所总结提升 1 运动规划 路径规划 轨迹规划的联系与区别 https blog csdn net wx5456
  • "symbol lookup error"问题解决

    http www linuxquestions org questions slackware 14 symbol lookup error usr lib libgtk x11 2 0 so 0 undefined symbol 4343
  • 如何自定义一个通信协议

    借鉴简单的OSI和TCP IP通信模型来讨论如何自定义一个适应自己的通信协议 文章目录 64 toc 1 前言2 经典的OSI七层模型2 1 TCP IP模型解析2 1 1 整体介绍2 2 2 数据链路层2 2 3 网络层2 2 4 传输层
  • 程序员每天工作多少个小时_程序员每天实际工作几个小时?

    程序员每天工作多少个小时 您如何看待 xff0c 程序员每天实际工作多长时间 xff1f 大多数人会说答案是8到9个小时 有人说他们每天工作12个小时或更长时间 尽管这是正确的 xff0c 但它并不是大多数程序员实际工作的数量 xff0c
  • 九轴姿态传感器的介绍和应用

    总体设计 姿态传感器是基于MEMS技术的高性能三维运动姿态测量系统 它包含三轴陀螺仪 三轴加速度计 xff0c 三轴电子罗盘等运动传感器 xff0c 通过内嵌的低功耗ARM处理器得到经过温度补偿的三维姿态与方位等数据 利用基于四元数的三维算
  • CAN总线简单介绍

    什么是CAN总线 xff1f Controller Area Network xff0c 简称CAN或者CAN bus 是一种功能丰富的串行总线标准 xff0c 最早的CAN控制芯片在奔驰车上应用并量产 xff0c 因为支持多主机 xff0
  • Ubuntu18.04 下realsense编译与安装

    相机型号 xff1a realsense SR300 系统环境 xff1a Ubuntu18 04 我这里是下载并编译源码的方式进行编译安装 具体编译安装可以参照https github com IntelRealSense libreal
  • Linux gvim 编辑器修改配色方案、字体、字号

    1 gvim相比于vim xff0c 目前知道gvim是可以单独窗口运行的 xff0c 像gedit一样 vim打开的文件貌似只能显示在终端内 但是二者安装的位置以及配置文件是很有联系的 xff0c 暂时的感觉是gvim是对vim的封装 x
  • 【路径规划】(3) RRT 算法求解最短路,附python完整代码

    大家好 xff0c 今天和各位分享一下机器人路径规划中的 RRT 算法 xff0c 感兴趣的点个关注 xff0c 文末有 python 代码 xff0c 那我们开始吧 1 算法介绍 RRT 算法是由学者 S M LaValle 提出来的路径
  • 【自动化测试】【安卓android】python 发送adb命令方法

    command 命令列表 xff0c 可以传入任意命令 xff0c 类型为list cmdMode可以选择发送命令方式为直接发送adb 命令还是先进入shell def sendAdbcmd command deviceID 61 34 3
  • 选择恐惧症的福音!教你认清MVC,MVP和MVVM

    相信大家对MVC xff0c MVP和MVVM都不陌生 xff0c 作为三个最耳熟能详的Android框架 xff0c 它们的应用可以是非常广泛的 xff0c 但是对于一些新手来说 xff0c 可能对于区分它们三个都有困难 xff0c 更别
  • FreeRtos嵌入式操作系统学习1--操作系统原理初探

    这里由于是第一篇文章 xff0c 不讲复杂的数据机构 xff0c 也不进行代码分析 xff0c 只讲嵌入式操作系统原理 先看下面一个简单的程序 xff1a void task1 while 1 Led1 1 xff08 1 xff09 de
  • 初学四旋翼之定高

    本项目使用US 100超声波模块测高 xff0c 与飞控的通讯方式为UART 硬件连接应注意 xff1a 通常飞控的发送管脚连超声波的接收管脚 xff0c 飞控的接收管脚连超声波的发送管脚 xff08 即tx rx xff1b rx tx
  • 初学四旋翼之光流定点

    本项目使用px4flow模块测速 xff0c 与飞控的通讯方式为I2C 安装时因注意光流模块与飞控的方向 xff08 一 xff09 为什么使用光流模块 xff1f 在悬停时 xff0c 若采用开环控制 xff0c 由于一些不可控的外界因素
  • 初学JetsonTX2之部署YOLO

    本人准备使用 YOLO进行人脸检测 xff0c 硬件设备为 Jetson TX2 查阅 YOLO 官网 xff0c 要部署 YOLO xff0c 首先要安装 CUDA CUDNN OPENCV xff0c 然后部署 Darknet xff0
  • C语言,超过10位数的字符串转整型函数

    include lt stdio h gt static long str2int const char str long temp 61 0 const char p 61 str if str 61 61 NULL return 0 i
  • C语言去掉MAC地址中的冒号

    include lt stdio h gt include lt string h gt void strdel char s char del x char p char q for p 61 s q 61 s p 61 39 0 39

随机推荐

  • Jetson Xavier NX 套件将系统装到SSD

    目录 第一步 xff1a 虚拟机 第二步 xff1a 装SDK Manager 第三步 xff1a 将系统装到eMMC 第四步 xff1a 将系统装到SSD内 xff0c 我以新买的500G硬盘为例 第五步 xff1a 装各种库 解决问题时
  • MySQL使用.ibd文件恢复或者迁移数据库

    使用86的Alice数据库的 ibd文件备份 恢复到76数据库 xff0c 该数据库版本为8 0 17 1 创建一个表确认与原始表结构一致 将86数据库的表结构导出 xff0c 在76上执行 xff08 注 xff1a 在5 5 26版本需
  • 学习ARM反汇编工具objdump和一个简单实例

    学习ARM反汇编工具objdump和一个简单实例 参考朱有鹏ARM裸机编程 1 反汇编的原理 amp 为什么需要反汇编 arm linux objdump D led elf gt led elf dis objdump是gcc工具链中的反
  • 从零开始学习UCOSII操作系统1--UCOSII的基础知识

    从零开始学习UCOSII操作系统1 UCOSII的基础知识 前言 xff1a 首先比较主流的操作系统有UCOSII FREERTOS LINUX等 xff0c UCOSII的资料相对比其余的两个操作系统的资料是多很多的 更重要的原因是自己本
  • 从零开始学习UCOSII操作系统2--UCOSII的内核实现

    从零开始学习UCOSII操作系统2 UCOSII的内核实现 参考书籍 xff1a 嵌入式实时操作系统 COS II原理及应用 嵌入式实时操作系统uCOS II 邵贝贝 第二版 1 任务的结构 任务控制块 首先这个任务控制块是非常的大的 xf
  • 从零开始学习UCOSII操作系统4--任务管理

    从零开始学习UCOSII操作系统4 任务管理 1 重讲任务 1 任务可以是一个无限的循环 xff0c 也可以在一次执行完毕后被删除 这里需要注意的是 xff0c 任务的代码并不是真正的删除了 xff0c 而是UCOSII不再理会该任务代码
  • 从零开始学习UCOSII操作系统7--信号量

    从零开始学习UCOSII操作系统7 信号量 参考博客 xff1a 64 http blog csdn net gatiemehttps blog csdn net gatieme article details 21071379 前言 xf
  • 从零开始学习UCOSII操作系统15--总结篇

    从零开始学习UCOSII操作系统15 总结篇 前言 xff1a 在大学的时候 xff0c 我们班级上面都有很多人觉得学习UCOSII 包括UCOSIII 是没什么厉害的 xff0c 因为很多人都喜欢去学习Linux操作系统 xff0c 但是
  • 手把手教你搭建TFTP服务器

    手把手教你搭建TFTP服务器 前言 xff0c 东西来自于网络 xff0c 但是根据自己的理解写了一下建议 xff0c 记录下来 xff0c 让下次不要在网络上面浪费时间搜索 1 保证自己的虚拟机能够上网 测试方法 xff1a 里面一般都有
  • 从零开始写一个单向不循环链表

    从零开始写一个单向不循环链表 总结 xff1a 郝斌数据结构与算法课程 数据结构概述 xff1a 定义 xff1a 我们如何把现实中大量的而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器 xff08 内存 xff09 中 xff0
  • STM32-CAN通信协议

    STM32 CAN通讯协议 CAN协议简述 CAN Controller Area Network xff08 控制器局域网 xff09 xff0c 由Bosch开发的一种面向汽车的通信协议 这是目前应用最广泛的通信协议 xff0c 更是尤
  • FreeRTOS-任务运行时间统计

    FreeRTOS 任务运行时间统计 引入 上一章节中我们讲述了任务信息获取 xff0c 我们已经能够获取绝大部分任务信息了 xff0c 但是任务还有一个很重要的信息 xff0c 那就是运行时间 如果我们知道了每个任务的运行时间和占比我们就可
  • 【Linux】解决Nvidia Jetson Xavier NX开发套件开机启动时间过长问题

    环境 硬件 xff1a Jetson Xavier NX 套件 系统 xff1a Ubuntu 20 04 解决 0 现象 在使用Nvidia 的Jetson Xavier NX套件 xff0c 开发产品 xff0c 准备发布时 xff0c
  • FreeRTOS-信号量

    FreeRTOS 信号量 信号量其实就是队列的一种应用 xff0c 信号量的各种操作都是在队列的基础上建立起来的 那么既然是在队列的基础上建立的 xff0c 信号量一定具有和队列相同的属性 因此信号量也是为任务和任务 任务和中断之间通信做准
  • FreeRTOS-空闲任务及钩子函数

    FreeRTOS 空闲任务及钩子函数 FreeRTOS中空闲任务是开启任务调度器自动创建的一个任务 xff0c 这样可以保证系统中有任务可以运行 xff0c 这个任务优先级是最低的 xff0c 如果有其他任务处于就绪态 xff0c 那么空闲
  • FreeRTOS-内存管理-完结篇

    FreeRTOS 内存管理 无论是创建任务 队列 信号量还是其他的东西 xff0c 都需要为其分配一定空间 xff0c 前面我们都是运用动态内存申请的方法来申请空间 xff0c 并且我们所使用的的动态内存申请函数都是FreeRTOS自己提供
  • OpenCV环境搭建

    OpenCV环境搭建 VS2017安装 具体安装过程参考下面链接 xff1a https mp weixin qq com s NrrHFAXm57QblOf5CPUVmw 组件可以参考以下选项 xff1a OpenCV安装 如果还没有安装
  • W2-图像增强

    线性变换 imag span class token operator 61 span span class token function imread span span class token punctuation span span
  • 半天光速入门Python(上)

    文章目录 写在前面一 Python环境Python解释器与编辑器WinDows用户Linux用户 二 基础概念 运算符与表达式常量数类型字符串变量与标识符对象逻辑行与物理行缩进运算符注释方法与C语言区别 三 三种程序结构ifforwhile
  • 路径规划算法综述

    路径规划算法综述 路径规划算法综述 文章目录 路径规划算法综述路径规划算法主要问题一 主要问题及现有解决方案1 环境建模问题2 收敛速度和局部最优解 二 路径规划算法分类及简介2 1传统算法2 1 1全局路径规划算法2 1 1 1 A 算法