# How to Path correction in ROS1

When controlling robot movement using angular velocity and linear velocity, deviations from the expected path often occur due to external factors，for example To make a wheeled robot move in a circular path, I provide it with angular velocity and linear velocity. However, over time, the path tends to deviate. Therefore, I would like to inquire if there are packages available in ROS or other keywords to reference. Currently, I intend to subscribe to the 'odom' topic to monitor the robot's status, and if the deviation is too large, I plan to perform corrections. I wonder if this approach is feasible. I would appreciate any advice!

However, over time, the path tends to deviate.

This is how open loop systems behave and the drift happens not only due to external factors but could be due to internal factors.

if the deviation is too large, I plan to perform corrections

This is where feedback and a close-loop system comes into picture. To know the deviation you will need to know the true state (ground truth) of the robot.

I wonder if this approach is feasible

This approach is feasible given that you have a means of finding out true state/ ground truth to calculate the deviation.

## Shortcut

In ROS, you get the ground truth via a topic /gazebo/model_states

Finding the true position of the robot is known as the localization problem in robotics and it involves sensors. There is a multitude of approaches to solve the localization problem and many different types of sensors are involved. If you are interested, a good starting point would be Probabilistic Robotics S. Thrun

• thank you for your reply! ! So to sum up, first of all, the actual position of the robot must be positioned in order to effectively correct the path. Commented Aug 19, 2023 at 13:01
• Yes, that's correct.
– vyi
Commented Aug 19, 2023 at 16:26
• Please, feel free to accept the answer if it helped.
– vyi
Commented Aug 23, 2023 at 7:24