rustcamera-calibrationspatial-projectionperformancedocker
[Pilot Test Analysis System] Rust 기반 고성능 분석 워커 도입 및 3D 공간 투영 최적화
• 2 min read
기존 Java 기반 API 서버에서 카메라 객체 인식 데이터의 좌표 변환(BBOX → 극좌표계)을 수행할 경우, 막대한 양의 행렬 연산으로 인해 스레드 풀이 고갈되고 가비지 컬렉션(GC) 스파이크가 발생했다. 또한, 2D 픽셀을 3D 공간으로 투영할 때 하드코딩된 해상도 비율이 어긋나면서 객체 거리가 9999.0m로 튕겨 나가는 계산 오류가 지속되었다. 연산 성능을 확보하고 물리적 캘리브레이션 정합성을 높이기 위해 Rust 기반 워커 노드를 분리 구축하였다.
[Rust / Daemon Worker] 행렬 연산 최적화를 위한 독립 분석 워커 컨테이너 분리
- 무거운 변환 연산을 전담할 백그라운드 데몬으로 Rust 프로젝트를 초기화하고, API 서버(분석 API가 시간 구간 및 대상 차량을 워커 모듈에 이관)와 독립된 도커 컨테이너로 분리 배포함.
influxdb2크레이트를 활용하여 데이터 통신 간 발생하는 타입 캐스팅 에러(UnsignedLong, String -> Float)를 유연하게 처리하도록Value파싱 로직을 강화함.- 필드명의 대소문자 및 공백 처리로 인한 누락 현상을
trim().to_lowercase()기반의 필드 매핑으로 방어함.
[Rust / Calibration] 동적 해상도 파라미터 적용 및 BBOX 스케일링 교정
- 추론 모델의 해상도와 카메라 원본 해상도 간의 불일치로 인한 투영 오류를 교정함.
- 렌즈 파라미터에서 하드코딩 상수들을 제거하고, 설정 파일(config)에서 카메라의
img_w,img_h를 동적으로 읽어와 탐지 영역(Bounding Box)의 비율을 맞추는 스케일링 로직을 도입함.
[Rust / Kinematics] 회전 변환 행렬 기반 3D 지면 투영 및 센서 축 오차 보정
- 2D 이미지 좌표를 3D 지면 좌표계(Ground-plane Position)로 변환할 때 카메라의 물리적 설치 각도(Roll, Pitch, Yaw)와 렌즈 시야각(FOV)을 적용한 회전 변환 행렬(Rotation Matrix) 로직을 전면 재구현함.
- 센서 축과 카메라 축의 불일치를 보정하기 위해 Roll/Pitch 부호를 반전시키고 연산 순서를 재정렬하여 레이더 상의 극좌표(r, theta) 신뢰도를 대폭 상향함. (예: 주행 방향에 따른 엄격한 객체 인식 범위 산출 보장)