Wobble Bot

Posted on 06/04/2013 by jerz
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.

    This is WobbleBot, my attempt at a two-wheeled self-balancing robot. Using Pololus' Baby Orangutan-B 328 to control the micro gearmotors. Although the bot is not very stable yet, it uses PID with a Kalman filter to do what it does. The Ultrasonic sensor will be implemented when it is on a stable platform. The code is working properly but the motors just aren't fast enough. The current motors are 120RPM, and the ones I'll be installing are 290RPM, so it should help a lot. I also ...


Wobble Bot

    This is WobbleBot, my attempt at a two-wheeled self-balancing robot. Using Pololus' Baby Orangutan-B 328 to control the micro gearmotors. Although the bot is not very stable yet, it uses PID with a Kalman filter to do what it does. The Ultrasonic sensor will be implemented when it is on a stable platform. The code is working properly but the motors just aren't fast enough. The current motors are 120RPM, and the ones I'll be installing are 290RPM, so it should help a lot. I also have some larger wheels I could use if the motors still aren't fast enough. After the surgery, I'll need to recalibrate the PID and hopefully it will be on to the next step. :D

    This robot is based on an inverted pendulum design, where the weight of the batteries mounted in it's head actually help it balance better. Think of balancing a broom in your hand, the mass at the top makes it easier for you to move your hand under it to maintain balance. To control the motors it uses data from an accelerometer and a gyro mixed in what is called a Kalman filter, which basically measures a noisy signal over a specific amount of time and estimates what the signal actually should be, to feed a clean signal into a PID algorithm to tell the motors how fast they need to go to make everything balance out. I'm using Pololus' Baby Orangutan-B 328 as a controller because it is small, has a built it motor driver, and I already had one laying around waiting for a project with 2 DC motors. :P The Baby-Os' 20mHz clock speed is a little funky with the standard arduino library and I hope to work around that in the future, but I think as long as all of the equations are using the same time reference it shouldn't be a problem.

    Here are some pics of the robot so far, I didn't get any of the inside of the motor/sensor bay, but will when I swap out the motors.

   

         Side showing jaw "bumper" to protect ultrasonic sensor                             Some of the wiring for the Baby Orangutan board

 

 

   

                    Top view showing the battery holder                                                 The bracket for the ultrasonic sensor mount

 

These are some great resources if you are interested in a similar project:

PID control

PID without PHD

Kalman vs Complementary Filter

 

Thanks for stopping by, I'll post pics of the motor swap and the sensor bay when I tear it all apart again :P

Video coming soon as well.

 

 

 

 

Tries not to fall over.

  • Actuators / output devices: (2) 6v Micro gearmotors
  • Control method: autonomous, maybe implement human control in the future?
  • CPU: Baby Orangutan-B 328
  • Power source: (6) NiMH 2300 mAh AA's
  • Programming language: C++
  • Sensors / input devices: SRF04 Ultrasonic, ADXL345 Accelerometer, L3GD20 Gyroscope
  • Target environment: indoor
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