기술 칼럼

머신 러닝을 통한 BMW의 오버스티어링 감지하기

작성자: Tobias Freudling, BMW Group


오버스티어링은 차량의 후륜 타이어가 회전 구간을 운행하는 동안 그립을 잃는 안전하지 않은 상태입니다(그림 1). 오버스티어링은 타이어 마모, 미끄러운 도로 상태, 너무 빠른 회전, 갑작스러운 제동 또는 이들 요인의 조합으로 인해 발생할 수 있습니다.

그림 1. 테스트 트랙에서 BMW M4 오버스티어링.

그림 1. 테스트 트랙에서 BMW M4 오버스티어링.

오늘날의 안정성 제어 시스템은 오버스티어가 감지되면 자동으로 시정 조치를 하도록 설계되어 있습니다. 이론적으로, 이러한 시스템은 첫 번째 원칙에 기반한 수학적 모델을 사용하여 오버스티어링을 식별할 수 있습니다. 예를 들어, 온보드 센서의 측정값이 모델의 매개 변수에 대해 설정된 임계값을 초과하면 시스템에서 자동차가 오버스티어링인 것으로 판단합니다. 그러나 실제로, 이 접근법은 관련된 많은 요인의 상호 작용 때문에 구현하기 어렵다고 판명되었습니다. 얼음이 많은 도로에서 충분하게 공기가 들어가지 않은 타이어가 있는 자동차는 건조한 표면에 적절히 팽창된 타이어로 작동하는 동일한 차량과는 크게 다른 임계값이 필요할 수 있습니다.

BMW에서는 오버스티어링을 감지하는 머신 러닝 접근법을 모색하고 있습니다. MATLAB®에서 작업하면서 개념 증명으로 지도 학습 머신 러닝 모델을 개발했습니다. 이전에 머신 러닝에 대한 경험이 거의 없었음에도, 3주 만에 98%가 넘는 정확성으로 오버스티어링을 감지할 수 있는 작동 ECU 프로토타입을 완성했습니다.

데이터 수집 및 특징 추출

우리는 오버스티어링 전, 도중 및 후에 차량의 실제 데이터를 수집하는 것으로 시작했습니다. 전문 운전자의 도움을 받아 프랑스 미라마(Miramas)의 BMW 성능 시험장에서 BMW M4로 실제 주행 테스트를 했습니다(그림 2).

그림 2. 프랑스 미라마의 BMW 성능 시험장.

그림 2. 프랑스 미라마의 BMW 성능 시험장.

테스트 동안 오버스티어 감지 알고리즘에 일반적으로 사용되는 신호, 즉 차량의 전진 가속도, 측면 가속도, 조향각 및 요 레이트(yaw rate)를 포착했습니다. 또한, 우리는 오버스티어링에 대한 운전자의 인식을 기록했습니다. 운전자가 자동차가 오버스티어링 중임을 인식했을 때 승객으로 차에 타고 있던 내 동료가 노트북의 버튼을 눌렀습니다. 운전자가 차가 정상적인 조작으로 돌아왔음을 인식했을 때 그 동료는 버튼을 놓았습니다. 이 버튼 누름을 통해 지도 학습 모델을 훈련하는 데 필요한 지상 실측 자료의 레이블이 만들어졌습니다. 전체적으로 43분 동안 기록된 데이터에서 약 259,000개의 데이터 포인트를 수집했습니다.

뮌헨 사무실로 돌아가서, 수집한 데이터를 MATLAB에 로드하고 Statistics and Machine Learning Toolbox™의 분류 학습기(Classification Learner) 앱으로 다양한 분류 프로그램을 사용하여 머신 러닝 모델을 학습했습니다. 이 원시 데이터에 대해 훈련받은 모델에서 얻은 결과는 뛰어나지 않았습니다. 정확도는 75%에서 80% 사이였습니다. 보다 정확한 결과를 얻기 위해 원시 데이터를 정리하고 줄였습니다. 먼저 신호 데이터의 노이즈를 줄이기 위해 필터를 적용했습니다(그림 3).

그림 3. 원래 조향각 신호(파란색)와 필터링 후 같은 신호(주황색).

그림 3. 원래 조향각 신호(파란색)와 필터링 후 같은 신호(주황색).

다음으로 피크 분석을 사용하여 필터링된 입력 신호의 피크(로컬 최대값)를 확인했습니다(그림 4).

그림 4. 피크가 확인된 조향각 신호.

그림 4. 피크가 확인된 조향각 신호.

머신 러닝 접근법 평가

수집된 데이터를 필터링 및 축소한 후에 우리는 지도 머신 러닝 접근법을 평가할 수 있는 보다 나은 위치에 있었습니다. 분류 학습기(Classification Learner) 앱을 사용하여 k-최근접 이웃(KNN) 분류기, SVM(서포트 벡터 머신), 2차 판별 분석 및 의사결정 트리를 시도했습니다. 또한, 앱을 사용하여 PCA(주성분 분석)를 통해 과잉피팅을 방지하는 데 도움이 되는 특징을 변형시키는 효과를 보았습니다.

평가한 분류기에 의해 생성된 결과는 표1에 요약되어 있습니다. 모든 분류기는 오버스티어를 식별하는 데 탁월한 성과를 보였으나 3개는 98%가 넘는 진짜 양성률을 보였습니다. 결정 요인은 진짜 음성률, 즉 분류기가 차량이 오버스티어링이 아닐 때를 얼마나 정확하게 결정할 수 있는가였습니다. 여기서 의사결정 트리는 다른 분류기보다 성능이 좋았으며 거의 96%의 진짜 음성률을 보였습니다.

  진짜 양성(%)
진짜 음성(%)
거짓 양성(%)
거짓 음성(%)
PCA와 K-최근접 이웃
94.74 90.35 5.26 9.65
SVM(서포트 벡터 머신)
98.92 73.07 1.08 26.93
2차 판별 분석
98.83 82.73 1.17 17.27
의사결정 트리
98.16 95.86 1.84 4.14
표1. 네 가지의 서로 다른 지도 머신 러닝 분류기에 대한 결과 요약.

차량 내 테스트용 생성 코드

의사결정 트리에 의해 생성된 결과는 유망했지만, 진정한 테스트는 분류기가 실제 자동차의 ECU에서 얼마나 잘 수행되는가였습니다. 우리는 MATLAB Coder™를 사용하여 모델로부터 코드를 생성하고 BMW 5 시리즈 세단에 설치된 타겟 ECU에 대한 코드를 컴파일했습니다. 이번에는 아슈하임(Aschheim) 근처의 BMW 시설에서 테스트를 했습니다. 내가 운전하면서 동료가 데이터를 수집하여 자동차가 오버스티어링 중임을 나타내는 정확한 시간을 기록했습니다. 

ECU에서 실시간으로 작동하는 분류기는 놀라울 정도로 잘 수행되었으며 정확도는 약 95%입니다. 테스트에 들어가서 우리는 다른 차량(M4 대신 BMW 5 시리즈), 다른 운전자 및 다른 트랙을 사용했기 때문에 무엇을 기대해야 하는지 알지 못했습니다. 데이터를 면밀히 살펴보면 모델과 운전자가 감지한 오버스티어링 간 불일치의 대부분이 오버스티어링 상태의 시작과 끝부분에서 발생했음을 알 수 있습니다. 이 불일치는 이해할 수 있습니다. 운전자가 오버스티어가 언제 시작되고 멈추었는지 정확하게 판단하는 것조차 어려울 수 있습니다.

오버스티어링 감지를 위한 머신 러닝 모델을 성공적으로 개발하고 이를 프로토타입 ECU에 배치한 결과, BMW에서 머신 러닝을 위한 수많은 다른 잠재적인 응용 프로그램을 현재 구상 중입니다. 수십 년 동안 수집된 많은 양의 데이터를 사용할 수 있으며, 오늘날에는 단일 차량으로 하루에 1테라바이트의 측정 데이터를 생성할 수 있습니다. 머신 러닝은 가용 데이터를 사용하여 운전자의 행동을 학습하고 운전 경험을 향상하는 소프트웨어를 개발할 기회를 제공합니다.

2018년 기고

관련 기능에 대한 칼럼 보기

관련 산업에 대한 칼럼 보기