Both of us love using RC cars, but unfortunately, we're not that great at driving them with the remote control. After reading more about self-driving cars in the news, we wanted to see if we can implement autonomous navigation to help us drive RC cars. However, we soon learned that many of the large-scale self-driving systems by companies like Google and Uber are engineered specifically for a certain car. Rather than trying to mimic this setup by taking apart the controller and circuitry of an RC car, we wanted to build a kit that can easily be attached to an existing RC car and make it self-driving.
What it does
Autocross is a kit that allows anyone to easily make any RC car self driving without messing with the electronics of the car and requiring extensive machine learning training. Instead, we built a servo mount onto the RC car controller that can automatically move the joy sticks. In addition, our software creates a 3D map of the environment and conducts real-time localization within that map. Our algorithms are then able to use optical detection, along with information from this map to navigate autonomously including in previously unknown environments.
How we built it
We used an iPhone as the basis for collecting the stream from the RC car for 3D mapping because it's easier for a consumer to use realistically and already contains high-frame rate images, built in sensory units, and a good resolution camera to process the video.
Challenges we ran into
Well, hardware is called "hard"ware for a reason! We spent a lot of time messing around with single-board computers, and testing various circuits to ensure an effective and streamlined design while maintaining the "kit" aspect of our project. We also had to learn more about using the particle photon for transmitting data and work with the online interface to write our code.
On the software side, camera calibration was tricky and we had to conduct multiple tests to ensure that the 3D mapping would be accurate. In addition, generating the 3D map of the environment for effective self-driving involved reading papers about the algorithms behind point cloud projections and spatial modelling to ensure accurate reconstruction.
Accomplishments that we're proud of
We're proud that despite the last-minute setbacks and challenges we successfully achieved our goal of creating a kit that allows for an easily implementable solution to make any RC car self-driving. In addition, we are proud that both the hardware and software aspects of our project work together well!
What we learned
We enjoyed learning a lot about the setup of Robotic Operating System (ROS), teaching ourselves 3D mapping techniques, and figuring out the circuitry to make all of our electrical components work together.
Our favorite part was probably learning how to very quickly design and laser-cut multiple pieces (especially with the line of people that were waiting for a turn)!
What's next for Autocross
We hope to further refine our hardware designs to make it as streamlined as possible, which would improve the applicability of our kit. In addition, we want to continue improving our 3D mapping and navigation algorithms to improve environment analysis and processing especially for high-speed RC cars.
Ultimately, we see Autocross as a platform for applying our awesome algorithms and hardware kit to make other moving-objects like drones, move autonomously. Hopefully, we can get in touch with companies like Google and Uber to talk to them about some of the software we've developed that focuses on spatial analysis of the environment to detect obstacles and parameter tuning to learn how the car behaves without extensive training data.