Skip to content

path control

Felix Widmaier edited this page May 9, 2014 · 7 revisions

Description

This is the controller of the whole process. The high level controller (= any program that wants to move the robot) should communicate only with this node. High Level sends a goal point using an action to path_control, which handles path planning and execution. It is possible to set goals without using the actionlib (see section Unexpected Paths). This is, however, not recommended, as some functionality can only be used via actionlib (e.g. setting different velocities for the goals or getting feedback during path execution).

Unexpected Paths

The regular way to use the navigation packages is to send a goal via action to path_control. However, if this is for some reason not feasible, it is also possible to use it without actions.

Regularly the controller is sending goals to the path planner via topics and is then waiting for the response (which is then an expected path). If the planner or any other node sends a path on this topic, while the controller is not waiting for a response, this unexpected path is executed anyhow. This gives a simple way to use the navigation package even if actions are not feasible. Instead of sending an action to the controller, one can send the goal via topic directly to the planner, which will send the resulting path to the controller. But be aware that not the full functionality can be used this way. It is, for example, not possible to set different velocities for each goal and the controller can not send any feedback during path execution. Another disadvantage is, that this way, the path execution is not automatically stopped, when a new goal is send. This means, that the robot will continue to follow the old path, while the new path is computed (which can take a few seconds)!

Note, that goals send via action have always priority to such unexpected paths. This means that unexpected paths are ignored, while an action-goal is in execution.

Parameters

Name Type Default Description
~nonaction_velocity float 0.5 Velocity which is used, if the controller receives an unexpected path (see section Unexpected Paths). This parameter has no meaning, when using actions.
~num_replan_attempts int 5 Max. number of replaning attempts, when FAILURE_MODE_REPLAN is used (otherwise this parameter is meaningless).

Actions

Sets up action server "navigate_to_goal" to receive goals from high level nodes and sends actions to server "follow_path" of path follower

Topics

subscribes

Name Type Description
/path nav_msgs::Path The path to drive on. Send by planner.

publishes

Name Type Description
/move_base_simple/goal geometry_msgs::PoseStamped The goal point which was received via action (publish on this topic for planner and for rviz).
Clone this wiki locally