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.

確率ロボティクス第二回

9,886 views

Published on

講義資料です。

Published in: Technology
  • Login to see the comments

確率ロボティクス第二回

  1. 1. 確率ロボティクスと移動ロボットの行動生成 第2回 上田隆一
  2. 2. 本日の内容 • デッドレコニング – 移動ロボットのデッドレコニングについておさらい – 誤差について考察 – パーティクルフィルタによる不確かさの表現 – ジャイロによる補正 – 理屈 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 2
  3. 3. 題材 • Raspberry Piマウス – マイクロマウス – 2個の車輪 • ステッピングモータ – モータに周波数(角速度)と – 時間を指定したらその通りに動く – 動かしてみたい人は応相談 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 3
  4. 4. デッドレコニング • ロボットが移動した量を積算してロボットの位置を算出 • 眠気覚ましに下図のロボットの最終的な姿勢 (位置、向き)を計算してみましょう Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 4 注意: xは太字だと状態変数ベクトル、細字だとx軸の状態変数を表します。
  5. 5. 解答 • 手計算 – x = 300 cos 60○ = 150 x 31/2 = 260[mm] – y = 300 + 300 sin 60○ = 450[mm] – q = 90 – 60 = 30[deg] • プログラミング用 – ロボットが時刻tにjt回転した後にlt直進すると、 t+1での姿勢は Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 5
  6. 6. デッドレコニングの実装例 • サンプル – 簡単ですが、コード全体の行動を見るついでに – 動きの例 • 主なファイル – input: ロボットにさせたい行動を書いたファイル – main.cc: inputを読んで実行 – Actions.{h,cc}: 行動プリミティブの実装 – DeadReckoning.{h,cc}: デッドレコニングの計算 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 6
  7. 7. 指令値と実際の姿勢のズレ • 必ずズレる • なぜずれるか理由を列挙してみましょう Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 7
  8. 8. 解答例 • ロボット由来 – カタログ値と実際のタイヤの取り付け位置の違い – タイヤのゴムの歪み – 車輪の設置位置が実際はどこか分からない – コードに引っ張られる – 動作の切替時に勢いがついている – ステッピングモータの脱調 • 環境由来 – 床面の微妙な凹凸 • 実験者由来 – 初期姿勢が適当 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 8
  9. 9. 議論 • 由来が分かったらどう対応する? • 対応によって「自律性」はどうなる? Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 9
  10. 10. 解答例 • 環境由来のもの – 環境を改善 • ロボットに過保護 – ロボット由来のもの • チューニング(教員になると多忙ゆえ実験毎にはできませ ん) • センサをつける(後でやります) – 実験者由来のもの • 何らかの冶具で Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 10 とりあえず対応策はいろいろあるが、 あまり気を遣わなくてもよいように ロボットを賢くした方がよいかもしれない
  11. 11. 確率ロボティクス的な考え方 • とりあえずどれだけデッドレコニングが 不確かなのかロボットが分かるようにしておく • センサを取り付けたら情報をロボットに 入れて不確かさの計算方法を修正したり 追加したり Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 11
  12. 12. モンテカルロ法によるデッドレコニング • パーティクルフィルタ(MCL)の一部 • 次のようなアルゴリズムを実装 – ばらつきや偏りの度合いを事前に見積もっておく – 見積もりにしたがってロボットの動作をシミュレート – シミュレーションを例えば数百、数千と行って 結果を全て記録しておく • シミュレーションで得られた事後の姿勢: パーティクル Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 12
  13. 13. Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 13 図にするときに しばしば点で表現される
  14. 14. 実装例 • リポジトリ • 主なファイル – Actions.*, input: 前出 – DeadRecMonteCarlo.*: モンテカルロ法の実行と記録 – main.cc • 標準入力からinputファイルを読んで実行 • ポイント – どうやって誤差を乗っけているか Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 14
  15. 15. 実行例 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 15
  16. 16. 議論 • ばらつきはシミュレーションに 組み込むべきだが偏りはどうする? – ハードをチューニングして プログラム中のばらつきのパラメータを 小さくすべき? – センサの性能の良し悪しで議論は変わるかどうか Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 16
  17. 17. センサを使ったデッドレコニング • センサで移動量(あるいは移動量の一部) を検出できる • ジャイロを使った例を一つ Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 17
  18. 18. ジャイロの利用 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 18 • 使用するジャイロ – ヨー角をリアルタイム出力 • デッドレコニングでの使い方 – 回転時に実際の回転角を計測 – 直進時に回転角の計測と 移動量の補正 ジャイロ
  19. 19. • ジャイロで修正される移動量 – 前方への移動量の指令値がlの時 • 前方への移動量 = l sind / d • 横方向へのシフト = l (1 – cosd ) / d – (計算してみましょう) Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 19
  20. 20. デッドレコニングの例 • コード(先ほどの例から少し整理しました) – AgentGyro: これまでのmain.ccに相当 – DeadRecMonteCarloの変更 • 方角の誤差の見積もりを小さく • motionUpdate関数に横方向の変位を追加 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 20
  21. 21. デッドレコニングの結果の例 • 誤差の見積もりが少ない分、 ばらつきは抑えられる • ロボットはより自身の姿勢に 自信を持つ – 正しいかどうかは分からない ことに注意 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 21
  22. 22. 数式上の表現 • 現代制御や最適制御ではロボットの動きは 「状態方程式」で定式化される – 離散時間系での状態方程式 •xt+1 = f(xt,a) + e –xt: 遷移前の姿勢 –xt+1 : 遷移後の姿勢 –a: 行動(入力)の単位 –f: 状態遷移関数 –e: 雑音 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 22
  23. 23. 不確かさの扱い • 確率ロボティクスでは不確かさをそのまま取り扱う – プログラム中では xt+1 = f(xt,a) + e の xt+1 だけ変数に入れておけば良いわけではない Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 23
  24. 24. 状態方程式の確率表現 • 状態方程式(動作モデル)は次のように表現 – P(X) = ∫X p(xt+1 | xt, a) dxt+1 – P(X) : xt,でaを実行するとX内にxt+1が入る確率 – p(xt+1 | xt, a)は pa xx’と略記 • 添字だらけになって煩雑なので • x: 事前の状態を表す • x’ : 事後の状態を表す Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 24
  25. 25. 信念状態 • xt+1 に相当するものを確率で表現 – 確率密度関数belt+1(xt+1) – ロボットの姿勢が領域Xに存在する確率: X = ∫Xbel(xt)dx • なぜ「信念」と呼ばれるのでしょうか? Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 25
  26. 26. belの遷移 • pa xx’から導出 • bel(x’) = ∫ pa xx’bel(x)dx – できる人は絵に描いて考えてみましょう • 結局、こんなややこしいものは計算できないので パーティクルフィルタではロボット中で シミュレーションして近似計算 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 26
  27. 27. 本日のまとめ • パーティクルフィルタのデッドレコニングに 関する部分を扱った – ロボットの姿勢は確率密度関数belを 近似したデータで表現される • このデータがパーティクルと呼ばれる • パーティクルの計算はある種のシミュレーション – ロボットから見ると自身の姿勢は不明で 確率分布だけが分かる • 「信念」 Oct. 7, 2015 確率ロボティクスと移動ロボットの行動生成 27

×