Skip to content
ThinkNMake — Don't just think. Make it.
Back to Robotics Builds
Aarav Karki

Aarav KarkiMember

@aarav_builds

Three weeks of tuning and my line follower finally does the full track without leaving it once. The trick was dropping the base speed before the sharp turns instead of trying to fix it with a bigger correction. #robotics #linefollower #arduino
arduino
// PID line following — the values that finally worked for me
const float Kp = 0.08, Ki = 0.0002, Kd = 0.9;
int baseSpeed = 140;          // was 200 — too fast for the hairpin

void loop() {
  int error = readLinePosition() - 3500;   // 0..7000, centre = 3500
  integral += error;
  int correction = Kp * error + Ki * integral + Kd * (error - lastError);
  lastError = error;

  // Slow down when we are far off the line; speed up on the straights.
  int speed = baseSpeed - min(abs(error) / 40, 60);
  setMotors(speed + correction, speed - correction);
}

Log in to join the conversation.

Loading comments…