Let's Make Robots!

Gyro Stabilized Two Wheeler (V5) - Steering

Mechanical gyroscope balanced two wheeler with steering - will try to slow down with the updates.

Updated with Version 5: Steering

Got up at 4:00am, couldn't sleep so knocked out a simple steering mechanism using a butterfly hinge.

Video shows the good stuff, what I cut out was the bloopers - gyro tumbled serveral times due to a couple of things I think: one is the stupid rabbit ears counterweight I am using that just vibrates off and then makes the rotor fall over. Another is that I don't have any way currently to limit the rotor travel so it won't fall over. I will work on those two problems next and then see how well it operates. In some other self balancing gyro projects out there you see them moving the vehicle very slowly, I suspect the reason being is that gyros can be very tippy. Is that a problem with the C1 as I don't remember seeing it cruising quickly around corners. I'm sure they handle that by computer control of the gimbal directly, something I may have to play with in the future. I can also address tumbling rotor issues programmatically and with a heavier servo/counterweight. We'll see. But so far am happy with progress. It moves pretty quick.


Used hinge to mount the wheel and attached servo. Works pretty good.

Next Steps: get rid of rabbit ears and put in rotor gimbal stops of some kind to limit travel.


Version 4: Forward motion

Back on wheels with forward motion! Very stable balance, no weird tumbling of rotor when I stop and start which is what I feared most. I powered the rear wheel with an RC ESC, receiver and lipo. The Arduino which controls the counterweight servo is powered by a small lipo and the gyro motor has it's own 6 volt power supply. Could have combined all of these into a single power source but didn't. Now that I am sure it is stable when starting and stopping I will mount some kind of servo controlled steering mechanism for front wheel and see what sort of new problems surface. Anyway, closer to final version. If I was going to build a serious model I would reduce the gyro size and use two of them spinning counter to each other to cancel out precession. I would also get someone to make me a decent brass or steel rotor that doesn't take up so much room. Would also like to get rid of bunny ears.


Front wheel: on the bottom is the Arduino Uno, then a piece of foam, then the 6 volt (2AAs) battery box to power the gyroscope motor, then a 7.4 2s lipo to power the Arduino and counterweight servo.


Potentiometer attached to gyro gimbal to measure angle of rotor. It is connected to Arduino, center pole is the signal to A2 pin of Arduino and the the other two poles are ground and 5 volt positive.

Other side of front wheel.


Rear wheel


Rear wheel with radio receiver, ESC and 3s 11.1 lipo.

In the video at the end of my run the rear wheel locked up (mechanical problem) so have to fix that.

Next Steps: will come up with a simple servo controlled steering mechanism for front wheel. If that works then I might buy an ESC for the motor that has a reverse that I can control from my RC transmitter. Might be a while before I get all this done as my teaching contract has ended and I have to go looking for a job. Oh well, even if I stop now it was fun.



Version 3: 

Finally the gyro can stand on it's own without any external input. I used the Arduino and a small program to read the potentiometer, which is a great little tilt sensor, and control the servo which moves a counter weight. A neat effect of using the Arduino is that I can reduce the rotor speed way down and it will still balance. The program is too simple in it's current form and could really be expanded to finesse the balance routine but it works as it stands and I probably won't mess with it right now.

Photo above shows 10k potentiometer which I attached with a piece of fiberglass rod hotglued over the gimbal axle and then secured the body to the gyro frame to keep it from turning..

There is still a little precession going on but I think it is because the servo/weight mechanism is mounted off center. Also, a heavier rotor/motor combo would knock that out. I can push pretty decisively on the sides of the gyro and it resists firmly. 


Simple Arduino program to control counterweight:

#include <Servo.h>

Servo servo1; 

int servangle = 0; // servo angle variable

int potPin = 2;    // select the input pin for the potentiometer

int ledPin = 13;   // select the pin for the LED

int val = 0;       // variable to store the value coming from the sensor

int valInc = 4;

int currAngle = 0;

int newAngle = 0;

int delayTime = 0;


void myServo(int curAngle,int newAngle,int angleInc,int incDelay) {

  if (curAngle < newAngle) {

   for(int angle=curAngle;angle < newAngle;angle += angleInc) {


        delay(incDelay);   }


   else if (curAngle > newAngle) {

      for(int angle=curAngle;angle > newAngle;angle -= angleInc) {


        delay(incDelay);   }



void setup() {


  pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT





void loop() {

  val = analogRead(potPin);    // read the value from the pot sensor

  delayTime = 10;


  if (val >= 420 && val <= 435)   digitalWrite(ledPin, HIGH);  // turn the ledPin on

  else digitalWrite(ledPin, LOW);   // turn the ledPin off


  if (val >= 420 && val <= 435)     { newAngle = 90; delayTime = 40;}

  else if (val >= 300 && val < 410) { newAngle = 50; delayTime = 1000; }//force back down

  else if (val > 445 && val < 500) { newAngle = 130; delayTime = 1000;}// force front up

  //Serial.print(val); Serial.print(" ang: "); Serial.println(newAngle);

  if (newAngle != currAngle) { 


     Serial.print(val); Serial.print(" ang: "); Serial.println(newAngle);

     currAngle = newAngle;





Next Steps: guess I am ready to put the wheels back on and take it for a little spin. 

When I was playing around with it in its version 1 state I discovered an interesting little behavior that should allow me to balance the gyro in another manner without using a counter weight. Perhaps I will work on that a some point.


Version 2: I am incorporating my chopstick gyro into this project as it has a better chassis with inline skate bearings for the gimbal axel. Balancing on wheels just introduces some additional vibration that I don't need right now and will add them later.

Problem: there is some unwanted precession from the vertical that requires I manually input some force to keep the gyro balanced and I need to get rid of that. As the gyro runs the precession gradually gets larger and then the gyro will tumble.

Solutions: I have two solutions so far: One - is that by making the rotor/motor heavier it reduces the size of the precession.  I increased the number of cds from 5 to 7, and added corresponding weight to the motor side. It now runs smoother with smaller precession. Now the rotor weight to total machine weight runs about 27%. I think the precession can almost be eliminated with a heaver rotor/motor. I can't run higher rpm as the motor is getting warm as it is. But while I have some precession I want to experiment with another way of getting rid of it. 

Two - as the (Version 2) video shows, I use a servo that moves a counterweight back and forth to actually speed up the precession so that the gyro will recenter in the vertical axis. Works pretty well.

I also have some pretty severe vibration with the unbalanced rotor and the plastic clip on the motor adds needed weight to the top and it allows the motor to rev up a little higher by absorbing some of the vibration.

Next Steps:  I plan to use an Arduino Uno and an inclinometer sensor to automatically operate the counterweight and keep the gyro centered. If that works I have another idea how to absorb large shocks and also to control leaning and still keep the gyro balanced.


Version 1: 

Update: Warning: cd rotors can explode, mine did. I like all things gyroscopic, maybe because I ride a unicycle. This is my first pass at building a self-balancing two wheel model vehicle. I like the idea of Lit Motor's C-1 self balancing motorcycle and thought it would be cool if I could just make a model balance on two wheels. It turned out harder, and easier than I thought; harder to find out how to do it and pretty easy to accomplish once you know how. Turns out there is a secret to balancing on two wheels with a mechanical gyroscope that no one out there seems to be sharing. Unfortunately to discover this secret you will have to watch my video.

Hope to incorporate an arduino, potentiometer and servo to effect some kind of balance mechanism to play with the precession of the gyroscope and then on to steering.


Here is C-1. Hope it works out.

The cool Gyro-X car.


The really cool monorail gyroscopically balanced train.


And lots of others that didn't pan out.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I'm wondering if you used a servo to control the "roll" of the entire gyro mechanism, as opposed to using a pendulum manipulating the CG, would you be able to lean into turns like a motorcycle?

Very cool project. Thanks for sharing.

if the "axle" is needed at all. Why not just control the lean by the velocity of the mass rather than angle?

Yes, Im thinking that sounds like a reaction wheel which I think requires a motor with very high torque and fast response time and a lot of computer processing. My little DC motors arent up to that and I really want to keep it as simple as possible. I really admire those guys in the early 1900s who came up with the first gyro cars, no computers, just mechanical solutions. Computers are cool and I do play with an arduino but Id rather fabricate than program.

There is a really cool cube going around now that uses three reaction wheels and it can balance and flip around and do all kinds of cool things, but complicated.

Sorry, I'm slow, I get it. Roll the whole gyro so it stays level. Neat idea.

Edit: I may have misunderstood your suggestion - I do plan to roll the whole vehicle by using a weight.

 I dont plan to change the cg, rather I envision a servo shifting a weight attached to the top of the frame in a direction perpendicular to the wheels. The weight would move right or left to counter precession of the gyro if it starts oscillating to the left or right. This is similar to the methods some others have for controlling the gyro balance. Sure I didnt explain that well or even understand it entirely myself.

I have attached a servo to the gimbal before but that is not a simple proposition as the gyro needs to be free to self correct any imbalance and my attached servo just forced the gyro to precess until it fell over as my simple arduino program was not sophisticated enough to know how far and how fast to move the gimbal to precess the gyro to a correcting postion and then I would have to somehow get the gyro back to a neutral position. I want to use simple mechanical processes if possible and stay away from electronic gyros and accelerometers. 

As for actually steering i have seen the steered wheel attached to the gyro gimbal so that the turning wheel actually counters any adverse precession by tilting the gimbal. Not sure how that would work until I tried it.

Finally, Im not a physics-head. I have a basic idea of how precession works in a gyroscope and that is about it. When the vehicle rolls left or right the gyro precesses forward or backward. Too much precession and the top heavy motor falls over.

Im afraid Im really out of my depth here and am just proceeding onward by feel and fits and starts. But hey, its fun right?

Nice one :) Looking foward to see it's progress.

Thank you. Yes I hope to continue on. What I eventually would like to do is try the gyro with a walking robot as was suggested by another forum member. Jia you!

I know that one of the problems with a single gyro is that a turn in one direction is more difficult than in the other direction and a solution, in fact one the C-1 uses, is to use two counter-rotating gyros to cancel out adverse effects when cornering. 

I would be happy to successfully turn in a single direction.

Very, very impressive work.  I've been following along for a few weeks now, but had to comment.  I'm very impressed with this work.

I was wondering if you could use the comutator from a larger motor as your gyro mass?  might give you the weight but smaller size you were looking for?



Thank you so much! When it took off I just about jumped and screamed for joy, but I'm a little subdued for that.

I appreciate getting feedback from you guys who have been at this stuff for a while. I'm afraid my mechanical skills are pretty shoddy and the stuff I have to work with is pitiful. Would be nice to have a drill press even.

I will look for something like what you suggested, if I can find a big old electric motor - should be able to as this is China and everything gets salvaged. I did try the rotor from a PowerBall, which I ended up using on my precession bot but even though it was as heavy as the cd rotor, it just didn't generate enough torque, even when I maxed out on the revs. Seems to like the wide rotor and you can really slow down the rpms and it still balances. With a narrow rotor the rpms have to stay pretty high.

What I did find out is that the rotor does not have to stay near the ground, it actually works even better mounted higher up so vertical space shouldn't be an issue. 

Excellent engineering Demej! Inspiring I must say. It is so stable. Your use of materials is great.
I fell in love with the C1 when I saw their promo video... I am now in love with your project.

Thanks so much for sharing your process on this 5 star project!