当前位置: 首页 > news >正文

自动驾驶路径规划概况

文章目录

  • 前言
  • 介绍
  • 1. 路径规划在自动驾驶系统架构中的位置
  • 2. 全局路径规划的分类
    • 2.1 基础图搜索算法
      • 2.1.1 Dijkstra算法
      • 2.1.2 双向搜索算法
      • 2.1.3 Floyd算法
    • 2.2 启发式算法
      • 2.2.1 A*算法
      • 2.2.2 D*算法
    • 2.3 基于概率采样的算法
      • 2.3.1 概率路线图(PRM)
      • 2.3.2 快速随机探索树(RRT)
    • 2.4 基于人工智能的规划方法
      • 2.4.1 人工神经网络(ANN)
      • 2.4.2 遗传算法(GA)
      • 2.4.3 粒子群优化算法(PSO)
      • 2.4.4 蚁群优化算法(ACO)
      • 2.4.5 模拟退火算法(SA)
      • 2.4.6 人工鱼群算法
      • 2.4.7 人工蜂群算法
      • 2.4.8 入侵杂草算法
  • 参考文献

前言

在GitHub上找到了路径规划与运动规划方面不错的学习资料:

  • PathPlanning——https://github.com/zhm-real/PathPlanning
  • MotionPlanning——https://github.com/zhm-real/MotionPlanning

介绍

    路径规划在自动驾驶技术中起到承上启下的重要作用。路径规划在遵循道路交通规则的前提下,计算出具体运动指令,将车辆从当前位置导航到目的地。本文将介绍路径规划在自动驾驶系统中的架构以及路径规划的常见类型——基础图搜索算法、启发式算法、基于概率采样的算法以及基于人工智能的算法。

1. 路径规划在自动驾驶系统架构中的位置

    Claudine Badue[1]等人以圣西班牙联邦大学(UFES)开发的自动驾驶汽车(Intelligent Autonomous Robotics Automobile,IARA)为例,提出了自动驾驶汽车的自动驾驶系统的典型架构。如图所示,自动驾驶系统主要由感知系统(Perception System)和规划决策系统(Decision Making System)组成。感知系统主要由交通信号检测模块(Traffic Signalization Detector,TSD)、移动目标跟踪模块(Moving Objects Tracker,MOT)、定位与建图模块(Localizer and Mapper)等组成。规划决策系统主要由全局路径规划模块(Route Planner)、局部路径规划模块(Path Planner)、行为决策模块(Behavior Selector)、运动规划模块(Motion Planner)、自主避障模块(Obstacle Avoider)以及控制模块(Controller)组成。
在这里插入图片描述

图1-1 自动驾驶系统架构图

    全局路径规划在此架构中主要是由全局路径规划模块完成的。该模块通过接收用户在离线地图(Offline Maps)中给出的目标点,基于由感知系统提供的感知信息,计算出从当前自动驾驶汽车的位置到最终目标点的路径WWW。路径WWW是一个路径点的序列,即W={w1,w2,,,,w∣W∣}W=\{{w_1,w_2,,,,w_{|W|}}\}W={w1w2,,,,wW},其中每个路径点wiw_iwi,是一个坐标对,在离线地图中,wi=(xi,yi)w_i=(x_i,y_i)wi=(xi,yi)。得到路径WWW后,将路径(Route)信息传递给下一个模块——局部路径规划模块。

2. 全局路径规划的分类

    全局路径规划模块负责计算一条从自动驾驶汽车的初始位置到由用户操作员定义的最终位置的路线W,。路径W是一个路径点的序列,即W={w1,w2,,,,w∣W∣}W=\{{w_1,w_2,,,,w_{|W|}}\}W={w1w2,,,,wW},其中每个路径点wiw_iwi,是一个坐标对,在离线地图中,wi=(xi,yi)w_i=(x_i,y_i)wi=(xi,yi)
    如果我们将道路网络看做成一个带有边权值的有向图,该有向图中的顶点通过带有权值的边连接起来,可以将一般的路径规划问题转化为有向图中最短路径的求解问题。对于大型的静态路网问题,Dijkstra[2]和A*[3]等经典算法由于时间复杂度过大,难以取得较好的成果。
    在过去的十年中,道路网络中路径规划算法的性能有了显著的进展。新开发的算法可以以毫秒或更少的时间计算驾驶方向。道路网络中的路径规划技术在查询时间、预处理时间、空间使用和对输入变化的鲁棒性等方面提供了不同的权衡。不同的学者对路径规划算法的分类有所不同。Claudine Badue在他的文章中将全局路径规划算法分为以下几类:

  • 基于目标导向的全局路径规划(Goal-directed techniques)
  • 基于分割的全局路径规划(Separator-based techniques)
  • 分级规划的全局路径规划(Hierarchical techniques)
  • 有界跳跃的全局路径规划(Bounded-hop techniques)

    Bast[4]等人的分类方式与Claudine作出的分类方式几乎一致。他们在上述四种算法的基础之上,不仅仅是对静态网络中两点之间的最短路径的长度的求解。最重要的是,他们还扩展到能够检索到最短的路径本身。此外,他们还在批量计算最短路径(如距离表),更现实的场景(如动态网络),或处理多个目标函数等多方面进行探索与验证。
    David González[5]等人虽然主要考虑了运动规划方面的分类方式,但其中有些方法对于全局路径规划仍然是通用的。他们将一般的规划算法分为:

  • 基于采样搜索的算法:Dijkstra 、 RRT 、 A *、 hybird A *和 Lattice 等;
  • 基于曲线插值的算法: RS 曲线、 Dubins 曲线、多项式曲线、贝塞尔曲线和样条曲线等;
  • 基于最优化的算法: Apollo 的 piecewise - jerk、EM Planner 等。

在这里插入图片描述

图2-1 Dijkstra算法、A*算法以及RRT算法

    González还列举了常见的路径规划算法,如图搜索算法、基于采样的算法、基于曲线插值的算法以及基于优化的算法。

表2-1 路径规划常见算法分类

在这里插入图片描述    Brian Paden[24]对常见的路径规划算法从适用场合、最优性、完备性、时间复杂度以及实时性进行分析(表2-2)。

表2-2 常见路径规划算法的分析

在这里插入图片描述

2.1 基础图搜索算法

2.1.1 Dijkstra算法

    Dijkstra算法[2]是由荷兰计算机科学家迪杰斯特拉于1959年提出的,是从一个节点遍历其余各节点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。

  • Dijkstra算法将图上的初始点看作一个集合S,其它点看作另一个集合U。
  • 根据初始点,求出其它点到初始点的距离dist[i](若相邻,则dist[i]为边权值;若不相邻,则dist[i]为无限大)。
  • 之后选取最小的dist[i](记为dist[x]),并将此dist[i]边对应的点(记为x)加入集合S(实际上,加入集合的这个点的dist[x]值就是它到初始点的最短距离)。
  • 再根据x,更新跟x相邻点y的dist[y]值:dist[y] = min{ dist[y], dist[x] +边权值weight[x][y] },因为可能把距离调小,所以这个更新操作叫做松弛操作。
  • 重复3,4两步,直到目标点也加入了集合,此时目标点所对应的dist[i]即为最短路径长度。(注:重复第三步的时候,应该从所有的dist[i]中寻找最小值,而不是只从与x点相邻的点中寻找)。

    下图展示了Dijkstra算法、双向搜索算法以及A算法的搜索空间。Dijkstra算法的搜索空间较大,双向搜索算法通过从起始点和终点同时搜索,两个搜索空间相遇之时即在x点处,结束算法,其搜索空间比Dijkstra算法小。在这里插入图片描述

图2-2 Dijkstra算法(左)、双向搜索(中间)和A算法(右)的搜索空间示意图

2.1.2 双向搜索算法

    双向搜索算法可以用来减少搜索空间,它同时运行s的前向搜索和t的向后搜索。一旦它们的搜索空间的交点被证明在从s到t的最短路径上包含一个顶点x,该算法就会停止。对于静态路网最短路径问题,双向搜索访问的顶点数量大约是单向方法的一半。

2.1.3 Floyd算法

    Floyd算法[6]在Dijkstra算法的基础上进行了改进,使之不仅能求得起始点到目标点的距离,还能求得图中任意一节点到另一节点的最短距离。Floyd算法的实现依靠两个邻接矩阵,其中一个临界矩阵存放各个路径的顶点,另一个临界矩阵存放各个路径的距离值,通过一行一行的更新,最终获得图中任意一节点到另一节点的最短距离。

2.2 启发式算法

    启发式方法一种比传统方法更快地解决问题的技术,它会在每一个分支步骤,评价可用信息并决定遵循哪个分支,得到一个最优或近似最优解。大多数搜索问题的数据量都是指数级的,而启发式方法可以将问题降低一个数量级,而且,当可评估的信息越多,搜索的指向性就越明确,从而提高搜索效率。常见的启发式方法有Astar算法和Dstar算法。

2.2.1 A*算法

    Astar搜索方法[3]最初是Hart等人在1968年作为经典Dijkstra算法的修改版本引入的。Astar算法通过引导搜索方向的启发式算法来改进Dijkstra算法,并通过这样做减少必要的计算次数。Astar算法的关键是建立评估函数f(n)f(n)f(n)f(n)=g(n)+h(n)f(n)=g(n)+h(n)f(n)=g(n)+h(n),其中g(n)g(n)g(n)表示实际成本,h(n)h(n)h(n)表示最佳路径的估计成本。假设在一个二维平面中的目标位置坐标为(xgoal,ygoal)(x_{goal},y_{goal})xgoalygoal,对于一个平面中的坐标节点(x,y)(x,y)x,yh(n)h(n)h(n)的值通常取两个节点之间的欧几里德距离。但是这种方式很容易忽略了障碍物,从而低估了实际成本,也就是说存在障碍物的情况下距离目标点的距离很容易被低估。

2.2.2 D*算法

    在现实世界中,移动机器人通常对通向目标的路径上的障碍物信息知之甚少。随着机器人在运动过程中发现新的障碍,这种知识会逐渐得到改善。因此,当接收到有关环境的新信息时,对目标的计算路径进行更新是非常重要的。换句话说,当要搜索的区域发生时,重新规划是必要的。前面介绍的Astar算法除了从头开始图搜索之外,没有为重新规划问题提供任何解决方案。
在这里插入图片描述

图2-3 由D* Lite(左)和Field D*(右)在900x700代价地图中产生的路径。
在这里,障碍物用深灰色表示,可穿越的区域用黑色表示。

    1994年Stemtz提出了D* [8]算法,它主要用于机器人探索路径。Dstar算法将配置空间表示为一系列状态,状态表示机器人位置的方向。Dstar算法也称为动态Astar,它的工作原理与Astar算法的原理基本相同,但它在Astar的基础上过线性插值规划和重新规划生成较低成本和平滑的路径。此外,一些学者研究了关于Dstar算法的变种,如Field Dstar算法 [9]、Thetastar算法 [10]、Dstar Lite [9]算法。图2-3显示了Dstar Lite和Field Dstar两种算法在代价地图中路径规划的效果。Field Dstar是一种基于插值的规划和重新规划算法,通过均匀和非均匀分辨率网格生成低成本路径。该方法在传统基于栅格地图的路径规划算法的两个瓶颈处——所产生的路径的质量,以及基于栅格的规划的内存和计算需求有所提升。

表2-3 D* Lite与Field D*算法性能比较
D* LiteField D*
Initial planning time (s)0.831.46
Initial path cost (relative)1.000.96
Traversal cost update time (s)0.060.01
Replanning time (s)0.040.07
Replanned path cost (relative)1.000.96

2.3 基于概率采样的算法

    基于采样的算法在20世纪90年代末引入,以获得路径规划问题的近似解。基于采样的方法将状态空间表示为图形,并尝试使用不同的随机采样技术找到从初始状态到最终状态的路径。基于采样的规划器遵循概率完备性原则,这意味着如果存在解决方案,就一定会找到它。但需要注意的是,这种方法不能保证解决方案的最优性。基于采样的算法是根据算法的收敛速度和平均收敛速度来判断的。根据实际实验观察和统计,基于采样的算法平均至少比多项式时间分析算法快一个数量级。目前,两个主要基于采样的算法是由Kavraki LE 1994年提出的概率路线图[11](PRM)和LaValle SM 1998年提出的快速随机探索树[12](RRT)。

2.3.1 概率路线图(PRM)

    概率路线图算法包括两个步骤路线图构建和查询,即学习阶段和查询阶段。在学习阶段,对状态空间中的一定数量的随机状态进行采样,并生成连接这些状态的图表。这是一个计算昂贵的预处理步骤,但只需要执行一次。在查询阶段,输入初始和最终状态,并使用 Dijkstra或者Astar算法从图表中获得它们之间的轨迹。在多个查询的情况下,概率路线图是非常有效的。但PRM存在许多问题,所以相关学者对其做出了变种改进。PRMstar[13]引入了一种可变距离度量,以提高优化性。灵活的随时动态随机路线图[14](Flexible Anytime Dynamic PRM, FADPRM)将地图环境划分为理想的区域,根据边界边的优先级形成启发式算法,进行了Astar搜索,以不断改进该解决方案。在这里插入图片描述

图2-4 在二值化地图中进行构型采样

在这里插入图片描述
图2-5 PRM算法的步骤

    图2-4与图2-5阐述了PRM算法的流程。首先在二值化地图中进行构型采样(大约750个点),并进行碰撞检测,筛选出无碰撞的点。再进行邻域计算,对每个周围一定邻域距离以内的点进行连接并对连线进行碰撞检测。再对所有的点用图搜索算法找到一条最短路径,最后通过路径修剪的方法,得到最终的路径。

2.3.2 快速随机探索树(RRT)

    RRT 算法通过随机选择在非障碍物区域的点,构建单向搜索树,直到树权到达目标节点。RRT树在未占用空间中均匀扩展的属性,使得在复杂的高维环境、非完整和运动约束环境中依旧是有效的。但是生成的路径往往不是最优的并且需要进行平滑优化。相比于PRM,RRT作为一种增量算法,不需要使用一定数量的样本预计算图,对于具有动态环境和约束变化的场景更为有利。因此专家学者从规划时间、扩展节点、路径成本和路径间隙四个方面对RRT方法做出了相应地改进,如RRT-Connect、RRTstar、Bi-RRT[15-17]等。图2-6展示了RRT、RRTstar以及RRTstarFN的算法效果。RRTstar的路径明显较RRT短,RRTstarFN既保证了路径的距离优势,同时节省了大量冗余的节点,提升了算法速度。在这里插入图片描述

图2-6 RRT、RRT*以及RRT*FN的算法效果

在这里插入图片描述

图2-7 RRT*FN算法以及ForcedRemova( )函数算法

    RRTstarFN的核心在于在原有RRTstar的方法上,通过强制移除一些子节点为空的节点,从而减少运算时的节点数目。

2.4 基于人工智能的规划方法

    经典的方法虽然被发现是有效的,但需要更多的时间来确定可行的无碰撞路径。而且,经典的方法往往被锁定在局部最优解中,这可能远不及全局最优解。此外,存在多个障碍物的移动机器人的路径规划被发现是非确定性多项式时间困难(NP-hard)问题。因此,在动态环境情况下就会变得更加复杂。这些缺点使得传统方法在复杂环境中显得无能为力。因此,人工神经网络(ANN)、遗传算法(GA),粒子群优化算法(PSO),蚁群优化算法(ACO)和模拟退火算法(SA)等进化算法来快速求解路径规划问题。

2.4.1 人工神经网络(ANN)

    人工神经网络(ANN)可以表达路径规划感知到行为的映射关系。神经网络用于描述环境之间的约束,并且将能量定义为关于路径点的函数。能量水平取决于路径点的位置,而机器人朝着能量降低的方向移动。最后得到一条总能量最小的路径。虽然这条路径没有障碍,但它并不一定是最短路径或最佳路径。同时很难定量地描述移动机器人随机的工作环境,因此建立神经网络拓扑来描述移动环境也是非常困难的。另外,复杂且庞大的结构也加大了神经网络权重设置的难度和复杂度。

2.4.2 遗传算法(GA)

    遗传算法(GA)[18]由Holland于1975年提出。在遗传算法中,问题的所有可能解都编码为形成初始种群的染色体。构建了几个基本操作∶交叉,变异和选择。生成初始种群,利用目标计算个体的适合度值,以便确定可选择的基本操作。GA虽然具有强大的搜索能力和较高的搜索效率,但容易提前收敛的问题使得它它接近问题的最优解时收敛速度降低。

2.4.3 粒子群优化算法(PSO)

    1995年,Eberhart和Kennedy[19-20] 研究鸟类群体的活动规律,提出了粒子群优化算法(PSO)。它从随机解开始,通过不停地迭代找到最优解。然后利用适应度值对解的质量进行评价,最后与当前搜索的最优值进行比较,找出全局最优解。该算法用于求解机器人路径规划问题,具有实现简单、精度高、收敛速度快等优点。在这里插入图片描述

图2-8 AERPSO算法在动态目标点下的搜索效果。(a) t = 0 (b) t = 700 © t = 1200 (d) t =2000 (e) t = 2900(f) t = 4672

    粒子群优化(PSO)是一种极好的基于种群的优化算法,经常应用于群体机器人协同搜索工作。考虑到PSO的全局优化特性,它很容易收敛到搜索环境中的特定位置,从而错过了学习更多信息的机会。V. Garg[21]在PSO的基础上进行改进,提出了一种自适应探索机器人PSO(AERPSO)来解决多目标搜索问题。该方法提高了探索未探索区域的机会,并有助于利用进化速度和聚集程度进行避障。自适应惯性权重有助于增强探索。

2.4.4 蚁群优化算法(ACO)

    ACO算法由 Marco Dorigo于1992年提出。它的基本原理是每只蚂蚁在其行走的路径上释放分泌物作为参考,并且还将感知其他蚂蚁释放的分泌物,这种分泌物通常被称为信息素。在信息素的作用下,蚁群可以相互通信并选择路径。当路径上的信息素比其他路径更多时,蚁群会自发地移动到这条路径,导致信息素浓度升高,从而吸引后者的蚂蚁形成正向机制反馈。最后,整个蚁群集中在最佳路径上。
在这里插入图片描述

图2-9 蚁群算法(ACO)示意图

    蚁群算法不仅具有种群的全局搜索能力,而且具有个体间的协同效应。它可以找到一条更好的道路,即使环境的完整信息是未知的。然而,在算法的早期阶段,收敛速度慢,计算量大。
    在三维路径规划问题中,理想的飞行路径应该是平衡总飞行路径长度和地形威胁并在此基础之上缩短飞行时间、减少碰撞的可能性。但传统的三位路径规划算法往往不能较好地权衡这些因素,且优化后的目标函数缺乏实际约束,导致建模不准确。对此,Yuting Wan等[22]提出了APPMS算法,该算法将路径规划任务转换为具有多约束的多目标优化任务,同时对基于飞行总路径长度和地形威胁程度的目标进行优化。此外,为了获得最优三维飞行路径,引入了一种基于改进蚁群优化的精确群智能搜索方法,该方法可以利用首选搜索方向和随机邻域搜索机制提高全局和局部搜索能力。图2-10描述了APPMS算法的流程。在这里插入图片描述

图2-10 APPMS算法流程

2.4.5 模拟退火算法(SA)

    模拟退火(SA)算法由N.Metropolis 等人1953年提出。它是一种基于蒙特卡洛迭代求解的随机优化算法。SA从一定的较高初始温度开始,随着温度参数的不断减小,随机求解空间中目标函数的全局最优解,并结合概率跳跃特征。 Amylia Ait saadi[23]提出了一种基于混沌混合优化和模拟退火的混合优化方案(CAOSA)来解决无人机的路径规划问题。与其他九种经典的元启发算法相比,其规划出的路径更短,时间相对较短,如图2-11与图2-12所示。在这里插入图片描述

图2-11 经典九种算法和CAOSA算法规划路径长度
在这里插入图片描述
图2-12 经典九种算法和CAOSA算法规划时间

2.4.6 人工鱼群算法

    通常来说,在任何水域中,鱼都能自行或尾随其他鱼找到营养物质丰富的地方。人工鱼群算法就是根据该特点,通过构造人工鱼来模仿鱼群的觅食、聚群和追尾以及鱼群之间的相互协助等自然行为,最终达到全局寻优的目的[25]
    人工鱼群算法通过生物界鱼类的3种自然行为进行相关迭代计算,从而获得路径规划最优解 。因此,该算法实际上也是一种仿生智能算法,每个人工鱼可以根据实时变化的环境因素自适应地调整角度进行搜索,最终使人工鱼聚集到食物源附近。因此,该算法与其他传统优化方法相比,在解决路径规划问题时能够良好地克服局部极值,并且具有一定的自适应能力。
    接下来简要说明一下人工鱼群算法的基本含义。如图2-13所示,某一人工鱼当前的活动状态为XXX,首先假设它的最大视野范围为VisualVisualVisual。在该范围内某时刻人工鱼视点位置状态定义为XvX_vXv,如果该位置的状态优于当前状态,则向该位置方向前进一步,到达下一状态XnextX_{next}Xnext,否则继续搜索视野范围内的其他位置。如果搜寻的次数越多,则能对周围的环境有一个更加全面的感知,有助于作出合理的选择。另外,针对状态较多甚至无限多的情况,并不需要全部遍历,存在一定的不确定性对于搜索全局最优其实是更有利的。在这里插入图片描述

图2-12 人工鱼群视觉模拟

    通过观察,可以对鱼类行为作一个简单的分析,其主要分为以下4种行为。
1)觅食行为:可以称为鱼类最基本的行为,简单来说,也就是循着食物较多的方向游动的一种行为 。
2)聚群行为:这是它们的一种生存方式,或多或少的鱼总是聚集在一起,目的主要是为了躲避灾害和集体觅食。
3)追尾行为:其实就是一种向邻近的最活跃个体靠近的行为,在寻优算法中可以认为为是向较优方向前进的过程 。
4)随机行为:鱼在水中的游动行为,在某种程度上是随机的,最终目的是在更大的范围内寻找同伴以及食物。

    以上这些行为是鱼类的基本行为,它们与鱼的生存状态紧密联系。从学习方式上来说,觅食行为是一种个体极值寻优的过程,属于自学过程,而聚群与追尾行为是鱼和外界环境相互交互的过程。

2.4.7 人工蜂群算法

    人工蜂群算法其实是由蜜蜂寻找食物源的过程启发而来的。该算法在求解路径规划问题时,蜜源代表一条可行路径,而蜜源的收益度代表该问题的约束条件(如时间、路径长度、避障情况等)。整体上来说,该算法就是一个迭代的过程 。该算法的基本模型主要涉及3种类型的蜜蜂:雇佣蜂、侦察蜂和观察蜂 。雇佣蜂在其当前处于的食物源附近进行局部搜索,若发现更优食物源,立刻更新所在位置。观察蜂则辅助雇佣蜂在食物源附近邻域搜索。当陷入局部最优情况时,雇佣蜂则转换为侦察蜂的角色,重新开始搜索。

2.4.8 入侵杂草算法

    入侵杂草算法(invasive weed optimization)是一种模拟自然界杂草繁殖过程的一种新型智能优化方法,具有易于理解、参数少、稳定性高等优点。在农耕活动中,人们总会或多或少地残留一些多余的资源,杂草利用这些资源不断繁衍后代并占据其他的土地,产生更多的种子,这些种子又会继续繁殖下去。另外,杂草根据“适者生存”的法则,对环境条件适应性好的杂草将会生存下来,反之则被淘汰。受该自然现象的启发,Mehrabian和Lucas于2016年提出了一种新的智能优化方法—入侵杂草算法 。
    在入侵杂草算法中,杂草代表路径规划问题的最优解,种群代表所有杂草的集合。在进化过程中,杂草通过不断繁殖产生种子,种子又陆陆续续发育成杂草,当种群中的杂草数量达到预先设定的最大种群规模时,则通过竞争法则来保存适应性好的杂草,淘汰适应性较差的 。

参考文献

[1] C. Badue, et al. Self-driving cars: A survey[J]. Expert Systems with Applications, 2021, 165.
[2] Dijkstra, E. W. A note on two problems in connexion with graphs[J]. Numerische Mathematik, 1959,1(1), 269–271.
[3] Hart, P. E., Nilsson, N. J., & Raphael, B. A formal basis for the heuristic determination of minimum cost paths[J]. IEEE Transactions on Systems Science and Cybernetics,1968, 4(2), 100–107.
[4] Bast, H., Delling, D., Goldberg, A., Müller-Hannemann, M., Pajor, T., Sanders, P., Wagner, D., & Werneck, R. F. Route planning in transportation networks[J]. arXiv preprint arXiv:1504.05140, 2015.
[5] David González, Joshué Pérez, Vicente Milanés. A Review of Motion Planning Techniques for Automated Vehicles[J]. IEEE Transactions on intelligent transportation systems, vol. 17, NO. 4, april 2016.
[6] Robert W. Floyd. Algorithm 97: Shortest path[J]. Communications of the ACM, 5(6):345, 1962.
[7] 高佳佳. 基于全局地图的移动机器人路径规划研究[D].西安工业大学,2019.DOI:10.27391/d.cnki.gxagu.2019.000168.
[8] Stentz. A. Optimal and efficient path planning for partially-known environnents[C]//Robotics and Automation, I994. Proceedings. 1994 IEEE International Conference on. IEEE,1994.
[9] Dave Ferguson,Anthony Stentz. Using interpolation to improve path planning: The Field D* algorithm[J]. Journal of Field Robotics,2006,23(2).
[10]肖国宝,严宜辉.一种基于改进Theta*的机器人路径规划算法[J].智能系统学报,2013,8(1):58-65.
[11]Kavraki L E,Svestka,Petr,Latombe J C,et al.Probabilistic roadmaps for path planning in high-dimensional configuration spaces[J]. IEEE Trans on Robotics & Automation, 1994,12(4):566-580.
[12]Lavalle S.Rapidly-exploring random trees : a new tool for path planning[J].Research Report,1998:293–308.
[13]杨岱川,文成林.基于蚁群和改进PRM算法的多目标点路径规划[J].杭州电子科技大学学报(自然科学版),2017(3)∶63-67.
[14]Belghith K,Kabanza F,Hartman L,et al.Anytime dynamic path-planning with flexible probabilistic roadmaps [C]//IEEE International Conference on Robotics and Automation (ICRA),Orlando,FL,15-22 May.2013,pp.2372-2377.
[15]莫栋成,刘国栋.改进的 RRT-Connect 双足机器人路径规划算法[J].计算机应用,2013,33(08):2289-2292.
[16]潘思宇,徐向荣.基于改进RRT*的移动机器人运动规划算法[J].山西大学学报(自然科学版),2017,40(2)∶244-254.
[17]Palmieri L, Koenig S, Kai O A. RRT-based nonholonomic motion planning using any-angle path biasing[C]/ IEEE International Conference on Robotics and Automation.ICRA,2016:2775-2781.
[18]Holland, John. Adaptation In Natural And Artificial Systems[J]. University of Michigan Press, 1975.
[19]Eberhart, R. C. and Kennedy, J. A new optimizer using particle swarm theory[J]. Proceedings of the Sixth International Symposium on Micromachine and Human Science, Nagoya, Japan. pp. 39-43, 1995.
[20]Kennedy, J. and Eberhart, R. C. Particle swarm optimization[J]. Proceedings of IEEE International Conference on Neural Networks, Piscataway, NJ. pp. 1942-1948, 1995.
[21]V. Garg, A. Shukla,R. Tiwari. AERPSO — An adaptive exploration robotic PSO based cooperative algorithm for multiple target searching[J]. Expert Systems with Applications, 2022, 209.
[22]Y. Wan, et al. An Accurate UAV 3-D Path Planning Method for Disaster Emergency Response Based on an Improved Multiobjective Swarm Intelligence Algorithm[J]. IEEE Trans Cybern, 2022.
[23]A. Ait-Saadi, et al. A novel hybrid Chaotic Aquila Optimization algorithm with Simulated Annealing for Unmanned Aerial Vehicles path planning[J]. Computers and Electrical Engineering, 2022, 104.
[24]Brian Paden,Michal Cáp,Sze Zheng Yong,Dmitry S. Yershov,Emilio Frazzoli. A Survey of Motion Planning and Control Techniques for Self-Driving Urban Vehicles.[J]. IEEE Trans. Intelligent Vehicles,2016,1(1).
[25]杜映峰,陈万米,范彬彬.群智能算法在路径规划中的研究及应用[J].电子测量技术,2016,39(11):65-70.DOI:10.19651/j.cnki.emt.2016.11.014.

相关文章:

自动驾驶路径规划概况

文章目录前言介绍1. 路径规划在自动驾驶系统架构中的位置2. 全局路径规划的分类2.1 基础图搜索算法2.1.1 Dijkstra算法2.1.2 双向搜索算法2.1.3 Floyd算法2.2 启发式算法2.2.1 A*算法2.2.2 D*算法2.3 基于概率采样的算法2.3.1 概率路线图(PRM)2.3.2 快速…...

某某银行行面试题目汇总--HashMap为什么要扩容

一、HashMap啥时候扩容,为什么扩容? HashMap的默认大小是16。在实际开发过程中,我们需要去存储的数据量往往是大于存储容器的默认大小的。所以,出现容量默认大小不能满足需求时,就需要扩容。而这个扩容的动作是由集合自…...

求职者:“我有五年测试经验”面试官: “不,你只是把一年的工作经验用了五年”

最近看到很多软件测试由于公司裁员而需要重新求职的。他们普遍具有4年甚至更长的工作经验。但求职结果往往都不太理想。 我在与部分软件测试求职者交谈的过程中发现,很多人的工作思路不清晰,技能不扎实,没有持续学习的习惯,但对于…...

Nacos配置中心

什么是配置中心所谓配置中心:在微服务的环境下,将项目需要的配置信息保存在配置中心,需要读取时直接从配置中心读取,方便配置管理的微服务工具我们可以将部分yml文件的内容保存在配置中心一个微服务项目有很多子模块,这些子模块可能在不同的服务器上,如果有一些统一的修改,我们…...

【故障】6、yum不可用

文章目录[toc]一、yum命令不能使用1)报错2)问题分析3)完全删除python及yum重新安装1、删除python2、删除yum3、下载Python依赖rpm包4、下载yum依赖rpm包5、强制安装python6、强制安装yum7、测试一、yum命令不能使用 1)报错 Ther…...

深度解读 | 数据资产管理面临诸多挑战,做好这5个措施是关键

日前,大数据技术标准推进委员会(中国通信标准化协会下(CCSA)的专业技术委员会,简称TC601)发布《数据资产管理实践白皮书》(6.0 版)(以下简称:报告&#xff09…...

双检测人脸防伪识别方法(活体检测+人脸识别+关键点检测+人像分割)

双检测人脸防伪识别=人脸检测+活体检测+人脸识别 1.人脸关键点+语义分割 使用mediapipe进行视频人脸关键点检测和人像分割: import time import cv2 import mediapipe as mp import numpy as npmp_drawing = mp.solutions.drawing_utils mp_drawing_styles = mp.solution…...

2023年3月 - 笔记

内容已复习 采用下划线标识内容已重写 并补充优化 新建文章并添加超链接 背景颜色 绿色 Python 2023年3月1日 Python 把列表转成元组 # 1、Python 把列表转成元组 使用tuple 即可 list_a [1, 2, 3, 4, 5, 6] list_b tuple(list_a) print(list_b)# 2、如果想把 元组转成列…...

浅谈Redisson实现分布式锁对原理

1.Redisson简介 Redis 是最流行的 NoSQL 数据库解决方案之一,而 Java 是世界上最流行(注意,我没有说“最好”)的编程语言之一。虽然两者看起来很自然地在一起“工作”,但是要知道,Redis 其实并没有对 Java…...

struts1.2升级struts2.5.30问题汇总

严重: 配置应用程序监听器[org.apache.struts2.tiles.StrutsTilesListener]错误java.lang.NoClassDefFoundError: org/apache/tiles/web/startup/AbstractTilesListenerat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader…...

电动汽车充放电的优化调度(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

《JeecgBoot系列》 如何设计表单实现“下拉组件二级联动“ ? 以省市二级联动为例

《JeecgBoot系列》 如何设计表单实现"下拉组件二级联动" ? 以省市二级联动为例 一、准备字典表 1.1 创建字典表 CREATE TABLE sys_link_table ( id int NULL, pid int NULL, name varchar(64) null );1.2 准备数据 idpidname1全国21浙江省32杭州市42宁波市51江苏…...

数学小课堂:数学的线索(从猜想到定理再到应用的整个过程)

文章目录 引言I 勾股定理1.1 勾三股四弦五1.2 数学和自然科学的三个本质差别1.3 总结引言 从猜想到定理再到应用的整个过程是数学发展和体系构建常常经历的步骤。 I 勾股定理 勾股定理: 直角三角形两条直角边的平方之和等于斜边的平方,这个定理在国外都被称为毕达哥拉斯定理…...

Collecting package metadata (current_repodata.json): failed

一、问题描述 安装anaconda之后,想创建环境,用了下面这段代码: conda create -n pytorch python3.7 conda创建环境报错了,报了如下这一堆: Collecting package metadata (current_repodata.json): failedUnavailab…...

几十亿工单表,查询优化案例

前言: 之前在某大型保险公司担任技术经理,负责优化话务系统模块,由于系统已经运行10年之久,尤其在话务系统中,沉积了几十亿的话务信息表,业务人员反馈,话务系统历史数据查询部分已经完全查询不动&#xff0…...

LabVIEW应用程序(EXE)无法正确动态调用插件

LabVIEW应用程序(EXE)无法正确动态调用插件正在构建一个应用程序并使用插件架构,以便可以动态调用将来创建的VI(插件)。应用程序在LabVIEW开发环境中可以正常运行,但不能作为可执行程序运行。运行可执行文件…...

到了35岁,软件测试职业发展之困惑如何解?

35岁,从工作时间看,工作超过10年,过了7年之痒,多数IT人都已经跳槽几次。 35岁,发展比较好的软件测试人,已经在管理岗位(测试经理甚至测试总监)或已经成为测试专家或测试架构师。发展…...

Google Guice 3:Bindings(1)

1. 序言 上一篇博客,《Google Guice 2:Mental Model》,讲述了Guice的建模思路:Guice is a map Guice官网认为:binding是一个对象,它对应Guice map中的一个entry,通过创建binding就可以向Guice …...

学习国家颁布的三部信息安全领域法律,理解当前工作中的信息安全合规要求

目录三部信息安全领域的法律文件三部法律的角色定位与联系三部法律的适用范围三部法律的主要履职部门三部法律条文章节结构中的共性三部法律中的一些次重点章节网络安全法的重点章节数据安全法的重点章节个人信息保护法的重点章节关于工业和信息化部行政执法项目清单三部信息安…...

LeetCode_Python_二分查找算法

二分查找算法要求二分查找过程如何更新左右边界实例type1:常规记录中间元素type2:取跳出循环后的左或右边界算法要求 顺序存储结构元素大小有序 二分查找过程 将元素排序;将中间位置记录的这个元素与目标元素比较; 2.1 如果相同&a…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...