In The Making: Autonomous Driving
Testing autonomous driving capabilities with our big Eco-Runner car is not easy, and we don’t want to risk damaging the body. I am Noah Jadoenathmisier, Chief Autonomous of Eco-Runner and a second-year Computer Science student. Currently, I am working on everything that we need to make our car autonomous as well as everything that we need to do proper testing. The testing is what I want to talk about in this blog.
For the testing, we are using a radio controlled car (RC car). Such a car is small and light, making it easy to take outside for testing, and it is also very solid, so it won't break easily. Normally, RC cars are built to be controlled by a 2.4 GHz remote control, but since we want to make our car self-driving we have built our own system to control the car.
The RC car that we are using, during one of the late-night tests
We have put an Arduino into the RC car, which we have connected between the output of the receiver in the car and the motor controllers. In this way, we can intercept all signals that the remote gives to the car, and we can control the car’s engine and steering.
To make it possible to develop a program that can intelligently control the RC car, I wrote a simulation of the RC car. With this simulation, we can test if our control logic works and if it is efficient. To make this simulation as accurately as possible I tested our RC car together with Stef Siekman, a friend who also studies Computer Science. With the use of slow-motion video, filmed on smartphones, we were able to calculate everything from the top speed of the RC car, and its acceleration, to the increase in turning radius when it is driving at higher speeds.
To make sure the car knows where he is, we use a GPS sensor. We have already made a system that can determine its location using GPS and send its location over TCP to any server or computer. This system is currently running on Android smartphones. We receive this GPS data on a laptop. I wrote software to plot a graph of the path that the car made. It also uses the Bing static maps API to plot a satellite picture underneath the plot of the path so you can really see where the car has been!
A GPS trace around the Dreamhall
This is one of the early tests that we have done where we drove the RC car around the Dreamhall. Interaction with APIs and running TCP servers and clients are both things we learn in Computer Science, and it is really fun to be able to use this in a practical environment which brings endless amounts of new challenges.
Right now we need to port all GPS software that we wrote to run on Android phones to the Raspberry Pi that we use to control the Arduino in our RC car. We also need to write the software to intelligently control the RC car. Because we have a powerful GPS module and antenna for our Pi, its location will be even more accurate than it currently is. To further improve the accuracy we will use an accelerometer, and a second external and stationary GPS that can compensate for atmospheric errors.
I am really excited because we have made this much progress, and I’m looking forward to the moment that we can actually put our RC car on a race track to let it complete laps all on his own. When this works, and Stefan (Chief Strategy) made a solid strategy simulation, I can train the neural network that I made last year on the strategy simulation. Then we can adapt the RC car to make use of the suggested speed/power targets form the neural network to test the real strategy easily before we use it on the real Eco-Runner during the race!