-
CAN 데이터로 제동 성능 평가하기TSMaster 2024. 10. 4. 22:11
시작하기 전에
자동차 성능은 꾸준히 향상되어 왔다. 대부분의 일이 그렇듯이 많은 사람들의 노력 덕분이다. 하지만 자동차사 별로 성능 향상의 정도는 같지 않은 것 같다. 행복한 가정은 모두 비슷한 방식으로 행복한데, 불행한 가정은 각자의 방식으로 불행하다고 한 톨스토이의 말을 맘대로 가져다 자동차 성능 개발에 붙이자면 성능 향상을 잘 이룬 회사들은 모두 비슷한 방식으로 개발을 하는데 그렇지 않은 회사들은 각자의 방식으로 개발을 하는 것 같다.
(옆에서 봤더니) 잘 하는 회사들은 아래와 같이 하는 것 같다.
- 주관 평가보다는 객관 평가를 한다. 담당자가 바뀌어도 일관된 성능 평가가 이뤄진다.
- 객관 평가를 위한 성능 지표와 시험 방법이 있다. 그리고 목표 성능 지표를 지속적으로 높인다. 새로운 성능 지표와 시험 방법을 추가한다. 성능 지표들 사이의 우선 순위를 목적에 따라 조정한다.
- 소위 시스템을 갖추고 있고, 시스템을 꾸준히 개선한다. 성능 개선은 그런 관점에서 보면 시스템 개선의 부산물이다. (원래 목적물이겠지만)
객관 평가를 할 때 꼭 필요한 것이 데이터 측정과 데이터 처리이다. 내가 개발에 참여했던 전자 제어 제동 시스템 (EBS. Electronic Brake System)에는 10여 가지 제동 성능 평가 지표들이 있다. 그들 중 직진 제동의 성능 지표들로 Deceleration Uniformity (디셀 유니포머티), Average Yaw Rate (평균 요-레이트), Peak-to-peak Yaw Rate (요-레이트 변동폭) 등이 있다.
CAN 데이터에서 디셀 유니포머티, 평균 요-레이트, 요-레이트 변동폭을 계산하는 방법을 설명한다.
개요
- 이 실습에서는 CAN 데이터에서 각 제동 이벤트의 디셀 유니포머티, 평균 요-레이트, 요-레이트 변동폭을 계산하는 파이썬 스크립트를 작성한다. 순서는 아래와 같다.
- 차량 주행 중 CAN 데이터를 측정하여 blf 파일로 저장한다.
- blf 파일을 mat 파일로 변환한다.
- mat 파일로 변환하면 데이터를 컬럼으로 구분된 신호들과 타임스탬프를 인덱스로 하는 테이블 형태로 만들게 된다. 이렇게 하면 데이터 처리에 편리하다.
- mat 파일을 읽어 디셀 유니포머티, 평균 요-레이트, 요-레이트 변동폭을 계산하는 파이썬 스크립트를 작성한다.
- 파이썬 스크립트를 실행한다.
차량 주행 중 CAN 데이터 측정하기
- 이전 블로그에서 소개하였다. TSMaster로 차량 CAN 트레이스 받기 :: hsl's blog (tistory.com)
- 직접 실습을 해보실 분들은 TSMaster로 차량 CAN 트레이스에서 바퀴 속도 보기 :: hsl's blog (tistory.com) 에서 사용한 blf 파일을 이용하십시오.
blf 파일을 mat 파일로 변환하기
- blf 파일은 TSMaster가 수신하는 CAN 메시지들을 순차적으로 저장한 형태이다.
- dbc 파일 없이 blf 파일만으로는 어떤 신호가 무슨 값인지 알 수 없다.
- 따라서 blf만 읽어서는 신호 처리를 할 수 없다.
- 짝이 맞지 않는 blf 와 dbc 파일은 신호와 값을 잘못 해석하는 오류를 야기한다.
- 위의 불편과 오류 방지를 위해 반복해서 사용할 데이터라면 메시지 기반 구조의 blf 파일을 신호 기반 구조의 mat 혹은 mdf 파일로 변환하여 보관할 것을 권장한다.
- 디셀 유니포머티, 평균 요-레이트, 요-레이트 변동폭을 계산하기 위해서는 아래 신호들이 필요하다.
- 바퀴 속도
- 정차 여부를 확인하기 위해 필요하다.
- WHL_SPD11 메시지의 WHl_SPD_FL, WHL_SPD_FR, WHL_SPD_RL, WHL_SPD_RR 신호들이다.
- 종방향 가속도 (종가속도)
- 디셀 유니포머티 계산에 필요하다.
- ESP12 메시지의 LONG_ACCEL 신호이다.
- 요-레이트
- 평균 요-레이트와 요-레이트 변동폭 계산에 필요하다.
- ESP12 메시지의 YAW_RATE 신호이다.
- 제동 유압
- 제동 여부 확인에 필요하다.
- ESP12 메시지의 CYL_PRES 신호이다.
- 조향각
- 직진 제동 여부를 판정하는데 필요하다.
- SAS11 메시지의 SAS_Angle 신호이다.
- 횡방향 가속도 (횡가속도)
- 직진 제동 여부를 판정하는데 참조한다.
- ESP12 메시지의 LAT_ACCEL 신호이다.
- 바퀴 속도
- TSMaster의 Log Converter 기능을 이용하여 blf를 mat으로 변환한다.
- 메인 메뉴/ Analysis/ Log Converter 버튼을 클릭하여 TS Log Converter 창을 연다.
- Source File에 변환할 blf 경로를 입력한다.
- Destination File에서 MAT 버튼을 선택한다.
- 신호를 선택할 수 있는 옵션 메뉴창이 열린다. Configure CAN Signals ..를 선택한다.
- (익숙한) 데이터베이스 창이 열린다. 필요한 신호들을 선택한다. Ctrl 키를 누른 상태로 마우스 좌클릭을 하면 여러 신호들을 선택할 수 있다.
- 선택된 신호들이 신호 리스트 창에 표시된다.
- OK 버튼을 클릭하여 변환한다.
- mat 파일이 생성된다.
파이썬 스크립트를 작성한다.
- 실습에는 두 개의 파이썬 스크립트를 작성한다.
- mat 파일을 데이터프레임으로 변환하고 feather 파일로 저장하기
- 제동 성능 지표를 계산한다.
디셀 유니포머티 계산 방법
- 아래 그림은 제동 중 시간 vs 감가속도 그래프이다.
- 녹색 점선으로 표시한 프로파일은 이상적인 경우의 감가속도이다.
- 빨간색 실선으로 표시한 프로파일은 실제 감가속도이다.
- 디셀 유니포머티는 녹색 점선과 시간축이 사이의 면적 대비 빨간색 실선과 시간축 사이의 면적 비율이다.
- 녹색 점선은 다음과 같이 구한다. 제동 시작점과 빨간색 실선의 접점을 찾는다. 접점에서 빨간색 실선의 다음 접점을 찾는다. 이렇게 다음 접점 찾기를 정차 시점까지 반복한다.
결론
- 측정된 CAN 데이터에서 전자 제어 제동 시스템의 성능 평가 지표를 계산하였다.
- 성능 지표에 기반한 평가는 평가의 객관성과 일관성을 높인다. 객관성은 개발 업무 체계 수립의 근간이다. 체계적인 개발로 지속적이고 일관적인 성능 향상이 가능하다. 체계적인 개발에 데이터 측정과 데이터 처리는 필수이다.
'TSMaster' 카테고리의 다른 글
제동 성능 지표 계산하기 (0) 2024.10.05 mat 파일을 데이터프레임으로 변환하고 feather 파일로 저장하기 (0) 2024.10.04 CAN 신호들로 실시간 연산하기 (yaw_rate_ws) (0) 2024.09.29 TSMaster로 차에서 CAN 트레이스 받기 (1) 2024.09.29 TSMaster로 차량 CAN 트레이스에서 바퀴 속도 보기 (7) 2024.09.27