Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Hi vignesh,

according to your description I guess that you are looking for your path controller. However, your specific planning algorithm returns a trajectory? The question is now: trajectory tracking (following the desired time profile) or path following. And it is further important to know, if your planner returns trajectories that are already feasible for your car-like robot or if it is just a coarse reference path without taking kinodynamic constraints into account.

Depending your problem setup you have multiple options:

  • ros_control: ros-control provides generic interfaces for controllers. Package ros_controllers already provides some common implementations (for robotic arms, and for a diff-drive robot). You could implement your controller here (e.g. your pure pursuit). Or try one of the existing controllers. Since you have a car-like robot, a simple PID controller should not fit well I guess. The choice probably depends on your reference path / trajectory.

  • ros navigation: You can wrap your specific planning algorithm into a global planner plugin in order to be compliant with move_base (refer to navigation tutorials). Afterwards you can implement your pure pursuit algorithm as local planner plugin. Using this approach you can benefit from localization, maps etc. Since you are asking for existing packages for path following: You could try teb_local_planner which supports car-like robots and also provides a path following mode in which the distance to the reference path is minimized. The reference path may also be really coarse. However, since it is an optimization based approach, the computational burden is quite large. There is a tutorial on path following. But you need the planner version 0.4 which is not yet on the public repositories. I guess a sync will not take place before kinetic is released next week. But you can compile the package from source. You might also refer to this Question.

I hope that helps.

Cheers

Hi vignesh,

according to your description I guess that you are looking for your path a path controller rather than a tracking controller. However, your specific planning algorithm returns a trajectory? The question is now: trajectory tracking (following the desired time profile) or path following. And it is further important to know, if your planner returns trajectories that are already feasible for your car-like robot or if it is just a coarse reference path without taking kinodynamic constraints into account.

Depending your problem setup you have multiple options:

  • ros_control: ros-control provides generic interfaces for controllers. Package ros_controllers already provides some common implementations (for robotic arms, and for a diff-drive robot). You could implement your controller here (e.g. your pure pursuit). Or try one of the existing controllers. Since you have a car-like robot, a simple PID controller should not fit well I guess. The choice probably depends on your reference path / trajectory.

  • ros navigation: You can wrap your specific planning algorithm into a global planner plugin in order to be compliant with move_base (refer to navigation tutorials). Afterwards you can implement your pure pursuit algorithm as local planner plugin. Using this approach you can benefit from localization, maps etc. Since you are asking for existing packages for path following: You could try teb_local_planner which supports car-like robots and also provides a path following mode in which the distance to the reference path is minimized. The reference path may also be really coarse. However, since it is an optimization based approach, the computational burden is quite large. There is a tutorial on path following. But you need the planner version 0.4 which is not yet on the public repositories. I guess a sync will not take place before kinetic is released next week. But you can compile the package from source. You might also refer to this Question.

I hope that helps.

Cheers

Hi vignesh,

according to your description I guess that you are looking for a path controller rather than a tracking controller. However, your specific planning algorithm returns a trajectory? The question is now: trajectory tracking (following the desired time profile) or path following. And it is further important to know, if your planner returns trajectories that are already feasible for your car-like robot or if it is just a coarse reference path without taking kinodynamic constraints into account.

Depending your problem setup you have multiple options:

  • ros_control: ros-control provides generic interfaces for controllers. Package ros_controllers already provides some common implementations (for robotic arms, and for a diff-drive robot). You could implement your controller here (e.g. your pure pursuit). Or try one of the existing controllers. Since you have a car-like robot, a simple PID controller should not fit well I guess. The choice probably depends on your reference path / trajectory.

  • ros navigation: You can wrap your specific planning algorithm into a global planner plugin in order to be compliant with move_base (refer to navigation tutorials). Afterwards you can implement your pure pursuit algorithm as local planner plugin. Using this approach you can benefit from localization, maps etc. Since you are asking for existing packages for path following: You could try teb_local_planner which supports car-like robots and also provides a path following mode in which the distance to the reference path is minimized. The reference path may also be really coarse. However, since it is an optimization based approach, the computational burden is quite large. There is a tutorial on path following. But you need the planner version 0.4 which is not yet on the public repositories. I guess a sync will not take place before kinetic is released next week. But you can compile the package from source. You might also refer to this Question.

EDIT: I found a standalone pure pursuit implementation here. The source is for ROS hydro, but it should work (with minor modifications) on newer distributions as well. But I have never used the planner and hence cannot tell anything about it.

I hope that helps.

Cheers