Return to Video

03ps-12 Final Solution

  • 0:00 - 0:06
    完全な粒子フィルタを実装するためには
    measurement_prob関数が欠けています
  • 0:06 - 0:10
    これは少し複雑です
    なぜならロボットの粒子に対して
  • 0:10 - 0:16
    正確な観測と検出した値を比較し
  • 0:16 - 0:22
    正確な観測値とここで検出した値の差の確率を
    計算しなければなりません
  • 0:22 - 0:26
    sense関数を利用して
    predicted_measurementsを計算します
  • 0:26 - 0:29
    私が定義したフラグです
  • 0:29 - 0:35
    0にセットするとsense関数はノイズなしとなり
    観測モデルを完成させることができます
  • 0:35 - 0:41
    ここを削除しても答えは出るはずですが
    この方がより正確な答えを得られます
  • 0:41 - 0:46
    ランドマークへの正確な方位を
    計算できるようになります
  • 0:46 - 0:51
    次にpredicted_measurementsと定義した
    正確な方位値をmeasurement_probと比較します
  • 0:51 - 0:54
    ここにある残差を計算するルーチンで行います
  • 0:54 - 1:00
    ここではすべての観測の回数分
    方位の残差を2ステップで計算します
  • 1:00 - 1:07
    まずはmeasurement引く
    predicted_measurementの絶対差を求めます
  • 1:07 - 1:11
    終わりには[i]があります ここです
  • 1:11 - 1:15
    そしてこの残差は-piから+piの
    範囲外にあるものと思われます
  • 1:15 - 1:18
    この行はそれをゼロから2piまでの
  • 1:18 - 1:22
    サイクリックな空間における
    最小可能値に戻すだけです
  • 1:22 - 1:24
    このようにpiを加え
  • 1:24 - 1:27
    さらに負荷2.0*piを加えてから
    ここで再びpiを引きます
  • 1:27 - 1:30
    すると-piと+piの間の値が得られます
  • 1:30 - 1:35
    次にerror_bearingをガウス値に取り込みます
    これがガウス値でerror_bearingを2乗しています
  • 1:35 - 1:40
    それをbearing_noiseの2乗で割り
    expを計算します
  • 1:40 - 1:44
    正規化群を使用しますが実装には必要ありません
  • 1:44 - 1:48
    重みは自己正規化されるためここは省略できます
  • 1:48 - 1:50
    私は残したので これはまぎれもないガウス値です
  • 1:50 - 1:54
    このガウス値を取り出して掛け
    error関数に取り込んでいます
  • 1:54 - 1:58
    それぞれの観測値にガウス値を1回掛けます
  • 1:58 - 2:02
    最終的なガウス値が重要であり
    この関数で返されます
  • 2:02 - 2:05
    少し難しい実装でしたが
    正しく理解できたでしょうか
  • 2:05 - 2:09
    下にスクロールすると
    粒子フィルタが実装されています
  • 2:09 - 2:11
    1,000個の粒子を使用しています
  • 2:11 - 2:16
    以前に使用したのとまったく同じルーチンです
    ここで最初の粒子を生成します
  • 2:16 - 2:18
    粒子のノイズとして
  • 2:18 - 2:21
    bearing_noise、steering_noise、
    distance_noiseを設定します
  • 2:21 - 2:25
    観測値生成ステップはコメントアウトせず
    入力値を取り出しています
  • 2:25 - 2:30
    さらにスクロールすると以前使用したのと
    まったく同じ粒子フィルタがあります
  • 2:30 - 2:35
    動作更新と観測更新があり
    ここには再サンプリングステップがあります
  • 2:35 - 2:38
    すべて以前使ったものと同じです
  • 2:38 - 2:42
    最後にget_positionの結果だけを出力します
  • 2:42 - 2:46
    実行してみると取得した位置がここに表示されます
  • 2:46 - 2:49
    このRobot座標を
    コメントアウトし忘れていたようです
  • 2:49 - 2:54
    しかしこの値を見れば7.0055は
    結果として出力された8に近い値であり
  • 2:54 - 2:59
    49は48と 4.31も4.35と
    ほぼ同じような値であることがわかります
  • 2:59 - 3:05
    この粒子フィルタが
    前方位置の推定に関して機能した証拠です
Title:
03ps-12 Final Solution
Description:

dummy description

more » « less
Team:
Udacity
Project:
CS373 - Artificial Intelligence
Duration:
03:05

Japanese subtitles

Revisions