Java教程

自动驾驶汽车的规划与控制

本文主要是介绍自动驾驶汽车的规划与控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 概念与意义

自动驾驶汽车作为一个复杂的软硬件结合系统,其安全,可靠地运行需要车载硬件,传感器集成、感知、预测以及规划控制等多个模块的协同配合工作。感知预测和规划控制的紧密配合非常重要。这里的规划与控制(Planning&.Control)在广义上可以划分成自动驾驶汽车路由寻径(Routing),行为决策(Behavioral Decision),运动规划(Motion Planning),以及控制(Control)等几个部分。

2. 路径规划

路由寻径、行为决策,运动规划三个部分又可统称为路径规划,路径规划部分承接上层感知预测结果,从功能上可分为全局路径规划和局部路径规划。

2.1. 路由寻径介绍

全局路径规划对应的是路由寻径部分,其作用在简单意义上可以理解为实现自动驾驶汽车软件系统内部的导航功能,即在宏观层面上指导自动驾驶汽车软件系统的规划控制模块按照什么样的道路行驶,从而实现从起点到达终点。值得注意的是,这里的路由寻径虽然在一定程度上类似传统的导航,但其细节上紧密依赖于专门为自动驾驶汽车导航绘制的高精地图,和传统的导航有本质不同。它根据起点和终点信息,采用路径搜索算法找出一条最优(时间最短,距离最短等)路径。这种规划可以是行驶前离线的一次性进行,也可以在行驶中不断重规划。例如,在国家自然科学基金委组织举办的“中国智能车未来挑战赛”中,比赛组织方赛前提供比赛的路网定义文件(RNDF),各比赛队伍可以根据RNDF 规划出全局期望路径。

作为整体自动驾驶汽车控制规划系统的最上游模块,路由寻径模块的输出严格依赖自动驾驶汽车高精地图(HD-Map)的绘制。在高精地图定义绘制的路网(Road Graph)的道路(Road)划分的基础上,以及在一定的最优策略定义下,路由寻径模块需要解决的问题是计算出一个从起点到终点的最佳道路行驶序列。可以把自动驾驶汽车在高精地图的 Road 级别寻径问题,抽象成一个在带权有向图上的最短路径搜索问题。路由寻径(Routing)模块首先会基于 Road 级别的高精地图,在一定范围内所有可能经过的 Road 上进行分散“撒点”,称这些点为 Road Point。这些点代表了对自动驾驶汽车可能经过的 Road 上的位置的抽样。这些点与点之间,由带权有向的边进行连接。Road Point 之间连接的权,代表了自动驾驶汽车从一个点行驶到另一个点的潜在代价(Cost)。在这样的带权有向图的问题抽象下,路由寻径问题常用的方法主要包括 A"算法、Dijkstra 算法等。

2.2. 行为决策介绍

路由寻径模块产生的路径信息,直接被下游的行为决策模块所使用。行为层面的决策包括在道路上的正常跟车,在遇到交通灯和行人时的等待避让,以及在路口和其他汽车的交互通过等。举例来说,路由寻径要求自动驾驶汽车保持在当前车道(Lane)行驶,当感知到前方有一辆正常行驶的汽车时,行为决策的一个决定便很可能是下达跟车(Follow)命令,行为决策模块根据具体实现不同,在宏观上定义的输出指令集合也多种多样。实现行为决策模块的方法相对较多,而且没有非常严格的规则要遵循。实际上,在自动驾驶汽车系统设计中,行为决策模块有时被设计成独立的逻辑模块,有时其功能在某种程度上和下游的运动规划模块融合到了一起实现。正是因为行为决策和运动规划需要紧密协调配合,在设计实现两个模块时的一个重要的基本准则是,行为决策模块的输出逻辑需要和下游的运动规划模块逻辑配合一致。运动规划模块解决的是具体的自动驾驶汽车动作(Motion)的规划问题。其功能可以理解为,在一个较小的时空区域内,具体解决自动驾驶汽车从 A 点到 B点如何行驶的问题。行为决策层面利用了所有重要的环境信息,不仅包括了自动驾驶汽车本身的当前位置,速度,朝向,以及所处车道,还利用了自动驾驶汽车一定距离以内所有重要的与感知相关的障碍物信息。行为决策层需要解决的问题就是在知晓这些信息的基础上,决定自动驾驶汽车的行驶策略。这些信息具体包括以下几点。

(1)所有的路由寻径结果:如自动驾驶汽车为了到达目的地,需要进入什么车道(Target Road)。

(2)自动驾驶汽车的当前自身状态:车的位置、速度、朝向,以及当前主车所在的车道、按照寻径路由需要进入的下一个车道等。

(3)自动驾驶汽车的历史信息:在上一个行为决策周期,自动驾驶汽车所做出的决策是跟车,停车,转弯,还是换道等其他行为。

(4)自动驾驶汽车周边的障碍物信息:自动驾驶汽车周边一定距离范围内的所有障碍物信息。例如,周围汽车所在的车道,邻近的路口有哪些汽车,它们的速度,位置如何,以及在一个较短的时间内它们的意图和预测的轨迹,周边是否有骑车人或者行人,以及他们的位置、速度、轨迹等。

(5)自动驾驶汽车周边的交通标识信息。

(6)当地的交通规则:例如,道路限速、是否可以红灯右拐等。

自动驾驶汽车的行为决策模块,就是要在上述所有信息的基础上,做出行驶的决策。在行为决策模块,自动驾驶汽车各部分的信息进行汇聚,信息类型复杂多样,且在不同驾驶场景下汽车需遵循的交通规则限制各具特点,行为决策模块需解决的问题难以抽象成简单的数学模型。很多自动驾驶研究团队进行了自己的行为决策模块处理方法创新,例如利用一些软件工程来设计规则系统。在 DARPA 自动驾驶汽车竞赛中,斯坦福大学的自动驾驶汽车系统Junior 利用一系列代价函数设计和有限状态机(Finite State Machine)来设计自动驾驶汽车的轨迹和操控指令。卡内基-梅隆大学(CMU)的自动驾驶汽车系统 Boss 则通过计算分析车道之间的空隙,并且按照一定规则和一些预设的阈值比较来决定换道这一行为的触发。

其他很多的参赛系统,如 Odin 和 Virginia Tech,也都利用了规则引擎来决定自动驾驶汽车的驾驶行为。Cardo 团队则结合了规则引擎和行为模型,建立了一个混合的自动驾驶汽车决策系统。越来越多的研究结果开始使用一些 Bayesian模型对自动驾驶汽车行为进行建模。其中 MDP(Markov Decision Process)和 POMDP(Partially ObservableMarkov Decision Process)都是在学术界最为流行的自动驾驶汽车行为决策建模方法,本节将简单介绍几种基于 MDP 的自动驾驶汽车行为决策方式。虽然 MDP 类的非确定性概率模型在学术界渐渐流行,但认为基于规则的确定性行为决策系统仍然是目前工业界的主流。

2.3. 运动规划介绍

局部路径规划对应的是运动规划模块,以汽车所在局部坐标系为准,将全局期望路径根据汽车定位信息转化到汽车坐标中表示,以此作为局部参考路径,为局部路径规划提供导向信息。局部期望路径是无人驾驶汽车未来一段时间内的期望行驶路线,因此要求路径的每一点都可以表示汽车状态的信息。局部期望路径可以理解为无人驾驶汽车未来行驶状态的集合,每个路径点的坐标和切向方向就是汽车位置和航向,路径点的曲率半径就是汽车转弯半径。汽车在实际行驶中,位置,航向和转弯半径是连续变化的,那么生成的路径也要满足位置、航向和曲率的连续变化。局部路径规划的作用是基于一定的环境地图寻找一条满足汽车运动学,动力学约束和舒适性指标的无碰撞路径。规划出来的局部路径必须具备对全局路径的跟踪能力与避障能力,如基于路径生成与路径选择的局部路径规划方法,路径生成中完成了对全局路径的跟踪,路径选择完成了障碍分析。

事实上,由于汽车只在二维空间中运动,在机器人运动规划问题中,自动驾驶汽车运动规划相对简单。普通机器人需进行的运动和姿态控制十分复杂,与之相比,基于传统汽车领域的研究成果,自动驾驶汽车只需基于方向盘、油门、刹车的控制输人来对其行驶轨迹进行物理建模,因而复杂性大大降低。随着自动驾驶领域研究深度的不断拓展,自动驾驶汽车运动规划问题逐渐演变成相对独立的模块。人们首先基于不同场景对运动规划问题进行研究,例如城市道路工况、停车倒车工况及其他特定区域的特定工况等。基于这些研究的成果与经验,运动规划模块问题的本质得以被提炼:在一定约束条件下,完成某个区域或范围内时间,空间状态下的路径、速度优化,或称之为汽车在一定时间,空间内的行驶轨迹优化。其中,得到的轨迹包含了时间,汽车姿态,位置等各方面信息。具体而言,包括汽车到达每个位置时的时间,该位置上的行驶速度、加速度、曲率、曲率的高阶导数等以及其他与时间相关的运动变量信息。基于对汽车实际运行轨迹的分析,人们发现汽车行驶轨迹总是类似螺旋线的平滑曲线簇,因此运动规划问题又可转换为二维平面上的时空曲线优化问题。

为了了解所处的周围路况环境并做出行为决策,行为决策模块需要感知和地图定位的输出作为输人。由于行为决策和运动规划模块的紧密联系,一般在系统设计时,也会同样让感知和地图定位结果接人运动规划模块。这样相对冗余的设计的好处有两点:一方面,如果仅仅依赖行为决策模块传递感知结果,那么在行为决策模块计算完成后出现的新感知物体将会被忽略,给自动驾驶汽车的安全带来隐患;二是如果行为决策模块出现了问题,这时的运动规划虽然没有了对交规和四周环境行为层面的决策,但仍然拥有感知和地图完整信息,也能实现最基本的避让,提高自动驾驶汽车的安全性。

常用的路径规划算法可分为基于采样的路径规划算法以及基于地图的路径搜索算法两大类,每类路径规划算法又都包含一系列算法。基于采样的搜索算法很早便开始用于汽车路径规划,比较常见的基于采样的搜索算法有概率图(Probabilistic Road Map,PRM)算法和快速探索随机树(Rapidly-exploring Random Tree,RRT)算法。概率图算法使用局部规划算法建立随机状态之间的连接关系,从而抽象出概率图,对于确定的起始状态和目标状态,它只需要快速地搜索概率图便可获得路径。快速探索随机树算法由 LaValle 和 Kuffner提出,它最初专用于解决运动学约束的路径规划问题。由于 RRT 算法在状态空间采用随机采样的结点,不需要太快的搜索速度,尤其在高维规划空间中搜索速度优势尤为明显,因此这种方法作为一种快搜索方法在路径规划领域获得了广泛应用。早期主要采用单向RRT 算法进行搜索,为了进一步提高搜索速度及保证算法的完备性,提出了双向 RRT 算法和偏向 RRT 算法。

基于地图的搜索算法通常采用单元分解法或者道路图法建立环境模型,它通过搜索环境信息的环境地图获得最终路径。在这类搜索方法中,比较有代表性的有深度优先搜索(Depth-First Search,OFS)算法、广度优先搜索(Breadth-First Search,BFS)算法、迭代加深搜索(Iterative-Deepening Search, IDS)算法、等代价搜索(Uniform Cost Search,UCS)算法和启发式搜索(Heuristic Search, HS)算法等。深度优先搜索、广度优先搜索、迭代加深搜索和等代价搜索算法使用了回溯技术实施搜索,它从起始状态出发沿着树的深度,遍历树的结点,尽可能深地搜索树的分支,直至要么到达目标状态,要么到达一个搜索终止点。如果发现了目标状态,它退出搜索并返回解路径;如果到达的是一个搜索终止点,那么它将回溯到路径上含有未搜索过的结点的临近结点,并沿着这个分支继续搜索下去。因此,这类算法比较适合于解决环境中结点数目较少情况下的路径搜索问题,当结点数目比较多时,算法搜索速度慢,效率低。而启发式搜索算法在决定结点扩展顺序的估价函数中引入了启发值,即当前结点状态到目标状态之间的估计消耗,从而引导搜索朝向目标状态的方向,避免了盲目搜索,有助于提高算法的搜索效率,因而启发式搜索算法越来越广泛地应用于路径规划。

3. 自动驾驶汽车控制

规划控制最下层的模块是自动驾驶控制模块。这是一个直接和自动驾驶汽车底层控制接口 CAN-BUS 对接的模块,其核心任务是消化上层运动规划模块的输出轨迹点,通过一系列结合车身属性和外界物理因素的动力学计算,转换成对汽车控制的油门、刹车,以及方向盘信号,从而尽可能地控制汽车去实际执行这些轨迹点。反馈控制模块主要涉及对汽车自身控制,以及和外界物理环境交互的建模。

路由寻径,行为决策、动作规划和反馈控制四个模块便是自动驾驶汽车规划控制软件系统的最主要的功能模块。这种按照功能模块的划分方法,非常有效地将自动驾驶汽车规划控制这样一个复杂的问题按照计算逻辑从抽象到具体做出了非常合理的切分。这样的划分使得每个模块可以各司其职专注解决本层次的问题,使得复杂软件系统的开发工作可以实现并行化和模块化,大大提高了开发效率,这是这一划分方法的优势所在。当然随之而来的问题便是模块之间的协调一致问题,其中最重要的便是模块之间计算结果的一致性问题。本质上,行为决策、运动规划和反馈控制都是在不同层面解决同一个问题,同时它们之间由于上下游关系的存在,其计算结果又互相依赖,所以在具体设计实现各个模块时的一个最重要的准则便是尽可能保证计算结果的一致性和可执行性。行为决策模块在做出决定时,要尽可能保证前后一致且最大可能地让下游运动规划可以执行。运动规划的轨迹速度也应当严格控制在下游反馈控制可以执行的范围内。

这篇关于自动驾驶汽车的规划与控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!