commaai/rednose

Kalman filter library

What it solves

Rednoseは、センサーフュージョン、視覚的オドメトリ、および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姿勢を管理し、ジンバルロックや冗長性の問題を回避します。
  • 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テスト。