PDA

View Full Version : Towards a body-worn wireless arm controller



Adrenalynn
12-22-2008, 11:42 PM
I've been chatting for awhile about getting an XBee-based wireless arm controller that is entirely body-worn (even under clothing) going for a project I'm working on. This is still a WIP - I'll update as I go here. The body-worn portion is all machined and really just waiting for the wire-organization and harness.

The video linked here represents an Arduino, XBee, and Interface Board with two potentiometers sending packetized control data to the servo controller over XBee Coordinator/Router interface, which is then driving a stripped-down and modified CrustCrawler arm. The box on the front is a place-holder waiting on the finished box.

The robot-side is driven by a home-brew solution. I had boards built for the XBee, but I got the latest XBee Shield sent to me, and it was just too trick not to use...

This is a competition system, so any heavy details will be shared in March (with a complete "build your own" expose), but in the meantime questions will be answered here or in PM on a case-by-case.

Without further adieu:

http://www.jlrdesigns.com/bio-take-4.wmv (http://www.jlrdesigns.com/bio-take-4.wmv)


.

darkback2
12-22-2008, 11:52 PM
looks like a sweet bunch of work. You obviously have a lot more patience than I do...Can't wait to see the rest.

DB

jes1510
12-23-2008, 12:14 AM
Interesting. I was hoping to actually see the wearable bit but this is pretty cool. I am definitely impressed with the junction box bucket ;)

Adrenalynn
12-23-2008, 12:18 AM
Meh - place-holder. Wait until you see the finished bucket.

I'm hoping in the next day or two to have the body-worn bit done. It's surprisingly simple. I just finished machining a spring-steel and acrylic board mount for the body wearable segment. Not sure if it'll be work on the arm like an mp3 player when you're exercising, or on the belt. But this should work either way.

Who was the maroon that decided a 3 hole board mounting on the Arduinos was a good idea? I'd like to meet that person in a dark alley... ;)

Photo:

jes1510
12-23-2008, 01:00 AM
Who was the maroon that decided a 3 hole board mounting on the Arduinos was a good idea? I'd like to meet that person in a dark alley... ;)

Photo:

You and me both sister. It's probably the same guy that spaced the connectors just right to not fit anything.

Adrenalynn
12-23-2008, 01:21 AM
Oh yeah, that guy. That's like a serious knee-capping offense right there. What kind of lunacy prompted that bit of brain surgery?!?!

Here's an early test-fitting. Obviously this is a crude test held together with ace-bandage, but believe it or not - it's functional... I'm a little embarassed to post this because it is so early and crude... But, hey, baby-steps, right?

jes1510
12-23-2008, 01:25 AM
Now I'm totally digging it. I assume each joint has a pot. Did you have to use any type of a bearing or does the pot shaft support the load? That looks like a really intuitive way to control an arm.

Adrenalynn
12-23-2008, 01:30 AM
For you, Jes, I'll share high-res photos and descriptions via PM until I can disclose the full build here. [This is one of those case-by-case]

ooops
12-23-2008, 09:04 AM
This is sooooooo cool on so many levels!
I am on the edge of my seat to see the next step.
I appreciate that you can't share everything ... but please share all that you are comfortable with!!!
Great stuff!

4mem8
12-23-2008, 01:10 PM
Real good work Adrenalynn, Now I know this could be a project for my SG-5UT arm, What do you think?

Adrenalynn
12-23-2008, 01:32 PM
Absolutely. This is just a stripped-down SG-5/6

billyzelsnack
12-23-2008, 01:42 PM
http://www.jlrdesigns.com/bio-take-4.wmv (http://www.jlrdesigns.com/bio-take-4.wmv).

Oh man! Your work area is as horribly cluttered as mine! Glad to know I'm not the only one.

Adrenalynn
12-23-2008, 02:07 PM
you should see the whole thing (or maybe you shouldn't) - I clean it between projects, but when I'm 75% done with a big project, as I am now, it becomes a nightmare...

I pop-rivited some velcro straps on the upper arm this morning. Now I just need to build the wiring harness. I'm wearing the arm as I type this and it's surprisingly comfy there, with numbers flying by on the meter... ;)

Adrenalynn
12-23-2008, 02:38 PM
[edit] Doh. I'm an idiot. A pot has three wires. Sigh. ROFL. What an idiot.

[edit again] Oh - I can still save it. I can give them all a common ground plug...

I'm thinking I'll plug the pots into the board with easily released phono-plugs:

[I hate hate hate drilling holes in working circuit-boards that way. Slap them on the light table, mark clean places to drill, and then pray that you don't snap the board... I can't count the number of seemingly well-supported boards that have just decided to snap. If you're going to do it - support the board as best you can (doesn't help having double-length pins hanging down like this one) and use a slow speed with as little pressure as physically possible to let the bit cut) Keep it cool at all costs! Go slow and back off if you "feel funny"...]

darkback2
12-23-2008, 03:17 PM
I love using those. I got a bunch from allelectronics a few years ago and put them almost everywhere. They make things so easy to put in and pull out.

DB

Adrenalynn
12-23-2008, 04:46 PM
OMG - it's actually going to WORK.

The servo response needs to be scaled, and it needs to be reversed, but notice basically no real lag? I'm starting to get jazzed about this now... (The wire in the video is power from the battery to the MCU. The kids will have a NiMH clipped on their pocket or belt. Outside of power, of course, this is entirely wireless to the controller. Woot!) My acceleration code is also working, as is the Khalmann filtering - as you can see, there's basically no noise on the processed signal - it stays right where you put it.

http://www.jlrdesigns.com/wear-bio2.wmv [1.6MB WMV9]

jes1510
12-23-2008, 06:03 PM
That thing is looking nice! Good quick response and it looks like it stops on a dime. I'm digging on the workbench too. I do exactly the same thing. Cleanup is for between projects. Work time is for working on projects. The 2 seldom get mixed in my room.

Adrenalynn
12-23-2008, 06:06 PM
Thanks! Yup, the code seems pretty solid, just needs scaling and inversion. It does indeed stop right where I put it, the video didn't show that well.

>> The 2 seldom get mixed in my room

Yeah, those are about the only things that don't get mixed, folded, spindled, and mutilated in here... ;)

SteamBoat
12-23-2008, 06:26 PM
[I hate hate hate drilling holes in working circuit-boards that way. Slap them on the light table, mark clean places to drill, and then pray that you don't snap the board... I can't count the number of seemingly well-supported boards that have just decided to snap. If you're going to do it - support the board as best you can (doesn't help having double-length pins hanging down like this one) and use a slow speed with as little pressure as physically possible to let the bit cut) Keep it cool at all costs! Go slow and back off if you "feel funny"...]


As I'm sure you've figured out, the problem is that the drill bit is digging in too fast. Once it grabs it's just like trying to push a punch through the circuit-board. One thing that helps is to re-sharpen the drill bit so that it has a lower angle of attack. You might even want to go past the point of flat and retard the angle of attack.


As an attempt to describe it in greater detail...
Take the cutting edge on a drill bit. There are two on a normal bit. Looking from the cutting end, just behind the cutting edge is a surface that tapers back and around the bit. Let's call that the face. When you are drilling that face rests on the material being cut and controls how fast the bit digs in. With a hard material you can have a steep angle. Just a little of the face is enough to lift up the drill bit. With softer material, like wood, you can often get away with the same bit even though the cutting surface can pull pretty fast. The soft material gives way and doesn't split. Not to mention it's soft and doesn't really pull that hard. With something that's brittle, like a circuit-board, you really need to slow things down. You do that by increasing the amount of weight/force on the face. By lowering the angle of attack it slows down. With something like a circuit-board or Plexiglas you might even shape the tip of the bit so that the face extends beyond the cutting edge a little bit. The material in the circuit-board gives just a little and lets the cutting edge remove material. However the face is pushing up and not allowing the bit to pull itself through. The control goes to the person/machine running the drill instead.

I've never found bits for sale that were specially sharpened for this purpose.
Here is an article on how to do it yourself: http://www.woodcraft.com/articles.aspx?articleid=267 (http://www.woodcraft.com/articles.aspx?articleid=267)
In the article it mentions a "handyman's adjustable protractor". There are actually special guages that help a lot.
It also says: "The resulting clearance angle is not critical as long as it is approximate 8 to 12 degrees." This is the angle I'm talking about. It should be pretty shallow or even inverse for circuit-boards and the like.

MArk B.

Adrenalynn
12-23-2008, 06:33 PM
Thanks for the pointers, Mark! Great info!

I've taken to hand-drilling [that's turning with the fingers] anything I'm super worried about with a diamond dremel engraver. Takes a little longer, but it seems to work wonders.

An engraver in a powerful rotary tool that can be run really slow seems to work too, but it's too much trouble for me.

I'll have to try retarding the attack on the bit. Thanks again!

Adrenalynn
12-25-2008, 06:23 PM
Worst part about it being XMas - no one to call and share this video (http://www.jlrdesigns.com/wearbio3.wmv) with...

Skynet's babysteps and no one [else] to see them... ;)

jes1510
12-25-2008, 07:49 PM
This thing must be put down before it grows too strong. Do it for the human race!

(seriously it's looking way awesome now)

gdubb2
12-25-2008, 07:55 PM
Some of us are watchin'... very nicely done..

Adrenalynn
12-25-2008, 07:57 PM
Thanks! When I put it on my sweat-shirt was bunched, and it slipped down too far limiting the range of motion. I'll probably do an upper stabilizing strap with velcro down to the arm.

The gravity compensation code is working great with the strain gauges. I'm running out of program space on the 168 between the gravity compensation, Kalman-Bucy filters, and misc. code. That program memory goes pretty quick. ;)

darkback2
12-25-2008, 10:51 PM
Really cool...

Any reason why lowering the forearm raised the robots arm? Was that because the base of the arm was meant to represent the shoulder thus the middle joint is the elbow?

I guess it would be easy enough to reverse if you wanted.

DB

4mem8
12-25-2008, 11:23 PM
I was wondering the same thing Darkback2, Adrenalynn will no doubt answer this soon. great work Adrenalynn, looks pretty damn cool. So what are you going to do about code space? What is your arm finally going to be used for? Controlling a robotic arm? or something else.

Adrenalynn
12-26-2008, 12:43 AM
Heya, DB -

There's some method to that madness, but I've flopped back and forth.

Before the event begins (before the judge says "Go!"), the robot can't change size nor shape - post measurement. It's easier to bend the arm tightly and keep that box tucked-up all the way inside the frame.

Second - when I "reach out" - I'm more comfortable having the 'bot "reach out".

Until I finish it, then tear it apart, and have the kids build it, and begin practicing with it, I won't be sure what works best for them. You are correct that it's fairly trivial to change the direction of travel.

After all the complex math for gravity and smoothing is complete, the final scaling comes into play, and it's pretty trivial. Basically it looks like this right now: [(from_filter - pot_minimum) * (servo_max - servo_min) / (pot_max - pot_min) + servo_min]

As you can see from that equation, inverting the output would be pretty simple algebra, and I've done it several times anyway, playing with it both ways. ;)

Thanks for your thoughtful comments!

Adrenalynn
12-26-2008, 12:45 AM
4mem - it's main design intention is to be used with the arm you see it controlling (although the box is a bunch different than the blue electrical box place holder - I'm going to keep that design close to the vest for the moment...). It's intended for a middle-school competition that involves picking up stacks of coins, golf balls, Legos, and C-Cell batteries, and depositing them into two different sized bins, depending upon the contents.

What will I do about code-space? Optimize as much as I can, then stop writing code. That's how you know it's done, right? When you run out of processing cycles or memory? ;) I just have one more sensor to add - a flex resistor for the bin's actuators. I think I have enough code-space left for that. It's a pretty complex sensor to "get right" though, and if I run out, I'll just add another processor to the mix. It's not like I have any shortage of small AVR's around here... ;)

Adrenalynn
12-26-2008, 12:56 AM
Now comes the unenviable task of wire-organization and figuring out the wiring harness. No switches, fuses, power supplies, etc are featured in this shot.

Power-wise, we'll have 9.6v, 7.2v, 6.2v, 5v, 3.14159v, and 2.80v busses on this 'bot. [ouch]

jes1510
12-26-2008, 01:02 AM
Now comes the unenviable task of wire-organization and figuring out the wiring harness. No switches, fuses, power supplies, etc are featured in this shot.

Power-wise, we'll have 9.6v, 7.2v, 6.2v, 5v, 3.14159v, and 2.80v busses on this 'bot. [ouch]

Out of curiosity, what is the pi voltage for?

Adrenalynn
12-26-2008, 01:22 AM
It's running the XBee on the 'Bot. I was going to use the 2.8v supply that I needed for another super-secret processor, but the XBee got flakey with the 2.794v supply.

robologist
12-26-2008, 04:30 AM
This is an awesome interface. I've got to try building one, though not sure what robot to control, maybe some arm I haven't built yet.

Adren, you mentioned strain guages in one post, what ones, where from, do you prefer? Do they typically have an interface amp of sorts?

Gravity compensation?

Lotsa complexities to take care of on what you are building, looks like great progress. :D

Adrenalynn
12-26-2008, 04:52 AM
Thanks!

I was hoping no one would ask that question - and I thought about editing to remove the statement earlier. They're prototypes that failed their application acceptance - I couldn't get them again if I wanted to, I'd imagine. I know someone working on a next-gen Mars Rover, and their company ordered several different thin film piezo crystal strain cells. I've been playing with hacking their garbage into analog servos. Yes - you guessed correctly - you need an OpAmp to give you workable signal range, and, ideally, a conditioner as well as a divider. I'm using a couple LM324's, one for the flex resistors and one for the piezo's. The LM324 is, of course, a fast quad opamp, so I _could_ just use one, but one's on the body, the other is on the 'bot (strain vs end input device). For conditioning, I'm using the 1B31 (For most applications, I'd expect either the OpAmp OR the Conditioner would be adequate, with a divider - these devices are a little "different")

My gravity compensation is a function of strain. Ideally, as you add mass the characteristics of the lift/drop should change. In my case, lifting legos is very different than lifting c-cells - more force should be evenly exerted on the latter versus the former, and the former needs to decelerate rather than slam to a stop, otherwise you're throwing things. The ultimate ideal is a constantly variable change in the behavior of the chain leading to the end effector based on what's being lifted.

IMHO, hardware can frequently be hacked together out of whatever junk is laying around - and then software/firmware tweaked to make it behave like something a lot more than it is.



It's stunning to me that a couple dollar microcontroller has the horsepower that it does these days. The Kalman-based LQE filtering work that we typically do is identical to the lunar shot trajectory calculations. Back in, what, 1961, they were making these calculations on rooms full of computers and spending months and months building static lookup tables so they could get close to realtime performance (hours instead of months). Now we toss a four dollar microcontroller on a hobby robot and can do (effectively) the same calculations ninety times a second... [boggle] We as hobbyists (generally) have not even begun to touch the horsepower we're embedding in these bots, IMHO...

4mem8
12-26-2008, 05:19 AM
Now comes the unenviable task of wire-organization and figuring out the wiring harness. No switches, fuses, power supplies, etc are featured in this shot.

Power-wise, we'll have 9.6v, 7.2v, 6.2v, 5v, 3.14159v, and 2.80v busses on this 'bot. [ouch]

An interesting amount of Power supplies you have there. What are the last two being used for? CPU's?.

4mem8
12-26-2008, 05:24 AM
4mem - it's main design intention is to be used with the arm you see it controlling (although the box is a bunch different than the blue electrical box place holder - I'm going to keep that design close to the vest for the moment...). It's intended for a middle-school competition that involves picking up stacks of coins, golf balls, Legos, and C-Cell batteries, and depositing them into two different sized bins, depending upon the contents.

What will I do about code-space? Optimize as much as I can, then stop writing code. That's how you know it's done, right? When you run out of processing cycles or memory? ;) I just have one more sensor to add - a flex resistor for the bin's actuators. I think I have enough code-space left for that. It's a pretty complex sensor to "get right" though, and if I run out, I'll just add another processor to the mix. It's not like I have any shortage of small AVR's around here... ;)

Thanks for the explanation, great project Adrenalynn, and a lot of work. Thanks for the reply.

Adrenalynn
12-26-2008, 12:36 PM
An interesting amount of Power supplies you have there. What are the last two being used for? CPU's?.

The 3.14 goes to the XBee on the robot-side. The 2.8 energizes the thin-film stress sensors, which are *really* voltage-sensitive, their operating range is teeny.

4mem8
12-26-2008, 01:01 PM
Cool, so are you using [Build your own] LM series regs for the different voltages or ubecs?.

Adrenalynn
12-26-2008, 01:14 PM
The switching BEC is only for the Servos @ 6.2v. The logic is regulated down with LM317T's, home-brew. I like running components in the dead-center of their range as close as I can given tolerances, and the 317T is very easy to work with. ;)

Adrenalynn
01-06-2009, 07:41 PM
Been working this last weekend on the 'bot side of the equation, trying to tame the cable nightmare and get everything mounted-up - so that I can break it down again and turn it into a "kit" for the kids to build...

The box that will replace the one on the front is being designed by a friend of mine, so I'm just waiting on it so I can code-up the flex resistor control of it's "doors".

The two lighted power switches are for motor/ESC power on top, logic and servo power on the bottom. They can be independantly powered, so you can work on the logic side without risk of the 'bot getting crazy and running away from you...

lnxfergy
01-06-2009, 07:47 PM
OK, where did the Trossen Robotics stickers on the side of the arm come from? Where can I get some of those! They'd be small enough to fit on my fire fighting robot for Trinity next year.

Oh, and that thing is quite awesome.

-Fergs

Adrenalynn
01-06-2009, 08:11 PM
PM - and thanks!

jes1510
01-06-2009, 10:13 PM
Wow she's shaping up nicely!

Adrenalynn
01-07-2009, 12:36 AM
Thanks!

My wires keep seeming to grow exponentially though. They're breeding like bacteria in a warm swamp... [Sigh]

Every time I think I have a harness together, I find another handful that aren't connected to anything. ;)

ooops
01-07-2009, 07:41 AM
Hey that does look great!!!
Once you get your wires under control, will there be a new video of that little guy running around fetching up stuff?:)
Stickers are cool too. Hmmm, I keep missing the cool custom sticker page when ordering from the Trossen store.
You have got a lot of neat items fitted on a small package great job of getting it all together!!!

Adrenalynn
01-07-2009, 10:18 AM
Thanks! Yeah, there's always more videos. ;)

I've got the motor power side all together, and I think I've tamed the logic and servo side, have other work to do today, but hopefully by late tonight.

I'm still waiting on the real box to come back from my friend, so "running around grabbing" it awaiting that.

lildreamer
01-07-2009, 11:02 AM
nice clean wiring system - two thumbs up Adrenalynn- makes for easy break out and resolving problems
noticed your power supply - all I see is two power packs, is there three - two for motors and one for logics or one for logics one for both motors?
whats the indivdual cell's ratings?

Adrenalynn
01-07-2009, 04:22 PM
Thanks! It has two batteries, both high-amperage (4500mAh) NiMH, 7.2v R/C batteries. One is dedicated to the motors and motor controller running through a big 12v switch, the other goes through the logic/servo power switch and then splits out to various regulators to step down to the appropriate power. 7.2v to the SSC32's logic regulator, 7.2v in/6.2v out to the servo power side of the SSC32 through a Castle Linear BEC, 3.14159v to the XBee and its support circuitry, 2.8v to another super-secret processor (TBD), ... I think that's it...

On the arm controller side, a 9.6v R/C battery feeds the regulators for the Arduino, XBee, and potentiometers. That battery is in a project box with a belt-clip made from spring steel - and it's also fused @ 2.5A since it's body-worn and a short circuit in a 3800mAh 9.6v NiMH clipped on a kid's belt would be hideously ugly. :eek::sad:

Some other safety factors were considered where kids would be working on and with this device. There's a small switch on the SSC32 to kill power to the servos independantly of all onboard logic. The motors and logic are switched independantly so that they can work on the logic/programming/etc without having the potential to have the bot go berserk. As it's limited [programmed in the motor controller] right now it will move 37"/sec and reach that 2+mph top-speed in just over 0.5 sec. At 9.6v with the limiter off it's able to reach speeds in excess of 7mph.

There'll be a razor-sharp blade on the front of the new box to slide underneath the coins it has to pick up, so you can imagine a robot screaming around the floor at 7mph wielding a 4" long razor knife... Running on virtually unstoppable tank tracks... It's like a bad dream.

Total master power will go through a big key switch with removable key - unless I can finish-up quick, in which case it will be RFID instead. ;)

It may look pretty unassuming, but a lot of thought went into realizing the kid's vision in a reasonably controlled manner. (They envisioned what they felt would be the best way to complete the event, and then I took their brainstorming tried to turn it into reality. When I'm done, I'll disassemble the majority of it, put it in plastic baggies, write assembly instructions, and give the "kit" back to the kids.)

So - that's the long-winded run-down. ;)

Oh - sorry! The cells are 1.2v/4500mAh NiMH by Tenergy. In fact, Tyberius just found AWESOME sourcing on those, so the second one [identical to the one I already had from last year] is from Trossen: http://www.trossenrobotics.com/store/p/5918-NiMH-Rechargable-Battery-7-2v-4500mAh.aspx

IMHO, you'll be hard-pressed to find those batteries for less money, and if you want NiMH, there's only one brand I'd consider - it's Tenergy all the way. Real true super-fast charging competition cells with great life and huge current drain.

ooops
01-07-2009, 04:32 PM
The motors and logic are switched independently so that they can work on the logic/programming/etc without having the potential to have the bot go berserk.

If only there was a switch like that for kids!!!

Very well thought through. Best of luck to the kids and I am extremely confident that one is a winner.

Adrenalynn
01-07-2009, 04:34 PM
Thanks Ooops! For those that didn't see it - here's last year's design in competition:

YouTube - Science Olympiad Robo Cross 2008

Adrenalynn
01-08-2009, 06:18 AM
Close enough... Just waiting on the box for the front, then I can break it down into a kit for the kids. Always hurts to have to disassemble all those loooong hours. ;)

jes1510
01-08-2009, 11:48 AM
Do you have to provide documentation or will you be on hand when they build the kit?

SteamBoat
01-08-2009, 12:28 PM
There'll be a razor-sharp blade on the front of the new box to slide underneath the coins it has to pick up, so you can imagine a robot screaming around the floor at 7mph wielding a 4" long razor knife... Running on virtually unstoppable tank tracks... It's like a bad dream.


I'm sure you've thought of a retractable blade or one that flips up and out of the way or has a cover that can retract. You might even key it so that it will only open when the blade is within an inch or so of the floor.
I'm not sure what kind of blade you've got but this is one I thought of that might work well for your application. Cheep, , easy to find, can be sharpened and is replaceable. Being steel you could mount it with a magnate and quickly remove it when not in operation.
http://www.homedepot.com/webapp/wcs/stores/servlet/ProductDisplay?storeId=10051&langId=-1&catalogId=10053&productId=100191178 (http://www.homedepot.com/webapp/wcs/stores/servlet/ProductDisplay?storeId=10051&langId=-1&catalogId=10053&productId=100191178)

MArk B.

Adrenalynn
01-08-2009, 01:11 PM
Hi Mark,

Thanks for your suggestions! The "blade" is spring steel ground down and sharpened. When the 'bot's not in use, it will have a slide-off cover on the blade. As far as attaching it with a magnet - that's probably not going to work out. A magnet big enough to hold it when it slams into a wall at 3MPH would weigh more than the arm could lift- and everything has to be flush as well. Retractable? I didn't put much thought and effort into that. Reliability being a concern since it's exactly one run for glory or failure. One run and it's done forever. The [certain distance] from floor is probably a good idea too, but I'll let that one go as well given reliability.
Thanks for the link to the blade! Too large for us and cutting it would be an icky nightmare. But if I had thought about those, I'd have probably gone looking for one an appropriately sized one before making this one.

Jes - yup. Documentation is > half done, although I'll be onhand as well.

Thanks guys!

Adrenalynn
01-09-2009, 03:24 PM
The box just came in! (thanks, Steve!)

Needs a little tweaking, but it's close!

ooops
01-09-2009, 03:29 PM
Wow, that is one mean - awesomely evil looking bot!!!
Great job and congrats on the box arriving:)

jes1510
01-09-2009, 03:40 PM
Ok that is seriously awesome. Is that like 8AWG solid copper house wiring you're using for push rods? Clever!

Adrenalynn
01-09-2009, 04:00 PM
Thanks!

Good catch, Jes. That's exactly what it is. Steve wanted me to replace it with real pushrods, but I'm just not seeing a good reason. It's way stronger than it needs to be, and any flex will help keep from breaking anything.

Adrenalynn
01-09-2009, 08:25 PM
The box is mounted and tested here with four C-Cell batteries for weight:

http://www.jlrdesigns.com/new-box1.wmv

ooops
01-09-2009, 08:44 PM
That thing will look like Popeye if it keeps doing those lower arm curls.
Excelent work!!!

jes1510
01-16-2009, 09:32 PM
You should submit this project here:
http://www.libelium.com/tienda/catalog/contest.php