I wanted to try out if a regular robot design would balance, so I adapted Octobot for balancing. Octobot is a small robot with an octagonal acrylic chassis, 2 small metal geared motors, an Arduino Duemilanove and a Robot Builder’s Shield with the Breadboard add-on. I had some old 2 axis accelerometer and a single axis gyro from SparkFun and I also used a pair of xBees on xBee Explorer Regulated boards to make a wireless serial link to my laptop. I have used Kas’s balancing code following his amazing tutorial and Patrick’s Balancing GUI to display the sensor data. Although Kas provides the recipe for success in his tutorial, I tried to do it with stuff I had laying around.
Unfortunately, it doesn’t balance. The COG is way too low and the motors react too slow, even though they have 370 RPM at 6V. The motors start rotating for a PWM value over 90 and they take a long time to stop. I have tried to add a dead zone to the motor’s PWM but it did not improve things. I also tried larger wheels, but the motor’s inertia made the robot fall before the motors would get a chance to reverse direction. Stupid motors…
- The motor’s quality is EXTREMELY important in a balancing robot!
- The higher the COG, the easier to balance!
- Higher speed allows the robot to recover from a greater falling angle.
Here are some pictures of the Octobot:
Before I’ll place an order to Pololu for proper motors and driver, I’ll try one more time with other motors I have around. They have only 141 RPM at 6V, but I’ll drive them from a 11.1V LiPo, so I guess I’ll get at least 250 RPM. Even if the bot will not be able to recover from a push, I hope it will be able to balance just fine. I mean, if the continuous rotation servos have about 60 RPM and the robot balances for a little while, I don’t see any reason for these way better quality motors to fail.