A tiny omniwheel robot running on micropython

Showroom for MicroPython related hardware projects.
Target audience: Users wanting to show off their project!
Post Reply
Posts: 2
Joined: Sun Apr 29, 2018 10:17 am

A tiny omniwheel robot running on micropython

Post by osamarais » Wed Jun 27, 2018 4:13 am

This project was the the result of a final design project for a mechatronics course. The aim was to design a robot from scratch that was easy enough for beginner level students to program and use. Of course, cost minimization was an important goal too. Therefore, we went ahead with using the simplest, cheapest components to run a tiny robot with minimal resources.

The basic structure of the robot was selected to be an 3 omniwheel robot running on either DC motors or continuous servos (design allows both to be used). Users are able to add "Layers" to the robot which just snap on to the robot and are held in place using magnets. The first layer contains the motors and the second layer contains the microcontroller and power supply components (battery, charger, step-up regulators, etc.).
We printed our own omniwheels as those available commercially are ridiculously expensive.

The magnets that hold the layers in place also provide a 5V / 3.3V, GND, and I2C rails. This allows users to add simple layers of I2C components with possibly no extra wiring. These tiny neodymium magnets are capable of transmitting signals and currents quite easily, and we haven't come across any issues with them yet.

On top of the robot an Aruco marker can be placed to get position and orientation feedback with a webcam. (These work pretty well even with cheap webcams and not-so-ideal lighting conditions). The image processing using these markers is pretty fast (OpenCV) and the rate at which we were extracting data was limited only by the framerate of the camera we were using (~29 data/second with a 30 fps camera with an old dual core PC).
These Aruco markers can be placed on any object in the arena (borders etc.) and their location can be sent to the robot for decision making.

The ESP8266 was an ideal choice for running this setup: micropython makes it extremely simple to run algorithms, socket libraries make it very convenient to send and receive data. Using classes it was extremely simple to make motor classes and make a parent "robot" class inherit from them, or making PID classes for orientation and position control. Micropython simplifies these tasks by several orders compared to using C or any other compiled language. Debugging is also much simpler thanks to the WebREPL.

In short this turned out to be a pretty fun project with lots of room for improvement due to the flexibility provided my micropython. :D


Posts: 599
Joined: Mon Nov 20, 2017 10:18 am

Re: A tiny omniwheel robot running on micropython

Post by OutoftheBOTS_ » Wed Jun 27, 2018 5:47 am

Way cool :)

User avatar
Posts: 1459
Joined: Sat May 09, 2015 4:13 pm
Location: Rhineland, Europe

Re: A tiny omniwheel robot running on micropython

Post by Roberthh » Wed Jun 27, 2018 6:32 am

Very impressive. The idea with the magnets is good.

User avatar
Posts: 3453
Joined: Fri Jul 18, 2014 8:01 am
Location: UK

Re: A tiny omniwheel robot running on micropython

Post by pythoncoder » Wed Jun 27, 2018 10:18 am

Excellent :D
Peter Hinch

Posts: 1
Joined: Wed Jul 25, 2018 8:34 am

Re: A tiny omniwheel robot running on micropython

Post by tedour » Wed Jul 25, 2018 8:48 am

Very impressive.
Do you plan to share your code ? I've made this a few years ago : http://pathdriver.pixngraph.com/ with arduino nanos + NRF24 boards and i would like to make it again with an ESP8266 + micropython.

Post Reply