Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

確率ロボティクス第五回

4,270 views

Published on

リサンプリング、リセットと自己位置推定の各アルゴリズムの統合を扱いました。

Published in: Technology
  • Be the first to comment

確率ロボティクス第五回

  1. 1. 確率ロボティクスと移動ロボットの行動生成 第5回 上田隆一
  2. 2. 本日の内容 • パーティクルフィルタの完成 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 2
  3. 3. パーティクルの更新 • 重みがごく一部のパーティクルに偏る – 一度重みがゼロになったパーティクルの重みが 復活することはほとんど無い→無駄 • パーティクルをbelの大きなところに 多く配置したい – どうするか? Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 3
  4. 4. パーティクルと信念分布 • パーティクルはbelから サンプリング(標本化)したもの – サンプルとも呼ばれる Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 4 x y x y
  5. 5. リサンプリング • 重みが偏ったパーティクルの集団の表す belを再び重みの揃ったパーティクルで表現 • よく似た手続き: 選挙における議席の調整 – 各県の人口が偏る→議席の数を調整 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 5 x y x y x y 信念分布 (プログラム上には無い)
  6. 6. 主な(リ)サンプリングの手法 • パーティクルフィルタで使って意味のあるもの – 単純ランダムサンプリング – 層化抽出法(stratified sampling, 層別サンプリング) – 系統抽出(systematic sampling, 系統サンプリング, 等間隔サンプリング) – KLDサンプリング • 商品の抜き取り検査の 解説ページ等に豊富な説明 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 6 ※「等間隔サンプリング」という用語は 記憶が確かなら確率ロボティクスを 翻訳するときに「系統サンプリング」 だとよくわからんと思って独断で 意訳したものです・・・(申し訳ない)
  7. 7. 単純ランダムサンプリング • 計算量が O(N logN)に(N: パーティクルの数) 1. 重みの和を求める 2. 区間[0,重みの和)で乱数生成 3. 元のパーティクルの重みの累積値と 乱数を比べて釣り合う順番のパーティクルを抽出 4. 選んだパーティクルの場所に重み1/Nの パーティクルを置く Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 7 重たい 重み パーティクル1 2 3 4 5 6 7 8 9 10 この範囲の数を乱数で選ぶ
  8. 8. 層別サンプリング • 一般的な例 – アンケートを取るときに、年代ごとの人口比から 各年代でアンケートを取る人数を決定 • パーティクルフィルタでの一例 – 更新前のパーティクルの重みに比例して 新たなパーティクルを生成 – (別の解釈もある) Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 8 重み パーティクル1 2 3 4 5 6 7 8 9 10 2個 2個 2個 2個 1個1個
  9. 9. 系統サンプリング • 等間隔にサンプリングしていく – 幅: 1/重みの合計 – 最初のサンプリング点: [0,1/重みの合計)で ランダムに選択 – 特に事情がなければこれを使う Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 9 重み パーティクル1 2 3 4 5 6 7 8 9 10 端の位置は 乱数で選ぶ
  10. 10. KLDサンプリング • KLD: Kullbuck-Leibler distance • よく使われるコードで採用されている • 大まかな手順 – 状態空間を区画に切る – 新しいパーティクルをサンプリングしていく – 元のパーティクルが存在する区画全てに 新しいパーティクルが入ったら終了 • 他のサンプリング手法と違って状態空間の分割が伴う Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 10
  11. 11. 実験 • 系統サンプリングを実装して、移動と観測を 交互に行う Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 11 ムービー: https://lab.ueda.asia/?page_id=267
  12. 12. パーティクルと真の姿勢の乖離 • こうなったらどうする? – 普通の手続きではパーティクルは ロボットの真の姿勢周りに戻らない Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 12 ロボットの向き パーティクルの向き
  13. 13. リセット • これまでのbelの全部あるいは一部を 放棄して推定しなおし – 今までの推定が破綻しているので ベイズ推定に固執することなくやり直す – 尤度通りの情報が複数回連続で来ることは 実世界では期待できない – ある種のメタ認知 • リセットのトリガー – 主に観測後、リサンプリング or 正規化前の パーティクルの重みの総和が閾値を下回った時 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 13
  14. 14. リセットの種類 • 以下の2つの立場で種類が分かれる – 既存のbelを信じるか – リセットを起こしたセンサ情報を信じるか – あるいはどちらも信じる/信じない • 基本的なリセットの種類 – 単純リセット – センサリセット – 膨張リセット Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 14
  15. 15. 単純(ランダム)リセット • 重みの和が閾値を下回ったら最初から推定をやり直す • コード(randomReset関数) • 実行例 – https://lab.ueda.asia/?p=251 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 15 観測 (壁がない) 逆に置く
  16. 16. 単純リセットの性質 • belもセンサ情報も信じない • 過去の推定を全て消去 • 頻発させることはできない – 発動条件を厳しくする Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 16
  17. 17. センサリセット Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 17 • 最後の観測に使った尤度の分布に従って パーティクルを再配置 – 観測が1回反映された状態から後の推定が始まる • コード(sensorReset関数) • 実行例 – https://lab.ueda.asia/?p=251#sensor 観測 (壁がない) 逆に置く
  18. 18. センサリセットの性質 • 既存のbelよりもセンサの値を重視 – GPSのようにセンサから誤った 情報が来ない場合に有効 • 単純リセットと同様、頻発はできない – 少し真値とパーティクルの分布がずれただけで、 尤度が大きく減らさせることがある Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 18 壁を観測 壁がない
  19. 19. 膨張リセット Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 19 • 過去のbelをぼかす • コード(expansionReset関数) 観測 (壁がない) 逆に置く
  20. 20. 膨張リセットの性質 • 気軽に起こして良い – 真値とパーティクルの分布のズレが小さければ、 次のセンサ入力で分布が真値に近づく • 単調な環境だと使いにくい – 真値とパーティクルの分布が離れている場合、 何度も連続で起こらないと真値に分布が到達しない – 単調な環境だと何度も連続して起こらない • マイクロマウスの迷路はこれに当てはまる Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 20
  21. 21. リセットの組み合わせの例 • コード(reset関数) – 膨張リセットとセンサリセットを組み合わせている • 最初のリセット: 膨張リセット • 二回目以降: センサリセット • 実行例 – https://lab.ueda.asia/?page_id=229 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 21
  22. 22. パーティクルフィルタのアルゴリズム (まとめ) • ロボットが移動 – 移動しただけパーティクルを移動 (事前に見積もった量の雑音を混入) • ロボットがセンシング – 事前に設計した尤度で重みを変える – 重みの和が閾値を下回ったらリセット – そうでなければリサンプリング Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 22
  23. 23. 数式のまとめ Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 23

×