ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Basically, you have three options.

  1. Write your own "planner" that follows the path. This can actually be a simple controller without any collision avoidance and should be straightforward.
  2. You can write a GlobalPlannerPlugin to move_base that subscribes to the path you create (or creates it itself) and then passes it down to the local planner. There are quite some questions about this (e.g. here or here). Then you have the full capabilities of move_base available later on
  3. Use move_base_flex. This exposes additional actions which should let you do what you want directly. See this question for details.

I personally have done 1 (pretty easy) and 2 (works quite will). EVen though I haven't tested it, I'd say 3 would be the way to go now (though move_base_flex is currently still not very stable, but quite actively developed).

Basically, you have three options.

  1. Write your own "planner" that follows the path. This can actually be a simple controller without any collision avoidance and should be straightforward.
  2. You can write a GlobalPlannerPlugin to move_base that subscribes to the path you create (or creates it itself) and then passes it down to the local planner. There are quite some questions about this (e.g. here or here). Then you have the full capabilities of move_base available later on
  3. Use move_base_flex. This exposes additional actions which should let you do what you want directly. See this question for details.

I personally have done 1 (pretty easy) and 2 (works quite will). EVen though I haven't tested it, I'd say 3 would be the way to go now (though move_base_flex is currently still not very stable, but quite actively developed).


EDIT

About option 1: No, there are no tutorials (that I know of). Just create a subscriber to your path message, and try to follow this using a simple controller. Most basic way would be to implement a simple P[I][D]-controller that trys to stay on the path with a fixed x-velocity (in my experience, PD is totally fine for such a task). If your robot is a differential drive, this is the easiest way.

About option 2: The link to the tutorial is in one of the linked answers above. For reference.