現実逃避に自律移動ソフトで遊びました。
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 件のコメント:
コメントを投稿