spring-bootinfluxdbprt-analysisclusteringevent-processing

[Telemetry API Server] 운전자 반응 분석 엔진 도입 및 이벤트 클러스터링 고도화

2 min read

엣지 디바이스와 서버 간의 통신 불안정으로 인해 차량 제동 이벤트가 중복 카운팅되거나 부분적으로 유실되는 현상이 발생했다. 30fps 환경에서는 3초간의 제동이 90건의 독립된 이벤트로 과대 계측되어 정확한 반응 지표를 추출할 수 없는 한계가 있었다. 이를 해결하기 위해 단일 동작을 병합하는 서버사이드 클러스터링 알고리즘과 운전자 반응 분석 엔진을 연계 적용하였다.

[Java / Analysis Engine] 엣지 트리거 기반 인지 반응 시간(PRT) 분석 로직 구현

  • ReactionSummaryService를 신설하여 위험 요소 감지(zone_type) 시점과 물리적 회피 기동(급제동, 급조향) 간의 시간차를 기반으로 인지 반응 시간(PRT) 분석 로직을 구현함.
  • 분석 대상 이벤트 데이터를 기존 거동 데이터와 분리하여 저장하고, 이벤트 성립 조건 변경 시 기존 레코드를 빠르게 DROP 후 재생성하는 워크플로우를 채택함.
  • 조향 각속도 및 횡가속도 임계치 초과와 같은 엣지 트리거 이벤트를 InfluxDB difference() 함수를 통해 1차 필터링하여 불필요한 메모리 적재를 방지함.
  • 적정 시간의 에피소드 윈도우(Episode Window)를 설정하여 연속적인 위험 감지를 단일 단위로 그룹화함.
  • TotalSummaryFacadeService를 통해 차량 통계, 객체 통계, 반응 데이터를 단일 리스폰스(TotalSummary)로 제공함.

[Java / Service Layer] 동적 스키마 필터링 및 GPS 기반 속도 Fallback 쿼리

  • 과거 특정 시점을 기준으로 zone_type 식별자 값이 변경된 이력을 반영하여 조회 기간에 따라 필터링 기준값을 동적으로 주입하는 호환성 로직을 추가함.
  • CAN 통신 기반의 차량 속도 데이터 유실에 대비하여, 동일 쿼리 내에서 GPS 기반 속도 데이터(gps)로 주행 거리를 교차 산출하는 Fallback 로직을 구현함.

[Java / Cluster] 5000ms 하트비트 기반 서버사이드 이벤트 병합 알고리즘

  • 단일 동작이 과대 계측되는 현상을 해결하기 위해 서버 측 clusterEvents() 메서드에 하트비트 임계치(Heartbeat Threshold)를 적용하여 이벤트를 논리적으로 병합함.
  • InfluxDB의 stateChanges() 모듈 적용 시 발생한 식별자 오류를 우회하여, 엣지 디바이스 통신 갭(Gap) 발생 시에도 연속된 주행 액션을 정확한 단일 이벤트로 계측하도록 보장함.