过度转向是一种不安全的状况,在这种状况下,车辆的后轮胎会在转弯时失去抓地力(图 1),引起这种状况的原因可能是轮胎磨损、路面湿滑、转弯速度过快、转弯时突然制动,或是这些因素加总起来所致。
图1 : 在测试赛道上检测BMW M4 的过度转向问题。 |
|
现代的稳定控制系统,可以在侦测到车辆过度转向时自动采取矫正的措施。理论上,藉由以第一原理(First principle)为基础的数学模型,这类系统能够辨识过度转向的情况。例如,当车载感测器的测量值超过模型中既定的参数阈值时,系统即可确定车辆发生过度转向。
然而,在现实上,由于牵涉到众多因素的相互作用,这种方法已被证实难以在实际情况中实现;同一辆汽车在轮胎充气不足的情况下行驶于结冰路面,与在轮胎充气适当的情况下于干燥路面上行驶,需要的阈值可能大不相同。
在BMW,我们正在探索利用各种机器学习方法来侦测过度转向的状况。利用MATLAB,我们开发了一种监督式机器学习模型作为概念验证,尽管之前几乎没有任何机器学习方面的经验,但在短短三周内,就完成了一个可以正常运作的ECU原型,侦测过度转向的准确率可达到超过98%。
收集资料和撷取特征
我们首先收集了汽车上过度转向发生前、发生时、发生后的真实资料。在专业驾驶人员的帮助下,我们在法国米拉马斯的BMW试验场,对BMW M4 进行了即时道路驾驶测试(图2)。
在测试期间,我们撷取了侦测过度转向演算法中的一些常用讯号:车辆的纵向加速度、横向加速度、转向角度和偏航率。此外,还记录了驾驶人员对于过度转向的认知:当驾驶人员认定汽车发生过度转向时,坐在乘客位置的同事会按下笔记型电脑上的一个按钮。当驾驶人员认为汽车恢复正常驾驶状态时,该同事会松开按钮。这些按钮的点击建立了提供训练监督式学习模型所需的地面真实标记(ground truth labeling),在43分钟的记录资料中总共撷取到大约259,000个资料点。
回到在慕尼黑的办公室,我们将收集到的资料载入至MATLAB中,并使用统计与机器学习工具箱(Statistics and Machine Learning Toolbox)中的Classification Learner app,利用各种分类器对机器学习模型进行训练。刚开始使用这些原始资料训练的模型,并不会产生很出色的结果,准确率大概落在75%到80%之间。为了达到更准确的结果,清理并减少原始资料。首先,使用滤波器来降低讯号资料中的杂讯(图3)。
图3 : 原始转向角度讯号(蓝色)和经过滤波处理後的相同讯号(橙色)。 |
|
接下来,使用峰值分析来辨识经过滤波处理的输入讯号的峰值(局部极值)(图 4)。
评估机器学习方法
在过滤和减少收集的资料后,我们能够更有效地评估监督式机器学习方法。藉由 Classification Learner app,我们尝试了k-最近邻(KNN)分类器,支持向量机 (SVM)、二次判别分析和决策树。我们还使用该app来查看经由主成分分析(principal component analysis,PCA)转换的特征所带来的影响,这有助于防止过度拟合。
从我们评估的分类器所得到的结果整理于表1。所有分类器在辨识过度转向方面均表现良好,其中有三个分类器取得了高于98%的真阳性率(true positive rates)。具有决定性是真阴性率(true negative rates):分类器能够确定车辆未发生过度转向的准确度。在这里,决策树的表现优于其他分类器,其真阴性率几乎达到 96%。
表1 使用四种不同的监督式机器学习分类器的结果。
?
|
真阳性率 (%)
|
真阴性率 (%)
|
假阳性率 (%)
|
假阴性率 (%)
|
使用PCA的 K-最近邻
|
94.74
|
90.35
|
5.26
|
9.65
|
支持向量机
|
98.92
|
73.07
|
1.08
|
26.93
|
二次判别分析
|
98.83
|
82.73
|
1.17
|
17.27
|
决策树
|
98.16
|
95.86
|
1.84
|
4.14
|
产生实车测试所需的程式码
虽然从决策树得到的结果十分令人振奋,但是分类器模型落实在真实汽车中的 ECU上的表现才是真正的关键。我们使用MATLAB -C转码器从模型生成程式码,并为安装在BMW Series 5轿车中的目标ECU编译程式码。这一次,我们自己在靠近慕尼黑办公室的阿施海姆附近的BMW工厂执行了测试。由我来驾驶,我的同事负责收集资料,准确地记录下我指出车辆发生过度转向的时间。
在ECU上即时运作的分类器表现非常惊人,准确率约为95%。但在进入测试阶段后,由于使用了不同的车辆(BMW Series 5而不是M4)、不同的驾驶人员和不同的赛道,因此无法预期会发生什么样的情况。仔细观察资料后发现,模型与驾驶人员所认定的过度转向不相符的情况,大多发生在过度转向开始和结束时。这样的差异可以理解;因为即使是驾驶人员,也很难准确地判断过度转向是在何时开始和停止。
成功开发出用于过度转向侦测的机器学习模型,并将其布署在原型ECU上之后,我们现在正在构想机器学习的许多其他潜在应用。我们几十年来收集了大量可供使用的资料,而现在一辆汽车在一天内就可以产生数TB的测量资料。透过MATLAB,让我们有机会开发机器学习相关的软体,从而可以利用这些可用资料来了解驾驶人员的行为并改善驾驶体验。
(本文由钛思科技提供;作者Tobias Freudling任职于BMW集团)