Most of us didn't have much experience with lower level hardware integrations, so we decided it would be fun to dabble with something like this!
What it does
Our car broadcasts its own SSID so it acts like a router which anyone can connect to. When you're connected, you can control the car that's running Node.JS with GPIO integration to control the vehicle.
Additionally, we decided to collect data on drivers to train a Deep Convolutional Neural Network to see how well we could get the vehicle to drive on its own for a given task (be it following a track or avoiding objects.)
How we built it
Setting up the RPis to broadcast their own SSID was a task in and of itself. We had to setup DHCP servers to assign IPs to connecting clients so they could communicate with the Pi.
Finally, the Neural Network was a combination of OpenCV for machine vision/image processing and TensorFlow for the NN framework. We ended up having to create a TCP connection and Video Stream between the Pi and a laptop computer as TensorFlow doesn't run on a 32bit architecture. So the Pi would stream video that the laptop would consume, classifying the stream frame by frame - and then sending commands to the Pi - effectively acting as a cloud based decision making platform.
Challenges we ran into
Oh were there a ton! For a while we had problems reading data from the Raspberry Pi camera - which took the better half of a day to get working correctly. Beyond that, configuring the Pis to broadcast an SSID ran into several hiccups with the networking connection on campus. We weren't able to download/update node packages for a while - ultimately leading us to have to reformat one of the pis and start from scratch.
Finally, after 9 hours of development around the Neural Network - we found out that the Pi couldn't run the code. So we had to create the "cloud based" solution mentioned above.
Accomplishments that we're proud of
Overall, this project was a great learning experience. We really enjoyed seeing the pieces come together one by one - and we're especially proud of the many different technologies we touched to stand this project up.
What we learned
This was a great learning experience. A major take away was that a sturdy wireless connection is key - and the iterative development pays off!
What's next for CyDriver
We don't have any immediate plans for CyDriver - but it would be very interesting to see how well our vehicle performs on different tasks. Additionally, creating a cluster of pi cars that think collectively would be awesome.