The lightcar race
Are you up for a challenge? Built the best performing autonomous car through a course as fast as possible and prove that your design is the best!
GitHub repository with all resources: https://github.com/Microttus/LightCare
Competition regulations
The LightCar Race is a competition which bases on designing the best preforming car along with creating the best code for a challenge. Your car is supposed to follow a LeadCar, which is preprogrammed to drive a certain path with a variety within speed and turns. The path will be repeated for as many times as the car manage without any interference, with a short stop between every startup. You will be using two photoresistors for following the leader-car, hence a light source is built in at the rear of the car, as displayed below. A fusion between the two sensors will create the best following*. The ultimate goal is to follow the Leader-Car as close and good as possible throughout the section, as well as stopping closest to 10 cm behind the Leader after the first loop.
The cars' performance will be judged from 4 categories, with a grade from 1 til 10.
The first category is the Best Looking Code, and the criteria are:
Neatest look
Using functions
Good variable names
Only uses one type of variable methods
Describing names
Easily adjustable
Complexity in a simple way
The second category is the one who follows best, and the criteria are:
Able to follow the longest in one single loop
Able to follow several loops
Has the smoothest driving
The third category is Stopping The Closest, and the criteria are:
Able to follow through a complete loop
Stopping the closest to 10 cm behind the Leader-Car after the first loop
Maintain still for as long as the Leader-Car stands still
The fourth and last category are The Most Creative Design, and the criteria are:
Has a creative and original design
Holds all the necessary components
Has to be driveable
By using two photoresistors your vehicle is supposed to follow a LeadCar as good as possible. The drive-computer is an Arduino Uno which will read sensor data and control the motors and optional a servo. Mainly C code are used for programming the Arduino board, but optional MATLAB Simulink may be used as an alternative.
As displayed, this is how the measuring should be done after the first loop.
You can also see how the alignment should be between the LeadCar and your vehicle when the start signal goes.
Leadcar
The car assembly for the LeadCar, code can be found at the GitHub Repository
The light source is a 9V battery light called Blocklight.
Available at: Biltema, Amazon
Design Rules
For the car challenge project, there are some basic rules for the available components.
The requirements for the components for use to build the car are provided as a list in the section below. There are some components you have to include, such as the Arduino, and some optional components you can choose from, if you think it will make your car faster.
The frame of the car are to be designed yourself and made by using either printing in PLA plastic, cutting it out of acrylic plates on the laser cutter or by using the CNC machine. The wheels can also optional be made with the same production methods. Soldering for the wires and screws and glue for assembling are of course allowed.
Components
Nessesary Components
Optional components
Arduino Uno x1
Motor controller L298 x1
9 volt battery x1
Power line from battery to L298 x1
TT motor x2
Photocell x2
Resistors x2
Necessary wires
Wheels (can be made, or take us off pre-made)
Various sensors (for example proximity)
9g Servo (If you rather have this for steering)
Weight
Circuit design for necessary components
Academical information
This project can be done with simple programming, and empirical testing. But if you what to take your car to the next level, there are a lot of control theory to investigate for optimizing your code. A short introduction to some mechanical aspects to consider are presented in this presentation, along with some important mathematical calculations.
Below is also a beginners guide for Arduino IDE, this is a good starting place for learning Arduino basics which will come in handy for making the code in this project.