Titanium Robotics

Line following is the "Hello World" of mobile robotics. In this guide, we'll build a PID-controlled robot using an Arduino and a generic IR array.

Introduction

Precision navigation is critical in industrial AGVs. A simple bang-bang controller causes oscillation. To fix this, we use PID (Proportional-Integral-Derivative) control.

Hardware Required

  • Arduino Uno or Nano
  • L298N Motor Driver
  • 5-Channel IR Sensor Array (TCRT5000)
  • 2x DC Gear Motors + Chassis

The Code

Here is a snippet of the PID calculation in C++:


// PID Constants
float Kp = 12.0; 
float Kd = 8.5;
float Ki = 0.05;

void loop() {
    int error = readSensors();
    
    // Proportional
    int P = error;
    
    // Integral
    static int I = 0;
    I = I + error;
    
    // Derivative
    static int lastError = 0;
    int D = error - lastError;
    lastError = error;
    
    // Total Correction
    int correction = (Kp * P) + (Ki * I) + (Kd * D);
    
    motorControl(baseSpeed + correction, baseSpeed - correction);
}
                

Conclusion

By tuning Kp, Ki, and Kd, your robot will follow the line smoothly even at high speeds. Stay tuned for our next article on Obstacle Avoidance using Ultrasonics.


Related Articles

PID Tuning Guide
Read More
Motor Driver Basics
Read More