Repo symbol

tracking_pid repository

Repo symbol

tracking_pid repository

Repo symbol

tracking_pid repository

Repo symbol

tracking_pid repository

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 (-)

Packages

Name Version
tracking_pid 2.2.0

README

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):

Tracking carrot

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.

Tracking Base Link

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

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

Repo symbol

tracking_pid repository

Repo symbol

tracking_pid repository

Repo symbol

tracking_pid repository

Repo symbol

tracking_pid repository