![67a3c7753256622117aafa3749795d34.png](https://i-blog.csdnimg.cn/blog_migrate/d9d7d7d09b86b7ca328f69b79b87274d.jpeg)
运动预测(Motion Prediction)模块主要解决自动驾驶车辆与周围环境中的其它运动物体(车辆、行人等)的协同交互问题。该模块对感知模块所检测到的运动物体进行未来一段时间内行为意图的预测,并将预测的结果转化为时间维度和空间维度的轨迹。以这些障碍车、行人、非机动车等运动物体的预测轨迹作为输入,自动驾驶车辆可以做出更加合理的驾驶决策,规划出更加合理、安全的车辆运动行为。
比如如果我们预测到其它车辆要并入到我们的车道,那我们就需要提前考虑减速,预测的准确性越高,决策就越准确,无人驾驶的可靠性也就越高。
![9d8471a459b1694445c7ec11dc80fed3.png](https://i-blog.csdnimg.cn/blog_migrate/9f697b9f8a8df84176a7b8164e68a671.png)
由于道路上运动物体的行为是复杂多变、彼此相互影响的,这就要求预测模块能够提供足够实时和高频的预测输出。举个例子,假设一辆车以60公里/小时的速度前进,每0.25s就会有5m的位移,如果算法的响应时间为0.25s,那么每次运动规划前我们就必须保证在5m范围是是完全可通行的。自动驾驶车辆运行的速度越高,对预测模块的输出实时性的要求就越高。
预测模块的输入信息
一般而言,预测模块的输入就是感知模块的输出,包括运动物体的位置、速度、朝向、物体分类(如车辆,行人,自行车)等信息。运动预测(Motion Planning)模块结合运动物体的属性信息、历史运行轨迹信息以及高精地图信息,给出运动物体在未来一段时间内的运动行为的预测。
![2406e012cb575b7e58de7a161f00e185.png](https://i-blog.csdnimg.cn/blog_migrate/fee4b56e97cfcc2b71093719a13c3733.jpeg)
基于规则的预测方法
运动物体的行为预测是一个非常复杂的问题,我们可以通过基于规则来对运动物体的行为进行预测。
1) 基于物理规律的预测
基于物理规律的预测是指,所有运动物体(车辆、行人、动物等等)的运动都满足一定的约束或者规则。比如车辆的运动要满足动力学约束和运动学约束;行人的运动速度不会太快,但可以随时改变自己的运动方向(这也让对行人运动的预测让人颇为头疼)等等。
2)基于运动行为的预测
基于行为的预测是指,所有运动物体(车辆、行人、动物等等)的运动都是一组运动行为的组合。比如对于车辆来讲,它们的行为是巡航、左转、跟车、超车、停车这些基本行为的组合;对于行人来讲,他们一般都沿着人行横道和人行道上运动(但这不是一个强约束)。
3)基于运动交互的预测
基于运动交互的假设是指,运动物体之间是有相互交互关系的。比如在路口直行和左转的车辆汇入同一条车道时,按照转向让直行的交规,转向的车辆会减速避让直行的车辆;行人永远拥有路权,但是当他们感觉受到车辆运动的威胁时,会停下来等待观望;车辆变道时通常会有信号指示灯等等。
4)借助高精地图扩展预测场景
高精地图提供的车道形状和曲率信息可以辅助预测车辆的运动速度,所有的车辆,不管它的运动模型如何,在进入弯道或者转向时,一般会减速通过,从而保证驾驶安全。
基于车道序列的预测方法
基于车道序列的方法把道路分成多个部分,每个部分都覆盖了一个车辆的可能运动区域,对于预测来讲,我们更关心车辆在这些区域中转换。我们可以把车辆的行为划分为一系列有限模式的组合,并将这些模式组合描述为车道序列,然后以车道序列为基础预测车辆的行为。例如,如果一辆车辆要直行,那它的可能的lane序列就是:Lane0->Lane1->Lane3->Lane7。
![aace4231b4b4cdd541c971752a92d056.png](https://i-blog.csdnimg.cn/blog_migrate/1b1e43d522db8f575505ccde4e7d92c3.png)
在实际的预测中,我们通过车辆的位置,heading,速度、加速度、在Lane序列中的横纵向位置来估计它们的运动意图,从而得到基于Lane序列的道路上的车辆的运动预测轨迹。基于Lane序列的方法把这种不确定的预测问题简化为一个确定的方案选择的问题,这种模型大大简化了预测的难度。
以下图为例,如果待预测目标位于ID为0的车道内,那么它的下一步运动可以是右转(0-4-5)或者直行(1-3-7),我们只需要在这两种方案之间做出选择即可。
![eb866a247bdea7cc2a72606a262934e5.png](https://i-blog.csdnimg.cn/blog_migrate/908d1c0458b388f312bfcad32c26c527.png)
在车道序列的选择问题中,我们通过计算每个车道序列的概率进行选择。概率的计算是通过一个模型计算获取的,模型的输入是车道序列和运动车辆的状态,输出是采用每个车道序列的被选取的概率值。
![da200c2c4e840aaf67392816bb65bb63.png](https://i-blog.csdnimg.cn/blog_migrate/d9edcf090d2254ab2aaea301f6801648.png)
为了提升模型的准确度和持续的学习能力,我们使用观测数据对模型进行经验性训练。训练的输入数据是车辆序列和运动物体的状态,以及车辆最终选择的车道序列。随着积累的经验性数据不断丰富,模型的持续迭代和自我更新,模型的精确度会越来越高。
基于递归神经网络的目标车道预测
Apollo中使用RNN来预测车辆的目标车道。它为车道序列提供一个RNN模型,为障碍物提供另一个RNN模型,连接这两个RNN的输出,并且将它们的输出输入到另一个神经网络,该网络会估算每个车道序列的概率,具有最高概率的序列就是预测目标车辆将遵循的序列。
![1e976b4c5f7c29ec2bfd93c6ff993b16.png](https://i-blog.csdnimg.cn/blog_migrate/990b952242abb87425cf4c1f915561a6.png)
为了训练这个神经网络,Apollo比较网络输出和真值,使用反向传播来训练网络,
![9a8009fffaf02ac7b1acf6f811dedaeb.png](https://i-blog.csdnimg.cn/blog_migrate/7be9440b1898af2652016e69c4d48f8d.png)
参考材料
1、Coursera->Motion Planning for Self-Driving Cars
2、http://apollo.auto/devcenter/devcenter_cn.html
注:本文首发于微信公众号,转载请注明出处,谢谢!
![73bb44d1f082c7cf575e5484a5cba1d4.png](https://i-blog.csdnimg.cn/blog_migrate/46441ca9cfd8e18fac2f81cee763ee46.png)
个人博客地址:
http://www.banbeichadexiaojiubei.comwww.banbeichadexiaojiubei.com推荐阅读:
半杯茶的小酒杯:未知环境下的Lidar概率占位栅格图(Occupancy Grid Map) Python代码实现zhuanlan.zhihu.com![b6589d2ad784e2e2640f7dd5fa039532.png](https://i-blog.csdnimg.cn/blog_migrate/0a99b6ccc1f0cb8fa84fff33aa15fbeb.png)
![f320cc2c2f7124271d21b403b6814d41.png](https://i-blog.csdnimg.cn/blog_migrate/00e3e7be8bd5e759f2b8c2b6e9fb1d7d.jpeg)
![1a13a6b99f9b81d7103fd3892d40f7de.png](https://i-blog.csdnimg.cn/blog_migrate/164ddd7964ec3b0336a0c4097d96c2b5.jpeg)
![c1bb3b43c5a68204042f6c2dc05804e5.png](https://i-blog.csdnimg.cn/blog_migrate/7b49aa8b64341451264f8d705408e319.jpeg)
![5c36e102f5d45bc3370e75cf3cc2074b.png](https://i-blog.csdnimg.cn/blog_migrate/cec4b45c9a2fcca36bde62f278846f18.jpeg)
![2b9134cfb0c89f8ed94f8a9d45baad53.png](https://i-blog.csdnimg.cn/blog_migrate/dd31e6c573fb1a009ebe091c3e772680.jpeg)
![25adc9f997b51708d9cfaa24e7ef86b6.png](https://i-blog.csdnimg.cn/blog_migrate/85c2c56b5293d0778d62daf5a2879e83.jpeg)