This ROS 2 Python node controls a turtle in the turtlesim
simulator to drive it to a desired position using a PID controller. Currently, only the proportional (P),Integral (I) and Derivative(D) are utilized for both distance and heading error.
- Action server to receive client goal request.
- Goal validation with acceptance and rejection criteria.
- Continuous feedback provided to the client.
- Retrieves the current pose of the turtle.
- Computes the error in distance and heading to the desired position.
- Uses PID controller to compute the required linear and angular velocities.
- Publishes these velocities to command the turtle.
- Action Cient code for user inputting x and y positions.
- ROS 2 (Humble,Foxy, Galactic, or later versions recommended).
turtlesim
package.
-
Ensure you have ROS 2 and
turtlesim
installed. -
Clone this repository:
git clone https://github.com/nivednivu1997/ROS2_turtlesim_PID_demo.git
cd ROS2_turtlesim_PID_demo
- Source your ROS 2 installation:
source /opt/ros/[YOUR_ROS2_DISTRO]/setup.bash
- Build the package:
colcon build --symlink-install
- Source the built package:
source install/setup.bash
- Run the
turtlesim
node:
ros2 run turtlesim turtlesim_node
- In a new terminal, run the action server controller:
ros2 run turtle_demo_controller turt_controller
- In a new terminal, run the action client:
ros2 run turtle_demo_controller client
You can adjust the desired x and y positions by modifying the x and y values in the client.send_goal(x, y) function call within the client script.
PID control is one of the most widely used feedback controllers in the industry. It combines three components:
-
Proportional (P): The proportional term produces an output value that is proportional to the current error value. It determines the reaction based on the present error.
-
Integral (I): The integral term concerns past values of error. If the error has been present for an extended period, it will accumulate (integral of the error), and the controller will respond by increasing (or decreasing) the control action in relation to a sustained error.
-
Derivative (D): The derivative term is a prediction of future error. It provides a control action to counteract the rate of error change.
The weighted sum of these three actions is used to adjust the process via a control element, such as the position of a control valve or the power supply of a heating element.
In the current implementation, the Proportional (P),Integral (I) and Derivative(D) control strategy is applied.
- Convert script to cpp
- Add dynamic reconfiguration to adjust PID constants on-the-fly.
Feel free to fork, open issues, and submit pull requests. Any contributions are welcome!