Monday, December 18, 2017

RS5 - 3D printed Raspberry Pi 3 robot

I always wanted to continue the development and add new features to the RS4 robot, the initial idea was to make a more autonomous robot. I decided to do some more work, but the platform needed to be updated. As 3d printers are becoming cheap that was the way to go, developing parts is way easier and no more cutting and drilling.
I'm an electronics engineer so 3D modelling is not something I am used to do, I was able to learn a few things in tutorial videos and began to 3d printing my first parts with success. I'm using SketchUp, it is not the most friendly software but with some dedication I was able to design and print some parts.
In this images you can see the complete assembly model including all the parts, printable and not printable.

I also wanted a smaller robot but with all the modules that I used in the previous one. I picked up some similar but smaller wheels and nema17 steppers for the motion. This time I'm using a STM32 microcontroller, much more powerful than the PIC I was using before. The STM32 board controls every module on the robot, balance/movement, head servos, eye color and distance readings.
In this video it is possible to see all the modules being tested over a Bluetooth connection, no Raspberry Pi present. The board communicates via UART, using a Bluetooth UART converter is straight forward.

At this point adding Raspberry Pi to the robot is not that hard, just need to implement the UART commands, compile and install OpenCV and the integration is complete. I'm using Raspberry Pi 3, the old camera module and the Raspicam Api http://www.uco.es/investiga/grupos/ava/node/40.
Performance is not great but it is acceptable, I know that there are some optimizations that can be used to achieve better OpenCV performance, I'll try them later. At the moment I'm using 640x480 resolution. In the next video the robot is following a black line using image processing, similar process has been used before in the RS4 robot.

Here you can see some close photos of the robot, not the best color :)

The idea for this robot is to have a platform to implement cool features, it has some potential that can be used to develop a really nice robot.
I would like to make it available for other people, that would require some more time and money to develop it, make it more close to a product. I'm not sure if there are people interested in a robot that requires some advanced programming skills.
Would you like to have one? Just let me know :)