Let's Make Robots!

Lollypod

chench's picture

Hi guys,

Thought it was about time I posted, this is actually my second robot. My first can be seen in some of the pics beside Lollypod. It used an 18x project board with SRF05 (now robbed for Lollypod) to work the three servo hexapod design. It worked pretty well but the frame was a bit too flexible which threw off the gait, plus I was using mismatched servos. Anyway it got my programming started and I may rebuild it at some point.

After that, I went ahead and ordered a load of dirt-cheap micro servos for a more advanced prototype :) . I wanted to spend as little as possible on materials so I went for lolly sticks as my sister gets through about one a day. They're a pretty good shape and size for robot parts. Apart from that it used some thin aluminium sheet and random screws and bolts.

3684747411_82f58b5ae1.jpg?v=03684746365_6d1a67b7ea.jpg?v=0NeckJaws3684729545_bbfd4be5ec.jpg?v=0

More to come! 

 

 

 


Update 13/7

 



Done a good bit of work on Lollypod and it's changed a good bit! I'll start with the legs. Originally I was using an aluminium bracket to join the two servos of each leg together. This wasn't ideal because

 

  •  It meant the two servos were offset, making the leg less compact and meaning it needed more clearance to get a decent range of movement.
  • I didn't have enough tiny screws to attach the servo arms to the bracket.
  • I wanted to play with polymorph.

 

So instead I got ahold of some polymorph and started figuring out how to make this tricky part. At first I wanted to make the servo output shaft fit straight into the polymorph and eliminate the servo arms, but unfortunately the polymorph just didn't mould well enough to give a tight fit and the shaft could easily slip. So instead I made the polymorph fit around the servo arms which allowed me to have a tight fit to the servos while also keeping the legs nice and compact. This did mean I had to use longer screws in the servo shafts but this wasn't a major problem. The brackets were made by cutting out a shape from a sheet of polymorph, drilling holes in the right places and folding it 90º along a score in the polymorph.The servo arms were then screwed temporarily in place while the bracket was heated and more polymorph was added, keying the servo arms in place and giving reinforcement. 

Old bracket:

Old bracket

New bracket cut out, drilled and folded:

3717384704_811c837a71.jpg?v=0 

 

And finished.

3717499976_8eab109519.jpg?v=0 

 

Here's the leg put together.

3716563459_73656eb48a.jpg?v=0

3717375268_8dbb3eb655.jpg?v=0

These leg brackets were the hardest part to make. I also had to change the body to give the legs some more clearance and make room for the servo controller. It's a plywood board which the servos and electronics bolt to. 15 servos make for a lot of cable!

3717308702_248ee1cf71.jpg?v=0

 The servos I'm using are happy at 5V so I connected both the logic and servo supplies to my voltage regulator. Here's the terminal block showing the connections.

3717364338_b959cf1b42.jpg?v=0

And here's the power wiring. I'm using a bigger battery than the one I had before simply because it had the right connector, but I might switch to the previous one to save on weight (44.4g vs 85.2g).

3716553883_93f2b2d838.jpg?v=0

Now I need to get the front legs done and the mechanics will be complete. I'm going to do them slightly differently as I want to allow for a an extra servo per leg.

3716549603_7bf30aa49f.jpg?v=0 

 

 


Update 14/7

 

 


Bit more about the brackets. I'm finished making them all now so I couldn't get any step-by-step photos, so I did some quick drawings instead. It's probably easier to see than the white plastic anyway.

 

So I started by cutting out the polymorph sheet to the right shape. I worked out the shape by looking at the distance needed for clearance by each servo in each direction. I also added an offset which brought the outer servo forward to be in line with the inner, making the leg more compact. Basically, this makes up for the output shaft being around the middle of the servo when seen from below, and yet at the end of the servo when seen from the side. Here's a photo showing the offset.

3720919622_c13712706a.jpg?v=0 

And the range of movement I get from the outer servo.

3720868878_4bdf418ed7.jpg?v=03720880102_f3f56a6059.jpg?v=0

Here's the template I used to cut the bracket from the polymorph sheet.

3720092073_a1881b58f8.jpg?v=0 

The long parts coming off were used to wrap around the servo arms, but in the end it was easier to just form a new lump around them instead so I stopped using them. Once this shape was cut out, I scored along where it needed to be folded.

3720114169_617c608536.jpg?v=0 

And then made the fold. Which way it was folded depended on which side of the robot the leg was destined for.

3720115605_bdf75b76b9.jpg?v=0

The next pic is just the bracket at the same stage, but turned over for a better look.

3720928798_428c85b2c8.jpg?v=0 

Next the servo arms are put on temporarily. These are hatched in red in the pic.

3720109767_7e01738811.jpg?v=0 

And finally extra polymorph was added to key in the servo arms, and reinforce the fold. This is blue in the pic.

3720925114_332e23669a.jpg?v=0 

The servo arms are actually kept on by the screws through the polymorph, them and the servo shaft. If the screws are taken out they slip out from under the polymorph. Hope this was helpful. 

 

 


Update 16/7

 

 


 Okay I have the mechanics pretty much done. The two front legs got bolted on yesterday and then I spent some time playing with the code. I wanted it to be pretty flexible, ideally letting me alter variables, eg. body height and tilt, independently while walking. The SD21 servo controller makes this a bit easier as it has three sets of registers for the position of each servo, which can be used independantly by different parts of the code. I also drilled some extra holes in the legs to allow adjustment. Anyway heres some pics.

 

3726546687_b887f68d14.jpg?v=03727321996_2072340368.jpg?v=0

3726539743_50451b6630.jpg?v=0

3726535489_299894ca0a.jpg?v=0

3726528033_9543872434_b.jpg 

 

 

 

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
chench's picture

Thanks for the comments guys. Actually the leg slippage is necessary when using 2 DOF legs, otherwise the servos would tear the legs off :).

While these legs do okay when the load is shared between all six, they aren't really up to walking - the polymorph brackets are too flexible, amongst other things. So I'm going to redesign them for 3DOF. I'll continue to use Lollypod and figure out how to add some sensors while I get the new leg parts made.

Simon Z's picture
Looks like you've forgotten that there is basically no grip at the end of a lolly stick :) slippery. But you're robot just looks awesome. Looking forward to see it walk.
noise0's picture

RESPECT !!!!!!!!

12 servo for locomotion is a lot of stuff, woody legs are the perfect touch, polymorph joints....

this is a serious 5 stars walker

Prettybird's picture
  Good for going green and recycling. Wonder's if it can  carry it's own weight in batterys. Bird has high respect for basement engineering.
TotoroYamada's picture
Yes, finally a video! Looks great, can't wait to see it walking!!
chench's picture

Hi Totoro,

You use the speed registers in the same way, just by writing to the speed registers.

 

'defining speeds

 for b0 = 3 to 57 step 3

  writei2c b0, (speed)

 next b0

 Here I've just written the variable 'speed' to the registers which correspond to the speed of each servo.

 

TotoroYamada's picture

Oh ok, that's indeed really easy! I thought that it was some kind of parameter to pass to the function, like "writei2c b0, (offset), (speed)" but in fact you just set the speed you want for each servo and it keeps it until you decide to change...

 

That's really cool!

chench's picture

Hi emuller, no walking just yet as I have the front two legs to finish off. I've got it standing on its current four legs though. Regarding the brackets, yup they're the tricky part, I'm going to add a bit more info about them.

I'm not quite sure which angle you mean - maybe the one between the inner part of the legs and vertical? This is really dictated by how high I want the body to be held, and the relative lengths of the inner and outer leg segments.

The outer leg part is held at a constant angle (approx 60º) to the vertical by the upper lollystick in the inner leg.

Totoro -

I've not really done much with the SD21 yet other than go through the servos and get them centered. I wrote a test program as well just to scan one of the legs back and forth and up and down - it's pretty easy to get smooth movements using the servo speed registers. 

TotoroYamada's picture

"it's pretty easy to get smooth movements using the servo speed registers."

How do you use those registers? The only example of code they give is :

symbol Servo1 = 63 ' servo 1 base register
symbol Servo1p = 84 ' servo 1 positive offset register
symbol Servo1n = 105 ' servo 1 negative offset register
symbol Base = 128 ' centre position symbol Offset = 50 ' +/- 50 from centre position

ProgStart:
    i2cslave $c2, i2cslow, i2cbyte ' setup i2c port for servo controller
    writei2c Servo1, (Base)
Loop:
    writei2c Servo1p, (Offset)
    pause 300
    writei2c Servo1n, (Offset)
    pause 300
    goto Loop

but this code uses the second set of registers which seems to have no influence on the speed...

(and did you get my e-mail?)

TotoroYamada's picture

18x and sd21 controller? That's a really close set up to the big project i have in my mind! (really really close)

I'll sure come back to you for some advices!

Good work, i'm waiting for a video...