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) {

         servo1.write(angle);

        delay(incDelay);   }

   }

   else if (curAngle > newAngle) {

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

         servo1.write(angle);

        delay(incDelay);   }

   }

}

void setup() {

  Serial.begin(9600);

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

servo1.attach(9); 

servo1.write(90);

}

 

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) { 

     myServo(currAngle,newAngle,1,10);

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

     currAngle = newAngle;

     delay(delayTime);

           }

  }

 

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.

It's so smooth and totally in control! And it goes rather fast too!

Your use of materials is also very inspiring, all this without a 3d printer, milling machine, etc., it's just amazing.
Great work Demej!!!!

Thank you Roxanna! I would use a 3d printer or cnc machine if I had one but I'm in a little apartment, using kitchen table or desk as work bench and my only power tool is a hand drill. Wish I could drill a straight hole once in a while.

I just realized why it is not quite as smooth as without the steering, the weight has gone up 20% so rotor weight ratio to total machine weight has dropped from over 20% to 14% - so gyro has less torque. Really need to up motor size and rotor weight but will try to ameliorate current instability using better motor head weight and progrmmatically first.

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! 

Thank you Roxanna. My head is so big right now. Yeah, the C1 is going to be cool and I think they have a good shot at making it happen. I definitely want one. Something so magical about gyros.

My model probably needs direct servo attachments to the gimbal to correct and control the rotor quickly. Unfortunately when I tried to do that, without the free self-correcting nature of the gyro, it falls over. I suppose I would have to go to some PID technology and I'm sure the C1 is using a very complex program to control their gyros. I think one of the reasons that this model is so stable is that the top heavy nature of the gyro/motor self corrects any imbalance in the gyro so it seems pretty smooth - just letting precession take its course but hurrying it along a bit with the counterweight. I guess the real test will be when I put on the steering wheel to see if it can turn without falling over.

 

I used to live at Outer Drive and Ann Arbor Trail on Dolphin.

Have you heard about this robotics competition At LAwrence Tech this weekend and the weekend of the 17th?

http://robofest.net/

Robofest e-Newsletter, 5-1-14


(1) Michigan Championship this Saturday May 3
(2) Wanted: Volunteers for World Championship
(3) World Robofest Championship Saturday May 17
(4) World conference on Integrated STEAM Education through Robotics (WISER14)
(5) Summer Camp Dates
(6) WRO (World Robot Olympiad)
(7) Save the Date: RoboParade and GRAF

Note: All times are listed in EDT
------

(1) Michigan Championship this Saturday May 3
MI State Championship will be held on May 3, 2014 at LTU. This event is free and open to the public starting at 9am. Come see game and exhibition teams compete. Spectators can register to be judges for People's Choice Award to vote for their favorite exhibition teams. Registered PCA judges are also entered into a raffle to win prizes.
We are still looking for Judges/Volunteers for this championship. To register as a volunteer for the event go to:
http://robofest.net/rms/appPages/volunteerPages/index.jsp?siteID=422

The judge position needs an invitation code to register. If you would like to be a Judge, please email to Faith Chu, Robofest Coordinator at fchu@ltu.edu.

(2) Wanted: Volunteers for World Championship
Robofest is looking for volunteers for World Championship. To register as a volunteer for World Championship go to:http://robofest.net/rms/appPages/volunteerPages/index.jsp?siteID=421. The judge position needs an invitation code to register. If you would like to be a Judge, please email to Faith Chu, Robofest Coordinator at fchu@ltu.edu. Robofest needs volunteers like you to help the event run smoothly. Thank you in advance for supporting Robofest!

(3) World Robofest May 17
World Robofest Championship will be held May 16~17 at LTU. Open categories (BottleSumo, BottleZone, Unknown Mission Challenge) will be held on May 16 and Game, Exhibition, and VCC held on May 17.

(4) World conference on Integrated STEAM Education through Robotics (WISER14) May 16-17, 2014
Since robotics is all about STEM and art is tightly connected to all the S. T. E. M. components, interest in integrated "STEAM (or TEAMS) learning through robotics" has been increased. We would like to gather together to share experiences and knowledge and exchange ideas in Robotics education as well as educational robotics for the effective STEAM (or TEAMS) learning environment. In addition we would like to discuss how to advance robotics education and educational robotics ultimately for humanity through the STEAM learning paradigm. Call for participation is open for the May 16, 2014 event! Visit http://www.robofest.net/index.php/current-competitions/wiser

(5) Summer Camps
Robofest will be hosting several one day summer camps in July and August. Robofest will provide instruction, robots, and laptops. The students will receive hands-on instruction in the morning, and participate in a small competition/event in the afternoon. These are great opportunities for new students. Registration will open shortly.
July 8, July 10: BottleSumo for Beginners
July 22, July 24, and Aug 19: RoboParade for Beginners
As part of LTU Summer Camp program, there will also be a week long Robotics & Music Summer Camp July 14~18. For more information, visit ltu.edu/summercamps.

(6) WRO (World Robot Olympiad)
LTU Robofest named USA national organizer for World Robot Olympiad. WRO Michigan tournament for Open Category (similar to Robofest Exhibition, but the theme is "Robots and Space") will be held (tentatively), July 26~27, Maker Faire at Henry Ford Museum.
WRO Regular Category (similar to FIRST Lego League) Michigan Tournament will be held in August. Location is TBD. For more information, visit: http://wroboto.us/

(7) Save the Date: RoboParade and Global Robotics Art Festival
RoboParade and Global Robotics Art Festival (GRAF) will be on Saturday October 25, 2014 with a Halloween RoboParade theme. The event will be held at Macomb Community College.

---
Lawrence Tech University / Robofest / M219 21000 W. Ten Mile, Southfield, MI 48075
CJ Chung, Professor, Director, chung@ltu.edu
Faith Chu, Robofest Coordinator, fchu@ltu.edu(248) 204-3568
Christopher Cartwright, Associate Professor, Program Manager, ccartwrig@ltu.edu
Teri Dubois, Associate Coordinator, tdubois@ltu.edu
Kathleen Hadley, Assistant Coordinator, khadley@ltu.edu
Chris Parker, Program Assistant, cparker@ltu.edu
http://www.robofest.net http://facebook.com/robofest

 

Yeah I officially live in Dearborn Hts, near Outer Drive and Campbell but I have been teaching English in Harbin, China for the last 7 years and only get back there every couple summers. Would love to attend the competition though.

I think I ran a 10k out there at Outer Drive and Ann Arbor Trail one time. 

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. 

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.

Maybe these patents could prove of some use:

https://www.google.com/patents/US3465840
https://www.google.com/patents/US3373832
https://www.google.com/patents/US3124007

basile

P.S.: I can't wait to see it rolling around.