One team of students turned an RC car into a self-driving vehicle capable of following street lanes, parking and overcoming obstacles.
A future full of driverless cars is just around the corner, with reports predicting over 10 million to hit the roads over the next five years. And while many of today’s vehicles already boast high-tech capabilities like self-parking and automatic braking, their price tag often keeps them out of reach of most young folks like University of Gothenburg student Dimitris Platis.
Platis, in collaboration with his classmates Yilmaz Caglar, Aurélien Hontabat, David Jensen, Simeon Ivanov, Ibtissam Karouach, Jiaxin Li and Petroula Theodoridou — who collectively go by the name Team Pegasus — decided to develop an impressive autonomous vehicle of their own. The only difference? It’s much smaller than the ones you’d find on the road, and unfortunately, won’t be able to give any of them a lift to class.
Originally conceived as a school project, the scaled-down, self-driving vehicle utilizes machine vision algorithms along with data fed by its on-board sensors to follow street lanes, perform parking maneuvers and stay clear of obstacles in its way. Basically, the unit is an RC car that they hacked by replacing its ESC, DC and servo motor with several electronic parts housed inside various compartments and affixed to the shell.
An Android phone handles the image processing, decision-making and wireless transmission of steering instructions (via Bluetooth) to an Arduino Mega (ATmega2560) embedded inside its chassis. This board connects to three ultrasonic distance sensors — two of which are mounted to the front and another to its rear. A trio of IR sensors are linked to the Arduino as well, while a speed encoder is attached to one wheel.
Aside from that, a 9-DOF Razor IMU board (ATmega328P) is fitted to the front bumper to provide feedback on the car’s movement, though it is not too reliable due to magnetic interference from the motors. The vehicle is also equipped with LEDs that act as head and brake lights along with an ATtiny85 based driver board that receives signals over serial and blinks the lights.
An electronic speed controller, powered by a 7.2V battery, is tasked with driving the motors according to a PWM signal that it receives from the Arduino. The servo motor determines the angle of the vehicle’s front wheels.
The Makers created an Android app called CARduino that communicates via Bluetooth with the on-board MCU, drives the motors and parses the sensor data.
“On the software dimension of the physical layer, an Arduino library was created, which encapsulated the usage of the various sensors and permits us to handle them in an object oriented manner. The API, sports a high abstraction level, targeting primarily novice users who ‘just want to get the job done.’ The components exposed, should however also be enough for more intricate user goals,” Platis explains. “This library was developed to be used with the following components in mind: an ESC, a servo motor for steering, HC-SR04 ultrasonic distance sensors, SHARP GP2D120 infrared distance sensors, an L3G4200D gyroscope, a speed encoder, [and] a Razor IMU.”