技术文章

宝马利用机器学习检测汽车的过度转向

作者 Tobias Freudling, BMW Group


过度转向是一种不安全的状况,会导致这种状况下车辆的后轮胎在转弯时失去抓地力(图 1)。导致这种情况的因素可能是轮胎磨损、路面湿滑、转弯速度过快、转弯时突然制动,或是所有这些因素的综合原因所致。

图 1。在测试赛道上检测宝马 M4 的过度转向问题。

图 1. 在测试赛道上检测宝马 M4 的过度转向问题。

现代的稳定控制系统可以在检测到过度转向时自动采取纠正措施。理论上,借助基于第一原理基本原理的数学模型,这类系统可以识别过度转向的情。例如,当车载传感器的测量值超过模型中既定的参数阈值时,系统即可确定车辆发生过度转向。然而,在实际驾驶中,由于涉及到众多因素的相互作用,这种方法已被证实在实际情况中验证难以凑效。同一辆汽车在轮胎充气不足的情况下行驶于结冰路面,与在轮胎充气适当的情况下于干燥路面上行驶,需要的阈值可能大不相同。

在宝马公司,我们正在探索一种机器学习方法来检测过度转向。借助 MATLAB®,我们开发了一种监督式机器学习模型作为概念证明验证。尽管我们之前几乎没有任何机器学习方面的经验,但在短短三周内我们就完成了一个可正常工作的 ECU 原型,能够检测过度转向,并且准确率超过 98%。

收集数据和提取特征

我们首先收集汽车在发生过度转向之前、期间和之后的真实数据。在专业驾驶员的帮助下,我们在法国米拉马斯的宝马试验场对宝马 M4 进行了实时驾驶测试(图 2)。

图 2。位于法国米拉马斯的宝马试验场。

图 2. 位于法国米拉马斯的宝马试验场。

在测试期间,我们捕获了过度转向检测算法中的一些常用信号:车辆的纵向加速度、横向加速度、转向角度和偏航率。此外,我们还记录了驾驶员对过度转向的感知:当驾驶员指出汽车发生过度转向时,坐在乘客位置的同事会按下笔记本电脑上的一个按钮。当驾驶员指出汽车恢复正常驾驶状态时,该同事会松开按钮。这些按钮的按压创建了所需的地面实况真值标记,以供我们训练监督式学习模型。我们在 43 分钟的记录数据中总共捕获了大约 259,000 个数据点。

而远在回到我们慕尼黑的办公室,我们将收集到的数据加载到 MATLAB 中,并使用 Statistics and Machine Learning Toolbox™ 中的 Classification Learner 应用 app,利用各种分类器训练对机器学习模型进行训练。通过这些原始数据训练的模型并不会产生很出众的结果 - 其准确率大概在 75% 和 80% 之间。为了获得更准确的结果,我们清理并减少了原始数据。首先,我们应用滤波器来降低信号数据中的噪声(图 3)。

图 3。原始转向角度信号(蓝色)和经过滤波处理后的相同信号(橙色)。

图 3. 原始转向角度信号(蓝色)和经过滤波处理后的相同信号(橙色)。

接下来,我们使用峰值分析来识别经过滤波处理的输入信号的峰值(局部极值)(图 4)。

评估机器学习方法 在过滤和减少收集的数据后,我们能够更有效地评估监督学习方法。凭借 Classification Learner app,我们试用了 k-最近邻 (KNN) 分类器,支持向量机 (SVM)、二次判别分析和决策树。我们还使用该app,查看经由主成分分析 (PCA) 变换后得到的特征的效果,从而有助于防止过度拟合。 由我们评估的分类器所得出的结果,在表 1 中进行了归纳总结。所有分类器在识别过度转向方面均表现良好,其中有三个分类器取得了高于 98% 的真阳率。决定因素是真阴率:分类器能够确定车辆未发生过度转向的准确程度。这里,决策树的表现优于其他分类器,其真阴率几乎达到 96%。

图 4. 识别出峰值的转向角度信号。

评估机器学习方法

在过滤和减少收集的数据后,我们能够更有效地评估监督学习方法。凭借 Classification Learner app,我们试用了 k-最近邻 (KNN) 分类器,支持向量机 (SVM)、二次判别分析和决策树。我们还使用该app,查看经由主成分分析 (PCA) 变换后得到的特征的效果,从而有助于防止过度拟合。

由我们评估的分类器所得出的结果,在表 1 中进行了归纳总结。所有分类器在识别过度转向方面均表现良好,其中有三个分类器取得了高于 98% 的真阳率。决定因素是真阴率:分类器能够确定车辆未发生过度转向的准确程度。这里,决策树的表现优于其他分类器,其真阴率几乎达到 96%。

  真阳率 (%)
真阴率 (%)
假阳率 (%)
假阴率 (%)
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
表 1。四种不同的监督式机器学习分类器的结果概要。

生成车载装置测试所需的代码

决策树得出的结果十分令人看好,但真正测试是检验分类器在真实汽车中的 ECU 上的表现。我们使用 MATLAB Coder™ 从模型生成代码,并为安装在宝马 5 系轿车中的目标 ECU 编译代码。这一次,我们在靠近慕尼黑办公室的阿施海姆附近的宝马工厂亲自进行了测试。我亲自驾驶,我的同事负责收集数据,在我指出车辆发生过度转向时,同事准确地记录了这一时间。

在 ECU 上实时运行的分类器表现非常出色,准确率约为 95%。进入测试阶段后,由于使用了不同的车辆(宝马 5 系而不是 M4),不同的驾驶员和不同的赛道,我们不知道会发生什么样的情况。仔细观察数据后发现,模型与驾驶员所感知的过度转向不相符的情况,大多发生在过度转向开始和结束时。这种不相符可以理解;因为即使是驾驶员,也很难准确地确定过度转向是在何时开始和停止。

在成功开发出用于过度转向检测的机器学习模型,并将其部署在原型 ECU 上之后,我们现在正在构想机器学习的许多其他潜在应用。我们数十年来收集了大量可供使用的数据,而现在一辆汽车在一天内就可以生成数 TB 的测量数据。机器学习让我们有机会开发相关的软件,从而可以利用这些可用数据来了解驾驶员的行为并改善其驾驶体验。

2018年发布

查看文章,了解相关功能

查看文章,了解相关行业