概要

"簡単に説明出来ないのであれば、あなたはそれを十分に理解していないということだ。"

アルベルト・アインシュタイン

このチュートリアルについて

カルマンフィルタは簡単なトピックです。しかし、世の中にある多くのチュートリアルは理解することが容易ではありません。そのチュートリアルのほとんどは、広範な数学的背景を必要とするため、理解することが難しく感じます。また、ほとんどの場合、実用的な数値例がありません。

そこで私は、数値例をもとに、簡単で直感的に理解できるように解説するチュートリアルを書くことにしました。

いくつかの例は、カルマンフィルタが広く使われているレーダーの世界からのものです(主にターゲット追跡)。しかし、ここで紹介する原理は、推定や予測が必要とされる、ありとあらゆる分野に応用することができます。

チュートリアルは3つのパートから構成されています。

  • Part 1 – カルマンフィルタの入門編。このパートでは、8つの数値例に基づいて説明します。事前の数学的知識は必要ありません。平均、分散、標準偏差などの、必要な数学的背景はすべてチュートリアルの中で説明されます。「サルでもわかるカルマンフィルタ(The Kalman Filter for Dummies)」と呼んでもよいでしょう。最初の部分を読めば、カルマンフィルターの概念を理解し、「カルマンフィルターの勘」を養うことができます。また、1次元のカルマンフィルタを設計することができるようになります。
  • Part 2 – 多次元カルマンフィルタ(行列表記のカルマンフィルタ)。これは少し高度な話です。現実のカルマンフィルタの実装のほとんどは多次元であり、線形代数の基礎知識(行列演算のみ)が必要です。しかし、必要な数学的背景はチュートリアルで提供されています。カルマンフィルタの数学的な導出と動的システムのモデリングも含まれています。 Part 2 を読めば、カルマンフィルタの背後にある数学が理解できるようになるでしょう。また、多次元カルマンフィルタを設計することができるようになります。
  • Part 3 – 高度なトピックを紹介します。このパートは上級者向けで、主に統計学の分野での数学的素養が必要です。現在、このパートは企画中です。Extended Kalman Filter、Unscented Kalman Filter、Kalman Filter implementation in different real-life applicationsなどを含む予定です。

"理論に学ぶ道は長いが、実例に学ぶことで短く効率的になる。"

ルキウス・アンナエウス・セネカ

著者について

私の名前はAlex Beckerです。私はイスラエル出身で、無線通信分野で15年以上の経験を持つエンジニアです。仕事の一環として、主にトラッキングのためにカルマンフィルタを扱った経験があります。

建設的な批評はいつでも歓迎します。コメントや助言、提案をいただければ幸いです。ぜひメールにてご連絡ください。

このチュートリアルの例は、著者が知っている運用システムで採用されているモード、方法論、技術、パラメータを例証するものではありません。
Alex Becker

日本語版について

翻訳者: 関野 秀都、東京都立大学大学院 航空宇宙システム工学域 博士前期課程。

大学院では、航空機の飛行制御に関する研究を行っています。研究活動において、モデルのパラメータ推定のためにカルマンフィルタを使用しています。

カルマンフィルタについて

現代のほとんどのシステムは、一連の測定値に基づいて、隠れた(未知の)変数の推定を行う多数のセンサーを備えています。例えば、GPS受信機は位置と速度の推定を行います。ここで、位置と速度は未知の変数であり、衛星信号の到着時間の差は測定値です。

追跡・制御システムの大きな課題の1つは、不確実性が存在する中で、未知の変数を正確かつ高精度に推定することです。GPS受信機では、測定の不確かさは、熱雑音、大気の影響、衛星位置のわずかな変化、受信機のクロック精度など、多くの外部要因に依存します。

カルマンフィルタは、最も重要かつ一般的な推定アルゴリズムの一つです。カルマンフィルタは、不正確で不確実な測定値に基づいて、未知の変数の推定値を計算します。また、カルマンフィルタは過去の推定値に基づいて将来のシステムの状態を予測することができます。

フィルタの名前は、ルドルフ・E・カルマン(Rudolf E. Kálmán、1930年5月19日 - 2016年7月2日)にちなんでいます。1960年、カルマンは離散データの線形フィルタリング問題に対する再帰的な解法を記述した有名な論文を発表しました。

今日、カルマンフィルタは、目標物追尾(レーダー)、位置情報・ナビゲーションシステム、制御システム、コンピュータグラフィックスなど、様々な分野で利用されています。

Rudolf E. Kálmán

予測の要求

カルマンフィルタの説明に入る前に、まず予測アルゴリズムの必要性について理解しましょう。

例として、レーダーによる追跡アルゴリズムを考えます。

Tracking Radar

追尾レーダーは、目標の方向にペンシルビームを発射します。ここで、追跡周期を5秒とします。つまり、5秒ごとにレーダーは目標の方向に追跡ビームを発射し、目標を捉えます。

ビームを発射した後、レーダーは現在のターゲットの位置と速度を推定します。また、次の追跡ビーム時のターゲットの位置も推定(予測)します。

将来のターゲットの位置は、ニュートンの運動方程式を用いて簡単に計算することができます。

\[ x= x_{0} + v_{0} \Delta t+ \frac{1}{2}a \Delta t^{2} \]
ここで、
\( x \) ターゲットの位置
\( x_{0} \) ターゲットの初期位置
\( v_{0} \) ターゲットの初期速度
\( a \) ターゲットの加速度
\( \Delta t \) 時間間隔(この例では5秒)

3次元では、ニュートンの運動方程式は連立方程式として記述することができます。

\[ \left\{\begin{matrix} x= x_{0} + v_{x0} \Delta t+ \frac{1}{2}a_{x} \Delta t^{2}\\ y= y_{0} + v_{y0} \Delta t+ \frac{1}{2}a_{y} \Delta t^{2}\\ z= z_{0} + v_{z0} \Delta t+ \frac{1}{2}a_{z} \Delta t^{2} \end{matrix}\right. \]

ターゲットのパラメータ \( \left[ x, y, z, v_{x},v_{y},v_{z},a_{x},a_{y},a_{z} \right] \) はシステムの状態量と呼ばれます。

上記の式を動的モデル(または状態空間モデル)と呼びます。動的モデルは、入力と出力の関係を表します。

話を例に戻しましょう。見ての通り、現在の状態と動的モデルが分かっていれば、次のターゲットの状態は簡単に予測することができます。

とはいうものの、実際はそんなにうまくはいきません。まず、レーダーによる測定は正確なものではありません。ランダムな誤差(不確実性)を必ず含んでいます。誤差の大きさは、レーダー校正、ビーム幅、反射波の強度など、多くのパラメータに依存します。測定に含まれる誤差は、観測ノイズと呼ばれます。

さらに、風や空気の乱れ、パイロットの操縦などの外的要因によって、ターゲットの動きは厳密には上記の運動方程式と一致しません。このような動的なモデルの誤差(あるいは不確かさ)はプロセスノイズと呼ばれます。

観測ノイズやプロセスノイズの影響によって、推定されたターゲットの位置が実際の位置から大きく外れることがあります。この場合、レーダーは誤った方向にビームを発射し、ターゲットを見逃してしまう可能性があります。

そのため、レーダーの追尾性能を向上させるためには、モデルの不確かさと観測の不確かさを考慮した予測アルゴリズムが必要となります。

そこで、最も広く使われている予測アルゴリズムが、カルマンフィルタ です。