自动驾驶中的路径规划和决策问题初探

自动驾驶中的路径规划和决策问题初探_58汽车

自动驾驶是当前热门的话题,其中路径规划和决策规划是关键领域之一。根据《Apollo自动驾驶工程师技能图谱》,路径规划属于感知、决策、执行互联的关键领域之一,而决策规划则是路径规划中的重要环节。本文将从全局规划、局部规划、运动控制等方面探讨路径规划和决策规划的问题。#1总论路径规划是整个自动驾驶系统中的核心部分,它需要考虑到很多因素,如目的地、交通路况、传感器信息等。在全局规划方面,我们需要寻找到一种长期的规划方式,更关心高层的信息,不太关心很细枝末节上的决策。目前常见的全局规划算法有Dijkstra、A*、MDP等。而在局部规划方面,由于全局规划无法考虑很多局部信息的动态变化,因此需要采用增量方法进行路径规划。常见的局部规划算法包括PRM、RRT和Lattice等。此外,还需要对路径进行曲线平滑和角度平滑处理,以保证舒适性。#2全局规划全局规划需要我们知道目的地,是一种长期的规划方式,更关心高层的信息。解决全局优化常见的代表算法有Dijkstra、A*、MDP等。其中Dijkstra是一种广度优先搜索算法,因为每个节点都要探寻,所以搜索会慢;而A*及其各种衍生算法则是一种启发式算法,搜索过程会朝着目的点前进,避免了一些无谓的搜索;MDP是强化学习的思路,构建环境和奖励系统,让运动对象吃亏上当后,学会精致利己,沿着目标点前进。#3局部规划局部规划主要是因为全局规划没有考虑很多局部信息的动态变化而产生的。原因有如下几个方面:a.局部信息有时候受限于传感器,运动物体在局部看到感知到的信息有限;b.运动对象还受制于交通管控,它必须遵守交通规则。而交通路况是变化的,这刻绿灯,下一刻就可能是红灯,今天是通畅的,明天可能就封路改道;c.由于其他交通参与者的行为会干扰到运动对象的路径。这类情况下往往的解决算法思路是增量方法,就是走一步看一步,不断更新目前的状态信息,做出新的决策。这有别于全局优化,多考虑了时间这个重要的维度信息,是一种偏实时的路径规划。常见的局部规划算法包括PRM、RRT和Lattice等。PRM和RRT是基于树的方法,在空间内随机撒点,然后通过树生成的方式前进,最终达到目的地。这种方式路径不一定最优,但是可以快速求解并轻松避开障碍物。Lattice主要应用栅格化处理方法(高效的经纬度和栅格对应可以用Geohash),通过网格离散化搜索空间,然后映射到frenet空间,利用cost函数避障和寻优。针对搜索困难,采用DP(动态规划)的原理避免重复计算。#4运动控制运动控制是指对已经确定好的路径进行平滑处理,使其更加符合人的驾驶习惯和舒适度要求。常见的算法包括样条曲线、插值方法和Bspline等。Bspline可能会碰到边缘,插值的话容易产生龙格现象(过拟合,震荡厉害)。横纵向解耦的方法决策体现在:路径的投影体现了避障的决策(二维空间交互),而速度的投影体现了超车或者让行的决策(时间维度交互)。#5结尾总之,自动驾驶技术的发展离不开对路径规划和决策规划问题的深入研究和探索。未来随着技术的不断进步和发展,相信这些问题也会得到更好的解决和应用。

摄影|Siemens

自动驾驶是一门综合性复杂的技术,目前这块比较火热,趁此机会我了解了一下决策规划这块领域,看了b站樊昊阳大佬的《百度自动驾驶技术系列课程》后,整理了一下心得。

#1总论

路径规划是属于自动驾驶感知、决策、执行,互联几个关键领域里的决策环节,根据《Apollo自动驾驶工程师技能图谱》中阐述的技能栈也可以看出决策的重要性。如果芯片被看作自动驾驶的大脑,那么决策好坏就决定这是一颗莱莎·徒利的大脑,还是一颗奥莲娜的大脑。

#2全局规划

路径规划总体有3个层面:

全局规划,全局规划需要我们知道目的地,是一种长期的规划,更关心高层的信息,不太关心很细枝末节上的决策。全局规划的本质是一种搜索,在优化领域就是给定约束下的最小化问题。

解决全局优化常见的代表算法有:Dijkstra、A*、MDP。

Dijkstra是一种广度优先搜索,因为每个节点都要探寻,所以搜索会慢;

而A*及其各种衍生算法是一种启发式算法,搜索过程会朝着目的点前进,避免了一些无谓的搜索;

MDP是强化学习的思路,构建环境和奖励系统,让运动对象吃亏上当后,学会精致利己,沿着目标点前进。

#3局部规划

局部规划,之所以有局部规划,是因为全局规划没有考虑很多局部信息的动态变化。原因有如下几个方面:

a.局部信息有时候受限于传感器,运动物体在局部看到感知到的信息有限;

b.运动对象还受制于交通管控,它必须遵守交通规则。而交通路况是变化的,这刻绿灯,下一刻就可能是红灯,今天是通畅的,明天可能就封路改道;

c.由于其他交通参与者的行为会干扰到运动对象的路径;

这类情况下往往的解决算法思路是增量方法,就是走一步看一步,不断更新目前的状态信息,做出新的决策。这有别于全局优化,多考虑了时间这个重要的维度信息,是一种偏实时的路径规划。

算法层面代表的就是PRM、RRT和Lattice,他们都是基于采样方法。PRM和RRT是基于树的方法,在空间内随机撒点,然后通过树生成的方式前进,最终达到目的地,这种方式路径不一定最优,但是可以快速求解并轻松避开障碍物。

Lattice主要应用栅格化处理方法(高效的经纬度和栅格对应可以用Geohash),通过网格离散化搜索空间,然后映射到frenet空间,利用cost函数避障和寻优,针对搜索困难,采用DP(动态规划)的原理避免重复计算。

#4运动控制

运动控制,局部规划的路线,如果不进行平滑处理,那么是一条条线段,但是线段的曲率可能不连续,那么运动对象在速度、加速度上、锐度就可能突变,这样的路径是不能保证舒适性的,所以还需要进一步进行曲线平滑、角度平滑处理。

算法层面主要是样条曲线、插值方法、Bspline

Bspline可能会碰到边缘,插值的话容易产生龙格现象(过拟合,震荡厉害)。

横纵向解耦的方法决策体现在:路径的投影体现了避障的决策(二维空间交互),而速度的投影体现了超车或者让行的决策(时间维度交互)。

#5结尾

但是这还远远不够,运动物体在以上过程都被抽象成一个质点,然而运动物体一般是刚体,前后轮的运动特性不一样,还需要考虑运动物体的坐标系,分开建模。

感兴趣,可以关注公众号elegantcoin,接受更多消息

附:自动驾驶名单(欢迎添加)

感兴趣,可以关注公众号elegantcoin,接受更多消息

以上内容由58汽车提供。如有任何买车、用车、养车、玩车相关问题,欢迎在下方表单填写您的信息,我们将第一时间与您联系,为您提供快捷、实用、全面的解决方案。

原创文章,作者:58汽车,如若转载,请注明出处:https://car.58.com/7197373/