commaai/rednose

Kalman filter library

What it solves

Rednose는 센서 퓨전, 시각적 주행 거리 측정(visual odometry) 및 SLAM (Simultaneous Localization and Mapping)과 관련된 최적화 문제를 위해 설계된 Kalman filter 프레임워크입니다. 온라인 및 오프라인 모두에서 작동할 수 있는 정확하고 계산 효율적인 필터를 생성하는 프로세스를 단순화합니다.

How it works

이 프레임워크는 비선형 시스템과 3D 방향을 처리하기 위한 여러 고급 추정 기술을 제공합니다.

  • Extended Kalman Filter (EKF): sympy를 사용하여 Jacobian을 기호적으로 계산하여, 비선형 시스템의 선형화와 관련된 일반적인 수동 계산 오류를 제거합니다.
  • Error State Kalman Filter (ESKF): 시스템 상태를 쿼터니언(quaternions)으로 표현하면서 오차를 설명하기 위해 오일러 각(Euler angles)을 사용하여 3D 방향을 관리함으로써, 짐벌 락(gimbal lock) 및 중복 문제를 방지합니다.
  • Multi-State Constraint Kalman Filter (MSCKF): 특징점 깊이와 카메라 위치 사이의 의존성을 관리하여 특징 기반 시각적 주행 거리 측정을 통합함으로써 신뢰도 추정에서의 양의 피드백 루프를 방지합니다.
  • Rauch–Tung–Striebel (RTS) Smoothing: 필터를 역방향으로 실행하여 오프라인 추정을 가능하게 함으로써 정확도를 높이고 초기화 오류를 줄입니다.
  • Mahalanobis Distance: 가우시안 분포를 따르지 않는 측정값의 이상치를 거부하기 위한 통계적 테스트를 구현합니다.

Who it’s for

Python에서 복잡한 센서 퓨전 필터를 구현하는 견고한 방법이 필요한 로보틱스, 자율 주행 차량 및 3D 위치 추정 알고리즘 개발자와 엔지니어.

Highlights

  • Symbolic Jacobians: SymPy를 사용하여 선형화 프로세스를 자동화합니다.
  • Robust 3D Orientation: 쿼터니언(quaternions)과 오일러 각(Euler angles)을 처리하기 위한 ESKF에 특화된 지원.
  • Visual Odometry Support: 이미지 기반 특징을 통합하기 위한 MSCKF에 대한 완전한 지원.
  • Offline Optimization: 거의 전역 최적화 성능을 위한 RTS smoothing.
  • Outlier Rejection: 노이즈가 많은 센서 데이터를 위한 내장된 Mahalanobis distance 테스트.