In the Autumn of 2019 I took part into a hackathon in Rome about self driving vehicles. The hackathon proposed the same challenge to every team, composed of 4 participants and 1 mentor from the organizing company, Leonardo S.P.A.
Designed the frame for the car (using a sheet of PVC and a cutter).
Designed the circuit to power the motors, the sensors, and the brain of the car (a Raspberry Pi model 3A+).
Implemented the algorithms to send commands to the motors, to move the car.
The task for this hackathon was to build a self driving car that could follow a path, inside a tunnel,
recognize the people inside it and deploy medikits (small plastic cubes) for them.
The whole circuit had to be completed in less than five minutes, from start to finish, and it was forbidden to interact with the car in any way;
the car had to be fully autonomous from startup to end.
Inside the tunnel, there were a total of 8 people to rescue; obstacles were also present, and also road signage that could resemble the appeareance of people
(e.g. Men at work sign). Thus, the car had to distinguish between the actual people (printed figures standing in the tunnel) from signage.
Finally, each team had a fixed budget of "Leocoins" to buy the components/algorithms for their car; the prices in the market followed the
rules of classical economy, so high supply and low demand meant cheaper components and vice versa. Additionally, the supply was not unlimited, so
only a certain amount of component was available for purchase (e.g. there were just 4 pre-built frames for the cars for 8 teams).
Each team was evaluated with the following parameters:
Since for the hackathon we only had around 30 hours and one member of our team never showed up, we decided to divide our group into two sub-groups of 2 people, to split and parallelize the workload. I worked with the mentor on the frame and the circuit, while my other two teammates worked on the AI algorithms. So, while Bruno and Giulio were working on the algorithms, I worked with Paolo to protoype and built the frame.
The final circuit was composed of:
The AI algorithm developed was based on YOLO (You Only Look Once (opens in a new tab)); it acquired a picture of the scene seen by the car through the
RaspberryPi camera, then analyzed it to find the people to rescue.
Figures below demonstrate how the algorithm worked and how the tunnel was built.
We decided to write the algorithms and the interfacing with the components in python; in this way, integrating the two pieces of software was rather quick and easy.
In the end, our car was not able to compete in the final test; even though the algorithms and the circuit were working together,
we discovered that the processing power of the Raspberry PI alone was not enough to complete the circuit fast enough. Given the huge time and budget constrain, we were not able to
properly test our solution (testing on the circuit had a cost as well, and a team could only reserve a certain amount of 15min slots), so we did not discover
this flaw until the end. Additionally, the plastic used to build the frame (that was give to us by the organizers at the beginning) was not strong enough to support
the components and the vibration of the motors; as a result, all the teams that could not buy the pre-made frame (so including us) were not able to assemble a car.
However, I believe that as a team we were able to work together quite efficiently even though we had just met; I learnt a lot about how to integrate
different components in modern circuits and many hardware techniques to adapt the voltage and the current to meet the requirements.
Our team, from left to right: Bruno, Paolo, Giulio, and me.