Skip to main content
Topic: tiltOne - a (big) balancing robot (Read 6993 times) previous topic - next topic

tiltOne - a (big) balancing robot

This is actually not going to be a project log, as this robot was my master thesis project 2 years ago, but I wanted to share it and I'll be happy to answer related to its development and the hardware involved.



tiltOne is a two-wheel balancing robot 90cm tall and able to carry up to 50kg of payload. There are lot of small balancing robots around, but size matters, especially when speaking of balancing a unstable system. Most of small robots "shake" around the vertical, with 5-10 degree oscillation, preventing them from falling down. But when size and weight increase, a 10 degree oscillation needs high acceleration (and resulting speed) to be recovered, and the robot will became a *too* dangerous prototype.

The robot estimates its angle with respect to the vertical by data incoming from an accelerometer (LIS344ALH) and a gyroscope (AD- XRS150), both pretty old today (an hardware update is planned in the next months). Wheel speed is acquired too, by two optical encoders attached to motors (two 150W Maxon DC motors).
Knowing its angle, the control software generates an action to keep the robot vertical and stable, or to follow a speed setpoint. Different control algorithms has been developed (classical PIDs, nested controllers, machine learning techniques).
All the software runs on a STM32 based control board and can be configured by a serial RS232 connection as while as a Zigbee wireless link.

The project is briefly described at this page: http://airwiki.ws.dei.polimi.it/index.php/TiltOne . There is a much more detailed description in the thesis linked to that page, but they are written in Italian - I'm sorry for that.

Here a video of the robot running around the lab (driven by a wireless joypad):
http://www.youtube.com/watch?v=V0U4vNpM_z8

and here its reaction to a "moderate" kick:
http://www.youtube.com/watch?v=VASMfKkpK6c

Next step is to donate it a Microsoft Kinect to sense and avoid objects around it and give the robot some consciousness.

Feel free to ask any question, I'm happy to explain every detail about the project. We planned also to make it completely open source, but some hardware and software revision is needed before.

Martino


Re: tiltOne - a (big) balancing robot

Reply #2
Thank you arhi! ;)

Re: tiltOne - a (big) balancing robot

Reply #3
[quote author="tinito"]We planned also to make it completely open source, but some hardware and software revision is needed before.[/quote]
Ian was just saying in his blog that open hardware and software should not wait until it is revised. Opening up what you have now could easily speed up the revision process.

Re: tiltOne - a (big) balancing robot

Reply #4
[quote author="rsdio"]Opening up what you have now could easily speed up the revision process.[/quote]

It is not always the case. I have some projects that I have not opened yet for e.g. because they contain stuff that is not really "open" - such as some 3rd party libs. For e.g. check out what stunts we all have to perform when sharing projects that use MAL - you can't download and compile any project that use for e.g. microchip usb stack but you have to dl the project, dl the MAL, then integrate MAL and project "somehow" and then "pray it will compile" ... then microchip upgrades the MAL and old one is not accessible from nowhere any more and your project don't compile with new one ... releasing such project would not help so you wait to upgrade your project to work with current MAL ... that's just example, I for example have projects that have pieces of them being commercial (from some of mine commercial projects), those pieces have to be rewritten before the project could be put out ... and last but not least, ppl are over-criticizing their source all the time, especially electronics guy's - you do stuff fast & dirty to get it working, then you don't publish it before you refactor it as the original is "ugly" and has no comments :D ... I know most users "don't care" but in reality noone likes to display dirty laundry, no matter that we all have it and we all know what happens when :D and why

Re: tiltOne - a (big) balancing robot

Reply #5
Good points, of course, but what stops you from uploading the project while it works with the current 3rd party libs? It's not like Microchip updates their libraries very frequently. As soon as it does stop working, just update the project description on the site once to say that it no longer compiles with the current build and people are on their own, and then leave it alone. If it's open source, then the users can contribute the effort to keep the source up to date with 3rd party libs.

In other words, just because you can imagine a reason why it might fail doesn't mean that it will fail. Besides, having it open for a while is better than not having it open at all. Plus, as I said, just because there are pieces missing doesn't mean that the open community cannot provide a solution.

Re: tiltOne - a (big) balancing robot

Reply #6
[quote author="rsdio"]Good points, of course, but what stops you from uploading the project while it works with the current 3rd party libs?[/quote]

mchip is not the only 3rd party lib out there :) ... i for e.g. have projects that use 3rd party libs I purchased. I can use them but I can't "share the source" so the project without them is not usable. It's just example... IMHO 90% of delays are caused by "the source looks ugly, I do not want other ppl to c how ugly it is, I will first refactor and beautify the source and then I will share it".

Re: tiltOne - a (big) balancing robot

Reply #7
Yes, purchased third-party libs would be a decent excuse, but it's still possible to release the parts that have not been purchased. When nothing is released, everything must be written from scratch, but if most of the source is released then only the third-party libs need to be recreated.

Back before id Software released the source for Doom, Microsoft licensed the source for their Windows gaming team. Problem is that id Software outsourced the audio, and thus they could not provide it to Microsoft. Easy answer: Microsoft just developed their own audio services rather that put the entire project on the shelf. Unfortunately, the first audio implementation sucked, and the second audio implementation was rewritten after DirectSound was released. The audio might have started out a lot better than the first release if they had the original source, but it would have been rewritten by the end anyway.

Re: tiltOne - a (big) balancing robot

Reply #8
[quote author="rsdio"]
Ian was just saying in his blog that open hardware and software should not wait until it is revised. Opening up what you have now could easily speed up the revision process.[/quote]

I agree, especially when they are hobby-grade project and non big collaboratie project where the code needs to be revised before showing its ugliness to everyone eyes ;) (btw, the current tiltOne code is worst than ugly).

We didn't released the code up to now for two reasons:
- the hardware will be totally different after the summer, it is not a "revision" but a total upgrade, with different architecture and newer sensors, that should go totally open source
- there are not up to date schematics, as it started on a perf board as a "test" and then grown by time.

I hope that next projects will start with good coding and extensive documentation, and being open from the beginning, we have to learn from our experience ;)

 

Re: tiltOne - a (big) balancing robot

Reply #9
[quote author="tinito"]- there are not up to date schematics, as it started on a perf board as a "test" and then grown by time.[/quote]
That's a good point. If you have to do totally new work just to open the current version, then it's not worth it. It's one thing to release files you already have (even ugly source), but another thing to have to create new documents.

I assume that you'll want to document your final schematic, though, just for posterity.