打开网易新闻 查看更多图片

(图片源自网络)

自动驾驶重卡本身系统模型复杂,高速场景对系统的实时,安全和稳定性有更高的要求。在有限感知,定位以及计算能力情况下,如何在动态变化的环境中,满足安全,舒适,节油等多种目标条件,规划和控制重型卡车的运动,是一个巨大的挑战,同时带来了很多有趣的问题值得研究和探索。

概述

Planning在学界不同的领域有着不同的视角,比如:

1. 在机器人学领域,Planning问题可以定义为:在机器人的位形空间内寻找一个满足约束条件的,从起点到终点的一条最优路径;

2. 在人工智能领域,Planning问题又可以定义为:给定系统的state action寻找最优的policy;

3. 在自动驾驶领域,规划和控制问题,相当于一个人的脑和身体,在给定感知和定位的情况下,自动驾驶车辆需要知道如何地实现安全和舒适的自主运动。

传统规划框架:

典型的自动驾驶规划模块一般采用分层结构,主要层级分为global级和local级。

1. Global级和目前的导航软件一样,主要提供全局路由的规划,属于路级别的规划信息;

2. Local级的规划又可以分为Behavioral Layer和Motion Planning。

  • Behavioral Layer的等级比较高一点,主要提供一些描述性的策略,比如向左转还是向右转,亦或加速减速,它并不提供具体的像Motion级别车的state描述。
  • Motion Planning,提供的是车当前的状态序列,比如车在t刻要以速度v和加速度a到达s位置,最后,Planning生成的动作序列发给Control模块,Control再对Planning的序列进行跟踪。

行为规划方法:

接下来,简单介绍下,比较常用的Behavioral Planning和Motion Planning方法:

① Rule based method

打开网易新闻 查看更多图片

目前最常用的Behavioral Planning方法是有限状态机 ( FSM,Finite State Machine ),就是有限状态机模型的Rule based method,因为其简单、有效、明确,主要通过定义一些状态,以及定义一些状态之间的转移条件和状态之间相互约束的条件,最后,通过有限状态的模型来处理面对的未知的复杂的环境,可以使机器人在没有遇到过的环境中做出比较正确的决策。如上图,DARPA挑战赛的时候,斯坦福团队的Junior就采用了有限状态机模型防止交通拥堵;另外在Apollo代码中,也通过有限的scenario以及stage之间的transform来实现在道路上不同的运动之间的决策。这种方法的好处是简单明确,缺点是很难通过定义有限的状态来处理一个很复杂的事情。因为实际道路上,可能会遇到很多很复杂的情况,很多都没有遇到过,只是采用有限的状态和有限的行为,很难把它处理的很好。

② POMDP

另一个比较常用的方法是POMDP,是一个将uncertainty考虑到decision making过程中的框架。所谓uncertainty,就是世界肯定是不确定的,所有感知的结果,包括感知的类型、位置,(如左图,可以看到左边的来车,它的位置在这个区域内是服从一定的概率分布的,并不是一个确定的结果,包括它未来的行为,有可能左转、右转或者直行,它的intention和轨迹都是不确定的。在规划时,怎样把这种不确定性考虑到规划中?

对于左图的场景,一个典型人类驾驶员的行为,会边开边看,边看边动,然后再根据当前情况再去行动。POMDP也采用了同样的方法,POMDP将每个状态表示成一个belief,然后通过观察来update belief,最终通过一些方法来求得一个在当前belief下的最优的Policy。[3][4]是一些Online/Offline POMDP求解方法,POMDP很好地解决了uncertainty问题,但是它主要的问题是计算量比较大,实际应用过程中需要很多的工程优化,才能取得比较好的成果。

③ Learning based methods

Learning based methods,包括Deep Learning、Deep Q-Learning、MCTS等。其中Deep Learning的效果非常好,但它的问题是Data Collection和Pipeline要求非常高。首先要有足够多的数据,然后整个Pipeline上要有足够完善的工具,包括仿真工具的完善程度,对系统的依赖程度比较高,并不是简单的写几行代码,制定一个规则就可以快速应用的。当然你可以得到一个很初步的版本,但是实际效果Input,背后训练的代价还是很大的。所以需要有很多的车辆配合来获取数据,得到数据的过程和处理数据的过程比写一套代码的工作量还是要大很多的。

④ 传统的Motion Planning methods

打开网易新闻 查看更多图片

接下来,介绍一些传统的Motion Planning methods,主要分为:search based、sample based、optimization based。

1. Search based:把规划问题转化成图搜索问题,首先将规划问题建立成图,如Dijkstra、Lattices、A*都是将规划问题建立成图,然后采用一些search method在图中寻找一个从起点到终点的最优路径。Search based的好处是可以得到一个全局层面的最优解,只要将规划问题建立成图,图上就存在着唯一的最优解,它的问题是只适用于比较低维数的规划问题,当规划问题state的维数比较高之后,search起来就比较耗时,面临着指数爆炸的问题。对于正常的纵向规划,需要同时规划车辆的位置、速度、加速度以及时间,一般在4~5维以上就用不了这种search method。

2. Sample based:面对高维的运动规划问题,一般采用sample based方法,就会在state space进行sample,然后对这些sample的点进行cost等连接方法,比较常用的是RRT、PRM的一些方法,或者是RRT的改进方法,图(e)是MIT做的一个RRT方法。Sample based的优点是可以同时处理比较高维数的运动规划,然后可以将dynamic model也放在规划过程中;缺点是只能得到一个概率层面上的最优,只要有足够多的求解时间,就会得到一个接近于概率1的最优解,显然实际过程中不可能给出足够多的时间,或者一会儿就要重新规划了。在有限时间内,得到的就不是一个最优解,导致规划之后的结果可能比较粗糙,还需要一些后优化的方法和后处理的方法。

3. Optimization based:对于自动驾驶车辆,optimization based会将规划的结果通过曲线的形式来表示,比如Polynomial、Bezier、Spline,通过多段的具有解析解的曲线形式来表示,从而将规划问题转化成求解曲线的参数问题,这样比较好处理加一些想要的约束,转化成优化问题,对于优化问题,有很多的求解方法,比如NLP、QP等。optimization based方法的好处是可以有很多不同的function,可以满足不同的目标,并且很直观求解速度也很快;它的问题是多个目标的权重如何加?求解的最优解一般都比较贴近约束的边界,如何来处理这些问题?而且并不能把所有的问题都很好地转化成一个优化问题,也不是所有的优化问题都有解,比如非线性优化求解起来比较麻烦,是不是凸的、非凸的,这都是一些问题。

挑战

重卡(重型卡车)自动驾驶,带来哪些新的特性和挑战?

可以想象,这种重型卡车的乘坐体验。面对这种重型卡车,第一反应就是车特别高,然后跟小车相比它的视角也不太一样,比如当前面有辆车,重卡在刹车的时候给你的感觉就像你要从前面车碾过去一样。当重卡带挂之后,整体看起来特别庞大、笨重。

1、更高的无人重卡规划控制算法要求:

1. 安全:如何能做到比人类司机更安全?例如大于164000miles才出一次事故

2. 效率:如何能做到与人类司机相当的驾驶效率?

3. 节能:如何可以做到比人类司机平均水平更高的燃油经济性?

这些对无人重卡规划控制算法提出了很高的要求。

2、更加复杂的动力学模型:

无人重卡的动力学模型会更加复杂,可以理解成这个人比较胖,跑起来比较费劲,没有那么灵活。一般对重卡建模会把它拆分成几个系统,动力系统、刹车系统、转向系统和轮胎模型来分别建模。这些系统的动态响应特性比乘用车的响应特性是差很多的,也就是它的动力学特性比较复杂,响应没有那么好,不是想让它停就停。

3、带挂运行导致失稳状态的挑战:

当重卡带挂运行时,挂车本身会对卡车带来很大的影响,会导致很多的失稳状态。主要的影响因素有:

1. 重卡与挂车铰链连接

2. 大车重的惯性

3. 负载的不同质量和物质特性差异

打开网易新闻 查看更多图片

上图是挂不同的载重,对系统的动力学特性影响也比较多。比如同样的阶跃响应,不同的质量下,可以看到曲线的差异很大。直观说,同样踩刹车,载重大的可能就刹不住,当然在控制过程中,可能会引入更多的问题。

4、如何节油

如何省油,这是从一个文献中截取的如何省油的可能措施。比如可以利用道路的坡度信息,上坡提前减档、提前加速,下坡可以让它溜一溜,提前感知道路前面车流的速度,提前减速,或者是信号灯提前委托等等。通过经济性驾驶,采用不同的自动驾驶策略,可以节能15%,看起来这些技术还是比较可观的。不过,节油的一些策略,会带来一些安全性上的隐患,比如最常用的溜坡,能不能溜?

转载自DataFunTalk,文中观点仅供分享交流,不代表本号立场,如涉及版权等问题,请您告知,我们将及时处理。