class Newton2dKFilter


継承:


public メンバ関数
[more] ITK_DEF_ACCESS(Val & sigmaOPyy(), { return sigmaOPyy_;})
[more] ITK_DEF_ACCESS(Int & size(), { return size_ ;})
[more] ITK_DEF_ACCESS(Val & wF(const Int & i, const Int & j), { return wF().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val & wFt(const Int & i, const Int & j), { return wFt().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val & wQ(const Int & i, const Int & j), { return wQ().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val & wPf(const Int & i, const Int & j), { return wPf().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val & wH(const Int & i, const Int & j), { return wH().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val & wR(const Int & i, const Int & j), { return wR().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val & wK(const Int & i, const Int & j), { return wK().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val & wPa(const Int & i, const Int & j), { return wPa().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val & vXf(const Int & i), { return vXf().val(i) ; })
[more] ITK_DEF_ACCESS(Val & vXt(const Int & i), { return vXt().val(i) ; })
[more] ITK_DEF_ACCESS(Val & vXo(const Int & i), { return vXo().val(i) ; })
[more] ITK_DEF_ACCESS(Val & vXa(const Int & i), { return vXa().val(i) ; })
[more] ITK_DEF_ACCESS(Val & wW0(const Int & i, const Int & j), { return wW0().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val& wW1(const Int & i, const Int & j), { return wW1().val(i, j) ; })
[more] ITK_DEF_ACCESS(Val & vXw(const Int & i), { return vXw().val(i) ; })
[more]void init()
初期値設定
[more]void initParam()
パラメータ初期値設定
[more]void setParam(Val a = dfltAlpha, Val sigmaPos = dfltSigmaPos, Val sigmaVel = dfltSigmaVel, Val sigmaAcc = dfltSigmaAcc, Val sigmaObserv = dfltSigmaObserv, Int s = dfltSize)
パラメータ初期値設定
[more]void initMatrix(Bool allocp = False)
マトリクス等初期値設定
[more]void allocMatrix()
マトリクスメモリアロケーション
[more]void estCycle()
[more]void mergeSensor(Flt px, Flt py)
[more]void testEnvCycle()
[more]Bool testCycle()
[more]void testRun()


文書

Kalman filter class for Newtonian 2 dimentional world.

原理:

運動モデルは以下で表されるとする。


ただし, は誤差, 外乱。 この式を使って予報値 を求めるとする。すなわち,

この時, 予報誤差共分散行列 は、

で変化する。 ただし, の共分散行列。

観測値 が得られたときには、 以下のようにデータを統合して推定値を求める。

仮に, は観測行列 を用いて以下のように求まるものとする。


また、 の共分散行列とする。 これらを用いて, まずカルマンゲイン を求める。

これを用いて,以下のように推定値 を求める。

この時, 推定誤差共分散行列 は、

この , を新たに , として、次の予報を行う。

2次元ニュートン運動方程式における実装:

状態変数 は, 位置の x-y, 速度の x-y, 加速度の x-y の6次元あるものとする。 この時, は以下のような行列とする。


また、観測行列 は、位置だけが観測できるものとする。

また、各誤差共分散行列は, 対角成分のみとする。

使い方:

o ITK_DEF_ACCESS(Val & sigmaOPyy(), { return sigmaOPyy_;})

o ITK_DEF_ACCESS(Int & size(), { return size_ ;})

o ITK_DEF_ACCESS(Val & wF(const Int & i, const Int & j), { return wF().val(i, j) ; })

線型力学系を記述する行列

o ITK_DEF_ACCESS(Val & wFt(const Int & i, const Int & j), { return wFt().val(i, j) ; })

wFt の対称行列

o ITK_DEF_ACCESS(Val & wQ(const Int & i, const Int & j), { return wQ().val(i, j) ; })

予報誤差共分散

o ITK_DEF_ACCESS(Val & wPf(const Int & i, const Int & j), { return wPf().val(i, j) ; })

予報値誤差共分散

o ITK_DEF_ACCESS(Val & wH(const Int & i, const Int & j), { return wH().val(i, j) ; })

サンプリングフィルタ

o ITK_DEF_ACCESS(Val & wR(const Int & i, const Int & j), { return wR().val(i, j) ; })

センサー誤差共分散

o ITK_DEF_ACCESS(Val & wK(const Int & i, const Int & j), { return wK().val(i, j) ; })

カルマンゲイン

o ITK_DEF_ACCESS(Val & wPa(const Int & i, const Int & j), { return wPa().val(i, j) ; })

合成推定値誤差共分散行列

o ITK_DEF_ACCESS(Val & vXf(const Int & i), { return vXf().val(i) ; })

予報値

o ITK_DEF_ACCESS(Val & vXt(const Int & i), { return vXt().val(i) ; })

テストで用いる真の値

o ITK_DEF_ACCESS(Val & vXo(const Int & i), { return vXo().val(i) ; })

センサー値

o ITK_DEF_ACCESS(Val & vXa(const Int & i), { return vXa().val(i) ; })

予報値とセンサー値から補正された推定値

o ITK_DEF_ACCESS(Val & wW0(const Int & i, const Int & j), { return wW0().val(i, j) ; })

o ITK_DEF_ACCESS(Val& wW1(const Int & i, const Int & j), { return wW1().val(i, j) ; })

o ITK_DEF_ACCESS(Val & vXw(const Int & i), { return vXw().val(i) ; })

ovoid init()
初期値設定

ovoid initParam()
パラメータ初期値設定

パラメータの初期値をデフォルトに設定。

ovoid setParam(Val a = dfltAlpha, Val sigmaPos = dfltSigmaPos, Val sigmaVel = dfltSigmaVel, Val sigmaAcc = dfltSigmaAcc, Val sigmaObserv = dfltSigmaObserv, Int s = dfltSize)
パラメータ初期値設定

パラメータの初期値をデフォルトに設定。

ovoid initMatrix(Bool allocp = False)
マトリクス等初期値設定

パラメータに従ってマトリクスの初期値を設定

ovoid allocMatrix()
マトリクスメモリアロケーション

ovoid estCycle()

線型式に基づき変化の予測と各種パラメータ推定を行う。

ovoid mergeSensor(Flt px, Flt py)

センサー情報を統合する。

ovoid testEnvCycle()

テストのための外界のシミュレーション

oBool testCycle()

testEnvCycle() を使って, Kalman Filter のテストをする1サイクル

ovoid testRun()

testCycle() を呼び出す。


このクラスには、子クラスは存在しない

Alphabetic index HTML クラス階層 or Java



This page was generated with the help of DOC++.