Balancing Octobot

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…


  1. The motor’s quality is EXTREMELY important in a balancing robot!
  2. The higher the COG, the easier to balance!
  3. 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.


About Gabriel (Ro-Bot-X)

Robots, nature, bees, and gardening, how do they mix together? After too much indoor activities one needs to get out and breathe! Harvest natural energy and create a little paradise. And ask the robots to help, of course.
This entry was posted in Arduino. Bookmark the permalink.

4 Responses to Balancing Octobot

  1. Paul Popescu says:

    Uau, felicitari ! Tocmai cand imi pierdeam speranta ca s-ar ocupa cineva serios de roboti .. Bine, inteleg din blogul tau ca nu esti exact pe aici pe meleaguri romanesti, dar nu conteaza.
    Ma bucur foarte tare ca am dat peste blogul tau, si in ultimile zile uitandu-ma pe site-uri cu robotica am mai tot intalnit acest nick.
    Poate chiar m-ai putea ajuta un pic.
    Dupa multa pauza, am decis sa ma pun la curent cu constructia de roboti autonomi. Am mai tot construit subansamble, dar nimic complet si nici vorba de autonomie. Asa ca am sa incep de jos , de la o platforma. Si nu orice platforma, ci una de putere mare, capabila sa suporte o greutate totala de 30-50 kg. As vrea sa pun tot ce se poate pe aceasta platforma, teleprezenta, brat si uneori chiar si masina de tuns iarba.
    Din start m-am lovit de o piedica, si anume o schema de punte capabila sa tina motoarele de 20 amperi dela stergatoarele de parbriz pe care vreau sa le monez. Ma poti indruma? Caut de o saptamana si nu reusesc sa gasesc. Am sa ma opresc aici cu acest comentariu..:) Pe curand!

    • Ro-Bot-X says:

      Salut Paul,

      I will reply in English for anyone to understand… Paul was writing in Romanian that he likes my blog and he wants to start making an autonomous robot of a bigger size but he needs to find a motor driver for his 20A motors from windshield wipers.

      I would say to try out a Brushed Motor ESC (Electronic Speed Control) that you can find in hobby stores like or An ESC takes a regular servo pulse and transforms it in a linear speed ramp for forward and reverse motion. It can also power the microcontroller with the built in 5V regulator, so you can power your electronics from the 12V (or as high as the ESC supports) battery without worrying about power loss through heat. If you use an Arduino to control the motors, use the Servo library but send the pulses in microseconds not in degrees. Of course, you will need one ESC for each motor.

      Here is the ones I have ordered to play with using electric windows motors (similar with windshield motors):


  2. Paul Popescu says:

    thank you,
    i will keep it in english from now on. 🙂
    The turnigy ESC looks great , but i prefer to make it myself. So a circuit schematic would be much more useful.
    I know there are thousands out there. What i need is one that is already tested.
    So if you know or built a 20 Amp DC motor driver, please do share.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s