Balancing Robot (Balance1)

Posted on 23/02/2011 by jameswsheridan
Modified on: 13/09/2018
Project
Press to mark as completed
Introduction
This is an automatic import from our previous community platform. Some things can look imperfect.

If you are the original author, please access your User Control Panel and update it.

  HI guys, This is Balance1, my balancing robot, I built balance1 to demonstrate that a digital controller I had designed in MatLab actually worked in the real world.  The controller i ended up using for Balance1 is a digital LQR controller to balance and also stay in the same position. The LQR controller works really well because it uses a weigthing matrix to let you make balancing more important than staying in the same position. This means that if Balance1 is going to fall over ...


Balancing Robot (Balance1)

 

HI guys,

This is Balance1, my balancing robot, I built balance1 to demonstrate that a digital controller I had designed in MatLab actually worked in the real world. 

The controller i ended up using for Balance1 is a digital LQR controller to balance and also stay in the same position. The LQR controller works really well because it uses a weigthing matrix to let you make balancing more important than staying in the same position. This means that if Balance1 is going to fall over then it doesn't worry much about its position it just consentrates on balancing, then when its more balanced it tries to get back to its starting position.

Robot Body:

  • The frame is made from 15mm aluminium angle amd 3mm clear perspex
  • Most of the hardware is held inside black plastic project boxes

Hardware Used:

  • Propeller Platform USB from gadgetgangster.com
  • CHR-6d Inertial Measurement Unit from pololu.com
  • Dual MC33926 Motor Driver Carrier from pololu.com
  • 2 X 12v 30:1 gearhead motor and encoders from maxon.com
  • 2 X 11.1v lipo batteries
  • 2 X Xbee modules and carrier boards from sparkfun.com
  • uM-FPU V3.1 chip from sparkfun.com
  • TextStar serial LCD from cats-whisker.com
  • 40mm 12v cooling fan from ebay.com

Further Work:

  • remote control using Xbee
  • navigate autonomously using sonar or maybe even a camera

Remote Control:

I've been doing a few test on remote controlling Balance1 and there's a new video showing the results so far. I need to do a lot more tests and tuning but it looks promising. Turning is done by adding a value to the PWM for one of the motors and taking the same value away from the PWM of the other motor. At the moment I make it drive back and forward by putting an offset on the balance point. So far I've noticed that it's quite wobblely at low speeds and it seems to get more stable the faster it's moving, I also want to try putting an offset on the velocity the see if it is smoother and more stable that way or maybe even a combination of the two types of offset. Also at the moment I'm using viewport and a USB connection to change the different values which is far from ideal as the USB connection effects how the robot balances so I need to make wireless using Xbee as soon as possible.

Remote Control Using IR Remote working:

Well putting the offset on the velocity instead of the angle worked pretty well and now Balance1 can roam arround controlled by an IR remote, I've uploaded some new videos so you can have a look, the second one shows a possible use for Balance1 what do ye think. Next comes some autonomous roaming and maybe some line following.


Balances on 2 wheels, Remote Controlled

  • Actuators / output devices: 1:30 maxon gearhead motors
  • Control method: autonomous, RC
  • CPU: Parallax Propeller
  • Power source: 2 X 11.1 V/2200 mAh Li-Po
  • Programming language: Spin
  • Sensors / input devices: wheel encoders, CHR-6d Inertial Measurement Unit
  • Target environment: indoor
LikedLike this to see more

Spread the word

Flag this post

Thanks for helping to keep our community civil!


Notify staff privately
It's Spam
This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.

You flagged this as spam. Undo flag.Flag Post