この記事では、以下の記事の続きとして、カルマンフィルタを斜方投射(放物線運動)に適用した例を書きます🐜
データ同化|カルマンフィルタと尤度 - ari23の研究ノート
今回はカルマンフィルタの立式までとし、プログラムの実装とパラメタの設定は次回とします。
斜方投射
「斜方投射」というとちょっと難しい印象ですが、だたのボールを斜めに投げる放物線運動です。高校物理の範囲ですが、少し難しくするために空気抵抗を考慮します。
したがってここでは、真のモデルを空気抵抗ありのモデル式、シミュレーションモデルを空気抵抗なしのモデル式とし、カルマンフィルタを使って真値を予測することを目的とします。
空気抵抗あり
質量のボールを角度で投げたときのボールのxy座標を式で求める。初速はで、初期位置は、空気抵抗は速度に比例しとする。なお、ボールの大きさは考えない。
項目 | 内容 |
---|---|
質量 | [kg] |
初速 | [m/s] |
初期座標 | [m] |
投射角度 | [rad] |
空気抵抗 | [kg/s] |
重力加速度 | [m/s2] |
座標系は次の通り。
x軸とy軸の運動方程式は以下のように書ける。
両辺にする。
上式より、速度は以下のように書ける。
よって、x座標とy座標は以下となる。
空気抵抗なし
同様に、空気抵抗がない場合を考える。ただし、こちらは差分方程式で表す。
時刻の刻み幅をとしたとき、時刻のx座標の位置、速度、加速度は以下のように書ける。
はの1回微分、はの2回微分を示す。
同様にy座標は以下のように書ける。
なお、参考として、時刻で表すときのxy座標を以下に示す。
状態空間モデル
今度は、空気抵抗なしのシミレーションモデルを使って、状態空間モデルを立ててみます。
線形・ガウス状態空間モデル
システムモデル
状態変数をx軸の位置、速度、加速度と、y軸の位置、速度、加速度を含んだベクトルとする。つまり、とおく。
簡単のためシステムノイズを省略すると、以下のように書ける。
観測モデル
今回の系では、x軸の位置とy軸の位置が観測できるとする。つまり、とおく。
簡単のため観測ノイズを省略すると、以下のように書ける。
組み立てのポイント
状態空間モデルを立てるときに一番重要なことは、状態変数の要素です。今回はすべての同じ時刻でしたが、たとえばシミレーションモデルがARモデル(自己回帰モデル)であれば、など他の時刻の要素が入ってきます。
おわりに
斜方投射を題材に、状態空間モデルを立ててみました。かなり丁寧に書いたので、比較的わかりやすいかと思います。
参考になれば幸いです(^^)
なお、Pythonでの実装例は以下になります。こちらも、ぜひご覧ください。
データ同化|斜方投射のカルマンフィルタをPythonで実装 - ari23の研究ノート
参考文献
参考文献は以下の通りです。
データ同化入門 (予測と発見の科学)
データ同化分野で私にとってのバイブルです。決して簡単ではないですが、数学的議論がかなりきちんとなされています。データ同化に取り組むときは、まずこれを読んでいます。カルマンフィルタの基礎
工学の視点からカルマンフィルタが丁寧に説明されています。カルマンフィルタならこれがおすすめです。時系列解析の方法 (統計科学選書)
カルマンフィルタはもちろん、タイトル通り時系列解析の手法が解説されています。比較的読みやすいです。