Let us begin with one key observation: cars are cool. From consumer transportation to manufacturing to childrens’ toys, vehicles in their many forms are some of today’s most influential machines. Autonomous vehicles are already in use in many manufacturing facilities, and they are also sold as toys. Perhaps one day, the world’s highways will be filled with cars requiring no user intervention. While we are not there yet, and may never get there, an autonomous vehicle can serve as a very interesting and practical design exercise.
Our vehicle uses optical sensors to follow a line on the floor. Some autonomous vehicles used in manufacturing use a similar concept, following magnetic strips embedded in the factory floor. The versatility of an optical design should be readily apparent, since re-routing the vehicle requires no more than re-painting a line.
Our vehicle uses reflective phototransistors to follow a line on the ground beneath it. The state of the phototransistors is captured, and the car is controlled accordingly by an Atmel 8515 microcontroller. If the car detects a small deviation from the line, it will correct its path by steering in the appropriate direction. If it detects a large deviation, it will take more “drastic” measures to correct its path: it will back up while steering itself back towards the line until it re-centers itself. It then continues on its path.
The original objective for this project was to optimize the car for the speed with which it navigated the line. To do this, we would have increased the speed when little compensation was needed, and decreased the speed as more was needed. This optimization, however, did not require much more effort on our part than the heuristic outlined above. This is because the speed is mechanically regulated by the gradual acceleration of the car in balance with the direction reversal for large corrections.
The hardware for this project was the bulk of the work. Because we were making a moving vehicle, we decided that it would be best not to have any of the circuitry on breadboards. Breadboards are also expensive, so we probably would have had to disassemble the car after its demonstration. We therefore chose to wire-wrap all of the circuitry. This required a fair amount of labor, but it was well worth it in the end.
The car we selected is fairly simple to operate. It has a rear wheel drive, complete with a differential, which is powered by a DC motor. The steering is not controlled by a servo, but rather by a solenoid. This results in an “all or nothing” control over the steering, but we did not find this to be overly constraining. We built two H-bridges using TIP-31, TIP3055, and TIP-42 BJTs to deliver power to the steering and the drive motor. Because of the current requirements (the drive motor and steering solenoid could draw several amps), we used 20-gauge wire for the high-current areas of the H-bridges rather than the 30-gauge wire used for the rest of the circuit. Schematics of the H-bridges and supporting CMOS logic appear below.
For more detail: Autonomous Car