When using Robotic Invention System, or NXT-G for programming a robot, line following is usually done like this:
If the light is more than 50, turn left, else turn right.
This results in a slow scanning motion. It works fine for a first time, but soon, you’ll want to go faster.
I used to think that you just needed 2 light sensors, one on both sides of the line, so that you could go straight if both where white, and turn towards the one that becomes back. There is a better way.
When the light sensor is on the edge of the line, does it see black or white? In fact it sees a bit of both, so you get something in between. The trick is to think of the line as a gradient, like so.
If you put the NXT in the gray area, you can have a proportional steering function. Light gray means just a bit left, while dark gray means just a bit right.
Proportional, you say? Yes, we can just apply good old PID again!
Did you know that even the motors of the NXT use PID themselves to provide accurate control?