Our team worked together to create an autonomous driving RC car. We were able to achieve lane keeping with the help of the code available from here. In addition to simple lane keeping on a track, our car simulated stopping at two different stop signs.
The track that our RC car followed had two different stop signs (red paper). In order to detect these stop signs, we created a mask that picked up where any pixels that satisfied the threshold of the color red within the frame of a video. Any time enough pixels in the frame were qualified as red, we knew we were seeing a stop sign and stopped the car. The car then continued on down the track after 2 seconds of resting and then didn't check for another stop sign for 50 frames of video to ensure it didn't count the same stop sign twice. Since the track ended with a second stop sign, we also kept track of the number of stop signs, and made the vehicle rest permanently at the second stop sign.
In order to get good performance we had to areas to tune: the image processing resolution and the PID parameters used to control steering. The image processing resolution was chosen such that both the update frequency was usable for the PID control and that the lane markers could be detected with reasonable accuracy. The PID tuning was done by setting KI to zero because it didn't handle the low update rate well. KP was tuned by testing the car on a straight section and making sure that is didn't oversteer and lose the lane. KD was tuned by testing the car on a curve and increasing it if the car turned too sharply and increasing it if it didn't steer sharp enough.
A picture of the car with hardware attached