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

2 min read

동기식 폴링 구조에서 발생하는 I/O 병목 현상을 해결하고 네트워크 수집 주기를 개선하기 위해, 코어 네트워크 계층을 비동기 이벤트 루프 체계로 변경하고 시계열 동역학 분석 툴을 개선했다.

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

네트워크 요청 후 응답을 순차 대기하던 기존 동기식 구조를 논블로킹(Non-blocking) 기반 다중 스케줄러 아키텍처로 변경했다.

  • 단일 스레드 구조를 비동기식 I/O 런타임(Asyncio)으로 교체해, 복수 타겟 제어기(ECU)를 향한 병렬 데이터 요청과 응답 대기를 스케줄링하도록 재설계했다.
  • 아키텍처 변경 결과 1사이클 네트워크 처리 시간을 200ms에서 60ms 수준으로 단축했고, 데이터 수집 주기를 기존 동기식 5Hz에서 비동기 I/O 기반 약 16.6Hz로 개선했다.
  • 프로토콜 멀티 프레임 전송 규격상 흐름 제어 응답 지연 구간을 테스트한 결과, 16.6fps가 네트워크 버스 부하 및 컨트롤러 처리 한계 내 최대 성능치임을 확인했다.

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

물리적 센서 노이즈 및 수집 동기화 오차에 따른 데이터 정합성 문제를 해결하기 위해 차량 거동 분석 로직을 추정 파이프라인에 추가했다.

  • 중력으로 인해 발생하는 종·횡 가속도 센서 출력 오차를 줄이기 위해, 네 바퀴의 개별 회전 속도차를 이용한 동역학 추정 로직을 적용했다.
  • 좌우 바퀴 회전 속도 편차와 차량 물리 제원(윤거)을 활용해 요 레이트(Yaw Rate) 추정치를 산출하고, 이를 기반으로 횡가속도를 역산하는 필터링 로직을 적용해 파싱 신뢰성을 개선했다.
  • 노이즈를 제거한 요 레이트와 직진·선회 임계치를 분석해 교차로 진입 여부를 시뮬레이션하는 통계 시각화 모듈(Matplotlib, Pandas)을 추가했다.