カルマンフィルタの基礎
価格:3,190円 (消費税:290円)
ISBN978-4-501-32890-0 C3055
奥付の初版発行年月:2012年10月 / 発売日:2012年10月上旬
カルマンフィルタの理論をわかりやすく丁寧に解説した教科書。学習の手助けになるよう演習問題も数多く掲載。初学者必読の書。実践に役立つMATLABのプログラムも掲載。パソコンでシミュレートを行うすべての学問領域が読者対象。
1960年代初頭にカルマンによって提案されたカルマンフィルタは,提案後の50年以上経った現在でも,理論と応用の両面において活発に研究開発されている.20世紀にはさまざまな科学技術が研究開発されたが,カルマンフィルタはシステム科学の分野におけるもっとも代表的な成果の一つだろう.
それまではたとえばRLC回路のような電気回路(ハードウェア)によって構成されていた電気的なフィルタを,1940年代に数理的な方法(ソフトウェア)で構築したのは米国のウィナーとロシアのコルモゴロフであったが,彼らの方法は数学的に非常に高度であり,また適用するための仮定も厳しかった.カルマンは,状態空間表現という新しい表現形式でフィルタリングの対象である時系列を記述し,逐次的な方法でフィルタリングされた値(状態推定値)を更新する方法を提案した.これは,計算機が生み出され科学的な計算が新しい方向に向かった1960年代に非常に合っていた.カルマンフィルタの逐次(再帰)計算は,ディジタル計算機のアルゴリズムとしてまさに合致していたのである.さらに,1960年代は宇宙開発が盛んに行われていた時代であり,カルマンフィルタは人工衛星の軌道推定という当時の最先端の対象に応用されて成功を収め,広く知られるようになった.
カルマンフィルタは,システム制御理論の枠組みで発展してきたが,時系列,すなわち,ディジタル信号,実験データ,社会科学データ,経済データなどを対象とするため,工学に限定されずさまざまな分野に適用できる.そのため,1960年代からの応用分野である航空・宇宙分野をはじめとして,ロボット工学,信号・画像処理,通信工学などの工学分野のほか,計量経済学,農学,生物学など多岐にわたる分野で適用研究が行われている.
カルマンフィルタを勉強するときのハードルの一つに,多様な前提知識が必要であることがあげられる.状態空間表現を用いるため,いわゆる現代制御理論(状態空間法)の知識がまず必要になる.さらに,確率統計論を用いるために,確率,確率過程論の基礎,最小二乗推定法,ベイズ推定など,数理統計学の知識が必要になる.制御理論と確率統計論という大学の理工系の講義でも難解だと言われることが多い二つの分野を理解していないと,カルマンフィルタを理解することは難しいというのが,初学者の学習を妨げていたかもしれない.
これまでに,洋書はもちろんのこと,和書でもカルマンフィルタのさまざまな良書が発行されているが,著者の私見ではかなりの前提知識がないと,それらの本を読みこなすことは困難だと思われる.特に和書では,制御の専門家向けの非常に理論的なものが多く,著者は長年カルマンフィルタの入門書を執筆したいと思っていた.
そこで,本書では,カルマンフィルタの対象を離散時間データ(時系列)に限定した.数学的には連続時間カルマンフィルタは魅力的なテーマであるが,カルマンフィルタの現実問題に適用する場合には,離散時間カルマンフィルタを使うことがほとんどだからである.そして,カルマンフィルタの基本形である線形カルマンフィルタについて,その導入から丁寧に解説した.また,理解の助けになるように,MATLABのプログラム例もいくつか掲載した.その一方で,著者の力のなさから数学的な厳密性を欠く記述が多く見られるかもしれないことをあらかじめお許し願いたい.さらに,カルマンフィルタがカバーする領域が,制御理論から確率統計論などにまたがるために,専門用語の使い方には頭を悩ませた.たとえば,”one-step-ahead prediction”という英語は,制御の世界では「一段先予測」と訳すことが多いが,統計の世界では「一期先予測」と訳されている.著者の専門が制御工学であるために,このような場合には制御での使い方を優先させていただいた.
本書の構成を図1に示す(省略)。本書は全8章からなっているが,どの章からでも読めるようにした.たとえば,手っ取り早くカルマンフィルタを理解したい読者は,第1章の「はじめに」を読んだあと,第6章の「線形カルマンフィルタ」に進んでもよい.時系列やシステムのモデリングを学びたい読者は,第2章,第3章が参考になるだろう.また,カルマンフィルタで用いる確率・統計的な前提である最小二乗推定法は第4章に,ベイズ統計の基礎は第5章に記述してある.第6章「線形カルマンフィルタ」は本書の中心部分であり,線形離散時間カルマンフィルタの基礎について丁寧に解説している.第7章は線形カルマンフィルタより高度な非線形カルマンフィルタについての解説である.第8章ではカルマンフィルタの応用例について記述した.
本書は,これまで著者が行ったカルマンフィルタに関するセミナー,および慶應義塾大学大学院での講義「モデルベースト制御理論」の講義資料をもとにして執筆された.わかりやすいカルマンフィルタの入門書を目指したつもりであるが,どうしても数式が多くなって,結果的にはわかりにくくなってしまったかもしれない.しかし,読者には直感だけでわかったつもりになるのではなく,カルマンフィルタの数式を読者自身で手計算し,MATLABなどを用いて実際に数値計算することによって,地道に理解を深めていっていただきたい.カルマンフィルタというキーワードに興味があり,基礎からじっくりと勉強して利用してみたいという方に読んでいただければ幸いである.
本書を執筆する材料は5年以上前から少しずつ準備していたが,カルマンフィルタの著書をまとめる決心がなかなかつかなかった.カルマンフィルタは,先駈的でかつ現在進行形のシステム科学の金字塔であり,著者がそのすべてを理解できるようなものではなかったからである.しかし,2011年3月11日に発生した東日本大震災が本書をまとめる大きなきっかけになった.さまざまな人たちがボランティアなどで被災地へ貢献されていたとき,私に何ができるか悩んでいたが,結局,私にできることは本業で頑張ることしかないと思った.難解と言われているカルマンフィルタの入門書を執筆し,その読者である研究者/技術者たちがカルマンフィルタ理論を大震災からの復興に役立ててくれることが,結果として私にできる社会貢献であると思ったのである.震災後の3月いっぱいは大学が休講となり,その期間を利用して集中的に本書を執筆した.
本書を執筆するにあたって,さまざまな方のお世話になった.まず,MATLABを用いたカルマンフィルタの例題作成で協力していただいた慶應義塾大学足立研究室の大学院生である馬場厚志君,川口貴弘君,伊藤大樹君に感謝します.そして,最終的にそれらのプログラムを統一的なものにまとめていただいた,第2の著者である丸田一郎博士(京都大学,本書を執筆時慶應義塾大学に在籍)に深く感謝します.これらのプログラムによって,本書はこれまでのカルマンフィルタの和書に比べて,より実用的なものになったと確信している.また,本書のドラフト原稿を読んで適切なコメントをくださった管野政明准教授(新潟大学)と村上俊之教授(慶應義塾大学)に感謝します.さらに,著者のカルマンフィルタに関する講義を受講していただいた慶應義塾大学の学生のみなさんによる,講義中の有益なフィードバックとドラフト原稿のタイプミスの発見に感謝します.最後に,本書の発行に際してさまざまな点でお世話になった東京電機大学出版局の吉田拓歩氏に感謝いたします.
2012年8月
著者を代表して 足立修一
目次
第1章 はじめに
1.1 カルマンフィルタ
1.2 フィルタとは
1.3 フィルタリング問題の例題
1.4 離散時間信号の推定問題
1.5 フィルタリング,システム同定問題の周辺
1.6 カルマンフィルタの設計手順と本書の構成
演習問題
参考文献
第2章 時系列のモデリング
2.1 モデリングとは
2.2 時系列のモデリングとシステムのモデリング
2.3 線形動的システムを用いた時系列のモデリング
2.4 確率過程のスペクトル分解とARMAモデル
2.5 ARモデルとMAモデル
2.6 時系列の状態空間モデル
2.7 状態空間モデルの実現
2.8 測定データに基づく時系列モデリング
演習問題
参考文献
第3章 システムのモデリング
3.1 信号とシステム
3.2 制御のためのモデリング
3.3 第一原理モデリング
3.4 システム同定
3.5 制御のためのモデリングのポイント
演習問題
参考文献
第4章 最小二乗推定法
4.1 最小二乗推定法(スカラの場合)
4.2 最小二乗推定法(多変数の場合)
演習問題
参考文献
第5章 ベイズ統計
5.1 はじめに
5.2 確率の初歩
5.3 ベイズの定理
5.4 ベイズ統計
5.5 推定理論
5.6 正規分布の場合の最尤推定法(スカラの場合)
5.7 最尤推定法(多変数の場合)
演習問題
参考文献
第6章 線形カルマンフィルタ
6.1 カルマンフィルタリング問題
6.2 逐次処理
6.3 時系列に対するカルマンフィルタ
6.4 数値シミュレーション例
6.5 システム制御のためのカルマンフィルタ
6.6 定常カルマンフィルタ
6.7 MATLAB例題
6.8 カルマンフィルタのパラメータ推定問題への適用
6.9 カルマンフィルタの特徴と注意点
演習問題
参考文献
第7章 非線形カルマンフィルタ
7.1 問題の説明
7.2 拡散カルマンフィルタ
7.3 UKF
7.4 数値シミュレーション例
7.5 状態と未知パラメータの同時推定
演習問題
参考文献
第8章 カルマンフィルタの応用例
8.1 相補フィルタ
8.2 リチウムイオン二次電池の状態推定
8.3 まとめ
演習問題
参考文献
付録A MATLABプログラム
A.1 無名関数
A.2 関数ハンドル
A.3 クロージャとしての関数ハンドル
A.4 高階関数
演習問題の回答
索引