Autonomous RC Car - Mad Max Style!

Created by ebswift on Oct. 28, 2017, 4:01 p.m.
  • --I wasn't able to post pictures I will try and follow up below...---

    I've started playing with tensorflow for AI and started out by building an image tile sorting machine to get my head around it. This soon led me to the Donkey Car project where the real cool stuff is going on, I just had to get in on it. The catch was that their recommended car was not available for purchase easily in Australia so I needed to select a different car. Having no experience with RC I went to the local hobby shop for advice and walked out with two 1/10 scale cars.

    The first thing to do was to swap out the ESC, the stock one was integrated with the receiver so PWM couldn't be independently controlled. Next, just for a test I connected up the Raspberry Pi, PWM controller and battery pack and loaded up all the software. After driving the car to train it, processing on a PC then transferring the trained model back to the car it was able to self-drive. This was all I needed for validation of the project to move forward, I could now put more effort in without ending up with very cool looking paperweights.

    During the testing phase, because components were just cobbled together the camera wasn't stable and was able to shift. This was a problem because on relatively short training runs the AI would become confused with its surroundings because of the shifting view. This called for engineering a design. But not just any design, I was calling upon my inner Mad Max for this one. Like pulling and pushing on clay the art form took shape over several days - longer than it should because part of that process was correcting mistakes as well as learning how to do parts of the drawing.

    I 3D printed the cage in a single run in two pieces sliced towards the back. Normally I would acetone parts together, however this piece would be tedious to do, so instead I opted to heat-shrink it together. That worked way better than expected, it's a very rigid structure. Adding to this, as anyone with any experience working with 3D printed ABS structures knows, you end up with a structure that is very strong on the linear printed stuff, but laughably weak in the vertical prints. Essentially you have vertical struts that will snap like a fragile twig, and in fact I did separate the design while trying to remove support material. The simple solution to this problem was to pour acetone over the weak areas. The solvent flows into the layers of the part causing them to fuse and thus result in a part that has pretty much the strength characteristics of moulded ABS rather than a fragile twig. Pouring acetone like this curiously encourages a thin outer skin to develop which floats just above the surface like bubbles getting caught in a bad tint job. This is unsightly. So, to get it looking nice and help even more with the layer fusing, it is finished by a 20-30 second dip in acetone vapour.

    The cage while protecting all the internals is also functional, it consists of discreet compartments to keep the electronics and battery secure. It works decently for protection too, on a maiden run while everything was being calibrated it rammed itself into a horizontal table frame at decent speed with no sign of any cracking. The spoiler was added as an after-thought. Because the camera must sit high and point down at an angle, the orientation of the vehicle is confusing. The spoiler solves that giving the vehicle distinct orientation and adding to the crazy look of the thing. I used an off-the shelf spoiler and 3D designed & printed the X shaped spoiler riser.

    Now that I have assembled cars, the cameras and electronics are secure and I'm able to concentrate on the training methodology. That is a work in progress but suffice to say I can get the car to do quite a few laps before it gets caught up. Since I am running the car slow it lacks torque, and I'm using plastic chain as a track, so it's easy to get hung up on. More training has demonstrated that the car can be taught to more effectively avoid the chain. Other behaviours can be taught too such as other vehicle avoidance. ATM the throttle control isn't recommended for mere mortals to be training their AI with, so modelling behaviour around speeding up/slowing down, obeying signs etc., isn't yet up for playing with.

    I hope you enjoyed the read, you can check out the video story on the build as well which also shows some behind the scenes stuff of the acetone vapour dipping and one of the cars finally driving on its own:

  • Nope, sorry, I am not able to post any images, even if I resize down to 320x240 :(. All of the images are contained in the video linked in the original post above.