2010年2月6日土曜日

自律移動ソフトを試す

だんだんやることがハードになってきて、気軽にblogかけなくなってきました。

現実逃避に自律移動ソフトで遊びました。

http://www.ros.org/wiki/pr2_simulator/Tutorials/2DNavigationStackDemoWithSimple2DesksWorld
http://www.ros.org/wiki/navigation/Tutorials/RobotSetup

まずはmakeです。

$ rosdep install pr2_2dnav_gazebo rviz
$ rosmake pr2_2dnav_gazebo rviz


結構時間かかります。

で、以下のようにしてまずシミュレータを上げます。

$ roscd pr2_2dnav_gazebo
$ export ROBOT=sim
$ roslaunch pr2-simple-fake_localization.launch

こんな感じの環境ができます。

次にロボットに指令を出すためにrvizというソフトを立ち上げます。

$ roslaunch 2dnav_pr2 rviz_move_base.launch

こんな感じで、
  • マップ(黒いところが壁)
  • ロボットの推定自己位置(ロボットがいます)
  • ロボットの自己位置候補(赤矢印)
  • レーザーレンジファインダでの観測点(緑の点)
  • 3Dスキャナによるポイントクラウド(赤や青)
が表示されます。

メニューで、2D Nav Goalというボタンを押してから、
適当な場所をドラッグ(ドラッグ開始点が目標地点、開始点と終了点を結ぶ方向が目標方向)することでロボットに目標位置姿勢を与えることができます。

赤い矢印が指定した目標位置姿勢になります。


するとシミュレータ上のロボットも動きます。

これはfake_localizationという名前から分かるように、自己位置はシミュレータから直接取得しているため、
ロボットの自己位置がシミュレーションとずれることがありません。

ちゃんと自己位置を推定させるには以下のようにします。
(一旦、gazeboもrvizも終了させてください)



$ roslaunch pr2-armless-simple-amcl.launch


$ roslaunch 2dnav_pr2 rviz_move_base.launch

するとシミュレータはさきほどと同じですが、
rviz上(ロボットの認識結果)はいきなりロボットがすごくずれた位置(0,0,0)?にいます。

2D Pose Estimateのボタンを押してから、さきほど目標位置姿勢を与えたように、
ロボットの自己位置をいれてあげましょう。
緑のレーザーが地図とずれているのでまだ自己位置がずれていますね。
これくらいは修正してほしいところです。
ではこのまま、2D Nav Goalを使ってロボットを動かしてみましょう。
なかなか収束しませんが、特徴量が少ない空間なので仕方ないかもしれませんね。


自己位置推定プログラムの良し悪しを測れそうですね。

今回はライトな内容でした。
そのうち、自律移動ソフトの中身について見ていきたいと思います。

    0 件のコメント:

    コメントを投稿