CS6963: Algorithmic Foundations of Robotics, 2025 Fall, University of Utah
- Name: Seongil Heo
- UID: u1527760
- Date: November 7th, 2025
When Kp was set to a low value (0.01), the robot reacted slowly to the tracking error.
This made the motion stable, but the path-following accuracy was poor.
So the robot couldn’t reach the destination.
When Kp increased (10), the robot corrected errors more quickly.
However, this caused overshoot and oscillation, making the motion unstable.
Therefore, simply increasing Kp does not guarantee better performance.
It is important to find a proper balance between fast response and stability.
2. Describe the tuning process for your PD controller. Justify your final gains Kp, Kd and include the controller plots for three reference paths on the default sandbox map (pid_circle.png, pid_left.png, pid_wave.png).
The tuning process began with the circle path as the main reference.
Starting with Kd = 0, I gradually increased Kp to find a value that allowed the robot to follow the path as smoothly as possible without oscillation.
Through several trials, the best range was between 0.5 and 0.7.
After this, I gradually increased Kd to reduce overshoot and lateral oscillations that occurred when entering and exiting corners.
Then, I adjusted both parameters by increments of 0.1 to achieve a good balance between responsiveness and stability.
As a result, the final gains Kp = 0.7 and Kd = 0.4 provided the most stable tracking performance.
These gains were validated across three different reference paths.
After confirming that the maximum configurable lookahead distance was 3.9,
I gradually increased the value starting from 0.1.
When the lookahead distance was too small, the vehicle reacted excessively to small changes in the path, causing large oscillations and unstable motion, making normal driving impossible.
On the other hand, when the distance was too large, the vehicle followed the wave path almost like a straight line, failing to properly track the curved sections.
Through multiple experiments, a lookahead distance of 0.9 produced the most stable and smooth tracking, minimizing both oscillation and path deviation.
Therefore, the final lookahead distance was set to 0.9.
4. Include controller plots on the wave path for cases where the lookahead distance is too small/large.
When the lookahead distance was set to 0.01, the vehicle became very unstable.
Because the reference point was too close, the controller overreacted to small path changes, resulting in sharp steering movements.
At first, the vehicle tried to follow the path, but it repeatedly circled near the starting point and failed to follow the path.
When the lookahead distance was set to 3.9, the motion appeared stable but the path-following accuracy significantly decreased.
The reference point was too far ahead, causing the vehicle to treat the wave path almost like a straight line and fail to track the curved sections properly.
Therefore, a too small lookahead distance causes oscillation and instability, while a too large lookahead distance leads to low accuracy and curve neglect.
5. How does varying the radius of the circle path affect the robustness of the Pure Pursuit controller?
When the radius of the circle path was small (0.5), the curve was very sharp, and the vehicle had trouble following the path smoothly.
The controller made large steering movements, which caused the car to shake and overshoot.
When the radius was large (5), the curve was smooth, and the vehicle followed the path much more stably and consistently.
The steering changes were smaller, and the car stayed close to the reference path.
The Pure Pursuit controller works better on paths with larger radius than smaller radius.
Both K and T were randomly adjusted from small to large values during the tuning process.
When K = 1, the controller assumed only one steering angle, causing the robot to spin in place without following the path.
When K ≥ 2, the robot was initially unstable but eventually succeeded in tracking the path.
When T was too large (over 20), the robot became unstable and oscillated because it predicted too far ahead but reacted too late, resulting in delayed control responses.
In other cases, no significant difference was observed.
When testing around K = 10 and T = 10, considering the robot’s physical size and control frequency, 8 control samples were found to be sufficient.
Therefore, the final parameters were set to K = 8 and T = 10, which provided the smoothest and most stable tracking performance.
The saw path was very difficult to track because the robot’s predicted future trajectories are fan-shaped curved paths.
Since these trajectories are generated based on the robot’s kinematic model, each path is inherently smooth and curved.
Therefore, sharp direction changes are not possible.
I would include a heading or orientation term in the cost function to align the robot’s direction with the path’s direction.
For example, adding a heading error term helps the vehicle maintain its orientation along the path and prevents it from deviating from the desired heading.
This would help address instability in sharp curves.
I would also add a clearance term to maintain a minimum safe distance from obstacles.
Including an obstacle clearance cost would impose an additional penalty when the vehicle comes too close to an obstacle.
All three controllers operated robustly in every case except for the saw path.
As expected, they performed perfectly robust on both the circle and line paths, showing stable and accurate tracking throughout the entire trajectory.
Both the PID and MPC controllers showed a significant drop in path accuracy at higher speeds and failed to complete the full path.
However, the Pure Pursuit controller successfully completed all paths, and except for the saw path, it also achieved high tracking accuracy on the other paths.












