説明

状態推定装置

【課題】高速且つ処理負荷の小さな非線形カルマンフィルタの演算を実現する。
【解決手段】状態推定装置は、3次元磁気センサ70を含む複数のセンサと、システムの状態を表す複数の状態変数を要素とする状態ベクトルx及び複数のセンサからの出力値を要素とする観測値ベクトルyを用いて状態ベクトルxを更新することによりシステムの状態を推定する複数のカルマンフィルタKFと、互いに異なる複数の初期ベクトルINIを生成し、状態ベクトルxの初期値として複数のカルマンフィルタKFの各々に供給する初期値生成部200と、複数のカルマンフィルタKFの推定精度を各々評価することで、推定精度が最も高いカルマンフィルタを特定し、特定したカルマンフィルタKFを除く他のカルマンフィルタKFの動作を停止させるカルマンフィルタ制御部400とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、状態推定装置に関する。
【背景技術】
【0002】
地磁気の向きや、物体の姿勢等を算出する場合、地磁気センサからの出力結果のみに基づいて算出するよりも、地磁気センサの他に加速度センサや角速度センサ等の異種の物理量を測定する複数のセンサの出力結果を統合して算出した方が、短時間で正確な値を求めることができる。
【0003】
異種の物理量を測定する複数のセンサの出力を統合し、動的システムの状態を推定する方法として、非線形カルマンフィルタを用いる方法が知られている。例えば、特許文献1には、3軸の角速度センサ及び3軸の加速度センサと非線形カルマンフィルタとを実装した姿勢角計測装置が開示されている。また、非特許文献1には、3軸角速度センサ、3軸加速度センサ、及び3軸地磁気センサからの出力信号を、拡張カルマンフィルタやアンセンテッド変換を用いたシグマポイントカルマンフィルタを用いて統合し、姿勢を推定する方法が開示されている。
【0004】
一般的に、非線形カルマンフィルタは、動的システムの状態を表す複数の物理量の経時的な変化を推定する状態遷移モデルと、推定された動的システムの状態から、動的システムの有する複数のセンサが計測する値(観測値)を推定する観測モデルとを有する。そして、非線形カルマンフィルタは、推定された観測値と、複数のセンサが実際に測定する観測値との差分(観測残差)を用いて、動的システムの状態を表す複数の物理量を推定する値(状態変数)を要素とする状態ベクトルを逐次更新することにより、状態ベクトルの各要素の示す値を、実際の物理量(真値)に近づける。
このように、非線形カルマンフィルタは、状態ベクトルと、状態ベクトルに基づいて算出される観測残差とを用いて、状態ベクトルを逐次更新する演算であるため、状態ベクトルの初期値の要素が真値から乖離した値に設定された場合、状態ベクトルの各要素が真値に近い値に収束するまでに長時間を要することがあり、更には、状態ベクトルの各要素が真値とは異なる不正確な値に収束することも起こり得る。
【0005】
特許文献2には、複数のカルマンフィルタに異なる初期値を与えて並列に動作させ、観測残差が最も少ないカルマンフィルタを用いて状態の推定を実行することで、真値から乖離した初期値が設定されることによる発散状態(状態ベクトルの要素が真値から大きく乖離した状態)を回避する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平9−5104号公報
【特許文献2】特開平4−169814号公報
【非特許文献】
【0007】
【非特許文献1】Wolfgang Gunthner, “Enhancing Cognitive Assistance Systems with Inertial Measurement Units”, Springer, 2008
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、観測残差にはノイズが重畳しているため、ある時刻で選択したカルマンフィルタが、次の時刻において最も観測残差が小さくなるとは限らない。従って、従来の技術のように、単に観測残差が最小になるカルマンフィルタを選択すると、不適切なものを選択してしまう可能性があるといった問題が存在する。
さらに、従来の技術のように、複数のカルマンフィルタを並列で動作させる場合、状態ベクトルを収束させる時間を短縮することができるが、処理負荷が増加する。すなわち、状態ベクトルが収束するまでの時間と処理負荷とはトレードオフの関係にあるといった問題があった。
【0009】
本発明は、上述した点に鑑みてなされたものであり、状態ベクトルを適切な値に高速に収束させるとともに、非線形カルマンフィルタの演算に係る処理負荷を低減させることを解決課題とする。
【課題を解決するための手段】
【0010】
上述した課題を解決するため、本発明に係る状態推定装置は、システムを観測して観測値を各々出力する複数のセンサと、前記システムの状態を表すための複数の状態変数を要素とする状態ベクトルと、前記複数のセンサから各々出力される観測値を要素とする観測値ベクトルとを用いて、前記状態ベクトルを更新することで、前記システムの状態を推定する複数のカルマンフィルタと、互いに異なる複数の初期ベクトルを生成し、複数の前記初期ベクトルのそれぞれを、前記状態ベクトルの初期値として前記複数のカルマンフィルタの各々に供給する初期値生成部と、前記複数のカルマンフィルタの推定精度を各々評価し、前記複数のカルマンフィルタのうち、推定精度が最も高いカルマンフィルタを特定し、特定したカルマンフィルタを除く他のカルマンフィルタの動作を停止させるカルマンフィルタ制御部と、を備えることを特徴とする。
【0011】
カルマンフィルタは、状態ベクトルと観測値ベクトルとを用いて、状態ベクトルを更新する演算を繰り返すことにより、状態ベクトルの各要素を真値に近い値に収束させ、システムの状態を推定する。従って、状態ベクトルの初期値(すなわち、初期ベクトル)の要素が真値から大きく乖離する場合には、状態ベクトルの各要素が真値に近い値に収束するまでに長時間を要することがあり、更には、状態ベクトルの各要素が真値とは異なる不正確な値に収束することも起こり得る。このような初期ベクトルが供給されるカルマンフィルタは、推定精度が低く、システムの状態を正確に推定することはできない。
【0012】
この発明によれば、状態推定装置は、複数のカルマンフィルタに対して、互いに異なる複数の初期ベクトルをそれぞれ供給し、これら複数のカルマンフィルタを並列で動作させる。状態推定装置が互いに異なる複数の初期ベクトルを生成する場合、1つの初期ベクトルを生成する場合に比べて、真値に近い値を要素とする初期ベクトルが含まれる可能性が高い。真値に近い値を要素とする初期ベクトルが供給されるカルマンフィルタは、状態ベクトルの各要素が正確且つ高速に真値に収束させることができるため、システムの状態の推定精度も高い。
そして、状態推定装置は、複数のカルマンフィルタの中から、推定精度が最も高いカルマンフィルタを特定し、特定したカルマンフィルタにより状態推定を行うとともに、特定したカルマンフィルタ以外のカルマンフィルタを停止する。従って、本発明に係る状態推定装置によれば、正確且つ高速な状態推定が可能であるとともに、状態推定に係る処理負荷の低減が可能となる。
【0013】
また、上述した状態推定装置において、前記カルマンフィルタは、前記状態ベクトルと、前記観測値ベクトルとに基づいて観測残差を算出するとともに、前記状態ベクトルの推定誤差の共分散を算出し、前記カルマンフィルタ制御部は、前記複数のカルマンフィルタの各々が出力する前記観測残差に基づいて、前記状態ベクトルと前記システムの状態との誤差を評価する誤差評価値が最小となるカルマンフィルタを選択する観測残差比較部と、前記観測残差比較部によって選択されたカルマンフィルタが出力する前記状態ベクトルの推定誤差の共分散に基づいて、前記状態ベクトルの収束の程度を表す収束評価値を算出し、前記収束評価値が閾値以下であるか否かを判定する収束度判定部と、前記収束度判定部の判定結果が肯定である場合、前記観測残差比較部によって選択されたカルマンフィルタを、推定精度が最も高いカルマンフィルタであると特定し、特定したカルマンフィルタを除く他のカルマンフィルタの動作を停止させる、停止制御部と、を更に備えることが好ましい。
【0014】
この発明によれば、状態推定装置は、誤差評価値と収束評価値とを用いて、推定精度が最も高いカルマンフィルタを特定する。
誤差評価値は、観測残差に基づいて定められ、状態ベクトルの示す値と真値との誤差を表す値である。すなわち、誤差評価値が小さい場合、状態ベクトルの各要素は真値に近い値を示す。従って、誤差評価値が最小となるカルマンフィルタは、システムの状態を最も正確に推定するカルマンフィルタであると看做すことができる。
一方、収束評価値は、状態ベクトルの推定誤差の共分散に基づいて定められるものであり、状態ベクトルの収束の程度を表す値である。状態ベクトルが収束している場合、ある時刻において状態ベクトルの各要素が真値に近い値を示していれば、当該ある時刻以降においても状態ベクトルの各要素は真値に近い値を示す可能性が高い。すなわち、収束評価値が小さい場合、カルマンフィルタは安定的にシステムの状態を推定することができる。
このような、誤差評価値と、収束評価値とを用いることにより、ある時刻においてシステムの状態を最も正確に推定し、且つ、当該ある時刻以降も安定的にシステムの状態を推定することができるカルマンフィルタを特定することができる。すなわち、本発明に係る状態推定装置は、推定精度の最も高いカルマンフィルタを正確に特定し、正確且つ安定的な状態推定を行うことが可能になる。
【0015】
また、上述した状態推定装置において、前記観測残差比較部は、前記観測残差のうち少なくとも一部の要素のノルムの、現在時刻から所定時間だけ過去の時刻までの所定期間における最大値を、前記複数のカルマンフィルタごとに算出し、算出した複数の前記最大値が最小となるカルマンフィルタを、前記誤差評価値が最小となるカルマンフィルタとして選択する、ことを特徴とすることが好ましい。
【0016】
誤差評価値は、観測残差に基づいて算出される値である。しかし、観測残差は、複数のセンサから各々出力される観測値を要素とする観測値ベクトルに基づいて算出されるベクトルであるため、ノイズが重畳する。
この発明によれば、観測残差のうち少なくとも一部の要素のノルムについて、所定期間における最大値を誤差評価値とする。従って、観測残差が観測ノイズ等により変動する場合であっても、ノイズによる影響を小さく抑えて誤差評価値を算出することができ、状態ベクトルの示す値と真値との誤差の大きさを正確に把握することが可能となる。
【0017】
また、上述した状態推定装置において、前記収束評価値は、前記状態ベクトルの推定誤差の共分散を表す行列のトレースである、ことを特徴とすることが好ましい。
【0018】
一般的に共分散行列の固有値は、当該固有値に対応する固有ベクトル方向の分散の大きさを表す値である。従って、状態ベクトルの推定誤差の共分散のトレース(すなわち、共分散行列が有する複数の固有値の和)は、状態ベクトルの推定誤差の大きさを表す。
また、カルマンフィルタは、状態ベクトルを、初期状態から現在時刻に至る全ての状態ベクトルの値を考慮して更新する。従って、状態ベクトルの推定誤差の共分散も、初期状態から現在時刻に至る全ての共分散の値を考慮して更新される。よって、状態ベクトルの推定誤差の共分散のトレースが小さな値となる場合、状態ベクトルの推定誤差が小さな値で安定している状態(すなわち、状態ベクトルが収束している状態)であると看做すことができる。
本発明は、収束評価値として、状態ベクトルの推定誤差の共分散のトレースを採用したため、状態ベクトルが集束している状態であるか否かを正確に判定することが可能となる。
【0019】
また、上述した状態推定装置において、前記カルマンフィルタ制御部が、前記他のカルマンフィルタを停止させる前は、前記複数のカルマンフィルタは、第1のデータ型を用いて演算を行い、前記カルマンフィルタ制御部が、前記他のカルマンフィルタを停止させた後は、前記カルマンフィルタ制御部によって特定されたカルマンフィルタは、前記第1のデータ型よりもデータサイズの大きな第2のデータ型を用いて演算を行うことを特徴とすることが好ましい。
【0020】
この発明によれば、複数のカルマンフィルタが並列で動作するときは、これら複数のカルマンフィルタは、データサイズの小さな第1のデータ型を用いた演算を行う。従って、本発明に係る状態推定装置は、複数のカルマンフィルタを並列で動作させる場合の計算負荷を、低減することができる。
一方、この発明によれば、特定されたカルマンフィルタが単独で動作するときは、当該特定されたカルマンフィルタは、データサイズの大きな第2のデータ型を用いた演算を行う。従って、本発明に係る状態推定装置は、特定された1つのカルマンフィルタにより演算を行う場合に、高い精度でシステムの状態を推定することが可能となる。
【図面の簡単な説明】
【0021】
【図1】本発明の実施形態に係る携帯機器の構成を示すブロック図である。
【図2】携帯機器の外観を示す斜視図である。
【図3】本発明の実施形態に係る状態推定プログラムが実行されることにより実現される機能を表す、機能ブロック図である。
【図4】本発明の実施形態に係る状態推定装置の動作を説明するためのフローチャートである。
【図5】初期姿勢を説明するための概念図である。
【図6】初期姿勢を説明するための概念図である。
【図7】初期姿勢を説明するための概念図である。
【図8】本発明の実施形態に係るカルマンフィルタの機能を説明するための機能ブロック図である。
【発明を実施するための形態】
【0022】
<A.実施形態>
本発明の実施の形態について図面を参照して説明する。
【0023】
[1. 機器構成及びソフトウェア構成]
図1は、本発明の実施形態に係る携帯機器1のブロック図であり、図2は携帯機器1の外観を示す斜視図である。携帯機器1は、携帯機器1の姿勢の変化に応じて、携帯機器1が備える画面に表示される地図などの画像を回転させ、画像によって表される方位を現実空間の方位に追従させる機能を備える。この機能は、携帯機器1が備える各種センサの出力に基づいてカルマンフィルタの演算を行い、携帯機器1の姿勢または携帯機器1から見た地磁気の向き等を推定することによって実現される。
【0024】
携帯機器1は、各種の構成要素とバスを介して接続され装置全体を制御するCPU10、CPU10の作業領域として機能するRAM(蓄積部)20、状態推定プログラム100等の各種のプログラムやデータを記憶したROM30、通信を実行する通信部40、画像を表示する表示部50、及びGPS部60を備える。
また、携帯機器1は、地磁気等の磁気を検出して磁気データqを出力する3次元磁気センサ70、加速度を検出して加速度データaを出力する3次元加速度センサ80、及び角速度を検出して角速度データgを出力する3次元角速度センサ90を備える。
【0025】
表示部50は、CPU10が状態推定プログラム100を実行することにより推定したシステムの状態に基づいて算出された地磁気の向きや携帯機器1の姿勢μ等を、矢印等の画像により表示する。
GPS部60は、GPS衛星からの信号を受信して携帯機器1の位置情報(緯度、経度)を生成する。
【0026】
3次元磁気センサ70は、地磁気を検出するためのセンサであり、X軸磁気センサ71、Y軸磁気センサ72、及びZ軸磁気センサ73を備える。各センサは、MI素子(磁気インピーダンス素子)、MR素子(磁気抵抗効果素子)などを用いて構成することができる。磁気センサI/F74は、各センサからの出力信号をAD変換して磁気データqを出力する。この磁気データqは、x軸、y軸およびz軸の3成分を有するベクトルとして表されるデータである。より具体的には、磁気データqは、3次元磁気センサ70と一体となって運動する携帯機器1に固定された座標系において、X軸磁気センサ71からの出力値がx軸成分として表され、Y軸磁気センサ72からの出力値がy軸成分として表され、Z軸磁気センサ73からの出力値がz軸成分として表されるベクトルデータである。
なお、3次元磁気センサ70は、携帯機器1に設けられるため、地磁気の他に、携帯機器1の部品が発する内部磁界と、携帯機器1の外部にある外部物が発する外部磁界とを検出する。但し、本実施形態では、外部磁界は無視できる程度に小さいものと想定する。
従って、磁気データqを用いて地磁気の向き及び大きさを算出するためには、磁気データqから、内部磁界を表す成分を減算する補正処理を行う必要がある。この補正処理において、減算される値(つまり、内部磁界を表す成分)を、3次元磁気センサ70のオフセットと呼ぶ。
【0027】
3次元加速度センサ80は、X軸加速度センサ81、Y軸加速度センサ82、及びZ軸加速度センサ83を備える。各センサは、ピエゾ抵抗型、静電容量型、熱検知型などどのような検知方式であってもよい。加速度センサI/F84は、各センサからの出力信号をAD変換して加速度データaを出力する。この加速度データaは、3次元加速度センサ80と一体となって運動する携帯機器1に固定された座標系における慣性力と重力との合力を、x軸、y軸及びz軸の3成分を有するベクトルとして表すデータである。従って、携帯機器1が静止状態または等速直線運動状態にあれば、加速度データaは、携帯機器1に固定された座標系から見た重力加速度の大きさと方向とを示すベクトルデータとなる。
【0028】
3次元角速度センサ90は、X軸角速度センサ91、Y軸角速度センサ92、及びZ軸角速度センサ93を備える。角速度センサI/F94は、各センサからの出力信号をAD変換して角速度データgを出力する。角速度データgは、各軸の回りの角速度を示すベクトルデータである。
【0029】
CPU10は、ROM30に格納されている状態推定プログラム100を実行することによって、携帯機器1の姿勢や磁気センサのオフセット等のシステムの状態を表す複数の物理量を推定する。すなわち、携帯機器1は、CPU10が状態推定プログラム100を実行することで、状態推定装置として機能する。
【0030】
図3は、状態推定装置のうち、CPU10が状態推定プログラム100を実行することにより実現される機能を表す、機能ブロック図である。
図3に示すように、状態推定装置は、互いに異なる複数の初期ベクトルを出力する初期値生成部200、複数のカルマンフィルタを備えカルマンフィルタの演算を行うカルマンフィルタ部300、カルマンフィルタ部300の動作を制御するカルマンフィルタ制御部400、及び、カルマンフィルタ部300からの出力に基づいて出力情報を生成する出力情報生成部500を備える。
【0031】
カルマンフィルタ部300は、10個のカルマンフィルタKFを備え、各々のカルマンフィルタKFは、非線形カルマンフィルタの演算を行う。
なお、説明の便宜上、10個のカルマンフィルタKFを区別する場合、10個のカルマンフィルタを、それぞれ、KF[1]、KF[2]、…、KF[10]と表記する。また、10個のカルマンフィルタの中で、第m番目(mは、1≦m≦10を満たす自然数)のカルマンフィルタを、KF[m]と表記する。
【0032】
10個のカルマンフィルタKF[1]〜KF[10]のそれぞれは、第1演算モードまたは第2演算モードのいずれかの演算モードで、非線形カルマンフィルタの演算を行う。
ここで、第1演算モードとは、CPU10及び状態推定プログラム100が対応可能な実数を表すデータ型の中で、データサイズの最も小さな第1のデータ型を用いて、非線形カルマンフィルタの演算を行うモードである。また、第2演算モードとは、第1のデータ型よりもデータサイズの大きな第2のデータ型を用いて、非線形カルマンフィルタの演算を行うモードである。すなわち、第2演算モードは、第1演算モードと比べ、演算の精度が高く、処理負荷が大きい演算モードである。
【0033】
非線形カルマンフィルタの演算とは、以下で説明する状態ベクトルx及び観測値ベクトルyを用いて算出される観測残差zに基づいて、状態ベクトルxを周期的に更新することにより、システムの状態を推定する演算である。なお、詳細は後述するが、観測残差zとは、観測値ベクトルyと、推定観測値ベクトルyとの差分である。
また、非線形カルマンフィルタの演算は、状態ベクトルの更新と同じ周期で、状態ベクトルxの推定誤差の共分散Pも更新する。
【0034】
状態ベクトルxとは、複数の状態変数を要素とするベクトルである。状態ベクトルxの要素である複数の状態変数は、それぞれ、非線形カルマンフィルタが推定するシステムの状態を示す複数の物理量を表す。すなわち、状態ベクトルxは、非線形カルマンフィルタが推定するシステムの状態を表すベクトルである。
本実施形態は、状態ベクトルxの要素(状態変数)として、携帯機器1の姿勢μ、地磁気の強さr、地磁気の伏角φ、携帯機器1の角速度ω、角速度センサ91〜93のオフセット推定値b、及び磁気センサ71〜73のオフセット推定値cを採用し、これらを非線形カルマンフィルタの演算における推定の対象とする。
時刻T=kにおける状態ベクトルxは、以下の式(1)で表される。なお、各状態変数の右下に付された添え字「k」は、当該状態変数が時刻T=kにおける値であることを表す。
【数1】

【0035】
ここで、地磁気の強さrはスカラーであり、地磁気の伏角φはスカラーであり、角速度ωは3次元ベクトルであり、角速度センサのオフセット推定値bは3次元ベクトルであり、磁気センサのオフセット推定値cは3次元ベクトルである。
また、姿勢μは、クォータニオンを用いて表現される。クォータニオンとは、物体の姿勢(回転状態)を表す4次元数である。例えば、携帯機器1に固定された座標系の各軸と、地上に固定された座標系の各軸とが一致する姿勢μを基準姿勢と定義し、基準姿勢をμ=(0、0、0、1)と表現する。このとき、携帯機器1の任意の姿勢μは、基準姿勢に対して単位ベクトルρの方向を回転軸として角度ψだけ回転した姿勢として表現できる。回転後の姿勢μは、クォータニオンを用いて、式(2)で与えられる。
【数2】

【0036】
一方、観測値ベクトルyとは、3次元磁気センサ70から出力される磁気データq、3次元加速度センサ80から出力される加速度データa、及び、3次元角速度センサ90から出力される角速度データgを要素とするベクトルである。時刻T=kにおける観測値ベクトルyは式(3)で与えられる。
【数3】

【0037】
各々のカルマンフィルタKFは、非線形カルマンフィルタの演算の結果、周期的に算出される、状態ベクトルx、観測残差z、及び状態ベクトルの推定誤差の共分散Pを、出力する。なお、説明の便宜上、第m番目のカルマンフィルタKF[m]からの出力は、状態ベクトルx[m]、観測残差z[m]、状態ベクトルの推定誤差の共分散P[m]等のように、符号[m]を付して表記する。
また、詳細は後述するが、本実施形態では、各々のカルマンフィルタKFが出力する状態ベクトルxとは、厳密には、更新後の状態ベクトルxであり、各々のカルマンフィルタKFが出力する状態ベクトルの推定誤差の共分散Pとは、厳密には、更新後の状態ベクトルの推定誤差の共分散Pである。
【0038】
初期値生成部200は、ROM30に格納された各種設定情報等に基づいて、互いに異なる10個の初期ベクトルINI[1]〜INI[10]を生成し、これらを出力する。
10個の初期ベクトルINI[1]〜INI[10]は、それぞれ、10個のカルマンフィルタKF[1]〜KF[10]に供給され、状態ベクトルxの初期値(すなわち、時刻T=0における状態ベクトルx)として適用される。
【0039】
第m番目の初期ベクトルINI[m]は、姿勢μの初期値μ[m]、地磁気の強さrの初期値r[m]、地磁気の伏角φの初期値φ[m]、角速度ωの初期値ω[m]、角速度センサのオフセット推定値bの初期値bO,0[m]、及び磁気センサのオフセット推定値cの初期値cO,0[m]を要素として含み、以下の式(4)により示される。
なお、初期ベクトルINI[m]の各要素の生成方法については、後述する。
【数4】

【0040】
カルマンフィルタ制御部400は、10個のカルマンフィルタKF[1]〜KF[10]からの出力値に基づいて、10個のカルマンフィルタKF[1]〜KF[10]の中で、推定精度が最も高いカルマンフィルタKF[Sel]を選択し、選択したカルマンフィルタKF[Sel]以外の9個のカルマンフィルタKFの動作を停止する制御を行う。
【0041】
なお、カルマンフィルタKFの推定精度とは、カルマンフィルタKFがシステムの状態をどの程度正確且つ安定的に推定しているかについて表す指標であり、具体的には、状態ベクトルxの示す値と状態ベクトルの真値との誤差の大きさを評価する値(誤差評価値)、及び、状態ベクトルxの収束の程度を表す値(収束評価値)により表現される指標である。そして、カルマンフィルタKFの推定精度が高い状態とは、状態ベクトルxの示す値と状態ベクトルの真値との誤差が小さく(つまり、誤差評価値が小さく)、且つ、状態ベクトルxが収束している(つまり、収束評価値が小さい)状態のことを意味する。ここで、「真値」とは、状態ベクトルxの各要素に対応する実際の物理量を表す値である。また、「状態ベクトルの真値」とは、状態ベクトルxの各要素に対応する実際の物理量を表す値(真値)を要素とするベクトルである。
状態ベクトルxの示す値と状態ベクトルの真値との誤差が小さい場合(つまり、状態ベクトルxの各要素が真値に近い正確な値を示す場合)、カルマンフィルタKFは、時刻T=kにおいて、システムを正確に推定していると看做すことができる。
また、状態ベクトルxが収束している場合、時刻T=kにおいて状態ベクトルxの各要素が真値に近い正確な値を示していれば、時刻T=k以降においても状態ベクトルxの各要素が真値に近い正確な値を示す可能性が高い。つまり、状態ベクトルxが収束している場合、カルマンフィルタKFは、システムの状態を安定的に推定していると看做すことができる。
【0042】
以下、カルマンフィルタ制御部400の詳細について説明する。
カルマンフィルタ制御部400は、状態ベクトルxの示す値と状態ベクトルの真値との誤差(誤差評価値)が最小のカルマンフィルタを選択する観測残差比較部420、状態ベクトルxが収束していると看做すことができるか否かを判定する収束度判定部440、及び、カルマンフィルタKFの動作を停止させる制御を行う停止制御部460を備える。
【0043】
観測残差比較部420は、10個のピークモニタPM[1]〜PM[10]と、比較部422とを備える。
第m番目のピークモニタPM[m]は、以下の式(5)に示すように、第m番目のカルマンフィルタKF[m]が出力する観測残差z[m]を、時刻T=k−τから時刻T=kまでの所定期間モニターし、当該期間における観測残差z[m]のノルムの最大値を、誤差評価値MAX[m]として出力する。
【数5】

【0044】
比較部422は、10個のピークモニタPM[1]〜PM[10]がそれぞれ出力する誤差評価値MAX[1]〜MAX[10]のうち、最小となる誤差評価値MAX[Sel]に対応するカルマンフィルタKF[Sel]を示す選択値Selを出力する(但し、Selは、1≦Sel≦10を満たす自然数)。
なお、観測残差比較部420は、カルマンフィルタ部300が観測残差z[1]〜z[10]の全てを出力する場合のみ、処理を実行する。例えば、CPU10は、カルマンフィルタ部300が、観測残差z[1]〜z[10]のうち1つの観測残差z[m]のみを出力する場合には、観測残差比較部420の動作を停止させる。
【0045】
前述のとおり、観測残差zは、状態ベクトルxと観測値ベクトルyとを用いて算出される値であり、観測残差zに基づいて、状態ベクトルxの示す値と状態ベクトルの真値との誤差の大きさを表すことができる。しかし、観測値ベクトルyには、ノイズが重畳し、時刻Tの経過に伴い変動する値であるため、観測残差zも時刻Tの経過に伴い変動する。
そこで、観測残差比較部420は、観測残差z[m]を所定期間モニターし、所定期間における観測残差z[m]のノルムの最大値を誤差評価値MAX[m]として採用し、誤差評価値MAX[m]を用いて、状態ベクトルxの示す値と状態ベクトルの真値との誤差の大きさを評価する。
これにより、観測残差比較部420は、状態ベクトルxの示す値と真値との誤差の大きさを評価する際の、各種センサの測定誤差やノイズ等の影響を低減することができ、状態ベクトルxの示す値と状態ベクトルの真値との誤差が最小となるカルマンフィルタKFを、正しく選択することが可能となる。
【0046】
なお、本実施形態では、一定期間における観測残差z[m]のノルムの最大値を誤差評価値MAX[m]として採用するが、本発明はこのような形態に限定されるものではなく、観測残差z[m]の一部の要素のノルムの所定期間における最大値を誤差評価値として採用してもよい。例えば、観測残差比較部420は、観測残差z[m]を構成する要素のうち、観測値ベクトルyの磁気データqに対応する要素について一定期間モニターし、当該要素のノルムの最大値を誤差評価値として採用するものであってもよい。
【0047】
また、本実施形態では、状態ベクトルxの示す値と状態ベクトルの真値との誤差の大きさを評価する値として、観測残差z[m]に基づいて定められる誤差評価値MAX[m]を用いるが、本発明はこれに限定するものではなく、誤差評価値MAX[m]以外であっても、状態ベクトルxの示す値と状態ベクトルの真値との誤差の大きさを評価することのできる値であれば、いかなる値を用いてもよい。
【0048】
収束度判定部440は、10個のカルマンフィルタKF[1]〜KF[10]のそれぞれが出力する状態ベクトルの推定誤差の共分散P[1]〜P[10]のうち、選択値Selが示すカルマンフィルタKF[Sel]が出力する状態ベクトルの推定誤差の共分散P[Sel]のトレースTr(P[Sel])を、収束評価値として採用する。そして、収束度判定部440は、収束評価値Tr(P[Sel])が、閾値PTH以下であるか否かを判定し、判定結果を出力する。
【0049】
一般的に、共分散行列の固有値は、当該固有値に対応する固有ベクトル方向の分散の大きさを表す。また、ある行列のトレース(対角成分)は、当該ある行列の有する複数の固有値の和を表す。つまり、共分散行列のトレースは、当該共分散行列の全ての固有ベクトルの方向の分散の大きさの和を表す値である。従って、収束評価値Tr(P[Sel])によって、状態ベクトルxの推定誤差の大きさ、つまり状態ベクトルxの収束の程度を表すことができる。
一方、状態ベクトルxは、初期状態T=0から時刻T=k−1に至る全ての状態ベクトルx〜xk−1を考慮して、更新される値であるため、状態ベクトルの推定誤差の共分散Pも、初期状態T=0から時刻T=k−1に至る全ての状態ベクトルの推定誤差の共分散P〜Pk−1を考慮した値となる。よって、収束評価値Tr(P[Sel])は、初期状態T=0から時刻T=k−1に至るまでの期間における、状態ベクトルx〜xk−1の推定誤差を考慮した値となる。つまり、収束評価値Tr(P[Sel])が小さな値となる場合、状態ベクトルxの推定誤差が小さな値で安定していると看做すことができる。例えば、時刻T=kにおいて、状態ベクトルxの各要素が真値に近い値を示していれば、時刻T=k以降においても、状態ベクトルxの各要素が真値に近い値を示す可能性が高い。
このような収束評価値Tr(P[Sel])を用いることにより、カルマンフィルタKF[Sel]の有する状態ベクトルxの収束の程度を評価することができる。そして、収束評価値Tr(P[Sel])が、閾値PTH以下である場合(すなわち、状態ベクトルxが収束していると看做すことができる場合)、カルマンフィルタKF[Sel]は、システムの状態の正確な推定を安定的に行っていると看做すことができる。
【0050】
なお、本実施形態では、状態ベクトルxの収束の程度を表す収束評価値として、状態ベクトルの推定誤差の共分散P[Sel]のトレースTr(P[Sel])を採用するが、本発明はこれに限定するものではなく、収束評価値Tr(P[Sel])以外であっても、状態ベクトルxの収束の程度を表す値であれば、いかなる値を用いてもよい。
例えば、収束度判定部440は、状態ベクトルの推定誤差の共分散P[Sel]の最大固有値を収束評価値として採用してもよい。すなわち、収束度判定部440は、状態ベクトルの推定誤差の共分散P[Sel]の最大固有値が、予め定めた閾値以下であるか否かを判定するものであってもよい。この場合、状態ベクトルの推定誤差の共分散P[Sel]の最大固有値が、閾値以下であれば、状態ベクトルxの推定誤差が小さな値で安定している(つまり、状態ベクトルxが収束している)と看做すことができる。
【0051】
なお、収束度判定部440は、カルマンフィルタ部300が共分散P[1]〜P[10]の全てを出力する場合のみ、処理を実行する。例えば、CPU10は、カルマンフィルタ部300が共分散P[1]〜P[10]のうち1個の共分散P[m]のみを出力する場合、収束度判定部440の動作を停止させる。
【0052】
停止制御部460は、収束度判定部440が出力する判定結果が閾値PTH以下である場合、比較部422が出力する選択値Selが示すカルマンフィルタKF[Sel]以外の9個のカルマンフィルタKFの動作を停止させる制御信号Ctrを出力する。
【0053】
出力情報生成部500は、カルマンフィルタ制御部400が選択したカルマンフィルタKF[Sel]から出力される状態ベクトルx[Sel]に基づいて、携帯機器1の姿勢や、携帯機器1から見た地磁気の向きなどの出力情報を生成する。
なお、出力情報生成部500は、カルマンフィルタ部300から、複数の状態ベクトルx[1]〜x[10]が出力されている場合には、出力情報の生成は行わず、カルマンフィルタ部300から、単一の状態ベクトルx[Sel]が出力される場合のみ、出力情報の生成を行う。
【0054】
前述のとおり、非線形カルマンフィルタの演算は、時刻T=kにおける状態ベクトルxkを、観測残差zと時刻T=k−1における状態ベクトルxk−1とに基づいて算出する。すなわち、状態ベクトルxは、初期状態(時刻T=0)から時刻T=k−1に至る全ての状態ベクトルx〜xk−1を考慮して、更新される。従って、初期ベクトルINIが、時刻T=0における状態ベクトルの真値から大きく乖離した値に設定された場合、カルマンフィルタ演算処理を行っても、状態ベクトルxの示す値が状態ベクトルの真値に近い値に収束するまでに長い時間を要し、更には状態ベクトルxの示す値が状態ベクトルの真値に近づかないこともある。
これに対して、本実施形態に係る状態推定装置は、10個のカルマンフィルタKF[1]〜KF[10]に、互いに異なる10個の初期ベクトルINI[1]〜INI[10]を供給し、これら10個のカルマンフィルタKF[1]〜KF[10]を並列で動作させる。そして、状態推定装置は、推定精度が最も高いカルマンフィルタKF[Sel]を特定し、特定された1個のカルマンフィルタKF[Sel]から出力される状態ベクトルx[Sel]に基づいて、出力情報を生成する。
このように、本実施形態に係る状態推定装置は、10個の初期ベクトルINI[1]〜INI[10]のうち、時刻T=0における状態ベクトルの真値に近い値に設定された初期ベクトルINI[Sel]に基づいて動作するカルマンフィルタKF[Sel]により状態推定を行うため、状態ベクトルxの正確且つ高速な収束が可能となった。すなわち、本実施形態に係る状態推定装置によれば、正確且つ高速な状態推定を行うことが可能となる。
【0055】
[2. 状態推定装置の処理フロー]
図4は、状態推定装置の動作を説明するためのフローチャートである。
このフローチャートに示される処理は、CPU10が、状態推定プログラム100を実行することにより実施される。
【0056】
ステップS101において、CPU10は、初期ベクトル生成処理を実行する。具体的には、CPU10は、複数の初期ベクトルINI[1]〜INI[10]を生成する。
すなわち、CPU10は、ステップS101の初期ベクトル生成処理を実行することにより、初期値生成部200として機能する。
【0057】
ステップS102において、CPU10は、カルマンフィルタ並列演算処理を実行する。具体的には、CPU10は、複数のカルマンフィルタKF[1]〜KF[10]の全てを用いて非線形カルマンフィルタの演算を実行することで、観測残差z[1]〜z[10]と状態ベクトルの推定誤差の共分散P[1]〜P[10]とを生成する。
なお、カルマンフィルタ並列演算処理において、CPU10は、第1のデータ型を用いて(第1演算モードにより)非線形カルマンフィルタの演算を行う。
【0058】
カルマンフィルタ並列演算処理は、10個のカルマンフィルタKF[1]〜KF[10]を並列に動作させる処理であるため、処理負荷が大きい。
しかし、本実施形態に係る状態推定装置は、データサイズの最も小さな第1のデータ型を用いた第1演算モードによりカルマンフィルタ並列演算処理を行うため、処理負荷を大きく増加させることなく、並列処理を実行することができる。
【0059】
ステップS103において、CPU10は、観測残差比較処理を実行する。具体的には、CPU10は、ステップS102のカルマンフィルタ並列演算処理において生成された観測残差z[1]〜z[10]に基づいて、誤差評価値MAX[1]〜MAX[10]を算出することにより、状態ベクトルxの示す値と状態ベクトルの真値との誤差が最も小さなカルマンフィルタKF[Sel]を選択する。
すなわち、CPU10は、ステップS103の観測残差比較処理を実行することにより、観測残差比較部420として機能する。
【0060】
ステップS104において、CPU10は、収束度判定処理を実行する。具体的には、CPU10は、ステップS102のカルマンフィルタ並列演算処理において生成された状態ベクトルの推定誤差の共分散P[Sel]に基づいて、収束評価値Tr(P[Sel])を算出し、収束評価値Tr(P[Sel])が閾値PTH以下であるか否かを判定する。
判定結果が肯定である場合(つまり、収束評価値Tr(P[Sel])が閾値PTH以下である場合)、CPU10は処理をステップS105に進める。一方、判定結果が否定である場合、CPU10は処理をステップS102に戻す。
すなわち、CPU10は、ステップS104の収束度判定処理を実行することにより、収束度判定部440として機能する。
【0061】
ステップS105において、CPU10は、カルマンフィルタ停止処理を実行する。具体的には、CPU10は、カルマンフィルタKF[Sel]以外の9個のカルマンフィルタの動作を停止させる。
すなわち、CPU10は、ステップS105のカルマンフィルタ停止処理を実行することにより、停止制御部460として機能する。
【0062】
なお、CPU10は、観測残差比較処理(ステップS103)及び収束度判定処理(ステップS104)を実行する間も、カルマンフィルタ並列演算処理を実施する。つまり、ステップS105のカルマンフィルタ停止処理において、CPU10が9個のカルマンフィルタの動作を停止させるまでは、CPU10は、10個のカルマンフィルタKF[1]〜KF[10]の全てを用いた非線形カルマンフィルタの並列演算を継続する。
【0063】
ステップS106において、CPU10は、カルマンフィルタ単独演算処理を実行する。具体的には、CPU10は、1個のカルマンフィルタKF[Sel]のみを用いて非線形カルマンフィルタの演算を行う。カルマンフィルタ単独演算処理において、CPU10は、第2のデータ型を用いる第2演算モードにより、カルマンフィルタKF[Sel]を動作させることで、非線形カルマンフィルタの演算を行う。
また、CPU10は、ステップS106のカルマンフィルタ単独演算処理において、カルマンフィルタKF[Sel]が周期的に更新する状態ベクトルxを逐次出力する。
すなわち、CPU10は、ステップS102のカルマンフィルタ並列演算処理と、ステップS106のカルマンフィルタ単独演算処理とを実行することにより、カルマンフィルタ部300として機能する。
【0064】
ステップS107において、CPU10は、出力情報生成処理を実行する。具体的には、CPU10は、ステップS106のカルマンフィルタ単独演算処理において出力された状態ベクトルxに基づいて、出力情報を生成する。本実施形態に係る状態推定装置の出力情報は、携帯機器1の姿勢μである。
CPU10は、ステップS107の出力情報生成処理を実行することにより、出力情報生成部500として機能する。
なお、本実施形態では、ステップS107の出力情報生成処理において、CPU10は、姿勢μを出力情報として生成するが、本発明はこれに限定されるものではなく、姿勢μ以外の値(例えば、3次元磁気センサ70のオフセット推定値c)を出力情報として生成してもよい。また、本実施形態では、CPU10は、状態ベクトルxのみに基づいて出力情報を生成するが、状態ベクトルx以外の情報(例えば、観測値ベクトルy)を用いて出力情報を生成しても構わない。例えば、CPU10は、磁気センサのオフセット推定値c及び磁気データqに基づいて、地上に固定された座標系における地磁気の向きを算出してもよい。
【0065】
ステップS106のカルマンフィルタ単独演算処理は、1個のカルマンフィルタKF[Sel]のみを動作させる処理であるため、処理負荷は、ステップS102のカルマンフィルタ並列演算処理に比べて小さい。一方、ステップS107の出力情報生成処理において生成される出力情報は、カルマンフィルタ単独演算処理において出力される状態ベクトルxに基づいて生成されるため、カルマンフィルタ単独演算処理の演算の精度は高いことが好ましい。
本実施形態では、CPU10は、第2のデータ型を用いる第2演算モードによりカルマンフィルタ単独演算処理を行うため、精度の高い状態ベクトルxを算出することができる。これにより、状態推定装置は、正確な出力情報を算出することが可能となる。
【0066】
次に、CPU10は、状態推定プログラム100を終了する終了条件を充足するか否かを判定する(ステップS108)。終了条件は、携帯機器1の仕様等に基づいて適宜定めればよい。例えば、携帯機器1の電源がオフ状態になることを終了条件としてもよい。終了条件を充足する場合、CPU10は、当該フローチャートに示す状態推定処理を終了する。一方、終了条件を充足しない場合、CPU10は、処理をステップS106に進める。
【0067】
[3. 初期ベクトルの生成]
前述のとおり、初期値生成部200は、初期ベクトルINI[1]〜INI[10]を生成する。この初期ベクトルINI[1]〜INI[10]は、時刻T=0における状態ベクトルの真値に近い値を示すものが少なくとも1つ含まれるように生成すれば、どのような方法で生成しても構わない。
以下において、初期ベクトルINI[1]〜INI[10]の各要素の生成方法の一例を示す。
【0068】
まず姿勢μの初期値μ[m]は、例えば、以下の式(6)のように設定することが可能である。
【数6】

【0069】
ここで、式(6)に示した姿勢の初期値μ[m]の意味を、図5乃至図7を用いて説明する。なお、図5乃至図7は、理解を容易にするために、初期姿勢を、ティーポットの図形を用いて例示する。
まず、図5に示すように、初期値μ[1]を定める。初期値μ[1]は、どのような値に設定してもよいが、本実施形態では、式(6)に示すように基本姿勢(つまり、携帯機器1に固定された座標系の各軸と、地上に固定された座標系の各軸とが一致する姿勢)を、初期値μ[1]とする。
次に、図5に示すように、地上に固定された座標系におけるz軸を回転軸として、初期値μ[1]をそれぞれ90度、180度、270度回転させて3つの姿勢を生成し、これら3つの姿勢を、それぞれ、初期値μ[2]、μ[3]、μ[4]とする。
また、図6に示すように、地上に固定された座標系におけるy軸を回転軸として、初期値μ[1]をそれぞれ90度、180度、270度回転させて3つの姿勢を生成し、これら3つの姿勢を、それぞれ、初期値μ[5]、μ[6]、μ[7]とする。
同様に、図7に示すように、地上に固定された座標系におけるx軸を回転軸として、初期値μ[1]をそれぞれ90度、180度、270度回転させて3つの姿勢を生成し、これら3つの姿勢を、それぞれ、初期値μ[8]、μ[9]、μ[10]とする。
初期値生成部200は、以上に示した互いに異なる10個の初期値μ[1]〜μ[10]を生成し、それぞれ、初期ベクトルINI[1]〜INI[10]の要素とする。
【0070】
仮に、姿勢μの初期値μを、事前に定められた1つの固定値(例えば、μ=[0,0,0,1])に定める場合、初期値μは真の姿勢(真値)から最大で180度ずれることになる。
これに対して、本実施形態に係る初期値生成部200は、基本姿勢を90度ずつ回転させることで、10個の初期姿勢を定める。この場合、10個の初期姿勢のうち、真の姿勢に最も近い初期姿勢と、真の姿勢とのなす角度は、90度以下となる。従って、本実施形態に係る初期値生成部200は、携帯機器1がどのような姿勢であっても、真値に近い値となる初期値μ[m]を要素とする初期ベクトルINI[m]を生成することができる。
【0071】
次に、3次元磁気センサ70のオフセット推定値cの初期値cO,0について、生成方法の一例を述べる。
前述のとおり、磁気センサのオフセットは、携帯機器1に搭載された部品が発する内部磁界の方向及び大きさを、携帯機器1に固定された座標系において表現したベクトルである。内部磁界は、3次元磁気センサ70の検出対象である地磁気に比べて大きな磁界となる場合があり、内部磁界を無視した場合には、正確な地磁気の向きを算出することはできない。従って、地磁気の向きを正確に算出するためには、オフセットを正確に把握し、3次元磁気センサ70が出力する磁気データqから、オフセットを減算することが必要となる。
しかし、3次元磁気センサ70のオフセット推定値cの初期値cO,0に対して、事前に定められた固定値(例えば、原点[0,0,0]等)を適用する場合、磁気センサのオフセット推定値cの初期値cO,0が、磁気センサの真のオフセット(真値)から大きく乖離した値となる可能性が高い。
【0072】
本実施形態に係る初期値生成部200は、3次元磁気センサ70のオフセット推定値cの初期値cO,0[m]を、姿勢μの初期値μ[m]に基づいて算出する。
具体的には、本実施形態に係る初期値生成部200は、3次元磁気センサ70のオフセット推定値cの初期値cO,0[m]を、時刻T=0に3次元磁気センサ70が観測する磁気データq、姿勢の初期値μ[m]、式(9)に示すベクトルBg、及び、式(8)に示す行列B(μ)を用いて、以下に示す式(7)で与えられる値に設定する。ここで、行列B(μ)は、携帯機器1が姿勢μである場合に、地上に固定された座標系において表現されたベクトルを、携帯機器1に固定された座標系において表現するための座標変換を行う行列である。また、式(9)に示すベクトルBgは、地上に固定された座標系において携帯機器1を使用する地域の地磁気の向き及び大きさを表すベクトルである。なお、本実施形態では、地上に固定された座標系は、y軸が磁極北を向き、z軸が鉛直上を向くように定められることとする。
なお、ROM30には、位置情報と地磁気ベクトルBgとを対応づけて記憶したルックアップテーブルLUT2が記憶されている。初期値生成部200は、GPS部60で生成される位置情報に基づいてルックアップテーブルLUT2を参照して地磁気ベクトルBgを取得し、式(7)を演算することによって、磁気センサのオフセット推定値cの初期値cO,0[m]を得る。
【数7】

【0073】
前述のとおり、10個の初期値μ[1]〜μ[10]の中には、真の姿勢に近い値となるものが含まれるため、10個の初期値cO,0[1]〜cO,0[10]の中には、磁気センサの真のオフセット(真値)に近い値となるものが含まれる。従って、本実施形態に係る初期値生成部200は、真のオフセットに近い値を有する3次元磁気センサ70のオフセット推定値cの初期値cO,0[m]を要素とする初期ベクトルINI[m]を生成することができる。
【0074】
地磁気の強さrの初期値r[1]〜r[10]、及び地磁気の伏角φの初期値φ[1]〜φ[10]は、例えば、GPS部60から供給される位置情報に基づいて生成することができる。これは、地球上の位置が特定できれば、その位置における地磁気の強さ及び伏角を知ることができるからである。具体的には、ROM30には、位置情報と地磁気の強さ及び伏角とを対応づけて記憶したルックアップテーブルLUT1が格納される。初期値生成部200は、ルックアップテーブルLUT1を参照して、位置情報に対応する地磁気の強さ及び伏角を、地磁気の強さrの初期値r[1]〜r[10]及び地磁気の伏角φの初期値φ[1]〜φ[10]として設定する。
なお、携帯機器1が衛星からの電波の届かない場所(例えば、地下街)にある場合には、GPS部60から位置情報が得られない。そのような場合には、携帯機器1が使われ得る地域の典型的な値を採用すればよい。その値もルックアップテーブルLUT1に格納されている。初期値生成部200は、位置情報の取得が不能な場合には、典型的な値をルックアップテーブルLUT1から読み出す。例えば、日本で販売された携帯機器1については、明石市の地磁気の強さ及び伏角に基づいて、地磁気の強さrの初期値r[1]〜r[10]、及び地磁気の伏角φの初期値φ[1]〜φ[10]を算出する。
【0075】
角速度ωの初期値ω[1]〜ω[10]は、例えば、携帯機器1が静止していることを仮定して、「0」に設定する。また、角速度センサのオフセット推定値bの初期値bO,0[1]〜bO,0[10]は、通常「0」近辺に調整されているため、「0」に設定する。
【0076】
このように、本実施形態に係る状態推定装置は、真値に近い値を示すものが少なくとも1個は含まれるように、互いに異なる10個の初期ベクトルINI[1]〜INI[10]を生成し、10個のカルマンフィルタKF[1]〜KF[10]を並列動作させる。
従って、本実施形態に係る状態推定装置は、時刻T=0における状態ベクトルの真値に近い値を示す初期ベクトルINI[m]が供給されて動作するカルマンフィルタKF[m]により、状態ベクトルxを正確且つ高速に収束させることが可能となる。
【0077】
[4. 非線形カルマンフィルタによる演算]
次に、非線形カルマンフィルタの演算について説明する。
【0078】
一般的に、カルマンフィルタは、動的システムの状態の経時的な変化を表す状態遷移モデルを用いて、ある時刻(時刻T=k−1)のシステムの状態を示す状態ベクトルxk−1から、単位時間が経過した後(時刻T=k)の状態ベクトルxを推定する。この推定値を、推定状態ベクトルxと称する。そして、カルマンフィルタは、各種センサからの出力を要素とする観測値ベクトルyと状態ベクトルxとの関係を表す観測モデルを用いて、推定状態ベクトルxから、観測値ベクトルyを推定する。この推定値を、推定観測値ベクトルyと称する。次に、カルマンフィルタは、推定観測値ベクトルyと、実際の観測値を要素とする観測値ベクトルyとの差分を観測残差zとして算出するとともに、観測残差zに基づいてカルマンゲインKを算出する。その後、カルマンフィルタは、観測残差z、カルマンゲインK、及び、推定状態ベクトルxを用いて、状態ベクトルxを更新し、更新後の状態ベクトルxを算出する。
カルマンフィルタは、以上のような状態ベクトルxの更新を繰り返す演算を行うことにより、状態ベクトルxの各要素を、実際の物理量を正確に表した値(真値)に近い正確な値へと近付ける。
【0079】
なお、詳細は後述するが、本実施形態ではカルマンフィルタとして、非線形カルマンフィルタであるシグマポイントカルマンフィルタを用いる。シグマポイントカルマンフィルタとは、状態ベクトルxk−1の周囲に複数のシグマポイントχk−1を生成し、これらの複数のシグマポイントχk−1を状態遷移モデルに適用することで、単位時間経過後のシグマポイントχを推定し、推定された複数のシグマポイントχの平均を算出することにより、推定状態ベクトルxを求める演算である。従って、推定観測値ベクトルyは、厳密には、推定状態ベクトルxの周辺に存在する複数のシグマポイントχに基づいて算出される。
【0080】
本実施形態における、非線形カルマンフィルタの状態遷移モデルは以下に示す式(10)で与えられ、観測モデルは以下に示す式(11)で与えられる。なお、本実施形態では、式(10)に現れる関数f及び式(11)に現れる関数hは、非線形の関数である。
【数8】

【0081】
ここで、状態ベクトルxの次元を「dim(x)」と表し、観測値ベクトルyの次元を「dim(y)」と表す。本実施形態では、dim(x)=15であり、dim(y)=9である。また、式(10)に現れるプロセスノイズw及び式(11)に現れる観測ノイズvは、0を中心とするガウスノイズである。
式(10)は、時刻T=kにおける状態ベクトルxが、時刻T=k−1における状態ベクトルxk−1を関数fに代入して得られた値と、時刻T=k−1におけるプロセスノイズwk−1とを加算することにより推定されることを示している。
また、式(11)は、時刻T=kにおける観測値ベクトルyが、時刻T=kにおける状態ベクトルxを関数hに代入して得られる値と、時刻T=kにおける観測ノイズvとを加算することにより推定されることを示している。
なお、プロセスノイズwの共分散をQ、観測ノイズvの共分散をRと表す。
【0082】
時刻T=kにおける観測残差zは、観測値ベクトルyと、推定観測値ベクトルyとに基づいて定められるベクトルであり、以下に示す式(12)で表される。カルマンフィルタは、以下の式(14)に示すように、観測残差z、推定状態ベクトルx、及び、式(13)に示すカルマンゲインKを用いて、更新後の状態ベクトルxを算出する。また、カルマンフィルタは、以下の式(15)に示すように、状態ベクトルxの推定誤差の共分散Pを更新する。
ここで、Pは、推定状態ベクトルxの推定誤差の共分散であり、Pは、更新後の状態ベクトルxの推定誤差の共分散である。また、Pyyは、観測残差zの共分散であり、Pxyは、推定状態ベクトルxと、推定観測値ベクトルyとの相互共分散行列である。
【数9】

【0083】
なお、推定観測値ベクトルyは、式(11)に示すように、状態遷移モデルを用いて算出された推定状態ベクトルxを、観測モデルに適用することで算出される値である。よって、推定観測値ベクトルyと実際のセンサ出力に基づく観測値ベクトルyとの差分である観測残差zに基づいて、推定状態ベクトルxと実際の物理量を正確に表した値(状態ベクトルの真値)との誤差の大きさを評価することが可能である。
式(14)に示すように、観測残差zを用いて、推定状態ベクトルxを、更新後の状態ベクトルxへと更新することにより、状態ベクトルxの各要素を真値に近い値へと近付けることができる。
【0084】
本実施形態において、10個のカルマンフィルタKF[1]〜KF[10]は、アンセンテッド変換を用いたシグマポイントカルマンフィルタの演算を実行する。以下では、シグマポイントカルマンフィルタの演算について、具体的に説明する。
【0085】
図8は、状態推定装置がカルマンフィルタKF[m]を実行することで実現される機能を表す機能ブロック図である。以下、図8を参照しつつ、カルマンフィルタKF[m]の動作について説明する。
なお、10個のカルマンフィルタKF[1]〜KF[10]の構成は同一であり、初期値生成部200からそれぞれ供給される初期ベクトルINI[1]〜INI[10]のみが相違する。
【0086】
遅延部301は、加算器311から出力される更新後の状態ベクトルxを、単位時間(時刻T=k−1から時刻T=kに相当する時間)だけ遅延させることで、状態ベクトルxk−1を生成し、これを、シグマポイント生成部302に対して出力する。なお、初回の演算(時刻T=0)では、遅延部301は、初期値生成部200が出力する初期値INI[m]を、状態ベクトルxk−1として採用する。
また、遅延部301は、減算器312から出力される更新後の状態ベクトルxの推定誤差の共分散Pを単位時間遅延させることで、状態ベクトルxk−1の推定誤差の共分散Pk−1を生成し、これを、シグマポイント生成部302に対して出力する。
【0087】
シグマポイント生成部302は、「dim(x)」行「dim(x)」列の共分散行列Pk−1及びQk−1を用いて、「2dim(x)+1」個のシグマポイントを生成する。具体的には、まず、複数のシグマポイントの平均に対して、平均のまわりのシグマポイントの広がりを表すスケーリングパラメータλを用いて、式(16)及び式(17)に示すベクトルσを定義する。
【数10】

【0088】
このとき、シグマポイント生成部302は、ベクトルσk−1と状態ベクトルxk−1とに基づいて、式(18)及び式(19)で示される「2dim(x)+1」個のシグマポイントχk−1を生成する。
【数11】

【0089】
状態遷移モデル部303は、式(20)に示すように、時刻T=k−1における「2dim(x)+1」個のシグマポイントχk−1(j)の各々を、状態遷移モデルに適用することで、時刻T=kにおける「2dim(x)+1」個のシグマポイントの推定値χ(j)を算出する。
【数12】

【0090】
次に、平均算出部304は、式(21)に示すように、時刻T=kにおける「2dim(x)+1」個のシグマポイントの推定値χの平均値を計算することで、推定状態ベクトルxを算出する。
【数13】

【0091】
また、平均算出部304は、式(22)に示す、推定状態ベクトルxの推定誤差の共分散Pを算出する。
【数14】

【0092】
一方、観測モデル部305は、式(23)に示すように、時刻T=kにおける「2dim(x)+1」個のシグマポイントχ(j)の各々を、観測モデルに適用することにより、「2dim(x)+1」個の推定観測値γ(j)を算出する。
【数15】

【0093】
そして、平均処理部306は、式(24)に示すように、「2dim(x)+1」個の推定観測値γ(j)の平均を演算することにより、推定観測値ベクトルyを算出する。
【数16】

【0094】
次に、平均処理部306は、式(25)に示す観測残差の共分散Pyyを算出する。
【数17】

【0095】
減算器307は、式(12)に示したように、観測値ベクトルyと、推定観測値ベクトルyとの差分として、観測残差zを算出する。カルマンフィルタKF[m]は、この観測残差zを出力する。
【0096】
カルマンゲイン付与部308は、式(26)に示す相互共分散行列Pxyを算出する。そして、カルマンゲイン付与部308は、式(13)に示したように、観測残差zの共分散Pyyと、相互共分散行列Pxyとに基づいて、カルマンゲインKを算出し、式(14)の右辺第2項(K)の演算を実行する。また、カルマンゲイン付与部308は、式(15)の右辺第2項(Kyy)の演算を実行する。
【数18】

【0097】
加算器311は、式(14)に示したように、推定状態ベクトルxと、カルマンゲイン付与部308から出力される式(14)の右辺第2項(K)とを加算することにより、更新後の状態ベクトルxを算出する。カルマンフィルタKF[m]は、更新後の状態ベクトルxを出力する。
【0098】
減算器312は、式(15)に示したように、推定状態ベクトルxの推定誤差の共分散Pと、カルマンゲイン付与部308から出力される式(15)の右辺第2項(Kyy)との差分として、更新後の状態ベクトルxの推定誤差の共分散Pを算出する(すなわち、状態ベクトルの推定誤差の共分散Pを、PからPに更新する)。カルマンフィルタKF[m]は、更新後の状態ベクトルxの推定誤差の共分散Pを出力する。
【0099】
次に、状態遷移モデル部303が行う演算で用いられる状態遷移モデルについて説明する。
【0100】
本実施形態に係る状態遷移モデルにおいて、状態ベクトルxを構成する状態変数のうち、姿勢μについての状態遷移は、式(27)により定義される。式(27)は、時刻T=k−1における姿勢μk−1から、単位時間経過後の時刻T=kにおける姿勢μを推定する演算を表す。ここで、μは、推定状態ベクトルxのうち、姿勢μを表す状態変数に対応する要素である。
なお、式(27)の右辺の演算子Ωは、式(28)により定義される。ここで、I3×3は3行3列の単位行列を表す。3次元ベクトルl=(l,l,l)に対して、演算子[l×]は、式(29)で定義される。また、測定時間間隔(時刻T=k−1から時刻T=kまでの間隔)をΔtで表し、時刻T=kにおける更新後の状態ベクトルxのうち角速度を表す状態変数に対応する要素をωで表したとき、演算子Ωを構成する成分Ψは、式(30)で定義される。
【数19】

【0101】
式(2)に示すように、姿勢μは、クォータニオンで表現され、正規化条件||μ||=1が満たされる必要がある。しかし、シグマポイントカルマンフィルタを用いて状態ベクトルxを更新する場合、更新後の状態ベクトルxは、式(21)に示すように、シグマポイントの推定値χ(i)の平均として算出されるため、(更新前の)状態ベクトルxk−1のノルムと、更新後の状態ベクトルxのノルムとは、異なる値となることがある。従って、シグマポイントカルマンフィルタの演算を行う場合、(更新前の)状態ベクトルxk−1の要素である姿勢μk−1のノルムと、更新後の状態ベクトルxの要素である姿勢μのノルムとは、異なる値となる可能性が存在する。つまり、シグマポイントカルマンフィルタの演算を行う場合、姿勢μについての正規化条件が満たされなくなる可能性が存在する。
そこで、姿勢μに対して何らかの演算が行われるときには、演算後の結果をそのベクトル自身の大きさで正規化する。なお、より厳密に正規化条件を保つためには、状態ベクトルxを構成する要素のうち姿勢μについてはMRPs (modified Rodrigues parameters)を用いて前時刻との差分情報だけに限定し、カルマンフィルタの外部にある姿勢情報をカルマンフィルタから得られる差分情報に基づいて更新すればよい。
【0102】
地磁気の強さr及び地磁気の伏角φは、変化を予測することが難しい。そこで、本実施形態に係る状態遷移モデルでは、便宜上、時刻T=kにおける地磁気の強さr及び伏角φと、時刻T=k−1における地磁気の強さrk−1及び伏角φk−1とは等しい値であると仮定する。
同様に、角速度センサのオフセット推定値bは、変化を予測することが難しい。そこで、本実施形態に係る状態遷移モデルでは、便宜上、時刻T=kにおける角速度センサのオフセット推定値bO,Kと、時刻T=k−1における角速度センサのオフセット推定値bO,K−1とは等しい値であると仮定する。
【0103】
携帯機器1の角速度ωは、携帯機器1の利用者による携帯機器1の動かし方に依存して変化するため、時刻T=k−1の角速度ωk−1を用いて、時刻T=kにおける角速度ωを定式化することは難しい。そこで、本実施形態に係る状態遷移モデルでは、便宜上、時刻T=kにおける角速度ωと、時刻T=k−1における角速度ωk−1とは等しいと仮定する。
【0104】
前述のとおり、磁気センサのオフセットは、携帯機器1の部品が発する内部磁界の方向及び大きさを携帯機器1に固定された座標系において表現したベクトルである。従って、携帯機器1の内部状態が一定である間は、磁気センサのオフセットも変化しない。一方、携帯機器1の内部状態が変化した場合、例えば、携帯機器1に搭載された部品を流れる電流の大きさが変化した場合や、携帯機器1に搭載された部品の着磁状況が変化した場合には、磁気センサのオフセットも変化する。すなわち、携帯機器1の内部状態は、携帯機器1の利用者による携帯機器1の操作や、携帯機器1の外部の環境等に依存して変化する。従って、磁気センサのオフセットが変化するタイミングや磁気センサのオフセットの変化量を予測することは困難であり、時刻T=k−1における磁気センサのオフセット推定値cO,K−1を用いて、時刻T=kにおける磁気センサのオフセット推定値cO,Kを定式化することは難しい。そこで、本実施形態に係る状態遷移モデルでは、便宜上、時刻T=kにおける磁気センサのオフセット推定値cO,Kと、時刻T=k−1における磁気センサのオフセット推定値cO,K−1とは等しいと仮定する。
【0105】
このように、本実施形態に係る状態遷移モデルでは、以下に示す式(31)のように、状態ベクトルxを構成する複数の状態変数のうち、姿勢μを表す状態変数以外は、前の時刻から変化しないという前提を置く。
【数20】

【0106】
なお、カルマンフィルタの演算においては、状態ベクトルxの各要素は、観測残差zに基づいて真値に近づくように更新される。従って、カルマンフィルタの演算において、式(31)に示された姿勢μ以外の値が全く変化しないわけではない。
【0107】
次に、観測モデル部305が行う演算で用いられる観測モデルについて説明する。
【0108】
3次元角速度センサ90から出力される角速度データgの推定値γgyroは、角速度ωと、角速度センサのオフセット推定値bとを用いて、式(32)で与えられる。
【数21】

【0109】
また、地上に固定された座標系において地磁気を表すベクトルBgは式(33)で与えられる。従って、3次元磁気センサ70から出力される磁気データqの推定値γmagは、磁気センサのオフセット推定値cと、式(8)で示した行列B(μ)とを用いて、式(34)で与えられる。
【数22】

【0110】
また、地上に固定された座標系において、重力加速度を表したベクトルを、重力加速度の大きさで正規化した3次元のベクトルGRVは、以下の式(35)で表される。従って、3次元加速度センサ80から出力される加速度データaの推定値γaccは、式(8)で示した行列B(μ)とベクトルGRVとを用いて、式(36)で与えられる。
【数23】

【0111】
式(3)を式(12)の右辺第1項に代入し、式(32)、式(34)、及び式(36)を用いて式(12)の右辺第2項を表すことにより、式(12)を、以下の式(37)に変形することができる。このとき、観測残差zは、式(37)により算出される。
【数24】

【0112】
[5. 結論]
以上に示したように、本実施形態に係る状態推定装置は、10個のカルマンフィルタKF[1]〜KF[10]に、互いに異なる10個の初期ベクトルINI[1]〜INI[10]を供給し、これら10個のカルマンフィルタKF[1]〜KF[10]を並列で動作させる。そして、状態推定装置は、推定精度が最も高いカルマンフィルタKF[Sel]を特定し、特定されたカルマンフィルタKF[Sel]により状態推定を行う。従って、本実施形態に係る状態推定装置は、状態ベクトルxを正確且つ高速に収束させることが可能であり、正確且つ高速な状態推定が可能となった。
【0113】
また、本実施形態に係る状態推定装置は、カルマンフィルタKFの推定精度を、誤差評価値MAX[m]及び収束評価値Tr(P[Sel])を用いて表現した。
誤差評価値MAX[m]は、状態ベクトルxの示す値と状態ベクトルの真値との誤差の大きさを評価する。従って、本実施形態に係る状態推定装置は、真値に近い正確な値を要素とする状態ベクトルxを有し、真値に短時間で状態ベクトルxを収束させることができるカルマンフィルタKF[Sel]を選択することが可能となった。
また、収束評価値Tr(P[Sel])は、状態ベクトルxの収束の程度を表す。従って、本実施形態に係る状態推定装置は、システムの状態の正確な推定を安定的に行うことのできるカルマンフィルタKF[Sel]を特定することが可能となった。
このように、本実施形態に係る状態推定装置は、カルマンフィルタKFの推定精度に基づいて特定された1個のカルマンフィルタKF[Sel]を用いて、システムの状態を推定するため、正確且つ高速な状態推定を行うことが可能となった。
【0114】
また、本実施形態に係る状態推定装置は、第1演算モードによりカルマンフィルタ並列演算処理を行うとともに、第2演算モードによりカルマンフィルタ単独演算処理を行う。
これにより、本実施形態に係る状態推定装置は、処理負荷を低減しつつ、正確且つ精度の高い状態推定を行うことが可能となった。
【0115】
<B.変形例>
本発明は上述した実施形態に限定されるものではなく、例えば、以下の変形が可能である。また、以下に示す変形例のうちの2以上の変形例を組み合わせることもできる。
【0116】
(1)変形例1
上述した実施形態では、カルマンフィルタKFは、シグマポイントカルマンフィルタの演算を実行したが、本発明はこれに限定するものではなく、カルマンフィルタKFは、拡張カルマンフィルタ等、シグマポイントカルマンフィルタ以外の非線形カルマンフィルタの演算を実行するものであってもよい。
本発明に係る状態推定装置は、複数のカルマンフィルタKFの中で、推定精度が最も高いカルマンフィルタKFを特定し、当該特定されたカルマンフィルタKFを用いてシステムの状態を推定する。そして、カルマンフィルタKFが、どのような非線形カルマンフィルタの演算を実行する場合であっても、最も推定精度の高いカルマンフィルタKFの状態ベクトルは、正確な値に高速に収束する。すなわち、本発明に係る状態推定装置は、カルマンフィルタKFが、どのような非線形カルマンフィルタの演算を実行するものであっても、正確且つ高速な状態推定を行うことができる。
【0117】
(2)変形例2
上述した実施形態及び変形例では、カルマンフィルタ部300は、10個のカルマンフィルタKF[1]〜KF[10]を備えるが、本発明はこのような形態に限定されるものではなく、カルマンフィルタ部300は、2個以上のカルマンフィルタKFを備えるものであればよい。この場合、初期値生成部200は、カルマンフィルタKFの個数に対応して、互いに異なる複数の初期ベクトルINIを生成するものであればよい。
なお、カルマンフィルタ部300が備えるカルマンフィルタKFの個数は、携帯機器1の処理性能を考慮して、適宜定めればよい。例えば、携帯機器1の処理性能が高い場合には、カルマンフィルタ部300は、10個よりも多くのカルマンフィルタKFを備えてもよい。この場合、状態ベクトルxを高速且つ正確に収束させることが可能となる。また、携帯機器1の処理性能が低い場合には、カルマンフィルタ部300は、10個よりも少ないカルマンフィルタを備えてもよい。この場合、カルマンフィルタ並列演算処理に係る処理負荷を軽減することができる。
【0118】
(3)変形例3
上述した実施形態及び変形例では、状態推定装置は、第1演算モードによりカルマンフィルタ並列演算処理を行うとともに、第2演算モードによりカルマンフィルタ単独演算処理を行うが、本発明は、状態推定装置の動作をこのような態様に限定するものではない。
例えば、状態推定装置は、カルマンフィルタ並列演算処理及びカルマンフィルタ単独演算処理の双方を、第1演算モードにより実行するものであってもよい。この場合、カルマンフィルタ単独演算処理に係る処理負荷を軽減することができる。
また、状態推定装置は、カルマンフィルタ並列演算処理及びカルマンフィルタ単独演算処理の双方を、第2演算モードにより実行するものであってもよい。この場合、状態推定装置は、精度の高い推定を行うことが可能となる。
【0119】
(4)変形例4
上述した実施形態及び変形例では、初期値生成部200は、初期ベクトルINIを構成する複数の状態変数のうち、姿勢μの初期値μ及び3次元磁気センサ70のオフセット推定値cの初期値cO,0を互いに異なる値に設定することで、互いに異なる複数の初期ベクトルINIを生成したが、本発明はこのような初期ベクトルINIの生成方法に限定するものではない。例えば、初期値生成部200は、初期ベクトルINIを構成する状態変数の全てについて、互いに異なる値に設定するものであってもよい。
【0120】
(5)変形例5
上述した実施形態及び変形例では、状態推定装置は出力情報生成部500を備えるが、本発明はこのような構成に限定されるものではなく、状態推定装置は、出力情報生成部500を備えずに構成されてもよい。この場合、状態推定装置は、状態ベクトルxを出力するものであってもよい。また、この場合、状態推定プログラム100と連携する各種アプリケーションが、姿勢や地磁気の向き等の出力情報を生成してもよい。
【0121】
(6)変形例6
上述した実施形態及び変形例では、携帯機器1は、3次元磁気センサ70、3次元加速度センサ80、及び、3次元角速度センサ90を備えたが、本発明はこのような形態に限定するものではなく、携帯機器1は、どのようなセンサを備えるものであってもよい。なお、観測値ベクトルyは、携帯機器1が備える複数のセンサからの出力値の全部または一部を要素とするように定めればよい。
本発明は、異種の物理量を測定する複数のセンサの出力を統合し、動的システムの状態を推定する非線形カルマンフィルタの演算において、正確且つ高速な状態推定を行うものである。従って、この発明によれば、状態推定装置がどのようなセンサを備える場合であっても、正確且つ高速な状態推定を行うことができる。
【0122】
(7)変形例7
上述した実施形態及び変形例では、状態ベクトルxを構成する状態変数として、式(1)に示した変数、すなわち、携帯機器1の姿勢μ、地磁気の強さr、地磁気の伏角φ、携帯機器1の角速度ω、角速度センサ91〜93のオフセット推定値b、及び磁気センサ71〜73のオフセット推定値cを採用し、これらを推定の対象としたが、本発明は、状態ベクトルxを式(1)に限定するものではない。
例えば、状態変数として、式(1)に示した変数のうちの一部を採用するものであってもよい。また、状態変数として、式(1)に示した変数以外の変数を採用するものであってもよい。
【符号の説明】
【0123】
1…携帯機器、10…CPU、70…3次元磁気センサ、80…3次元加速度センサ、90…3次元角速度センサ、100…状態推定プログラム、200…初期値生成部、300…カルマンフィルタ部、KF…カルマンフィルタ、400…カルマンフィルタ制御部、420…観測残差比較部、440…収束度判定部、460…停止制御部、500…出力情報生成部。


【特許請求の範囲】
【請求項1】
システムを観測して観測値を各々出力する複数のセンサと、
前記システムの状態を表すための複数の状態変数を要素とする状態ベクトルと、前記複数のセンサから各々出力される観測値を要素とする観測値ベクトルとを用いて、前記状態ベクトルを更新することで、前記システムの状態を推定する複数のカルマンフィルタと、
互いに異なる複数の初期ベクトルを生成し、複数の前記初期ベクトルのそれぞれを、前記状態ベクトルの初期値として前記複数のカルマンフィルタの各々に供給する初期値生成部と、
前記複数のカルマンフィルタの推定精度を各々評価し、前記複数のカルマンフィルタのうち、推定精度が最も高いカルマンフィルタを特定し、特定したカルマンフィルタを除く他のカルマンフィルタの動作を停止させるカルマンフィルタ制御部と、
を備えることを特徴とする状態推定装置。
【請求項2】
前記カルマンフィルタは、
前記状態ベクトルと、前記観測値ベクトルとに基づいて観測残差を算出するとともに、前記状態ベクトルの推定誤差の共分散を算出し、
前記カルマンフィルタ制御部は、
前記複数のカルマンフィルタの各々が出力する前記観測残差に基づいて、前記状態ベクトルと前記システムの状態との誤差を評価する誤差評価値が最小となるカルマンフィルタを選択する観測残差比較部と、
前記観測残差比較部によって選択されたカルマンフィルタが出力する前記状態ベクトルの推定誤差の共分散に基づいて、前記状態ベクトルの収束の程度を表す収束評価値を算出し、前記収束評価値が閾値以下であるか否かを判定する収束度判定部と、
前記収束度判定部の判定結果が肯定である場合、前記観測残差比較部によって選択されたカルマンフィルタを、推定精度が最も高いカルマンフィルタであると特定し、特定したカルマンフィルタを除く他のカルマンフィルタの動作を停止させる、停止制御部と、
を備えることを特徴とする、請求項1に記載の状態推定装置。
【請求項3】
前記観測残差比較部は、
前記観測残差のうち少なくとも一部の要素のノルムの、現在時刻から所定時間だけ過去の時刻までの所定期間における最大値を、前記複数のカルマンフィルタごとに算出し、
算出した複数の前記最大値が最小となるカルマンフィルタを、前記誤差評価値が最小となるカルマンフィルタとして選択する、
ことを特徴とする、請求項2に記載の状態推定装置。
【請求項4】
前記収束評価値は、前記状態ベクトルの推定誤差の共分散を表す行列のトレースである、
ことを特徴とする、請求項2または3に記載の状態推定装置。
【請求項5】
前記カルマンフィルタ制御部が、前記他のカルマンフィルタを停止させる前は、
前記複数のカルマンフィルタは、第1のデータ型を用いて演算を行い、
前記カルマンフィルタ制御部が、前記他のカルマンフィルタを停止させた後は、
前記カルマンフィルタ制御部によって特定されたカルマンフィルタは、前記第1のデータ型よりもデータサイズの大きな第2のデータ型を用いて演算を行う
ことを特徴とする、請求項1乃至4のうちいずれか1項に記載の状態推定装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−88162(P2013−88162A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−226586(P2011−226586)
【出願日】平成23年10月14日(2011.10.14)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】