过度转向是一种不安全的情况,即车辆的后轮在转弯时失去抓地力(图1)。造成过度转向的原因可能是轮胎磨损、路面湿滑、转弯太快、转弯时突然刹车,或者是这些因素的综合。
现代稳定控制系统被设计成在检测到过度转向时自动采取纠正措施。理论上,这样的系统可以通过使用基于第一性原理的数学模型来识别过度转向状态。例如,当车载传感器的测量值超过模型中设定的参数阈值时,系统就判定汽车过度转向。然而,在实践中,由于涉及的许多因素的相互作用,这种方法被证明难以实施。一辆轮胎充气不足的汽车在结冰路面上行驶与一辆轮胎充气适当的汽车在干燥路面行驶所需要的阈值可能大不相同。
在宝马,我们正在探索一种机器学习方法来检测过度转向。在MATLAB工作®,我们开发了一个有监督的机器学习模型作为概念证明。尽管之前在机器学习方面没有什么经验,但在短短三周内,我们就完成了一个工作中的ECU原型,能够以超过98%的准确率检测过度转向。
收集数据,提取特征
我们首先从车辆过度转向之前、期间和之后收集真实世界的数据。在一位专业司机的帮助下,我们在法国Miramas的BMW试验场用一辆宝马M4进行了现场驾驶测试(图2)。
在测试中,我们捕获了过度转向检测算法中常用的信号:车辆的前向加速度、侧向加速度、转向角度和偏航率。此外,我们记录了司机对过度转向的感知:当司机表示汽车过度转向时,我的同事作为乘客坐在车里,按下了笔记本电脑上的一个按钮。当司机表示汽车已经恢复正常操纵时,她松开了按钮。这些按键创造了我们需要训练一个监督学习模型的地面真实标签。总共,我们在43分钟的记录数据中捕获了大约259,000个数据点。
回到我们慕尼黑的办公室,我们将收集到的数据加载到MATLAB中,并使用统计学和机器学习工具箱™中的分类学习应用程序来使用各种分类器训练机器学习模型。根据这些原始数据训练的模型产生的结果并不突出——精确度在75%到80%之间。为了得到更准确的结果,我们对原始数据进行了清理和精简。首先,我们应用滤波器来降低信号数据上的噪声(图3)。
接下来,我们使用峰值分析来识别过滤后的输入信号的峰值(局部最大值)(图4)。
评估机器学习方法
在过滤和减少收集的数据后,我们就能更好地评估有监督的机器学习方法。使用分类学习应用程序,我们尝试了k-最近邻(KNN)分类器、支持向量机(svm)、二次判别分析和决策树。金宝app我们还使用该应用程序来查看通过主成分分析(PCA)转换特征的效果,这有助于防止过拟合。
表1总结了我们评估的分类器产生的结果。所有分类器在识别过度转向方面表现良好,其中三个分类器的真阳性率超过98%。决定因素是真实的阴性率:分类器能有多精确地确定车辆的时间不转向过度。在这里,决策树的表现超过了其他分类器,真正的负分类率接近96%。
真阳性(%) | 真阴性(%) | 假阳性(%) | 假阴性(%) | |
k -最近邻与主成分分析 |
94.74 | 90.35 | 5.26 | 9.65 |
金宝app支持向量机 | 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 Coder™从模型生成代码,并为我们的目标ECU编译代码,安装在宝马5系列轿车。这一次,我们在阿什海姆附近的宝马工厂亲自进行了测试,那里离我们的办公室很近。当我开车时,我的同事收集数据,记录下我指出汽车过度转向的准确时间。
在ECU上实时运行,分类器表现得非常好,准确率约为95%。在测试中,我们不知道会发生什么,因为我们使用了不同的车辆(宝马5系而不是M4),不同的车手,不同的赛道。仔细查看数据后发现,大多数车型与驾驶员感知到的过度转向之间的不匹配都发生在过度转向状态的开始和结束附近。这种不匹配是可以理解的;即使是车手也很难准确地确定何时开始和停止过度转向。
我们已经成功开发了一种用于过度转向检测的机器学习模型,并将其部署在原型ECU上,现在我们正在展望机器学习在宝马的其他许多潜在应用。几十年来收集的大量数据可供我们使用,而今天,一辆汽车一天就能产生1万亿字节的测量数据。机器学习提供了一个开发软件的机会,利用可用的数据来了解司机的行为,并改善驾驶体验。