Japanese subtitles

← 04-47 Kalman Matrices

04-47 Kalman Matrices

Get Embed Code
3 Languages

Showing Revision 1 created 10/29/2014 by Udacity.

  1. 少し難しいプログラミングの課題を用意しました
  2. 時間がかかると思いますが
  3. 多次元のカルマンフィルタを実装してみてください
  4. 行列クラスは行列を操作する定義なので
    プログラミングを簡単にしてくれるはずです
  5. さらに行列を初期化する関数を持っています
    すぐに例をお見せします
  6. 値を0にセットするzero
  7. 単位行列を計算するidentity
    行列を出力するshow
  8. 足し算のadd、引き算のsub、
    掛け算のmulなどの演算関数に加え
  9. 行列を転置させるtransposeを定義します
  10. 拡張されたコードではコレスキー因数分解を用いて
    行列を実際に反転させます
  11. ここにinverseという関数があります
    この行列クラスは便利です
  12. ライブラリでよく見る関数の短いバージョンです
    少し説明しましょう
  13. このように括弧の中に引数を持つコマンドで
    行列を作れます
  14. 二次元行列と言います
    この場合は垂直ベクトルです
  15. showコマンドで
    垂直ベクトルの結果を出力できます
  16. 次のようにtransposeコマンドを実現します
  17. これを実行すれば水平ベクトルの値が得られます
  18. 行列にベクトルを掛けたいとします
  19. この初期設定の行列
    [12.,8.]と[6.,2.]
  20. 2×2の行列を作れます
  21. この行列を出力するとこうなります
    12、8、6、2です
  22. この部分の値です 今度はFとaを掛けましょう
  23. 次の式を入れます b=F*a
  24. showで出力するとベクトル200と80を得ます
  25. 200は10×12+10×8の解です
  26. そして80は10×6+10×2の解です
  27. そこで行列ライブラリを使い初期状態を設定します
  28. 一次元で位置と速度の状態を追跡しています
  29. 実際の位置と速度は不明なので
    0で両方を初期化しました
  30. 不確実性を表す行列があります
  31. 位置と速度の不確実性はかなり高くなっています
  32. しかし2つは相関しません
    行列は[1000.,0.]、[0.,1000.]です
  33. 外部動作を指定しますが[0.]、[0.]なので
    効果はなく無視することにします
  34. 次の状態関数を作ります
    ちょうど話した[1.,1]と[0,1.]です
  35. 速度は位置に加算されているだけと仮定するので
  36. 速度と期待値は同じままです
  37. 最初の2つの値1と0を引っ張ってくる
    観測関数を作ります
  38. この関数で位置は観察できますが
    速度はできません
  39. 観測の不確実性は この例では1になります
  40. 単位行列は[1.、0.]、[0.、1.]です
  41. ここで3つの要素を持つmeasurementsを用いて
    filterを実行します
  42. filterを実行すると速度を推測することができます
  43. より正確な予測をすることができるのです
  44. 次のフィルタ・プログラムを書いてください
  45. まず観測更新 次に動作の更新です
  46. filterを実行する度に
  47. 最初に観測 次に動作の順番で更新してください
  48. ここに空のfilterプロシージャがあるので
    穴を埋めましょう
  49. まずmeasurementsを調べ
    次に観測と動作を更新します
  50. その後 予測させて
    導き出された推定値を出力します
  51. この場合は3回同じことを行います
  52. 穴を埋めたらRunボタンを押し次の出力を得ます
  53. 最初の観測更新のあと
  54. 位置1を観察し0.99をここへコピーしました
  55. 速度は相変わらず不明で
    初期化した時の0のままです
  56. そして更新された不確実性の行列があります
  57. 強い相関性を示す
    1000、1000、1000、1000です
  58. これは穴埋めした初期の状態から
    非対角の要素が異なっています
  59. カルマンフィルタの結果とちょうど同じです
  60. もう一度2を観察します
  61. 次の予測の出力は3になります 観察+予測です
  62. 今回は速度に関して とてもいい予測があります
  63. 1である理由はカルマンフィルタが
  64. この値を求めるために数式を使ったためです
  65. 新しい共分散行列があります
  66. 予測のあとの3回目の観察です
  67. 予測は正確には3.999で事実上の4です
  68. 速度の予測は0.99999で約1です
  69. もう1つ不確実性の行列があり
    速度の観測において高い確実性を描いています
  70. 推定位置において初期の不確実性に比べると
    確実性が高くなったと気づけましたか?
  71. ここの正確な値を出力する
    filterアルゴリズムを書いてください
  72. これは難しい課題ですが
  73. 基本的には説明した数式を実装すればいいのです
  74. まずは行列クラスに慣れてから
    フィルタコードを埋めてみましょう
  75. 多変数カルマンフィルタで説明したことを
    思い出してください