ROS でロボットが地図を作成する際に,大抵の場合はジョイスティックやキーボード等を使い,テレオペレーションでロボットに指示を即時で与えながらロボットを移動させているかと思います.中には,地図を作るためにロボットが”探索”する領域を事前に計画したい方もいるのではないでしょうか.
frontier_exploration というパッケージはそのための ROS インタフェイスを提供しています.今回 Turtlebot に frontier_exploration を組込んでみました.下の動画 (長いです…) では Gazebo シミュレータ上でサンプルの地図上に Turtlebot を出現させ,地図が無い領域/地点にロボットを向かわせています.画面下半分がシミュレータの,上半分が操作用の RViz のウィンドウです.
始めに探索したい領域をポリゴンで指定し,その中の一点を最後にクリックすることで,ロボットがその領域の探索に向かいます.ロボットが移動し始めてからはロボットは自律で移動し,ユーザは一切指示を与えていません.
手早く挙動を確認したい方はこちらの動画を (Turtlebot ではありませんが).
ここでは,探索計画は RViz 上で手動で行っていますが,向かわせたい地点を actionlib で送信しているため,API に従って計画をプログラムすることも可能です.
gmapping で地図作成を行い,move_base で移動を行うロボットであれば適用が可能です (他のパッケージを使う移動ロボットは試していませんが,難しくないはず?).
When making a map using ROS, you’re likely tele-operating your robot for every single move via keyboard or joystick at best. But I know a demand exists for “planning” in advance a region that robot explores to make a map.
That’s where a package called frontier_exploration gets useful; it provides ROS actionlib interface, through which users can send the location to explore. We just made a sample using Turtlebot to show how to integrate frontier_exploration package into your own robot. Resulted package can be seen at turtlebot_samples. As the following movie (It’s long! You’re warned…) shows, you can run by a single command Gazebo simulator, spawn Turtlebot on a sample map and send a command for the exploration.
You set the region to be visited by drawing a polygon on RViz, then after clicking a point within the polygon robot will move. Once it starts moving user isn’t sending anything (robot moves autonomously to the given goal along the computed path).
Shorter video is also available (it’s not Turtlebot. Video was taken by the original developer of the frontier_exploration package)
In these videos the robot is commanded manually on RViz window. You can also send commands programmatically using its API.
So far we confirmed that frontier_exploration can be applied to the robots with gmapping and move_base (incorporating with other navigation packages may be as simple?).