路径规划-learning

参考视频:【全】无人驾驶系列知识入门到提高

本文旨在对视频内容规划控制方面做一些学习记录,希望帮助有需要的人学习提高。不对处,望指正。


文章概要:
1 什么是规划
规划的本质、如何解决规划问题
2 传统的规划方法
机器人学基础、经典算法
3 无人车的规划
Routing、Planning、Lattice Planner
4 Apollo如何求解规划问题
EM planner DP、QP求解

1. What is motion planning?

规划planning目前是无人车最困难也最有挑战的部分

1.1 本质:
  1. 求解: a r g m i n x f ( x ) argmin_xf(x) argminxf(x)
    获取 f ( x ) f(x) f(x)最小值就是规划; f f f可以理解为成本, x x x可理解为轨迹,追求最小成本就是规划的本质。
  2. 规划问题也可理解为搜索问题
    –【比如】Google:Quary词,返回最优结果
    –无人车:当前环境和当前状态,返回当前路径上的最优选择
  3. 定义一个好的规划(取决于目标函数)
    f ( x ) f(x) f(x)的最优解

运动规划 motion planning 的三个领域

  1. 机器人领域robot fileds:
    规划领域理解:生成轨迹,实现目标
    经典的实现算法:RRT、A*、D*、D* Lite
  2. 控制领域control theory:
    规划领域理解:动态系统理论,实现目标状态(从而完成planning)
    经典的实现算法:MPC、LQR
  3. AI:生成状态和Action的一个映射
    实现方法:Reinforcement learing(强化学习),Imitation learing(模仿学习)
1.2 如何解决一个规划问题motion planning

1 突破口:规划问题简化成一个简单问题:path finding problem

不关心速度、不关心走,周围环境固定

2 简化后的问题转变为:路径选择问题
算法演示网址:http://qiao.github.io/PathFinding.js/visual/
最好的path是怎么样的?路径最短的path
DFS、BFS方法查找最短路径有缺陷的,假设地图无限大,就有可能无法搜索到目标点,也就是说有可能无法找到路径
A* search:基于Dijkstra的改进算法。

【不离散化,对连续空间的求解比较困难,这是因为连续空间求解会涉及解析式,该式求解比较困难;所以,离散化网格处理是机器人通用的路径求解方式之一。高效的离散化,高效的网格化,是研究的重点】【A算法,面试时候,公司都会要求至少写出一个A思路】

3 无人车的规划和A* Search相差多远

1、无人车属于部分感知
2、无人车周边的障碍物属于动态的,而且该障碍物不确定性极高。
3、无人车的环境比较复杂,例如有交通规则、碰瓷
在这里插入图片描述
上面展示的A*算法,是知道了全局、周边环境以及终点位置,而无人车只是局部信息,也不知道终点具体在哪

4 A* 本身是一个Global Algorithm(百度地图)

  • global Routing
    将rounting路由信息传给无人车,从而进行一个细节的规划

5 部分感知情况解决方式
贪心算法:增量式搜索:把目前获取的状态信息,求解出最优解
在这里插入图片描述

D* 算法(A* 进行改进):对部分环境信息的一种search,典型运用是,Apollo登月小车;后面,D* 算法发展成更轻量级算法D* lite(D* lite算法,利用当前信息对全局信息进行一个修正)。

6 求解全局最优
难度不小,不一定要全局最优。
部分最优从而接近全局最优的理论

7 informative &non-informative search【有提供信息与无提供信息的搜索】,两种感知方式:Global & partial observed【全局与局部方式】
无人车: partial observed & informative search

8 至此,解决无人车搜索问题,可以尝试有如下方法:
(1)首先定义一个目标函数,目标函数并且结合了平滑性和目标cost
(2)使用通用的Search方法来最小化cost,从而找到一个最优解
(3)通过partial observed information 来做局部planning

9 对于无人车规划而言,还缺少一些东西
(1)处理动态障碍物,动态环境(如果将动态环境也作为静态处理,会导致很大问题)
(2)处理交通规则(涉及公共安全问题)
(3)实时计算(无人车要求的planing是在100ms-150ms之间;人的反应时间一般在300ms-500ms,酒驾时会达到1000ms):就是在有限时间内找到最优解。也是无人车开发,一般使用C++,而不是使用python,由于C++算法有更多的实时性优化。

10 无人车motion planning的定义
(1)safely安全性
(2)smoothly平滑性,保证乘客舒适性(体感)
(3)Achieve to destination到达目的地
(4)X,Y,Time:3D trajectory optimization problem(规划问题,也可视为三维轨迹优化问题)
(5)无人车硬件信息:定位设备、感知设备
(6)无人车软件信息:动态信息(感知、预测、定位)、静态信息(HD MAP:实时性的保证。如果静态信息不是使用HD MAP提供的,而是通过感知获取的,那么实时性大大降低)
(7)设计出一个合理的轨迹:路径path(运动路线设计)、速度speed(到达目的地速度设计)

2 传统的规划方法

2.1 基本planning方法

1 经典基于环境建模的方法
(1) RRT
(2) Lattice

2 现代无人车planning方法
(1) Darpa 无人车开发的方法
(2) Lattice in Frenet Frame (这里的Lattice和上面的是有区别的)
(3) Spiral polynomial 解决无人车平滑性所采用的一种思路

来自:A Review of Motion Planning Techniques for Automated Vehicles

3 质点模型
(1) 将物体看成一个质点(A*,BFS)
(2) 点与点不碰撞

4 刚体问题(无人车可视为一个刚体)
(1) BycicleModel 自行车(单车)模型 :无人车建模的一种基本方式
(2) XY Heading : 有方向的X、Y,可理解为矢量
(3) Collision: 碰撞条件比点与点的更严格;而且,碰撞检测更复杂

5 Planning限制条件
(1)避免碰撞
(2)边界阈值:理论人和车距离3-8米,但是由于车的传感器并没有人的感觉器官反应能力那么优秀,由于传感器数据传输有延迟这些,为了避免安全事故,车与人的距离应该更远,这个安全距离可视为阈值

6 连续空间问题解决方式
(1)离散化
(2)网格化

2.2 传统的机器人基础

1 PRM(Probabilistic RoadMap Planning)【非常实用的一个方法】
在这里插入图片描述

开始点s,目标点g,由于连续空间中计算能力比较弱,而且也不知道全局环境,所以该方法采用撒点方式,如图中紫色点,如果撒点和障碍物重合了,就把该点去掉;洒的点多了,自然可运行空间就出来了;但是撒的点不会过多,这是因为只是为了达到目标点g,而不是走每一个角落。

(1)连续空间离散化:1.随机撒点【全空间撒点】2.【撒在】Obstacle上的点就删除
(2)连接可行点,形成可行空间
(3)A*【获取运动轨迹】

2 RRT(incremental version of PRM:上面的PRM方法的改进版本)
在这里插入图片描述
增量式解析:图中点T想在空白区域行走,先撒两个点
(1)使用增量搜索方式进行
(2)找附近可行点的最优点:1.f(x)最小,成本cost最小 2.走过程不能有阻碍,如路面不平,尽量使得这个cost小
(3)运动过程中,还有可能碰到障碍物
在这里插入图片描述
(4)撒点搜索距离不能太远(上图就是撒点太远,导致碰到障碍物)
撒点需要一步一步移动
在这里插入图片描述

这里撒点移动路线属于折线,对于质点移动还行;但是对于刚体移动来说,属于曲率无穷大,是不行的;
此外,这种撒点方式还不能解决动态障碍物问题

3 Lattice方法
在这里插入图片描述
(1)改进了RRT的折线问题
(2)目的是给出path的平滑曲线
(3)采用的思路是,网格化(将搜索空间替换成一个一个小格子;每个采样格都是用曲线连接。如上左图中每个网格内,连接曲线都是平滑的)
(4)该方法属于指数级别的搜索算法(NP-Hard):是该算法的一个缺点
在这里插入图片描述

指数级别的理解:一开始无人车所处的点有5根曲线,当达预测到下一个点时候,每个预测点又有多根曲线,这就是指数级别的增长了。
改进该缺点:改进了曲线搜索方式
比如,第二级中的曲线到达的点相隔很近,那么,没有必要再取这么多点的,把相近的点合并一个处理,加上撒点范围的约束(道路两侧约束),就可以避免了指数级的搜索空间增长。最后,形成一种点线连接的搜索方式。
后面采用的点线搜索方式降维,这是由于使用了动态规划

4 DP 动态规划
(1)减少了搜索空间:通过复用已有结果(搜索过的路径空间保存下来)
(2)Lattice DP曲线的平滑度情况: 曲率连续、曲率导数不一定连续(联系到无人车,曲率不连续,有可能出现上一瞬间打方向盘90°,下一瞬间打180°,明显不符合驾驶习惯的)

5 QP 二次规划
解决4里面Lattice DP曲线曲率导数不连续情况。
(1)凸优化问题最优化求解
(2)公式表达:
m i n i m i z e 1 2 x T Q X + c T X s u b j e c t : E x = d , F x ≤ m minimize \frac{1}{2}x^TQX+c^TX \\ subject: Ex = d,Fx≤m minimize21xTQX+cTXsubject:Ex=d,Fxm
(3)QP如何找到平滑曲线
性质:在凸优化中的凸空间问题,用QP有最优解
m i n ∣ f ′ ∣ 2 m i n ∣ f ′ ′ ∣ 2 m i n ∣ f ′ ′ ′ ∣ 2 min|f'|^2 \\ min|f''|^2 \\ min|f'''|^2 minf2minf′′2minf′′′2
对应的导数都是最优的,此时可以保证平滑曲线存在。
用高维导数的连续来保证平滑
其他的平滑曲线方法:贝塞尔曲线(多阶多项式都平滑,从而保证曲线平滑)、样条插值方法

6 刚体模型
在这里插入图片描述
建模时候,后轮轴线中点设置为车的原点(0,0)。前轮轴中心设置为前轮中心的拐点。
1 前轮转向和Heading的关系
(1)车轮是沿着切线方向行驶
(2)前后轮是同一个旋转中心
(3)左右轮的结构相同(排除差速情况):假设前后轮绕转同一个中心旋转,那么会是一个环形状,由于前后轮旋转半径不一致导致的

2 Bicycle Model
在这里插入图片描述
将左右轮简化,以中轴轴线为中心建立车轮关系,得到上图的单车模型;w表示的是前轮转角
曲率公式: k a p p a = 1 R = t a n ( w ) L kappa = \frac{1}{R}=\frac{tan(w)}{L} kappa=R1=Ltan(w)

3 无人车的规划

无人车planning定义:A点到B点,构建一个车辆运动轨迹,结合 HD MAP,Localization和Prediction
输入:结合模块的信息
输出:可行性轨迹,有一系列点组成(点使用X,Y,time来表示)
tip:注意要轨迹要避免碰撞,体感舒适

两个层面:

  • 导航层面:获取开始点到终点的基本路线;可视为一个粗略的planning
  • 运动轨迹层面:给出在路线前进时,运动的细节轨迹;可视为一个细节的或者多层面的planning
3.1 Routing

Routing定义:导航一条从A到B的全局路径
1 输入:地图(路网信息、交通状态)、当前位置、目的地(乘客决定)
2 输出:可行驶道路的连接线
3 搜索:地图数据(高精地图)转化成图网络

节点表示道路:node的划分可以自定义的,并不是一条道就是node,比如靠左靠右划分两个node也是可以的
边表示道路连接:里面道路权重是不一样的,左右转不一样,拥堵情况也会影响权重,左转的cost比较高原因是,其碰撞风险更高,左转还需要等红绿灯。
在这里插入图片描述

4 经典算法A*
最经典的路径查找算法
F ( n ) = G ( n ) + H ( n ) F(n)=G(n)+H(n) F(n)=G(n)+H(n)
F(n)表示道路的routing的总cost;G(n)表示起始点到候选点的cost;H(n)表示候选点通过启发函数得到的目标点cost
在这里插入图片描述
A算法的重点:启发函数怎么得到

每个格子,中间值就是F值,上两个值就是G和H的值,亮橙色为起始点,启发式搜索一圈,也就是围绕这个点搜索一圈每格子的总cost,发现是其下面的cost40为最小,则移动到下面的格子,循环往复达到绿色格子上。

5 真实地图中的应用
在这里插入图片描述
左转cost最大,结合上图来看,红色表示左转,蓝绿色表示直行,淡蓝色表示右转。
在这里插入图片描述
比对发现,右转的总cost最小,那么选择右转:导航地图路线搜索的基本思路。
在这里插入图片描述
(1)planning可理解为高精度、低级别的一个search,称为trajectory planning(轨迹生成,轨迹由点组成,该点带有相对当前的时间以及速度;提供速度的目的是,为了方便后面做跟踪)

(2)轨迹点:X、Y、time、Velocity(道路坐标系中的坐标XY、相对当前的时间、速度)
实际情况,速度是存在抖动情况的,也就是速度平滑性不能保证的,所以不能简单利用轨迹点和时间来求取速度;这里使用了速度信息,然后让control来跟踪。并不是一定是给定速度,而是,给出速度,可以更好让后续模块跟踪轨迹点

(3)规划的约束条件
1.Collision 碰撞:躲避任何障碍物
2.Comfortable 舒适性:路径点必须相对平滑、速度也要平滑
3.运动学约束:高速转弯(有侧翻可能)、掉头曲率角度
4.illegal 合法:符合交通法规、符合人类约定俗成规则

(4)cost function成本函数

  • 真实情况下有多条可行轨迹
    在这里插入图片描述

  • cost由许多条件组成
    1.道路偏移中心线距离(越偏离,cost越大)
    2.碰撞或者靠得太近(对应cost越大)
    3.速度太快,超速(对应cost越大)
    4.curvature曲率太大,打方向盘太急(对应cost越大)

  • 不同场景下我们可能有多个不同的cost function
    1.高速场景(速度慢是一个大cost)
    2.停车场(速度慢是一个小cost)
    3.不同车辆(卡车和私家车的cost不一样)

(5)Frenet坐标系(车道坐标系)

笛卡尔坐标系(世界坐标系)
局限:
1.xy坐标无法知道无人车开了多远
2.不知道有没有偏离中心线
3.也不知道道路在哪

更好的坐标系:Frenet
在这里插入图片描述
注意和Track坐标系的区别:
1.L方向不同(朝右)
2.Track是基于Road级别
3.Frenet是基于Lane级别

S表示走了多远,L表示距离车道有多偏。

(6)Path VS Speed 解耦
轨迹生成和速度生成需要解耦;只有解耦,才能使得每个部分的形成凸问题,只有凸问题才能使用QP来处理;当混合一起,就不是凸问题,求解空间会非常丰富

Path planning:
生成可行轨迹路径
Cost:1.path平滑性2.安全性3.道路中心偏移距离
选择出成本最低的一个path planning

speed planning:
每个path上选择一系列速度(每个点都有速度),生成速度轨迹

(7)Path Planning
在这里插入图片描述
1.首先生成道路网格(GridMap网格地图)
2.每个网格单元中随机采样(撒点)
3.每个网格选一个点
4.组成多条候选path

Cost Function对这些轨迹进行评估,需要考虑:
1.找到一个成本最低的一个
2.中心线距离 l ∗ a 0 l*a_0 la0
3.障碍物距离 d ∗ a 1 d*a_1 da1
4.速度变化率 a c c ∗ a 2 acc*a_2 acca2
5.曲率 k a p p a ∗ a 3 kappa*a_3 kappaa3 为什么是kappa?舒适性原因。如果曲率不平滑,必然会有打方向盘很急,乘客难受,也有翻车可能性。
F ( x ) = l ∗ a 0 + d ∗ a 1 + a c c ∗ a 2 + k a p p a ∗ a 3 + a 4 F(x)=l* a_0+d* a_1+acc* a_2+kappa* a_3+a_4 F(x)=la0+da1+acca2+kappaa3+a4
cost线性加权,如果在参数可调情况下,就可以达到局部最优

(8)Speed planning
ST图
在这里插入图片描述

ST图中的S并不是指道路S,而是指给定path的S
ST图将三维XY、time空间,降维到ST的二维空间,其中path锁定了XY,这里理解图中的S,这样可以使得无人车规划求解过程中,有了数学工具,如QP,进行求解。
S表示Path上纵向距离,T表示运动时间

(9)如何规划ST轨迹
在这里插入图片描述
1.连续空间离散化(grid map网格地图)
2.每个单元格速度保持不变(每个单元格的速度线,在图中不能是曲线连接,只能使用折线连接)
3.把障碍物投影进来(投影到ST图)
在这里插入图片描述
挡住给定的path轨迹的部分画进ST图中,因此必须要有良好的预测轨迹。t0,t1时刻障碍物会在我们的path轨迹中挡柱s0,s1部分。
4.速度曲线不能碰撞这个区域
在这里插入图片描述
5.凸优化求解得到最优的速度曲线
在这里插入图片描述
search搜索
----限制条件:速度限制、距离限制(安全距离)、车辆动力学限制(车的加速度、刹车性能)

(10)如何优化?折线不平滑,需要优化
在这里插入图片描述
1.对不平滑的速度线进行优化
使用QP(二次规划)进行优化:通过QP约束速度,约束加速度,约束加速度导数,使得平滑非线性曲线和平滑的加速度曲线,达到一个拟合程度;拟合程度多少,由QP约束条件来确定
2.这个方法很大程度依赖于连续空间离散化
3.网格、单元格方法
不平滑,解决:Quadratic Programming 二次规划、将平滑的非线性曲线与这些线段进行拟合、有现成工具qpOASES

(11)轨迹规划
遇到一辆很慢的车,如何超车
在这里插入图片描述
1 生成很多轨迹线(撒点采样)
在这里插入图片描述
2 cost function对其进行评估,选择cost最小的一条(比如安全距离太小导致cost过大,直接去掉)
3 生成一个ST图表述速度规划
4 生成多条速度曲线(撒点)
在这里插入图片描述
5 使用优化工具对多条速度采样进行最优化求解(cost成本函数,constraints约束):优化,就是保证每个点的加速度最小,加速度平方最小,加速度导数平方也最小
让整个路线和速度曲线变得平滑
在这里插入图片描述
6 最后将每个轨迹点(跟自定义的轨迹点resolution)的path、speed合并得到最终结果
在这里插入图片描述
红色表示速度较大,青蓝色表示速度低
规划思路是,path和speed是分开规划。

3.2 Lattice planner

规划思路是,path和speed合并一起规划
1 SL轨迹和ST轨迹
在这里插入图片描述

2 Lattice将两个图合并处理,同时进行path和speed的采样
3 实例:一个切车场景
在这里插入图片描述
1.先对整个候选轨迹进行采样
在这里插入图片描述
红色线表示红车的预测轨迹范围,短的表示速度慢,轨迹分布情况,长的表示速度快,轨迹分布情况
2.设计一个合理的cost
3.选择一个cost最小的轨迹
4.条件检查和碰撞检查
在这里插入图片描述
左侧路线有急刹情况;右侧有碰撞情况
5.检查失败,则返回继续找cost次优选项
在这里插入图片描述
6.成功输出结果
在这里插入图片描述
Lattice因为其采样计算量大,为了优化其采样效果,需要先进行场景化以简化计算量:Lattice的一个弊端,计算量很大,如果预测5s到8秒时,计算量指数爆炸增长。

4 分场景使用Lattice:Cruising,Following and Stopping:对S方向进行优化【特定场景使用lattice】
lattice这种规划方式在2006年时候使用后,因为计算量大而逐渐退出无人车领域;但是在物流小车比较适用,由于物流小车的速度没有那么快,采样量比较小,这种比较适合lattice

下面三种场景,减少了lattice的采样点,从而减低计算量
1.Cruising:定速行驶
v=vc,a=0
这种状态,不需要采样
2.Following:跟车行驶
在这里插入图片描述

  • 需要对s和t同时采样
  • 规定时间t跟在某个车的后面【减低可选点范围】
  • 保证安全距离
  • 速度 v = v 1 v=v_1 v=v1
  • 加速度 a = a 1 a=a_1 a=a1

3.Stopping:停止
在这里插入图片描述

  • 对车辆在哪里停下来进行采样
  • s和t同时采样
  • 加速度a=0
  • 速度v=0

5 Lattice对L方向进行优化
在这里插入图片描述需要保证车辆以一个稳定的状态进行终点状态,比如与本车道线平齐
H ′ = 0 , H ′ ′ = 0 H'=0,H''=0 H=0,H′′=0:横向的 速度、加速度都为0(这是lattice对L方向优化)
S ’ = 0 , S ’’ = 0 S’=0,S’’=0 S=0,S’’=0纵向的 速度、加速度都为0

6 合并ST和SL坐标
1.转化到Cartesian坐标系
2.生成X Y time 三维轨迹
3.两个坐标系都有S;找同一个S对应的L和T
在这里插入图片描述
ST曲线也是先简化为凸函数

凸问题感性认识:以前面有车掉头为例,无人车有两种情况,一种是加速赶在掉头车前通过,另外一种情况,等待掉头完毕再通过,这时候求解path规划不是凸问题;假设,我们告诉无人车只能超速通过,这时候,path规划求解就是一个凸问题求解

3.3 上述两种无人车规划方式小结
  1. path和speed分开规划【两者交替进行】
  2. path和speed合并规划【lattice方式】
  3. 二次规划,主要是对非平滑曲线进行平滑处理;二次规划QP可以处理任何凸优化问题。超车时,如果最优的cost还是很大,系统会不进行超车操作,这是决策层决定方案的执行与否的;也就是说,方案的cost出来了,最后是否实施,是由决策层决定的;并不是最优了就一定会执行

4 Apollo求解规划问题

Apollo采用了上述两种方式,但主要是以交替方式为主

4.1 Constrains约束

1.soft contraints&hard constraints(软、硬约束)
2.在这里插入图片描述
3.constraints:
(1)交通规则:Hard constraints
(2)用QP或者Hard code 方式精细处理(这些约束,都会放到二次规划QP求解过程中)
4.Decision
(1)决策:soft constraints
(2)用DP的方式来处理一些人为设置的软约束(例如不往障碍物右侧撒点,就不会往右边走了)
5.最优轨迹
通过二次规划QP生成最优轨迹

4.2 如何换道

1.无人车想要换道怎么办
在这里插入图片描述
2.换道考虑很多安全性问题
-给出两种轨迹结果,让后续模块判断【一种换道轨迹,一种不换道轨迹】
3.Reference Line Decider
(1)判断换道时,是否安全
(2)拿到信息比planning丰富【例如,观测后方是否有来车,目的保证安全】
(3)做很多准备工作【例如决定换道时,提供打方灯的指令】

4.3 EM Planner(Apollo)

1.EM,期待最大化
在这里插入图片描述
EM思路,单个维度求解最优解,然后叠加所有维度的最优解,得到的最优解(和一开始使用多维度计算最优解得到结果差不多)

2.上图基本流程:
(1)首先生成一条Optimal Path(理想path)
(2)再生成一条当前(理想)path情况下的optimal speed
(3)再将目前的speed返回给path进行一次tuning
(4)将tuning的path返回给speed做优化
(5)最后迭代到最优解
(6)贪心算法:Local Optimum
3.Apollo规划基本框架图
在这里插入图片描述
4.框架总结:
(1)三个关键步骤:
目标函数:线性加权的cost
限制条件:交通规则、碰撞条件(无穷大)、动态特性(车辆能力)
优化求解:如何计算最优解(DP+QP)
在这里插入图片描述
DP:不要求问题是凸的;QP:是一种凸优化
(2)DP、QP求解

  1. path QP:

问题抽象:根据当前驾驶信息和道路状况建立平滑的SL坐标轨迹
模型建立:合理优化目标函数和约束条件
优化方法:二次优化求解带约束的二次规划问题
在这里插入图片描述

  1. speed DP

问题抽象:使用ST图
模型建立:cost函数(障碍物、曲率、无人车状态)
优化方法DP最优求解
在这里插入图片描述
s’=v 速度
s’’=acc 加速度
s’’’=jerk 踩油门或刹车的速度

  1. 计算提速思路

(1)SL坐标系离散化处理:粗分辨率使用时机、细分辨率使用时机(障碍物复杂,分辨率低一些;不复杂时分辨率则大一些)
(2)GPU并行计算:同时计算多条reference lane(参考路线)的结果
(3)QP Hotstart:1.QP的性质(QP的原理是泰勒展开)2.两帧之间差距不大(上一帧结果启发下一帧开始也是可以的)
(4)精通C++:利用编码思路来提升处理速度

5 总结

  • 规划的定义:规划本质就是一个搜索过程。
  • 机器人学的基本规划思路:PRM(撒点)->RRT(增量式撒点)->lattice(平滑折线)->动态规划DP(降维)->二次规划QP(平滑曲线)
  • 无人车规划特点:先用path求解,再用speed规划【path和speed交替求解】;path和speed结合求解
  • Apollo中EM Planner:path、speed规划中,添加了EM(期待最大化)思想,求解当前维度下的最优,循环迭代找到更优的结果,这样子防止出现局部最优的带来的限制。目的获取全局最优结果

1)预测模块在规划的作用体现就是,使得障碍物可以被绘制到ST图中
2)轨迹规划流程:网格化、撒点、利用搜索找到折线轨迹,再利用QP进行平滑处理
3)撒点有效性取决于撒点密度,撒点密度取决于计算效率
4)撒点不一定每个网格都要有点,有些空格也可以是没有点,其为了减低采样频率。这些方式,应该根据实际项目来思考的,没有孰优孰劣一概而定的。

思考:
Everything is trade-off?平衡,并不是找某个最优点或者速度最快的解,而是在效率和结果上取一个平衡的解
No model is perfect,but useful.无人车很难找到一个最优的解,每个模型都有其优势和劣势;充分利用优势和劣势,逐步找到当前环境下的最优解


加油

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器⼈python路径规划_基于Q-learning的机器⼈路径规划系统 (matlab) 0 引⾔ Q-Learning算法是由Watkins于1989年在其博⼠论⽂中提出,是强化学习发展的⾥程碑,也是⽬前应⽤最为⼴泛的强化学习算法。Q- Learning⽬前主要应⽤于动态系统、机器⼈控制、⼯⼚中学习最优操作⼯序以及学习棋类对弈等领域。 1 项⽬概述 Q学习在机器⼈路径规划领域有较为⼴泛的应⽤,由于其只需要与环境进⾏交互,且仅需感知当前状态和环境即可对下⼀步动作进⾏决策。 本研究以 MATLAB为基础,设计基于Q学习的最短路径规划算法,并考虑智能体的斜 向运动,更加符合实际情况。同时使⽤DQN⽹络对Q 值更新进⾏⼀定的优 化,使得Q值表能够更加符合实际应⽤。 本次研究的具体步骤如下: 设计⼀个有障碍物的地图,⽤户可以修改障碍物布局,可以指定起点和终点; 使⽤MATLAB编程实现Q-learning算法,⽤于机器⼈规划最短路径,学习算法参数可以由⽤户设置; 使⽤⽤可视化界⾯演⽰Q值变化过程及最短路径探测过程。 2 Q-learning算法思想 Q-Learning算法是⼀种off-policy的强化学习算法,⼀种典型的与模型⽆关的算法算法通过每⼀步进⾏的价值来进⾏下⼀步的动作。基于 QLearning算法智能体可以在不知道整体环境的情况下,仅通过当前状态对下⼀步做出判断。 Q-Learning是强化学习算法中value-based的算法,Q是指在某⼀时刻的某⼀状态下采取某⼀动作期望获得的收益。环境会根据智能体的动 作反馈相 应的回报,所以算法的主要思想就是将状态与动作构建成⼀张Q值表,然后根据Q值来选取能够获得最⼤的收益的动作。 3 算法步骤 (⼀)Q-学习步骤 初始化Q值表。构造⼀个n⾏n列(n为状态数)的 Q值表,并将表中的所有值初始化为零。 基于当前Q值表选取下⼀个动作a。初始状态时,Q值 均为零,智能体可有很⼤的选择空间,并随机选择下⼀步动作。随着迭代次数增 加,Q值表不断更新,智能体 将会选择回报最⼤的动作。 计算动作回报。采⽤动作a后,根据当前状态和奖励,使⽤Bellman ⽅程更新上⼀个状态的Q(s, t)。 NewQ(s,a) = (1 α)Q(s,a) + α(R(s,a) + γmaxQ (s ,a )) 其中, NewQ(s,a)——上⼀个状态s和动作a的新Q值 Q(s,a)——当前状态s和动作a的Q值 R(s,a)——当前状态s和动作a的奖励r maxQ (s ,a )——新的状态下所有动作中最⼤的Q值 重复步骤3,直到迭代结束,得到最终的Q值表。 根据Q值表选择最佳路径。 (⼆)算法改进 避免局部最优 Q-learning本质上是贪⼼算法。如果每次都取预期奖励最⾼的⾏为去 做,那么在训练过程中可能⽆法探索其他可能的⾏为,甚⾄会进 ⼊"局部 最优",⽆法完成游戏。所以,设置系数,使得智能体有⼀定的概率采取 最优⾏为,也有⼀定概率随即采取所有可采取的⾏动。 将⾛过的路径纳⼊ 记忆库,避免⼩范围内的循环。 增加斜向运动 将斜向运动的奖励值设置为 2/ 2 ,取近似值0.707,可以避免出现如机器 ⼈先向左上⽅移动再向左下⽅移动⽽不选择直接向左移动两格 的情况。设 置为此值是根据地图的两格之间的相对距离确定的。 4 MATLAB实现代码 %% 基于Q-learning算法的机器⼈路径规划系统 clear %% ⾸先创造⼀个机器⼈运动的环境 % n是该运动的运动环境的矩阵environment(n,n)的⾏列⼤⼩ n = 20; % 新建⼀个全为1的n*n维environment矩阵 environment = ones(n,n); %下⾯设置环境中的障碍物,将其在矩阵中标为值-100(可⾃⾏设置障碍物) environment(2,2:5)=-100; environment(5,3:5)=-100; environment(4,11:15)=-100; environment(2,13:17)=-100; environment(7,14:18)=-100; environment(3:10,19)=-100; environment(15:18,19)=-100; environment(3:10,19)=-100; environment(3:10,7)=-100; environment(9:19,2)=-100; environment(15:17,7)=-100; environment(10,3:7)=-100; environment(13,5:8)=-100; environment(6:8,4)=-100; environment(13:18,4)=-100; environment(6
Q-learning是一种基于强化学习路径规划方法,它可以用于解决三维路径规划问题。 三维路径规划是指在三维空间中,找到从起点到终点的最短路径,同时避开障碍物。Q-learning通过学习最优策略来实现路径规划。 在Q-learning中,我们使用一个Q表来存储每个状态和动作的Q值。每个状态表示当前机器人所处的位置,而动作表示机器人可以采取的行动,如向前移动、向后移动、向左转、向右转等。Q值表示在某个状态下采取某个动作的收益或者预期回报。 Q-learning学习过程包括以下步骤: 1. 初始化Q表:创建一个Q表,并将所有Q值初始化为0或者一个小的随机数。 2. 状态转移:根据当前状态选择一个动作,并执行该动作,到达下一个状态。 3. 更新Q值:根据当前状态、执行的动作、下一个状态以及获得的奖励,更新Q值。更新公式如下:Q(s,a) = (1-α)*Q(s,a) + α*(R + γ*maxQ(s',a')),其中α是学习率,γ是折扣因子。 4. 重复执行2和3步骤,直到到达目标状态。 5. 迭代:反复执行2、3和4步骤,直到Q值收敛。 Q-learning能够根据奖励信号来学习最优策略,即在每个状态下选择具有最高Q值的动作。这样,Q-learning可以找到最短路径,并且能够避开障碍物。 在三维路径规划中,Q-learning可以应用于无人机飞行、机器人导航等方面。通过Q-learning,我们可以让机器人以自主的方式规划路径,提高路径规划的效率和鲁棒性。同时,Q-learning也可以在复杂的环境中找到最优策略,实现更多应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值