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.

確率ロボティクス第七回

3,749 views

Published on

マルコフ決定過程と価値反復の応用

Published in: Technology
  • Login to see the comments

確率ロボティクス第七回

  1. 1. 確率ロボティクスと移動ロボットの行動生成 第7回 上田隆一
  2. 2. 本日の内容 • finite MDPのおさらい • 価値反復でロボットを動かす例 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 2
  3. 3. finite MDP Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 3
  4. 4. 価値反復 • 以下の式を繰り返せばそのうちV*に 収束するという単純なもの Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 4
  5. 5. 価値反復の適用 • タスク – 右の環境で任意の場所から最短時間で目的地に行く – 自己位置は分かっていると仮定 – 環境 • x(横方向): 180x4 = 720[mm] • y(縦方向): 180x3 = 540[mm] • 座標の原点を左下に取りましょう – 壁の中心線に原点 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 5 目的地
  6. 6. 行動の定義 • とりあえず以下の三種類 – fw: 前進40[mm] – cw: 時計回り5[deg] – ccw: 反時計回り5[deg] Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 6
  7. 7. 状態の定義 • xyq空間を有限個の状態に分割 – マルコフ性が保たれるように • 例えば1区画1状態にすると、その区画内のどこに いるかで壁にぶつかったりぶつからなかったりする • (そのようにする場合は行動の方を工夫する) – しかし細かく分割すると価値反復の計算量が増える Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 7
  8. 8. • とりあえず細かく切ってみましょう – 20[mm], 5[deg] – 離散状態数: 69984個 • (x方向36個、y方向27個、q方向:72個) • q軸は0[deg]や90[deg]等が離散状態の中心に来るよう に q = -2.5[deg]から開始して5[deg]刻みにする Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 8 さらにq方向も 72分割 X y
  9. 9. • 離散状態に番号をつける – 各軸での番号付け(0番から) • ix = (int)(x/20); • iy = (int)(y/20); • itheta = (int)((theta+2.5)/5); – 0番から69983番まで通し番号をつける • index = itheta + ix*72 + iy*72*36 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 9
  10. 10. 状態の分類 • ゴールや壁の位置に基づいて分類 – 終端状態 • 価値0を与える。この先、状態遷移しない – 壁でロボットが入れない (入ってほしくない)状態 • 終端状態として価値に マイナスの大きな値を 入れるか、 状態遷移できなくする (今回は後者) – それ以外の普通の状態 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 10
  11. 11. 状態遷移の計算 • xy方向の離散状態の間隔20[mm]が 前進40[mm]より小さいので決定論的に 扱うことにする • 回転方向も5[deg]の移動に対して 間隔が5[deg]なので決定論的に Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 11 遷移前 遷移後 この状態に100%の 確率で遷移するとみなす 離散化が粗い時/ 精密に計算したい時は 確率的に 面積の比で 遷移確率を計算
  12. 12. 状態遷移のデータ作成 • サンプルコード – (Haskellです。すいません。) • 出力 – コードのディレクトリで下のようにコンパイル・実行 するとstate_transファイルに状態遷移、 final_statesに終端状態が入る • $ ghc gen_state_trans.hs • $ ./gen_state_trans > state_trans 2> final_states Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 12
  13. 13. 価値反復 • コード(問題非依存の汎用的なもの) – state_transとfinal_statesを読みこんで処理 – マルチスレッド化されています • 価値反復は並列化しやすい • 排他処理も基本的に不要 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 13
  14. 14. 出力 • 最適状態価値関数(optimal_values) • 最適方策(policy) Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 14
  15. 15. 最適状態価値関数 • ゴールに向かって減少 • 停留点は発生しない Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 15 q = 270[deg] の切片q = 90[deg] の切片
  16. 16. 方策 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 16 • 各x, y, qに対して全て行動が決まる • 想像していたものと違いますか? – 壁に対して斜めに進む行動が生成されている q = 90[deg] の切片 q = 135[deg] の切片
  17. 17. ロボットで方策を使う • コード – https://github.com/ryuichiueda/ProbabilisticRaspiMouse/tree/master/value_iteratio n • コードの大雑把な説明 1. パーティクルのx,y,q座標それぞれの重みつき平均値を ロボットの推定姿勢とする 2. 推定姿勢から、状態遷移を求めた時に状態につけた番号を 求める 3. 方策の配列から番号の箇所にある行動を読み取って実行 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 17
  18. 18. 実験 • ムービー – https://lab.ueda.asia/?page_id=288 – 全状態で最適な行動がもとまっているので、 位置推定さえ正常ならば、途中壁で止まっても ゴールに到達可能 • 改善点はあるでしょうか? – 次ページ Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 18
  19. 19. 諸問題 • 価値反復で改善できる点 – 壁に近づきすぎる • 4cmのマージンが小さすぎる • どうしようもない問題 – 位置推定がずれたら 行動決定も間違う – リセットが起きたら環境が対称なのでパーティクルが 収束しない Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 19 方策のq = 135[deg] の切片
  20. 20. 次回 • 強化学習 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 20

×