Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

確率ロボティクス第二回

9 902 vues

Publié le

講義資料です。

Publié dans : Technologie
  • 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

×