I’ve built a balancing robot on two wheels before (http://ftcommunity.de/categories.php?cat_id=2741), and announced I was working on one that could balance on a ball (http://ftcommunity.de/details.php?image_id=36900). That turned out to be a whole lot more difficult. Finally, I managed to get something reasonable to work.
In order to have a robot move around on a ball you need so-called ‘omni wheels’, that can be driven in one direction and float free in the orthagonal one. With 3 motors you can control lateral movement in two directions, plus a rotation. With that, it is essentially a matter of running the same sensors and algorithms that I used for the robot balancing on wheels, but now in two independent directions X and Y.
For sensors it uses:
The software is written in C and running on the TX. It operates on a 100Hz cyle. Every 10ms the sensors are read, the data filtered and the motor PWMs calculated and adjusted using a PID controller. The TX has plenty of power to do the math. This is quite amazing, since there are a lot of calculations done every 10ms. By distributing the required work over ten ‘progtic’ cycles, it all fits easily within the allowed 500 microsecond budgets.
Some pictures below, but this is all about movement, so you need to see the video of the balancing robot here: http://www.youtube.com/watch?v=QuTUYofiwcE
In dieser Galerie gibt es 20 Bilder: