-
Notifications
You must be signed in to change notification settings - Fork 128
path follower
Goran Huskić edited this page May 21, 2017
·
4 revisions
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:
As the list is quite long, it has been moved to a separate page.
Sets up action server "follow_path" which receives paths from the path controller.
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. |
Name | Type | Description |
---|---|---|
/cmd_vel | geometry_msgs::Twist | The final command velocity (linear and angular) that is sent to the robot. |