[OBD Acquisition & Kinematics] 비동기 데이터 수집 체계 전환 및 동역학 분석 엔진 고도화

2 min read

동기식 폴링 구조에서 발생하는 I/O 병목 현상을 해소하고 네트워크 수집 주기 제약을 돌파하기 위해, 코어 네트워크 계층을 비동기 이벤트 루프 체계로 전면 전환하고 시계열 동역학 분석 툴을 고도화했다.

[Python Asyncio / Network] 완전 비동기 루틴 기반 다중 스케줄러 구현

네트워크 요청과 응답을 순차적으로 대기하던 기존의 동기식 구조를 논블로킹(Non-blocking) 상태의 다중 스케줄러 아키텍처로 개편했다.

  • 단일 스레드 구조를 비동기식 I/O 런타임(Asyncio)으로 전면 교체하여, 복수의 타겟 제어기(ECU)로 향하는 병렬 데이터 요청과 응답 대기를 스케줄링하도록 재설계했다.
  • 이 전환을 통해 1사이클 네트워크 처리 시간을 200ms에서 60ms 수준으로 단축하였으며, 데이터 수집 주기를 기존 동기식 5Hz에서 비동기 I/O 기반 약 16.6fps(Hz)로 대폭 최적화했다.
  • 프로토콜의 멀티 프레임 전송 규격에 따른 흐름 제어(Flow Control) 응답 지연 구간을 벤치마킹하여, 현재 16.6fps가 네트워크 버스 부하 및 컨트롤러 처리 한계 내에서의 실질적 최대 성능치임을 구조적으로 검증했다.

[Python / Kinematics] 시계열 동역학 데이터 분석 파이프라인 연동

물리적 센서 노이즈 및 동기화 한계로 인한 데이터 정합성 문제를 해결하기 위해, 차량 거동 분석 로직을 추정 파이프라인으로 통합했다.

  • 지구 중력에 의해 노이즈가 개입되는 종/횡 가속도 센서 출력의 물리적 오차를 극복하기 위해, 네 바퀴의 개별 회전 속도차를 이용한 동역학 추정 파이프라인을 구축했다.
  • 좌우 바퀴의 회전 속도 편차와 차량의 물리적 제원(윤거)을 활용해 요 레이트(Yaw Rate) 추정치를 산출하고, 이를 바탕으로 횡가속도를 역산하는 필터링 로직을 적용해 데이터의 파싱 신뢰성을 향상시켰다.
  • 노이즈가 보정된 요 레이트와 직진/선회 상태 임계치를 결합 분석하여 교차로 진입 여부를 시뮬레이션할 수 있는 통계 시각화 모듈(Matplotlib, Pandas)을 연동했다.