自动驾驶决策规划技术详解

自动驾驶决策规划技术详解

自动驾驶中的决策规划模块是衡量和评价自动驾驶能力最核心的指标之一,它的主要任务是在接收到传感器的各种感知信息之后,对当前环境作出分析,然后对底层控制模块下达指令。典型的决策规划模块可以分为三个层次:全局路径规划、行为决策、运动规划。

附赠自动驾驶最全的学习资料和量产经验:链接

01  引言

在一套完整的自动驾驶系统中,如果将感知模块比作人的眼睛和耳朵,那么决策规划就是自动驾驶的大脑。大脑在接收到传感器的各种感知信息之后,对当前环境作出分析,然后对底层控制模块下达指令,这一过程就是决策规划模块的主要任务。同时,决策规划模块可以处理多么复杂的场景,也是衡量和评价自动驾驶能力最核心的指标之一[1]。

image

图1 自动驾驶系统中的决策规划模块分层结构,引用自[2]

如图1所示,典型的决策规划模块可以分为三个层次。

其中,全局路径规划(Route Planning)在接收到一个给定的行驶目的地之后,结合地图信息,生成一条全局的路径,作为为后续具体路径规划的参考;

行为决策层(Behavioral Layer)在接收到全局路径后,结合从感知模块得到的环境信息(包括其他车辆与行人,障碍物,以及道路上的交通规则信息),作出具体的行为决策(例如选择变道超车还是跟随);

最后,运动规划(Motion Planning)层根据具体的行为决策,规划生成一条满足特定约束条件(例如车辆本身的动力学约束、避免碰撞、乘客舒适性等)的轨迹,该轨迹作为控制模块的输入决定车辆最终行驶路径。

本文将分别介绍各层的主要作用与常见算法,并且比较各种算法的优劣性及适用情景。

02  全局路径规划(Route Planning)

全局路径规划是指在给定车辆当前位置与终点目标后,通过搜索选择一条最优的路径,这里的“最优”包括路径最短,或者到达时间最快等条件。这一过程类似于我们生活中经常用到的“导航”功能,区别在于自动驾驶中使用的高精地图与我们常见的地图不太一样,在高精地图中包含了每条车道在内的更多信息。常见的全局路径规划算法包括Dijkstra和A算法,以及在这两种算法基础上的多种改进。Dijkstra算法[3]和A*算法[4]也是在许多规划问题中应用最为广泛的两种搜索算法。

image

图2 全局路径规划示意

2.1 Dijkstra算法

Dijkstra算法是由计算机科学家Edsger W. Dijkstra在1956年提出,用来寻找图形中节点之间的最短路径。在Dijkstra算法中,需要计算每一个节点距离起点的总移动代价。同时,还需要一个优先队列结构。对于所有待遍历的节点,放入优先队列中会按照代价进行排序。在算法运行的过程中,每次都从优先队列中选出代价最小的作为下一个遍历的节点。直到到达终点为止。

Dijkstra算法的优点是:给出的路径是最优的;缺点是计算时间复杂度比较高(O(N2)),因为是向周围进行探索,没有明确的方向。

2.2 A*算法

为了解决Dijkstra算法的搜索效率问题,1968年,A算法由Stanford研究院的Peter Hart, Nils Nilsson以及Bertram Raphael发表,其主要改进是借助一个启发函数来引导搜索的过程。具体来说,A算法通过下面这个函数来计算每个节点的优先级:

image

其中:

image是节点image的综合优先级。当我们选择下一个要遍历的节点时,我们总会选取综合优先级最高(值最小)的节点。

image是节点

  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值