カルマンフィルターとは

カルマンフィルター(Kalman Filter)とは、ノイズ(誤差)を含む一連の観測データから、システムの状態(位置、速度、温度など)をリアルタイムで推定し、将来の状態を予測するための、再帰的な最適推定アルゴリズムを指します。

特に、不確実性のある環境下で、動的に変化するシステムの状態を高精度に把握する必要がある場合に広く利用されます。

カルマンフィルターの基本的な概念

カルマンフィルターは、システムの状態が時間とともにどのように変化するかを示す「状態方程式」と、その状態をどのように観測するかを示す「観測方程式」という二つの線形方程式に基づいて構築されます。それぞれの過程には、システムノイズと観測ノイズという不確実性が存在することを前提とします。

主な概念は以下の通りです。

  1. 状態(State): 推定したいシステムの物理量や特性の集合です。例えば、移動する物体の場合は、その位置、速度、加速度などが状態に含まれます。
  2. 状態方程式(State Equation): システムの現在の状態から次の状態へどのように変化するかを記述する数学的なモデルです。時間経過によるシステム自身の変化を表現します。

 \mathbf{x}k = F_k \mathbf{x}{k-1} + B_k \mathbf{u}_k + \mathbf{w}_k

ここで、

  • xk​: 時刻 k における真の状態ベクトル
  • Fk​: 状態遷移モデル(時刻 k−1 から k への状態の変化を表す行列)
  • xk−1​: 時刻 k−1 における真の状態ベクトル
  • Bk​: 制御入力モデル(制御入力が状態に与える影響を表す行列)
  • uk​: 時刻 k における制御入力ベクトル
  • wk​: システムノイズ(予測の不確実性やモデル化誤差を表す)
  1. 観測(Observation / Measurement): システムの状態をセンサーなどで測定して得られるデータです。このデータには必ずノイズが含まれます。
  2. 観測方程式(Observation Equation / Measurement Equation): システムの真の状態が、どのように観測データとして現れるかを記述する数学的なモデルです。センサーの特性やノイズを考慮します。

 \mathbf{z}_k = H_k \mathbf{x}_k + \mathbf{v}_k

ここで、

  • zk​: 時刻 k における観測ベクトル
  • Hk​: 観測モデル(状態から観測への変換を表す行列)
  • xk​: 時刻 k における真の状態ベクトル
  • vk​: 観測ノイズ(センサーの不確実性や測定誤差を表す)
  1. ノイズ(Noise): システムノイズ wk​ と観測ノイズ vk​ は、通常、平均0の正規分布に従うランダムな誤差としてモデル化されます。カルマンフィルターは、これらのノイズの分散共分散行列(Q と R)を考慮して、最適な推定を行います。
  2. 状態推定値(State Estimate): カルマンフィルターが最終的に出力する、システムの状態に関する最も確からしい推定値です。ノイズを含む観測データとシステムモデルの両方から導き出されます。
  3. 誤差共分散行列(Error Covariance Matrix): 状態推定値の不確実性(誤差の広がり)を示す行列です。この行列は、推定値の信頼度を評価するために重要です。

カルマンフィルターの動作原理:予測と更新の繰り返し

カルマンフィルターは、時間ステップごとに以下の2つの主要なステップを再帰的に繰り返すことで、状態推定を行います。

1. 予測ステップ(Prediction Step)

現在の状態推定値とシステムモデル(状態方程式)を用いて、次の時点でのシステムの状態と、その不確実性(誤差共分散)を予測します。これは、観測が行われる前に、システムがどのように動くと予測されるかを示します。

  • 状態の事前予測:

 \hat{\mathbf{x}}k^- = F_k \hat{\mathbf{x}}{k-1}^+ + B_k \mathbf{u}_k

($ \hat{\mathbf{x}}k^- $: 時刻 $k$ の予測状態推定値、$ \hat{\mathbf{x}}{k-1}^+ $: 時刻 k−1 の更新状態推定値)

  • 誤差共分散の事前予測:

 P_k^- = F_k P_{k-1}^+ F_k^\mathrm{T} + Q_k

($ P_k^- $: 時刻 $k$ の予測誤差共分散行列、$ P_{k-1}^+ $: 時刻 $k-1$ の更新誤差共分散行列、$ Q_k $: システムノイズの共分散行列)

2. 更新ステップ(Update Step)

予測ステップで得られた予測値と、新しい観測データを用いて、状態推定値と誤差共分散を修正・更新します。観測データはノイズを含むため、そのままの状態推定値とするのではなく、予測値と観測値の間にどれくらいの重み付けをするかを調整します。

  • カルマンゲインの計算:

 K_k = P_k^- H_k^\mathrm{T} (H_k P_k^- H_k^\mathrm{T} + R_k)^{-1}

($ K_k :カルマンゲイン、 R_k $: 観測ノイズの共分散行列) カルマンゲインは、新しい観測データがどの程度信頼できるか、また予測値と観測値のどちらをより重視するかを決定する重み付けの係数です。観測ノイズが小さいほど(Rk​ が小さいほど)、カルマンゲインは大きくなり、観測値をより信頼して推定値に反映させます。

  • 状態の事後更新:

 \hat{\mathbf{x}}_k^+ = \hat{\mathbf{x}}_k^- + K_k (\mathbf{z}_k - H_k \hat{\mathbf{x}}_k^-)

($ \mathbf{z}_k – H_k \hat{\mathbf{x}}_k^- $: 観測残差、つまり予測と実際の観測との差)

  • 誤差共分散の事後更新:

 P_k^+ = (I - K_k H_k) P_k^-

(I: 単位行列)

この予測と更新のサイクルを繰り返すことで、カルマンフィルターはノイズの中から真の状態を抽出し、より正確な推定と予測を行うことができます。

カルマンフィルターの応用分野

カルマンフィルターは、その高い精度と汎用性から、非常に多岐にわたる分野で利用されています。

  • 航空宇宙: 航空機、ロケット、衛星などの航法(ナビゲーション)システム。GPS信号と慣性計測装置(IMU)のデータを統合し、機体の位置、速度、姿勢を正確に推定します。
  • ロボット工学: 自律移動ロボットの自己位置推定(Localization)や、センサーフュージョン(複数のセンサー情報を統合して環境を認識する)に利用されます。
  • 自動車: 自動運転車の位置推定、物体追跡、センサーデータ(レーダー、LiDAR、カメラなど)の統合に不可欠です。
  • 金融工学: 株価や為替レート、金利などの時系列データの状態推定や予測モデルに用いられることがあります。
  • 気象予報: 観測データと気象モデルを統合し、より正確な気象状態を推定・予測します。
  • 医療: 患者の生体信号(心拍数、血圧など)のノイズ除去や、薬物の血中濃度推定など。

カルマンフィルターの拡張

基本的なカルマンフィルターは線形システムにのみ適用されますが、非線形システムにも対応できるよう、いくつかの拡張版が開発されています。

  • 拡張カルマンフィルター(Extended Kalman Filter:EKF): 非線形システムの状態方程式や観測方程式を、現在の推定点の周りで線形近似(ヤコビアン行列を使用)して適用するフィルターです。
  • アンセンテッドカルマンフィルター(Unscented Kalman Filter:UKF): 非線形変換によって確率分布の平均と共分散をより正確に追跡するために、特定の「シグマ点」を選んで変換する手法です。EKFよりも非線形性が強い場合に、より高い精度を発揮することがあります。
  • パーティクルフィルター(Particle Filter): 非ガウスノイズや極度の非線形性を持つシステムに対応可能な、より一般的な(しかし計算コストが高い)フィルターです。モンテカルロシミュレーションに基づいて状態を推定します。

カルマンフィルター(Kalman Filter)とは、ノイズを含む一連の観測データから、対象の動的な状態を最適に推定・予測する再帰的なアルゴリズムです。

システムの状態遷移を示す「状態方程式」と、観測のされ方を示す「観測方程式」をモデル化し、予測ステップと更新ステップを繰り返すことで、ノイズの影響を最小限に抑えながら真の状態を推定します。

その高精度な推定能力から、航空宇宙、ロボット工学、自動車、金融工学など、幅広い分野で位置推定、物体追跡、データ融合といった重要なタスクに利用されています。線形システム向けの基本形に加え、非線形システムに対応する拡張カルマンフィルター(EKF)やアンセンテッドカルマンフィルター(UKF)も存在し、現代の多くの制御・推定システムの中核をなす技術です。

関連用語

RNN(再帰型ニューラルネットワーク) | 今更聞けないIT用語集
アルゴリズム | 今更聞けないIT用語集
AIソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。