Skip to content

path follower

Goran Huskić edited this page May 21, 2017 · 4 revisions

Description

Gets the path from path_control (or another node) via action. Controls the robot to follow this path and report back to path_control.

The program is divided into modules so it can easily be extended and adapted to other robot models. There are four modules, each having a clearly defined interface to make it easy to replace one or more of them, depending on the particular requirements:

  • Robot Controller: Controls the movement of the robot to follow the path. This is dependent on the robot model (car-like, skid-steered, omni-drive, ...)
  • Local Planner: Generates a local plan that is actually followed. This allows the system to use a global path planner that does not generate admissible paths for the robot's kinematic constraints. The local planner is optional, by default the global path is used directly.
  • Supervisors: Supervisors watch over the robot while it is driving and fire an alert if there is some reason to stop (e.g. Timeout). Multiple supervisors can be combined in a Supervisor Chain.
  • Collision Avoider: Looks out for obstacles in front of the robot and can modify the move command of the controller to avoid a collision. There can only be one collision avoider at the same time.

The following figure illustrates the path execution loop and how the modules are integrated:

Parameters

As the list is quite long, it has been moved to a separate page.

Actions

Sets up action server "follow_path" which receives paths from the path controller.

Topics

subscribes

Name Type Description
/odom nav_msgs::Odometry Odometry
/obstacle_cloud ObstacleCloud (pcl::PointCloud, see path_follower/utils)) [optional] Point cloud where each point represents an obstacle (e.g. from a laser scan). Can be seen as a "sparse map" and is used for collision avoidance.

publishes

Name Type Description
/cmd_vel geometry_msgs::Twist The final command velocity (linear and angular) that is sent to the robot.
Clone this wiki locally