![]() |
tracking_pid package from tracking_pid repotracking_pid |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.2.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | PID controller following a moving carrot |
Checkout URI | https://github.com/nobleo/tracking_pid.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Cesar Lopez
Authors
- Michiel Francke
- Cesar Lopez
Tracking_pid
Overview
Tracking PID offers a tuneable PID control loop to accurately follow a trajectory. An interpolator moves a goal over a
nav_msgs/Path
with a tuneable velocity, and a separate node tracks the given point.
One of the tracking options uses a carrot of length l in front of the robot to determine the velocity commands based on the lateral and longitudinal error between current Global Point (GP) and the Control point (CP):
If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot. In this case a Projected Global Point (PGP) is computed as well which is tracked by the CP. In this mode, the yaw error can also be used as control input.
The PID contains three loops: Longitudinal, lateral and angular loops.
Keywords: tracking, pid, local_planner, trajectory
License
Apache 2.0
Author: Michiel Franke, Cesar Lopez
Maintainer: Cesar Lopez, cesar.lopez@nobleo.nl.
Affiliation: Nobleo Projects
The tracking_pid package has been tested under [ROS] Melodic and Ubuntu 18.04.
Installation
Building from Source
Dependencies
- Robot Operating System (ROS) (middleware for robotics),
Building
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/nobleo/tracking_pid.git
cd ../
catkin_make
Unit Tests
All tests can be run using:
catkin build tracking_pid --catkin-make-args run_tests
test_controller
Unit test that checks basic tracking functionality of the controller alone
test_interpolator
Unit test that checks interpolation between two poses
test_tracking_pid.test
Ros system test that checks that interpolator + controller drives a robot to track a given path
Usage
Run the main node:
roslaunch tracking_pid test_tracking_pid.test rviz:=true
Or run the tracking node together with a Coverage Path Planner
roslaunch tracking_pid test_tracking_pid_cpp.launch
Both of these depend on:
mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher
tracking_pid test_tracking_pid_local_planner_cpp.launch depends on:
full_coverage_path_planner for CPP global planner
Configuring in RQT
Tracking_pid parameters are all available through (rqt_)dynamic_reconfigure. The main parameters are:
-
l
(float, default:0.5
); Following distance from robot’s rotational point to trajectory. Set negative to track backwards.
Proportional, Integral and Derivative actions for the three loops: Longitudinal, lateral and angular loops.
-
Kp_(loop_name)
(float); Proportional action gain for loop ‘loop_name’ -
Ki_(loop_name)
(float); Integral action gain for loop ‘loop_name’ -
Kd_(loop_name)
(float); Derivative action gain for loop ‘loop_name’
File truncated at 100 lines see the full file
Changelog for package tracking_pid
Forthcoming
1.0.0 (2019-04-19)
- Add Apache 2.0 as license as per ROSIN
- Add backwards compatibility to ROS-Kinetic by overloading planner initialize function.
- Add ~loop param to make interpolator loop
- Deal with 0.0 velocity in Python path_interpolator
- Ported path_interpolator.py/PathInterpolator itself to path_interpolator.cpp and integrating it
- Re-format code according to ROS standard (https://github.com/davetcoleman/roscpp_code_format)
- Contributors: Alaa Alassi, Ferry Schoenmakers, Jasper Verhoeven, Loy van Beek, Mukunda Bharatheesha, Tim Clephas
0.6.4 (2019-01-03)
- Drive backwards when control point is behind robot (negative)
- Deal with paths that have duplicate poses
- Contributors: Loy van Beek, Tim Clephas
0.6.3 (2018-08-24)
- Added dynamic reconfigure parameter for velocity
- Add options for different start-time than current time to allow for faster resuming after paused state
- Do not re-initialise interpolator on every pause callback but only when paused
- Contributors: Tim Clephas
0.6.2 (2018-07-19)
- Publish when the path is done tracking
- The functionality of the Interpolator would also be suitable for an ActionServer, called with a path
- Add node to interpolate nav_msgs/Path and send that to the tracking_pid node
- Added interpolation between data points to allow for paths with data points further apart in time and space
- Add parameter to allow chosing controller frames
- Contributors: Loy van Beek, Tim Clephas, Yuri Steinbuch
0.1.0 (2017-10-16)
- Added backwards driving compatibility to the controller
- Fixed feedforward issue and some improvements in the perf_logger
- Added performance logger wrt to future lifetime tests
- Added general launch file in which desired trajectory can be set. Added dynamic reconfigure for the global_planner to change trajectories online easily
- Bugfixes and dynamic reconfigure of local planner
- Added feedforward actions, improved overall performance, bug fixes
- Contributors: Michiel Francke, Tim Clephas, Yuri Steinbuch
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- test/interpolator/test_path_interpolator_action.launch
- test/interpolator/test_path_interpolator_topic.launch
- test/interpolator/test_path_interpolator_topic_empty_frame_ids.launch
- test/tracking_pid/test_tracking_pid_cpp.launch
-
- map [default: $(find tracking_pid)/maps/grid.yaml]
- target_x_vel [default: 0.4]
- target_x_acc [default: 0.4]
- target_yaw_vel [default: 0.7]
- target_yaw_acc [default: 0.5]
- robot_radius [default: 0.3]
- tool_radius [default: 0.2]
Services
Plugins
Recent questions tagged tracking_pid at Robotics Stack Exchange
![]() |
tracking_pid package from tracking_pid repotracking_pid |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.2.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | PID controller following a moving carrot |
Checkout URI | https://github.com/nobleo/tracking_pid.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Cesar Lopez
Authors
- Michiel Francke
- Cesar Lopez
Tracking_pid
Overview
Tracking PID offers a tuneable PID control loop to accurately follow a trajectory. An interpolator moves a goal over a
nav_msgs/Path
with a tuneable velocity, and a separate node tracks the given point.
One of the tracking options uses a carrot of length l in front of the robot to determine the velocity commands based on the lateral and longitudinal error between current Global Point (GP) and the Control point (CP):
If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot. In this case a Projected Global Point (PGP) is computed as well which is tracked by the CP. In this mode, the yaw error can also be used as control input.
The PID contains three loops: Longitudinal, lateral and angular loops.
Keywords: tracking, pid, local_planner, trajectory
License
Apache 2.0
Author: Michiel Franke, Cesar Lopez
Maintainer: Cesar Lopez, cesar.lopez@nobleo.nl.
Affiliation: Nobleo Projects
The tracking_pid package has been tested under [ROS] Melodic and Ubuntu 18.04.
Installation
Building from Source
Dependencies
- Robot Operating System (ROS) (middleware for robotics),
Building
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/nobleo/tracking_pid.git
cd ../
catkin_make
Unit Tests
All tests can be run using:
catkin build tracking_pid --catkin-make-args run_tests
test_controller
Unit test that checks basic tracking functionality of the controller alone
test_interpolator
Unit test that checks interpolation between two poses
test_tracking_pid.test
Ros system test that checks that interpolator + controller drives a robot to track a given path
Usage
Run the main node:
roslaunch tracking_pid test_tracking_pid.test rviz:=true
Or run the tracking node together with a Coverage Path Planner
roslaunch tracking_pid test_tracking_pid_cpp.launch
Both of these depend on:
mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher
tracking_pid test_tracking_pid_local_planner_cpp.launch depends on:
full_coverage_path_planner for CPP global planner
Configuring in RQT
Tracking_pid parameters are all available through (rqt_)dynamic_reconfigure. The main parameters are:
-
l
(float, default:0.5
); Following distance from robot’s rotational point to trajectory. Set negative to track backwards.
Proportional, Integral and Derivative actions for the three loops: Longitudinal, lateral and angular loops.
-
Kp_(loop_name)
(float); Proportional action gain for loop ‘loop_name’ -
Ki_(loop_name)
(float); Integral action gain for loop ‘loop_name’ -
Kd_(loop_name)
(float); Derivative action gain for loop ‘loop_name’
File truncated at 100 lines see the full file
Changelog for package tracking_pid
Forthcoming
1.0.0 (2019-04-19)
- Add Apache 2.0 as license as per ROSIN
- Add backwards compatibility to ROS-Kinetic by overloading planner initialize function.
- Add ~loop param to make interpolator loop
- Deal with 0.0 velocity in Python path_interpolator
- Ported path_interpolator.py/PathInterpolator itself to path_interpolator.cpp and integrating it
- Re-format code according to ROS standard (https://github.com/davetcoleman/roscpp_code_format)
- Contributors: Alaa Alassi, Ferry Schoenmakers, Jasper Verhoeven, Loy van Beek, Mukunda Bharatheesha, Tim Clephas
0.6.4 (2019-01-03)
- Drive backwards when control point is behind robot (negative)
- Deal with paths that have duplicate poses
- Contributors: Loy van Beek, Tim Clephas
0.6.3 (2018-08-24)
- Added dynamic reconfigure parameter for velocity
- Add options for different start-time than current time to allow for faster resuming after paused state
- Do not re-initialise interpolator on every pause callback but only when paused
- Contributors: Tim Clephas
0.6.2 (2018-07-19)
- Publish when the path is done tracking
- The functionality of the Interpolator would also be suitable for an ActionServer, called with a path
- Add node to interpolate nav_msgs/Path and send that to the tracking_pid node
- Added interpolation between data points to allow for paths with data points further apart in time and space
- Add parameter to allow chosing controller frames
- Contributors: Loy van Beek, Tim Clephas, Yuri Steinbuch
0.1.0 (2017-10-16)
- Added backwards driving compatibility to the controller
- Fixed feedforward issue and some improvements in the perf_logger
- Added performance logger wrt to future lifetime tests
- Added general launch file in which desired trajectory can be set. Added dynamic reconfigure for the global_planner to change trajectories online easily
- Bugfixes and dynamic reconfigure of local planner
- Added feedforward actions, improved overall performance, bug fixes
- Contributors: Michiel Francke, Tim Clephas, Yuri Steinbuch
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- test/interpolator/test_path_interpolator_action.launch
- test/interpolator/test_path_interpolator_topic.launch
- test/interpolator/test_path_interpolator_topic_empty_frame_ids.launch
- test/tracking_pid/test_tracking_pid_cpp.launch
-
- map [default: $(find tracking_pid)/maps/grid.yaml]
- target_x_vel [default: 0.4]
- target_x_acc [default: 0.4]
- target_yaw_vel [default: 0.7]
- target_yaw_acc [default: 0.5]
- robot_radius [default: 0.3]
- tool_radius [default: 0.2]
Services
Plugins
Recent questions tagged tracking_pid at Robotics Stack Exchange
![]() |
tracking_pid package from tracking_pid repotracking_pid |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.2.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | PID controller following a moving carrot |
Checkout URI | https://github.com/nobleo/tracking_pid.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Cesar Lopez
Authors
- Michiel Francke
- Cesar Lopez
Tracking_pid
Overview
Tracking PID offers a tuneable PID control loop to accurately follow a trajectory. An interpolator moves a goal over a
nav_msgs/Path
with a tuneable velocity, and a separate node tracks the given point.
One of the tracking options uses a carrot of length l in front of the robot to determine the velocity commands based on the lateral and longitudinal error between current Global Point (GP) and the Control point (CP):
If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot. In this case a Projected Global Point (PGP) is computed as well which is tracked by the CP. In this mode, the yaw error can also be used as control input.
The PID contains three loops: Longitudinal, lateral and angular loops.
Keywords: tracking, pid, local_planner, trajectory
License
Apache 2.0
Author: Michiel Franke, Cesar Lopez
Maintainer: Cesar Lopez, cesar.lopez@nobleo.nl.
Affiliation: Nobleo Projects
The tracking_pid package has been tested under [ROS] Melodic and Ubuntu 18.04.
Installation
Building from Source
Dependencies
- Robot Operating System (ROS) (middleware for robotics),
Building
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/nobleo/tracking_pid.git
cd ../
catkin_make
Unit Tests
All tests can be run using:
catkin build tracking_pid --catkin-make-args run_tests
test_controller
Unit test that checks basic tracking functionality of the controller alone
test_interpolator
Unit test that checks interpolation between two poses
test_tracking_pid.test
Ros system test that checks that interpolator + controller drives a robot to track a given path
Usage
Run the main node:
roslaunch tracking_pid test_tracking_pid.test rviz:=true
Or run the tracking node together with a Coverage Path Planner
roslaunch tracking_pid test_tracking_pid_cpp.launch
Both of these depend on:
mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher
tracking_pid test_tracking_pid_local_planner_cpp.launch depends on:
full_coverage_path_planner for CPP global planner
Configuring in RQT
Tracking_pid parameters are all available through (rqt_)dynamic_reconfigure. The main parameters are:
-
l
(float, default:0.5
); Following distance from robot’s rotational point to trajectory. Set negative to track backwards.
Proportional, Integral and Derivative actions for the three loops: Longitudinal, lateral and angular loops.
-
Kp_(loop_name)
(float); Proportional action gain for loop ‘loop_name’ -
Ki_(loop_name)
(float); Integral action gain for loop ‘loop_name’ -
Kd_(loop_name)
(float); Derivative action gain for loop ‘loop_name’
File truncated at 100 lines see the full file
Changelog for package tracking_pid
Forthcoming
1.0.0 (2019-04-19)
- Add Apache 2.0 as license as per ROSIN
- Add backwards compatibility to ROS-Kinetic by overloading planner initialize function.
- Add ~loop param to make interpolator loop
- Deal with 0.0 velocity in Python path_interpolator
- Ported path_interpolator.py/PathInterpolator itself to path_interpolator.cpp and integrating it
- Re-format code according to ROS standard (https://github.com/davetcoleman/roscpp_code_format)
- Contributors: Alaa Alassi, Ferry Schoenmakers, Jasper Verhoeven, Loy van Beek, Mukunda Bharatheesha, Tim Clephas
0.6.4 (2019-01-03)
- Drive backwards when control point is behind robot (negative)
- Deal with paths that have duplicate poses
- Contributors: Loy van Beek, Tim Clephas
0.6.3 (2018-08-24)
- Added dynamic reconfigure parameter for velocity
- Add options for different start-time than current time to allow for faster resuming after paused state
- Do not re-initialise interpolator on every pause callback but only when paused
- Contributors: Tim Clephas
0.6.2 (2018-07-19)
- Publish when the path is done tracking
- The functionality of the Interpolator would also be suitable for an ActionServer, called with a path
- Add node to interpolate nav_msgs/Path and send that to the tracking_pid node
- Added interpolation between data points to allow for paths with data points further apart in time and space
- Add parameter to allow chosing controller frames
- Contributors: Loy van Beek, Tim Clephas, Yuri Steinbuch
0.1.0 (2017-10-16)
- Added backwards driving compatibility to the controller
- Fixed feedforward issue and some improvements in the perf_logger
- Added performance logger wrt to future lifetime tests
- Added general launch file in which desired trajectory can be set. Added dynamic reconfigure for the global_planner to change trajectories online easily
- Bugfixes and dynamic reconfigure of local planner
- Added feedforward actions, improved overall performance, bug fixes
- Contributors: Michiel Francke, Tim Clephas, Yuri Steinbuch
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- test/interpolator/test_path_interpolator_action.launch
- test/interpolator/test_path_interpolator_topic.launch
- test/interpolator/test_path_interpolator_topic_empty_frame_ids.launch
- test/tracking_pid/test_tracking_pid_cpp.launch
-
- map [default: $(find tracking_pid)/maps/grid.yaml]
- target_x_vel [default: 0.4]
- target_x_acc [default: 0.4]
- target_yaw_vel [default: 0.7]
- target_yaw_acc [default: 0.5]
- robot_radius [default: 0.3]
- tool_radius [default: 0.2]
Services
Plugins
Recent questions tagged tracking_pid at Robotics Stack Exchange
![]() |
tracking_pid package from tracking_pid repotracking_pid |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.2.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | PID controller following a moving carrot |
Checkout URI | https://github.com/nobleo/tracking_pid.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Cesar Lopez
Authors
- Michiel Francke
- Cesar Lopez
Tracking_pid
Overview
Tracking PID offers a tuneable PID control loop to accurately follow a trajectory. An interpolator moves a goal over a
nav_msgs/Path
with a tuneable velocity, and a separate node tracks the given point.
One of the tracking options uses a carrot of length l in front of the robot to determine the velocity commands based on the lateral and longitudinal error between current Global Point (GP) and the Control point (CP):
If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot. In this case a Projected Global Point (PGP) is computed as well which is tracked by the CP. In this mode, the yaw error can also be used as control input.
The PID contains three loops: Longitudinal, lateral and angular loops.
Keywords: tracking, pid, local_planner, trajectory
License
Apache 2.0
Author: Michiel Franke, Cesar Lopez
Maintainer: Cesar Lopez, cesar.lopez@nobleo.nl.
Affiliation: Nobleo Projects
The tracking_pid package has been tested under [ROS] Melodic and Ubuntu 18.04.
Installation
Building from Source
Dependencies
- Robot Operating System (ROS) (middleware for robotics),
Building
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/nobleo/tracking_pid.git
cd ../
catkin_make
Unit Tests
All tests can be run using:
catkin build tracking_pid --catkin-make-args run_tests
test_controller
Unit test that checks basic tracking functionality of the controller alone
test_interpolator
Unit test that checks interpolation between two poses
test_tracking_pid.test
Ros system test that checks that interpolator + controller drives a robot to track a given path
Usage
Run the main node:
roslaunch tracking_pid test_tracking_pid.test rviz:=true
Or run the tracking node together with a Coverage Path Planner
roslaunch tracking_pid test_tracking_pid_cpp.launch
Both of these depend on:
mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher
tracking_pid test_tracking_pid_local_planner_cpp.launch depends on:
full_coverage_path_planner for CPP global planner
Configuring in RQT
Tracking_pid parameters are all available through (rqt_)dynamic_reconfigure. The main parameters are:
-
l
(float, default:0.5
); Following distance from robot’s rotational point to trajectory. Set negative to track backwards.
Proportional, Integral and Derivative actions for the three loops: Longitudinal, lateral and angular loops.
-
Kp_(loop_name)
(float); Proportional action gain for loop ‘loop_name’ -
Ki_(loop_name)
(float); Integral action gain for loop ‘loop_name’ -
Kd_(loop_name)
(float); Derivative action gain for loop ‘loop_name’
File truncated at 100 lines see the full file
Changelog for package tracking_pid
Forthcoming
1.0.0 (2019-04-19)
- Add Apache 2.0 as license as per ROSIN
- Add backwards compatibility to ROS-Kinetic by overloading planner initialize function.
- Add ~loop param to make interpolator loop
- Deal with 0.0 velocity in Python path_interpolator
- Ported path_interpolator.py/PathInterpolator itself to path_interpolator.cpp and integrating it
- Re-format code according to ROS standard (https://github.com/davetcoleman/roscpp_code_format)
- Contributors: Alaa Alassi, Ferry Schoenmakers, Jasper Verhoeven, Loy van Beek, Mukunda Bharatheesha, Tim Clephas
0.6.4 (2019-01-03)
- Drive backwards when control point is behind robot (negative)
- Deal with paths that have duplicate poses
- Contributors: Loy van Beek, Tim Clephas
0.6.3 (2018-08-24)
- Added dynamic reconfigure parameter for velocity
- Add options for different start-time than current time to allow for faster resuming after paused state
- Do not re-initialise interpolator on every pause callback but only when paused
- Contributors: Tim Clephas
0.6.2 (2018-07-19)
- Publish when the path is done tracking
- The functionality of the Interpolator would also be suitable for an ActionServer, called with a path
- Add node to interpolate nav_msgs/Path and send that to the tracking_pid node
- Added interpolation between data points to allow for paths with data points further apart in time and space
- Add parameter to allow chosing controller frames
- Contributors: Loy van Beek, Tim Clephas, Yuri Steinbuch
0.1.0 (2017-10-16)
- Added backwards driving compatibility to the controller
- Fixed feedforward issue and some improvements in the perf_logger
- Added performance logger wrt to future lifetime tests
- Added general launch file in which desired trajectory can be set. Added dynamic reconfigure for the global_planner to change trajectories online easily
- Bugfixes and dynamic reconfigure of local planner
- Added feedforward actions, improved overall performance, bug fixes
- Contributors: Michiel Francke, Tim Clephas, Yuri Steinbuch
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- test/interpolator/test_path_interpolator_action.launch
- test/interpolator/test_path_interpolator_topic.launch
- test/interpolator/test_path_interpolator_topic_empty_frame_ids.launch
- test/tracking_pid/test_tracking_pid_cpp.launch
-
- map [default: $(find tracking_pid)/maps/grid.yaml]
- target_x_vel [default: 0.4]
- target_x_acc [default: 0.4]
- target_yaw_vel [default: 0.7]
- target_yaw_acc [default: 0.5]
- robot_radius [default: 0.3]
- tool_radius [default: 0.2]
Services
Plugins
Recent questions tagged tracking_pid at Robotics Stack Exchange
![]() |
tracking_pid package from tracking_pid repotracking_pid |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.2.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | PID controller following a moving carrot |
Checkout URI | https://github.com/nobleo/tracking_pid.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Cesar Lopez
Authors
- Michiel Francke
- Cesar Lopez
Tracking_pid
Overview
Tracking PID offers a tuneable PID control loop to accurately follow a trajectory. An interpolator moves a goal over a
nav_msgs/Path
with a tuneable velocity, and a separate node tracks the given point.
One of the tracking options uses a carrot of length l in front of the robot to determine the velocity commands based on the lateral and longitudinal error between current Global Point (GP) and the Control point (CP):
If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot. In this case a Projected Global Point (PGP) is computed as well which is tracked by the CP. In this mode, the yaw error can also be used as control input.
The PID contains three loops: Longitudinal, lateral and angular loops.
Keywords: tracking, pid, local_planner, trajectory
License
Apache 2.0
Author: Michiel Franke, Cesar Lopez
Maintainer: Cesar Lopez, cesar.lopez@nobleo.nl.
Affiliation: Nobleo Projects
The tracking_pid package has been tested under [ROS] Melodic and Ubuntu 18.04.
Installation
Building from Source
Dependencies
- Robot Operating System (ROS) (middleware for robotics),
Building
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/nobleo/tracking_pid.git
cd ../
catkin_make
Unit Tests
All tests can be run using:
catkin build tracking_pid --catkin-make-args run_tests
test_controller
Unit test that checks basic tracking functionality of the controller alone
test_interpolator
Unit test that checks interpolation between two poses
test_tracking_pid.test
Ros system test that checks that interpolator + controller drives a robot to track a given path
Usage
Run the main node:
roslaunch tracking_pid test_tracking_pid.test rviz:=true
Or run the tracking node together with a Coverage Path Planner
roslaunch tracking_pid test_tracking_pid_cpp.launch
Both of these depend on:
mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher
tracking_pid test_tracking_pid_local_planner_cpp.launch depends on:
full_coverage_path_planner for CPP global planner
Configuring in RQT
Tracking_pid parameters are all available through (rqt_)dynamic_reconfigure. The main parameters are:
-
l
(float, default:0.5
); Following distance from robot’s rotational point to trajectory. Set negative to track backwards.
Proportional, Integral and Derivative actions for the three loops: Longitudinal, lateral and angular loops.
-
Kp_(loop_name)
(float); Proportional action gain for loop ‘loop_name’ -
Ki_(loop_name)
(float); Integral action gain for loop ‘loop_name’ -
Kd_(loop_name)
(float); Derivative action gain for loop ‘loop_name’
File truncated at 100 lines see the full file
Changelog for package tracking_pid
Forthcoming
1.0.0 (2019-04-19)
- Add Apache 2.0 as license as per ROSIN
- Add backwards compatibility to ROS-Kinetic by overloading planner initialize function.
- Add ~loop param to make interpolator loop
- Deal with 0.0 velocity in Python path_interpolator
- Ported path_interpolator.py/PathInterpolator itself to path_interpolator.cpp and integrating it
- Re-format code according to ROS standard (https://github.com/davetcoleman/roscpp_code_format)
- Contributors: Alaa Alassi, Ferry Schoenmakers, Jasper Verhoeven, Loy van Beek, Mukunda Bharatheesha, Tim Clephas
0.6.4 (2019-01-03)
- Drive backwards when control point is behind robot (negative)
- Deal with paths that have duplicate poses
- Contributors: Loy van Beek, Tim Clephas
0.6.3 (2018-08-24)
- Added dynamic reconfigure parameter for velocity
- Add options for different start-time than current time to allow for faster resuming after paused state
- Do not re-initialise interpolator on every pause callback but only when paused
- Contributors: Tim Clephas
0.6.2 (2018-07-19)
- Publish when the path is done tracking
- The functionality of the Interpolator would also be suitable for an ActionServer, called with a path
- Add node to interpolate nav_msgs/Path and send that to the tracking_pid node
- Added interpolation between data points to allow for paths with data points further apart in time and space
- Add parameter to allow chosing controller frames
- Contributors: Loy van Beek, Tim Clephas, Yuri Steinbuch
0.1.0 (2017-10-16)
- Added backwards driving compatibility to the controller
- Fixed feedforward issue and some improvements in the perf_logger
- Added performance logger wrt to future lifetime tests
- Added general launch file in which desired trajectory can be set. Added dynamic reconfigure for the global_planner to change trajectories online easily
- Bugfixes and dynamic reconfigure of local planner
- Added feedforward actions, improved overall performance, bug fixes
- Contributors: Michiel Francke, Tim Clephas, Yuri Steinbuch
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- test/interpolator/test_path_interpolator_action.launch
- test/interpolator/test_path_interpolator_topic.launch
- test/interpolator/test_path_interpolator_topic_empty_frame_ids.launch
- test/tracking_pid/test_tracking_pid_cpp.launch
-
- map [default: $(find tracking_pid)/maps/grid.yaml]
- target_x_vel [default: 0.4]
- target_x_acc [default: 0.4]
- target_yaw_vel [default: 0.7]
- target_yaw_acc [default: 0.5]
- robot_radius [default: 0.3]
- tool_radius [default: 0.2]
Services
Plugins
Recent questions tagged tracking_pid at Robotics Stack Exchange
![]() |
tracking_pid package from tracking_pid repotracking_pid |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.2.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | PID controller following a moving carrot |
Checkout URI | https://github.com/nobleo/tracking_pid.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Cesar Lopez
Authors
- Michiel Francke
- Cesar Lopez
Tracking_pid
Overview
Tracking PID offers a tuneable PID control loop to accurately follow a trajectory. An interpolator moves a goal over a
nav_msgs/Path
with a tuneable velocity, and a separate node tracks the given point.
One of the tracking options uses a carrot of length l in front of the robot to determine the velocity commands based on the lateral and longitudinal error between current Global Point (GP) and the Control point (CP):
If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot. In this case a Projected Global Point (PGP) is computed as well which is tracked by the CP. In this mode, the yaw error can also be used as control input.
The PID contains three loops: Longitudinal, lateral and angular loops.
Keywords: tracking, pid, local_planner, trajectory
License
Apache 2.0
Author: Michiel Franke, Cesar Lopez
Maintainer: Cesar Lopez, cesar.lopez@nobleo.nl.
Affiliation: Nobleo Projects
The tracking_pid package has been tested under [ROS] Melodic and Ubuntu 18.04.
Installation
Building from Source
Dependencies
- Robot Operating System (ROS) (middleware for robotics),
Building
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/nobleo/tracking_pid.git
cd ../
catkin_make
Unit Tests
All tests can be run using:
catkin build tracking_pid --catkin-make-args run_tests
test_controller
Unit test that checks basic tracking functionality of the controller alone
test_interpolator
Unit test that checks interpolation between two poses
test_tracking_pid.test
Ros system test that checks that interpolator + controller drives a robot to track a given path
Usage
Run the main node:
roslaunch tracking_pid test_tracking_pid.test rviz:=true
Or run the tracking node together with a Coverage Path Planner
roslaunch tracking_pid test_tracking_pid_cpp.launch
Both of these depend on:
mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher
tracking_pid test_tracking_pid_local_planner_cpp.launch depends on:
full_coverage_path_planner for CPP global planner
Configuring in RQT
Tracking_pid parameters are all available through (rqt_)dynamic_reconfigure. The main parameters are:
-
l
(float, default:0.5
); Following distance from robot’s rotational point to trajectory. Set negative to track backwards.
Proportional, Integral and Derivative actions for the three loops: Longitudinal, lateral and angular loops.
-
Kp_(loop_name)
(float); Proportional action gain for loop ‘loop_name’ -
Ki_(loop_name)
(float); Integral action gain for loop ‘loop_name’ -
Kd_(loop_name)
(float); Derivative action gain for loop ‘loop_name’
File truncated at 100 lines see the full file
Changelog for package tracking_pid
Forthcoming
1.0.0 (2019-04-19)
- Add Apache 2.0 as license as per ROSIN
- Add backwards compatibility to ROS-Kinetic by overloading planner initialize function.
- Add ~loop param to make interpolator loop
- Deal with 0.0 velocity in Python path_interpolator
- Ported path_interpolator.py/PathInterpolator itself to path_interpolator.cpp and integrating it
- Re-format code according to ROS standard (https://github.com/davetcoleman/roscpp_code_format)
- Contributors: Alaa Alassi, Ferry Schoenmakers, Jasper Verhoeven, Loy van Beek, Mukunda Bharatheesha, Tim Clephas
0.6.4 (2019-01-03)
- Drive backwards when control point is behind robot (negative)
- Deal with paths that have duplicate poses
- Contributors: Loy van Beek, Tim Clephas
0.6.3 (2018-08-24)
- Added dynamic reconfigure parameter for velocity
- Add options for different start-time than current time to allow for faster resuming after paused state
- Do not re-initialise interpolator on every pause callback but only when paused
- Contributors: Tim Clephas
0.6.2 (2018-07-19)
- Publish when the path is done tracking
- The functionality of the Interpolator would also be suitable for an ActionServer, called with a path
- Add node to interpolate nav_msgs/Path and send that to the tracking_pid node
- Added interpolation between data points to allow for paths with data points further apart in time and space
- Add parameter to allow chosing controller frames
- Contributors: Loy van Beek, Tim Clephas, Yuri Steinbuch
0.1.0 (2017-10-16)
- Added backwards driving compatibility to the controller
- Fixed feedforward issue and some improvements in the perf_logger
- Added performance logger wrt to future lifetime tests
- Added general launch file in which desired trajectory can be set. Added dynamic reconfigure for the global_planner to change trajectories online easily
- Bugfixes and dynamic reconfigure of local planner
- Added feedforward actions, improved overall performance, bug fixes
- Contributors: Michiel Francke, Tim Clephas, Yuri Steinbuch
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- test/interpolator/test_path_interpolator_action.launch
- test/interpolator/test_path_interpolator_topic.launch
- test/interpolator/test_path_interpolator_topic_empty_frame_ids.launch
- test/tracking_pid/test_tracking_pid_cpp.launch
-
- map [default: $(find tracking_pid)/maps/grid.yaml]
- target_x_vel [default: 0.4]
- target_x_acc [default: 0.4]
- target_yaw_vel [default: 0.7]
- target_yaw_acc [default: 0.5]
- robot_radius [default: 0.3]
- tool_radius [default: 0.2]
Services
Plugins
Recent questions tagged tracking_pid at Robotics Stack Exchange
![]() |
tracking_pid package from tracking_pid repotracking_pid |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.2.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | PID controller following a moving carrot |
Checkout URI | https://github.com/nobleo/tracking_pid.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Cesar Lopez
Authors
- Michiel Francke
- Cesar Lopez
Tracking_pid
Overview
Tracking PID offers a tuneable PID control loop to accurately follow a trajectory. An interpolator moves a goal over a
nav_msgs/Path
with a tuneable velocity, and a separate node tracks the given point.
One of the tracking options uses a carrot of length l in front of the robot to determine the velocity commands based on the lateral and longitudinal error between current Global Point (GP) and the Control point (CP):
If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot. In this case a Projected Global Point (PGP) is computed as well which is tracked by the CP. In this mode, the yaw error can also be used as control input.
The PID contains three loops: Longitudinal, lateral and angular loops.
Keywords: tracking, pid, local_planner, trajectory
License
Apache 2.0
Author: Michiel Franke, Cesar Lopez
Maintainer: Cesar Lopez, cesar.lopez@nobleo.nl.
Affiliation: Nobleo Projects
The tracking_pid package has been tested under [ROS] Melodic and Ubuntu 18.04.
Installation
Building from Source
Dependencies
- Robot Operating System (ROS) (middleware for robotics),
Building
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/nobleo/tracking_pid.git
cd ../
catkin_make
Unit Tests
All tests can be run using:
catkin build tracking_pid --catkin-make-args run_tests
test_controller
Unit test that checks basic tracking functionality of the controller alone
test_interpolator
Unit test that checks interpolation between two poses
test_tracking_pid.test
Ros system test that checks that interpolator + controller drives a robot to track a given path
Usage
Run the main node:
roslaunch tracking_pid test_tracking_pid.test rviz:=true
Or run the tracking node together with a Coverage Path Planner
roslaunch tracking_pid test_tracking_pid_cpp.launch
Both of these depend on:
mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher
tracking_pid test_tracking_pid_local_planner_cpp.launch depends on:
full_coverage_path_planner for CPP global planner
Configuring in RQT
Tracking_pid parameters are all available through (rqt_)dynamic_reconfigure. The main parameters are:
-
l
(float, default:0.5
); Following distance from robot’s rotational point to trajectory. Set negative to track backwards.
Proportional, Integral and Derivative actions for the three loops: Longitudinal, lateral and angular loops.
-
Kp_(loop_name)
(float); Proportional action gain for loop ‘loop_name’ -
Ki_(loop_name)
(float); Integral action gain for loop ‘loop_name’ -
Kd_(loop_name)
(float); Derivative action gain for loop ‘loop_name’
File truncated at 100 lines see the full file
Changelog for package tracking_pid
Forthcoming
1.0.0 (2019-04-19)
- Add Apache 2.0 as license as per ROSIN
- Add backwards compatibility to ROS-Kinetic by overloading planner initialize function.
- Add ~loop param to make interpolator loop
- Deal with 0.0 velocity in Python path_interpolator
- Ported path_interpolator.py/PathInterpolator itself to path_interpolator.cpp and integrating it
- Re-format code according to ROS standard (https://github.com/davetcoleman/roscpp_code_format)
- Contributors: Alaa Alassi, Ferry Schoenmakers, Jasper Verhoeven, Loy van Beek, Mukunda Bharatheesha, Tim Clephas
0.6.4 (2019-01-03)
- Drive backwards when control point is behind robot (negative)
- Deal with paths that have duplicate poses
- Contributors: Loy van Beek, Tim Clephas
0.6.3 (2018-08-24)
- Added dynamic reconfigure parameter for velocity
- Add options for different start-time than current time to allow for faster resuming after paused state
- Do not re-initialise interpolator on every pause callback but only when paused
- Contributors: Tim Clephas
0.6.2 (2018-07-19)
- Publish when the path is done tracking
- The functionality of the Interpolator would also be suitable for an ActionServer, called with a path
- Add node to interpolate nav_msgs/Path and send that to the tracking_pid node
- Added interpolation between data points to allow for paths with data points further apart in time and space
- Add parameter to allow chosing controller frames
- Contributors: Loy van Beek, Tim Clephas, Yuri Steinbuch
0.1.0 (2017-10-16)
- Added backwards driving compatibility to the controller
- Fixed feedforward issue and some improvements in the perf_logger
- Added performance logger wrt to future lifetime tests
- Added general launch file in which desired trajectory can be set. Added dynamic reconfigure for the global_planner to change trajectories online easily
- Bugfixes and dynamic reconfigure of local planner
- Added feedforward actions, improved overall performance, bug fixes
- Contributors: Michiel Francke, Tim Clephas, Yuri Steinbuch
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- test/interpolator/test_path_interpolator_action.launch
- test/interpolator/test_path_interpolator_topic.launch
- test/interpolator/test_path_interpolator_topic_empty_frame_ids.launch
- test/tracking_pid/test_tracking_pid_cpp.launch
-
- map [default: $(find tracking_pid)/maps/grid.yaml]
- target_x_vel [default: 0.4]
- target_x_acc [default: 0.4]
- target_yaw_vel [default: 0.7]
- target_yaw_acc [default: 0.5]
- robot_radius [default: 0.3]
- tool_radius [default: 0.2]
Services
Plugins
Recent questions tagged tracking_pid at Robotics Stack Exchange
![]() |
tracking_pid package from tracking_pid repotracking_pid |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.2.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | PID controller following a moving carrot |
Checkout URI | https://github.com/nobleo/tracking_pid.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Cesar Lopez
Authors
- Michiel Francke
- Cesar Lopez
Tracking_pid
Overview
Tracking PID offers a tuneable PID control loop to accurately follow a trajectory. An interpolator moves a goal over a
nav_msgs/Path
with a tuneable velocity, and a separate node tracks the given point.
One of the tracking options uses a carrot of length l in front of the robot to determine the velocity commands based on the lateral and longitudinal error between current Global Point (GP) and the Control point (CP):
If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot. In this case a Projected Global Point (PGP) is computed as well which is tracked by the CP. In this mode, the yaw error can also be used as control input.
The PID contains three loops: Longitudinal, lateral and angular loops.
Keywords: tracking, pid, local_planner, trajectory
License
Apache 2.0
Author: Michiel Franke, Cesar Lopez
Maintainer: Cesar Lopez, cesar.lopez@nobleo.nl.
Affiliation: Nobleo Projects
The tracking_pid package has been tested under [ROS] Melodic and Ubuntu 18.04.
Installation
Building from Source
Dependencies
- Robot Operating System (ROS) (middleware for robotics),
Building
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/nobleo/tracking_pid.git
cd ../
catkin_make
Unit Tests
All tests can be run using:
catkin build tracking_pid --catkin-make-args run_tests
test_controller
Unit test that checks basic tracking functionality of the controller alone
test_interpolator
Unit test that checks interpolation between two poses
test_tracking_pid.test
Ros system test that checks that interpolator + controller drives a robot to track a given path
Usage
Run the main node:
roslaunch tracking_pid test_tracking_pid.test rviz:=true
Or run the tracking node together with a Coverage Path Planner
roslaunch tracking_pid test_tracking_pid_cpp.launch
Both of these depend on:
mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher
tracking_pid test_tracking_pid_local_planner_cpp.launch depends on:
full_coverage_path_planner for CPP global planner
Configuring in RQT
Tracking_pid parameters are all available through (rqt_)dynamic_reconfigure. The main parameters are:
-
l
(float, default:0.5
); Following distance from robot’s rotational point to trajectory. Set negative to track backwards.
Proportional, Integral and Derivative actions for the three loops: Longitudinal, lateral and angular loops.
-
Kp_(loop_name)
(float); Proportional action gain for loop ‘loop_name’ -
Ki_(loop_name)
(float); Integral action gain for loop ‘loop_name’ -
Kd_(loop_name)
(float); Derivative action gain for loop ‘loop_name’
File truncated at 100 lines see the full file
Changelog for package tracking_pid
Forthcoming
1.0.0 (2019-04-19)
- Add Apache 2.0 as license as per ROSIN
- Add backwards compatibility to ROS-Kinetic by overloading planner initialize function.
- Add ~loop param to make interpolator loop
- Deal with 0.0 velocity in Python path_interpolator
- Ported path_interpolator.py/PathInterpolator itself to path_interpolator.cpp and integrating it
- Re-format code according to ROS standard (https://github.com/davetcoleman/roscpp_code_format)
- Contributors: Alaa Alassi, Ferry Schoenmakers, Jasper Verhoeven, Loy van Beek, Mukunda Bharatheesha, Tim Clephas
0.6.4 (2019-01-03)
- Drive backwards when control point is behind robot (negative)
- Deal with paths that have duplicate poses
- Contributors: Loy van Beek, Tim Clephas
0.6.3 (2018-08-24)
- Added dynamic reconfigure parameter for velocity
- Add options for different start-time than current time to allow for faster resuming after paused state
- Do not re-initialise interpolator on every pause callback but only when paused
- Contributors: Tim Clephas
0.6.2 (2018-07-19)
- Publish when the path is done tracking
- The functionality of the Interpolator would also be suitable for an ActionServer, called with a path
- Add node to interpolate nav_msgs/Path and send that to the tracking_pid node
- Added interpolation between data points to allow for paths with data points further apart in time and space
- Add parameter to allow chosing controller frames
- Contributors: Loy van Beek, Tim Clephas, Yuri Steinbuch
0.1.0 (2017-10-16)
- Added backwards driving compatibility to the controller
- Fixed feedforward issue and some improvements in the perf_logger
- Added performance logger wrt to future lifetime tests
- Added general launch file in which desired trajectory can be set. Added dynamic reconfigure for the global_planner to change trajectories online easily
- Bugfixes and dynamic reconfigure of local planner
- Added feedforward actions, improved overall performance, bug fixes
- Contributors: Michiel Francke, Tim Clephas, Yuri Steinbuch
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- test/interpolator/test_path_interpolator_action.launch
- test/interpolator/test_path_interpolator_topic.launch
- test/interpolator/test_path_interpolator_topic_empty_frame_ids.launch
- test/tracking_pid/test_tracking_pid_cpp.launch
-
- map [default: $(find tracking_pid)/maps/grid.yaml]
- target_x_vel [default: 0.4]
- target_x_acc [default: 0.4]
- target_yaw_vel [default: 0.7]
- target_yaw_acc [default: 0.5]
- robot_radius [default: 0.3]
- tool_radius [default: 0.2]
Services
Plugins
Recent questions tagged tracking_pid at Robotics Stack Exchange
![]() |
tracking_pid package from tracking_pid repotracking_pid |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.2.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | PID controller following a moving carrot |
Checkout URI | https://github.com/nobleo/tracking_pid.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Cesar Lopez
Authors
- Michiel Francke
- Cesar Lopez
Tracking_pid
Overview
Tracking PID offers a tuneable PID control loop to accurately follow a trajectory. An interpolator moves a goal over a
nav_msgs/Path
with a tuneable velocity, and a separate node tracks the given point.
One of the tracking options uses a carrot of length l in front of the robot to determine the velocity commands based on the lateral and longitudinal error between current Global Point (GP) and the Control point (CP):
If a smooth path is provided, the controller has the option to track the path with the base_link directly instead of lagging behind a carrot. In this case a Projected Global Point (PGP) is computed as well which is tracked by the CP. In this mode, the yaw error can also be used as control input.
The PID contains three loops: Longitudinal, lateral and angular loops.
Keywords: tracking, pid, local_planner, trajectory
License
Apache 2.0
Author: Michiel Franke, Cesar Lopez
Maintainer: Cesar Lopez, cesar.lopez@nobleo.nl.
Affiliation: Nobleo Projects
The tracking_pid package has been tested under [ROS] Melodic and Ubuntu 18.04.
Installation
Building from Source
Dependencies
- Robot Operating System (ROS) (middleware for robotics),
Building
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using
cd catkin_workspace/src
git clone https://github.com/nobleo/tracking_pid.git
cd ../
catkin_make
Unit Tests
All tests can be run using:
catkin build tracking_pid --catkin-make-args run_tests
test_controller
Unit test that checks basic tracking functionality of the controller alone
test_interpolator
Unit test that checks interpolation between two poses
test_tracking_pid.test
Ros system test that checks that interpolator + controller drives a robot to track a given path
Usage
Run the main node:
roslaunch tracking_pid test_tracking_pid.test rviz:=true
Or run the tracking node together with a Coverage Path Planner
roslaunch tracking_pid test_tracking_pid_cpp.launch
Both of these depend on:
mobile_robot_simulator that integrates /cmd_vel into a /base_link TF-frame and an odometry publisher
tracking_pid test_tracking_pid_local_planner_cpp.launch depends on:
full_coverage_path_planner for CPP global planner
Configuring in RQT
Tracking_pid parameters are all available through (rqt_)dynamic_reconfigure. The main parameters are:
-
l
(float, default:0.5
); Following distance from robot’s rotational point to trajectory. Set negative to track backwards.
Proportional, Integral and Derivative actions for the three loops: Longitudinal, lateral and angular loops.
-
Kp_(loop_name)
(float); Proportional action gain for loop ‘loop_name’ -
Ki_(loop_name)
(float); Integral action gain for loop ‘loop_name’ -
Kd_(loop_name)
(float); Derivative action gain for loop ‘loop_name’
File truncated at 100 lines see the full file
Changelog for package tracking_pid
Forthcoming
1.0.0 (2019-04-19)
- Add Apache 2.0 as license as per ROSIN
- Add backwards compatibility to ROS-Kinetic by overloading planner initialize function.
- Add ~loop param to make interpolator loop
- Deal with 0.0 velocity in Python path_interpolator
- Ported path_interpolator.py/PathInterpolator itself to path_interpolator.cpp and integrating it
- Re-format code according to ROS standard (https://github.com/davetcoleman/roscpp_code_format)
- Contributors: Alaa Alassi, Ferry Schoenmakers, Jasper Verhoeven, Loy van Beek, Mukunda Bharatheesha, Tim Clephas
0.6.4 (2019-01-03)
- Drive backwards when control point is behind robot (negative)
- Deal with paths that have duplicate poses
- Contributors: Loy van Beek, Tim Clephas
0.6.3 (2018-08-24)
- Added dynamic reconfigure parameter for velocity
- Add options for different start-time than current time to allow for faster resuming after paused state
- Do not re-initialise interpolator on every pause callback but only when paused
- Contributors: Tim Clephas
0.6.2 (2018-07-19)
- Publish when the path is done tracking
- The functionality of the Interpolator would also be suitable for an ActionServer, called with a path
- Add node to interpolate nav_msgs/Path and send that to the tracking_pid node
- Added interpolation between data points to allow for paths with data points further apart in time and space
- Add parameter to allow chosing controller frames
- Contributors: Loy van Beek, Tim Clephas, Yuri Steinbuch
0.1.0 (2017-10-16)
- Added backwards driving compatibility to the controller
- Fixed feedforward issue and some improvements in the perf_logger
- Added performance logger wrt to future lifetime tests
- Added general launch file in which desired trajectory can be set. Added dynamic reconfigure for the global_planner to change trajectories online easily
- Bugfixes and dynamic reconfigure of local planner
- Added feedforward actions, improved overall performance, bug fixes
- Contributors: Michiel Francke, Tim Clephas, Yuri Steinbuch
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- test/interpolator/test_path_interpolator_action.launch
- test/interpolator/test_path_interpolator_topic.launch
- test/interpolator/test_path_interpolator_topic_empty_frame_ids.launch
- test/tracking_pid/test_tracking_pid_cpp.launch
-
- map [default: $(find tracking_pid)/maps/grid.yaml]
- target_x_vel [default: 0.4]
- target_x_acc [default: 0.4]
- target_yaw_vel [default: 0.7]
- target_yaw_acc [default: 0.5]
- robot_radius [default: 0.3]
- tool_radius [default: 0.2]