My latest project: Balaning Robot

Hi guys, just wanted to show you what I have been working on recently:

It’s not completely finished yet, but I will make a blog post and a new video describing the project in details when I’m finished.

The ultimate goal is to control it with my PS3 Controller via Bluetooth, using the class I wrote (


Great with +1 if you show a video with you pushing the robot but it still balances itself. Maybe even tie a string and pull the robot.

Very cool!

Looking forward to hearing about the components that you used in this.

Hmm might try that, just to get you convinced Gus :slight_smile:
I just bought some new wheels, to see if it will help it balance. Also I haven’t implemented the encoders in the PID loop - that will also help it stay balanced. Luckily christmas is just around the corner. I foresee many sleepless nights in the future.

Thanks. Hopefully I’ll be finished in the beginning of the new year. But I also talk some basic theory and concepts for balancing robots.

  • Lauszus

This is cool! Now you need to teach it to bring you a beer :smiley:

Haha, my Uncle wrote the exact same thing by email :slight_smile:
So you will get the same answer: I got other robots for that my friend ;D

By the way. Have you seen this one.

Nice job!

Love it! 8)

No I haven’t seen that one before. Actually I have been planning to build a balancing robot even before I got to work with FEZ devices.
The hardest part is to make it stable on a hard surface like wood. It is much easier to make it balance on a carpet. If you listen to the video, you can also hear that it struggles a bit more to be stable on the wooden floor (the backlash from the motors make louder “clicking” sounds").

#ianlee74 and #Robert Jacobs
Thanks a lot :slight_smile:

Why do you think it matters regarding the floor type? Is it a traction problem with your wheels? Is the hard wood allowing too much friction and therefore it responds too quickly?

What are you using to balance with? Accelerometer?

A carpet “helps” it balance. That’s the reason why the segway has so big tires filled with air. It’s much easier when they are soft than hard. It’s the same thing with the floor. If the surface is hard the robot can easily start to travel in one direction, but if it’s on a soft surface, like a carpet, this will prevent any changes from happening and therefore it’s easier to stay balanced. Did that make sense to you? :smiley:

I use this IMU: and then calculate the angle using a Kalman filter. You might have seen my post at the Arduino forum:,58048.0.html

And finally I use a PID loop to keep it balanced.

I think we said the same thing :slight_smile:

So, is it running on Arduino or NETMF?

Yeah sort of. It’s more lack of friction on the wooden floor that makes it harder to balance.
I just ordered some new wheels. Which are both bigger, softer and got more friction. It will be interesting to see if it makes any difference :slight_smile:

It runs entirely on NETMF. If you look at the video I use a FEZ Rhino. The board which flashes red and green is the motorcontroller and the IMU is mounted between the motors. The Xbee is only for debugging and adjusting the PID control (I made a sketch in Processing that allow me to control the three PID parameters and adjust the target angle wirelessly).