New Project - Two wheeled Self Balancing Robot

Last weekend, I worked on the following project:

This was my first project with a FEZ product. I’m really impressed by the power that Microsoft .NET Micro Famework provides.

-Ahmad

This is awesome! I can use something like this as a “mobile” bookshelf :D.

That is sweet, but why isn’t it on fezzer yet? :whistle:

I have always wanted to see a FEZ balancing robot… very cool. I added 500 experience points :slight_smile:

Awesome!!!

I’m new here, so don’t know how things work, or where they should go. Someone told me that I should put the project on the forums. Don’t know how to share further details yet, but in the evening, I’ll explore more. The shelves, by the way, are for future instrumentation.

-Ahmad

Welcome to the forum! Awesome start!

We have a website called fezzer for users to share code. But do not add your project there yet. Why? Because we are now integrating it with this website. So wait till tomorrow please.

Cool, put it on fezzer.com!

How does it react when you manually tilt it to a more aggressive angle? Is it overreacting or is able to regain his balance?

WOW! This project is awesome. Thanks for sharing.

Great Project! :clap:

Not only Fezzer.com that you can post your code,
but also there is a WiKi page available for us to post our project.

[url]microframeworkprojects.com

If you’re not familiar of how to post the WiKi Project,
here is the page that shows you how:

[url]microframeworkprojects.com

ah, the wiki…that is going to be moved too :slight_smile: I think tomorrow

Wiki and Fezzer?! :o That is some radical change! Can’t wait to see what you guys will come up with. :think:

Veerry, nice! What sort of control loop did you use, PID?

+1

Thanks everyone for the encouragement.

If you might have noticed in the text flying by at the end, I’m only using proportional controller right now, not a PID controller. Because of that, it stabilizes, but not resilient to large external disturbances. If I push it too hard, for example, the resultant oscillations make the system unstable, and it falls down.

Another thing is that I’m using an infrared proximity sensor, without any filters. Its response is highly non-linear. It would be better two use a set of two sensors, one on either side, and control on the difference between these sensors. Adding filters would help too. Also, the response is dependent upon surface that it’s moving on. I do plan to move to an IMU (Inertia Measurement Unit using MEMS devices - Accelerometer + Gyroscope) later on.

As for the mechanical platform, that needs to be improved too. Currently, the gearheads have considerable backlash because I used cheap motors. Using better motors will help stability. There is enough power available, but making the wheels larger to get a faster response will improve the control. I used the wheels from my toy metal construction set, which are too small. The setup is quite heavy. I’m thinking of using a LiPo battery instead of 2x Lantern batteries for motor drive to reduce the weight.

Next weekend, I’ll put in PID controller. That will definitely make the control better by reducing overshoots, thereby improving stability. I spent only a few hours making the robot (not in one sitting, though), and the software was put together in just half an hour or so. Now that I have a platform, I’ll try different things out. This effort was just to see if the control can be implemented using Microsoft’s .NET Micro Framework. A lot of people had expressed concerns that it might not be doable, on account of computational overhead because of the powerful software libraries it is providing. Well, that proved to be not quite right, and it is doable, as you can see.

I’ll wait until tomorrow to post other details when different websites are merge together. There’s not much to report right now anyway, since the software is really simple. But hopefully, it will grow with time. I can write on the hardware/mechanical setup, though.