Return to Video

02ps-11 Programming Exercise

  • 0:00 - 0:03
    ではプログラミングの練習問題です
  • 0:03 - 0:08
    これまでに学んだことを
    正確にプログラミングしてください
  • 0:08 - 0:11
    二次元の世界があるとします
  • 0:11 - 0:17
    移動する対象に関して二次元の観測で観察します
  • 0:17 - 0:21
    速度は不明ですが一定です
  • 0:21 - 0:27
    このタイプの状態ベクトルを使い
    カルマンフィルタを実装してください
  • 0:27 - 0:30
    このカルマンフィルタは状態変数が4つあります
  • 0:30 - 0:33
    以前使ったものは2つでした
  • 0:33 - 0:36
    カルマンフィルタの全体的なコードは教えます
  • 0:36 - 0:40
    皆さんに設定してほしいのは状態ベクトルxです
  • 0:40 - 0:52
    動作u、P、F、H、R、Iをそれぞれ設定してください
  • 0:52 - 0:57
    これらはすべて
    カルマンフィルタを定義する変数です
  • 0:57 - 1:01
    二次元の課題から始めてください
  • 1:01 - 1:05
    それを拡張して四次元で機能するようにします
  • 1:05 - 1:10
    以前書いたものとまったく同じ行列がこれです
  • 1:10 - 1:13
    ここにカルマンフィルタの手順があります
  • 1:13 - 1:17
    観測結果をカルマンフィルタの方程式に適用します
  • 1:17 - 1:21
    以前のコードと少し違うことを指摘しておきます
  • 1:21 - 1:24
    Z.transposeを加えたためです
  • 1:24 - 1:28
    これで多次元の観測が
    前よりも少し扱いやすくなりました
  • 1:28 - 1:33
    ですがあまり気にしないでください
    以前あったバグを修正した程度のことです
  • 1:33 - 1:39
    下の方を見るとカルマンフィルタの
    ルーチンの出力がxとPになっています
  • 1:39 - 1:43
    この例のmeasurementsは一連の観測です
  • 1:43 - 1:46
    二次元空間なのでxとyの結果です
  • 1:46 - 1:49
    xは5、6、7、8、9、10で
  • 1:49 - 1:53
    yは10、8、6、4、2です
  • 1:53 - 1:56
    規則性や速度が想像できますね
  • 1:56 - 1:59
    dtを0.1とします
  • 1:59 - 2:04
    これは5から6へ変わる時に
    速度が1ではなく10であることを意味します
  • 2:04 - 2:08
    システムには初期位置のみを入力します
  • 2:08 - 2:12
    xは4です これは5、6、7にうまくつながります
  • 2:12 - 2:15
    またyは12なので10、8、6とつながります
  • 2:15 - 2:20
    すでにお渡しした初期状態ベクトルは
    初期値がx、yであり
  • 2:20 - 2:24
    2つの未知の速度は0、0となります
  • 2:24 - 2:28
    動作ベクトルは完備性のために
    0、0、0、0とします
  • 2:28 - 2:31
    外部動作はありません
  • 2:31 - 2:35
    少し混乱するところです
    システム自体の動作はありますが
  • 2:35 - 2:40
    これは誰かが外力を対象に加えるような
    動作の外的な変化のことです
  • 2:40 - 2:43
    そのためここは0、0、0、0なのです
    変えないでください
  • 2:43 - 2:46
    Pは初期の不確実性です
  • 2:46 - 2:51
    x、y座標の不確実性をゼロにするために
    初期化してください
  • 2:51 - 2:56
    速度の共分散の項は1,000です
  • 2:56 - 3:01
    初期速度を本当に知らないという意味です
    初期位置を知っているだけです
  • 3:01 - 3:04
    行列Fを入力してください
  • 3:04 - 3:10
    四次元の状態空間から二次元への
    射影行列である行列Hを設計してください
  • 3:10 - 3:16
    最初の2つの状態変数x、yのみ観測でき
    速度は観測できません
  • 3:16 - 3:20
    主対角線の0.1を観測ノイズとした
    観測の不確実性の行列を
  • 3:20 - 3:24
    2×2の行列で定義してください
  • 3:24 - 3:27
    これは単位行列です
  • 3:27 - 3:32
    これらをすべて設計すると次の出力を得ます
  • 3:32 - 3:36
    では実行して出力を確認しましょう
  • 3:36 - 3:42
    私の四次元の例の結果ではxの座標が10、0です
  • 3:42 - 3:46
    この値はすでに設定された一連のmeasurementsが
  • 3:46 - 3:49
    最終的に10と0になることと一致します
  • 3:49 - 3:55
    つまり5、6、7、8、9、10、
    及び10、8、6、4、2、0のようにです
  • 3:55 - 4:00
    このプログラミングで興味深い点は
    速度が算出されることです
  • 4:00 - 4:06
    速度は約10ですが
    これはΔtを0.1としたことと一致します
  • 4:06 - 4:12
    時間あたりのステップ10を10で割ると
    この増分の1になります
  • 4:12 - 4:17
    2つ目の速度は-20で0.1を掛けると-2になります
  • 4:17 - 4:21
    この部分の10、8、6、4、2です
  • 4:21 - 4:24
    共分散行列Pも出力してください
  • 4:24 - 4:28
    ここにあるように要素は0のままです
  • 4:28 - 4:33
    主対角線を見ると不確実性はかなり減っています
  • 4:33 - 4:39
    座標の推定値は0.03で速度の推定値は0.1です
  • 4:39 - 4:43
    この数値が以前は1,000だったことを
    思い出してください
  • 4:43 - 4:48
    2つ目の例は初期座標が-4と8です
  • 4:48 - 4:52
    measurementsは1、6、11、16となっています
  • 4:52 - 4:55
    x方向の増分は5のようです
  • 4:55 - 5:00
    y方向では4ずつ減少し
    8、4、0、-4、-8となります
  • 5:00 - 5:06
    これを実行するとxベクトルが約16となり
    この数値と一致します
  • 5:06 - 5:08
    yは約-8でここと同じです
  • 5:08 - 5:13
    こちらが速度で約50と約-40です
  • 5:13 - 5:21
    それぞれ0.1を掛けると増分5と-4です
  • 5:21 - 5:25
    さらに他の例も見てみます 初期状態が1と19です
  • 5:25 - 5:29
    最初の座標がまったく変わらないので
    速度は0だと分かります
  • 5:29 - 5:34
    2つ目の座標は19、17、15、13、11と変化します
  • 5:34 - 5:38
    実行すると変化のない1と11を得ます
  • 5:38 - 5:43
    速度は0と2ずつ減少する-20です
  • 5:43 - 5:49
    共分散を見ると速度に対する主対角線の値が
  • 5:49 - 5:55
    0.05、0.05、0.33、0.33となっています
  • 5:55 - 5:58
    いくつか非対角要素があります
  • 5:58 - 6:02
    今の結果があなたのコードの結果と
    合うか確かめてください
  • 6:02 - 6:07
    ではこのmeasurementsのいくつかを
    ノイズのある観測に変えましょう
  • 6:07 - 6:12
    方法の1つは2と0の間で振動する
    観測を設定することです
  • 6:12 - 6:16
    カルマンフィルタは一定の速度を
    仮定すると思い出してください
  • 6:16 - 6:20
    これらのmeasurementsは
    一定の速度では説明することができません
  • 6:20 - 6:24
    観測ノイズが必要です
    カルマンフィルタを再実行しましょう
  • 6:24 - 6:26
    フィルタは以下の値を出力するはずです
  • 6:26 - 6:30
    現在の状態として0.7
  • 6:30 - 6:34
    前のように11があり
    ここにも速度の推定値が2つあります
  • 6:34 - 6:38
    実際にはx方向に
    わずかな速度の-0.66があるとします
  • 6:38 - 6:42
    これはノイズのあるセンサ入力を行ったためです
  • 6:42 - 6:45
    共分散行列Pは前回と同じになるでしょう
  • 6:45 - 6:48
    measurementsによる影響を受けないためです
  • 6:48 - 6:52
    さて これらの行列を埋めることが課題です
    頑張ってください
Title:
02ps-11 Programming Exercise
Description:

dummy description

more » « less
Video Language:
English
Team:
Udacity
Project:
CS373 - Artificial Intelligence
Duration:
06:53

Japanese subtitles

Revisions