.net, 3d Printing, Making, Raspberry Pi 3, Robotics

3d printed robotic hand – Part #5, attaching the servos to fingers

Last time in this series, I verified that a servo would be a better way to control finger movement than using a solenoid. Since then:

  • I’ve been re-developing the base of the palm to hold servos, and
  • I’ve been researching how to control 4 servos using a single device, such as a Raspberry Pi.

Redesigning the palm

In my first attempt at powering the robotic hand, I had tried to fit in 4 bulky solenoids. This time, I’ve been trying to squeeze in four 9g Tower Pro servos. These are significantly smaller and lighter than the solenoids, but they present their own challenge. Whereas the main shaft of the solenoid retracted into its body, the servos control movement using a wiper blade, which sits outside the servo. There must be enough free space for this wiper blade to move freely.

I decided that the best way to do this was to put the servos on their sides, in stacks of two. I positioned the wipers on opposite sides. My current design for the palm is shown below:

  • The four knuckles are at the back of the diagram;
  • The two towers in the middle are to hold the four servos – I intend to secure the servos using a small plastic bar and three threaded bolts.
  • There is plenty of room towards the bottom of the palm to add another servo and mounting point for the thumb – but I’ve not designed this part yet.

screenshot.1463608513

I know It’s a little bit difficult to work out how the part above allows the knuckles to fit, and connects the servos to these fingers. I’ve included a couple of photos below from either side of the printed object which I hope will clear up how the parts connect together.

WP_20160519_19_27_48_Pro

WP_20160519_19_27_55_Pro

There’s two different aspects to address – how all the mechanical parts connected together, and how the electronics and programming worked.

You can see it working so far in the embedded Vine below:

Mechanics

Getting everything on board the palm was pretty tight, as mentioned before. I connected the servo wipers to the fingers by linkages, which were bolted on. This was a very fiddly process. There’s a lot of friction in these linkages too.

Also, the servos are quite strong, but the fingers don’t have very much gripping power. I’m not sure how much I can do about this – the principle of moments is against me here.

For the next version:

  • I’d like to try using bearings to reduce the friction in the rotating parts.
  • I need to find a better way to position the servos to allow more room.
  • I will make the fingers more narrow and rounded – I think that angling the knuckles so that the fingers weren’t just paralled was a good idea, but they clashed slightly when fully clenched shut.

Electronics and Software

I users the Raspberry Pi 3 and the Servo Hat that I researched in a previous post. This needed an external 6v supply to power the 4 servos, and I just used a supply I had in the house which transformed mains down to 6v. The Raspberry Pi and Hat are probably a bit big for any real application of this device – the Pi Zero might be better, although Windows 10 IoT Core isn’t available for this yet.

The other thing is a similar problem to the solenoids – right now, the finger is either extended, or clenched. This is an issue with the software, in that I haven’t programmed it so that I can regulate the speed of the fingers when they’re clenching.

For the next version:

  • I’d like to re-write the software to control the speed of the fingers. This also means that I need some way of inputting what I want the speed to be. Right now I am not sure what that might be…an Xbox controller perhaps?
  • I’ll use 4 x 1.5v batteries instread of the external power supply to make the device more portable.

Summary

This second version of my robotic hand is much better than the first one – it’s a lot lighter, a lot smaller, and I have the ability to actually control the start and position of the fingers using software, rather than use springs to control the tensed and rested positions. I also need to work on the thumb – another good reason to try to make the mechanics a bit more compact.

Next time I’m going to re-design a lot of the 3d-printed parts. I’m a lot more familiar with the tools (like AutoDesk 123d Design), and I’ve learned a lot (from mistakes!) from the first couple of iterations.

 

3d Printing, Making, Taz

How to build a Taz-5 3d printer, Part #9 – building the extruder carriage

Last time, I build the left and right assemblies for the X-axis of my printer. I finished the post saying that I’d look at the electronics and software in the next post – however I’m still waiting for some of the parts to arrive, and I wanted to carry on building and documenting it.

I decided to build the X-axis carriage and extruder – there are a lot of parts to print for this. I had some of these parts printed already because I’d created a extruder previously for a presentation at my work – so that’s why a few of these parts are in different colours.

Building the X-axis carriage

There were 5 parts that I needed to print for this (I’ve linked to the STLs for these parts):

single bearing

carriage mount

carriage supportlower carriage support

After printing out the main extruder support, I inserted two M3 knurled insert nuts into the side, which will allow me to attach the fan support later.

extruder carriage nuts

I also used a soldering iron to insert a bunch of M3 knurled insert nuts into the main X-carriage mount – I’ll use these to connect the other four parts to this mount.

carriage support

I inserted linear bearings into the double and single bearing mounts, and attached these to them to side of the piece shown above. I attached the extruder support to the other side. This allowed me to mount the piece onto the printer’s guide rails.

I also cut the guide rails down to size for the X-axis, so they weren’t protruding beyond the ends of the left and right assemblies.

x-carriage with cut down guide rails

Similarly for the Y-axis, I again cut the guide rails to size.

y-carriage with cut down rails

Adding cooling fans

There’s a couple of cooling fans on the X-axis extruder carriage. One of these can be printed from the plans on the Lulzbot site.

blower

I printed this out, and inserted four M3 knurled insert nuts to the the part so I could bolt on a 50mm computer fan.

hot end fan

The photo below shows this attached to the extruder mount using 2 M3 bolts.

extruder carriage with fan

The second fan is slightly more complex. Lulzbot shows a micro blower attached to their extruder assembly, which cools the Hexagon hot-end. However, this isn’t a 3d-printed part, and I’ve really struggled to find a micro blower (plenty of blowers which are 50mm, but none in the 20mm – 25mm range, which is what I need).

So I decided to solve the problem myself, using a regular 25mm computer fan. I used AutoDesk 123D to design a simple mount, which will direct the air flowing from the fan into a more directed stream. I’ve shown a couple of screenshots from Cura below – the one on the right shows the four mounting points where I can bolt the 25mm x 25mm fan.

When I printed this out, it was easy to bolt to the fan and then attach to the extruder carriage.

extruder carriage with carriage

I put this onto the carriage which I’d already installed – you can see how the printer looks right now in the photo below.

featured image

3d Printing, Making, Taz

Building a 3d printer – Taz-5, Part 8: Building the X-axis

Last time I attached the threaded rod and guide rails for the Z-axis. With these in place, I’m now able to start building the X-axis.

A few notes on this post before I begin:

  1. I ran out of black filament while building this part, so I had to use the yellow filament I’ve been using for my other project.
  2. This was one of the trickiest parts of the project so far. The X-axis involves a few pieces being bolted together, and I had issues with ABS parts shrinking slightly – which meant that holes corresponding to each other on different parts sometimes didn’t line up perfectly.
  3. Because I’m using a regular M8 threaded rod (rather than a very accurate ballscrew) I had to design my own part. I’ve uploaded the AutoDesk 123D files to my GitHub repository.

First things first – I’ll talk about the parts I could print out from existing STL files.

Thingiverse to the rescue

Lulzbot have kindly open-sourced the designs for all the 3d printed parts from the Taz – however, not all of the parts are 3d printed, which means it’s a bit more difficult to build the Taz from scratch. Fortunately, a Thingiverse community member has re-designed and open sourced the left and right parts of the X-axis mounts in a way suitable for 3d printing. They aren’t perfect matches of the Taz-5’s factory parts, which are made from acrylic. If the same 3d shape as the original was printed out, it probably would be too flexible for my machine to work.

The STL of motor mount end of the X-axis is available here.

x-motormount

The STL of the idler end of the X-axis is available here.

X-axis-idler-end

These are both really big parts – each of these parts took my Sintron Prusa i3 about 5 hours to print out. Fortunately they came out ok, with no delamination or noticeable shrinking.

Printing the double bearing holder

Each of the two X-axis ends have a double linear bearing mount – the STL for these is available here, and these fit onto the vertical guide rails. These printed vertically by default – obviously they could be printed in a flatter configuration, but I think printing vertically makes the part stronger, given that the linear bearings will be an interference fit (which means they are slightly larger than the printed part).

In order to attach these to the large end mounts, I used a soldering iron to insert 4 knurled M3 nuts into the mounting holes.

WP_20160314_19_46_19_Pro

I found that printing vertically did give me a slight problem with shrinkage. I found that the holes in the double bearing mount weren’t quite long enough to comfortably line up with the holes. However, it was possible with a bit of careful coaxing.

Redesigning the nut holder for the threaded rod

Each also has a mount to hold the nut for the threaded rod. The parts which have been open sourced by Lulzbot are designed for a ballscrew – and I’ve elected to use a simple M8 threaded rod. I re-designed this part to hold an M8 nut, with a cover which bolts onto this piece and traps the nut in place. I’ve uploaded the AutoDesk 123D designs to my Github repo here.

Using a soldering iron, I fitted 4 M3 knurled insert nuts into the back of the piece, and 3 M5 knurled insert nuts into the bottom of the piece.

WP_20160314_19_45_57_Pro

I then used 3 M5 nuts and washers to attach the cover to the piece, which encloses the M8 nut.

WP_20160314_19_45_50_Pro

I then used 4 M3 nuts to attach the piece to the end mount, through the 4 holes. Obviously the above steps have to be carried out for the left and right sides of the X-axis.

Attaching the parts to the X-axis guide rails

Now that I had two fully assembled parts of the X-axis, I was able to fit these to the existing frame. I had to remove the vertical threaded rod and the guide rails, and then re-insert them with the assembled X-axis end parts. This was a bit tricky – I had to thread the rod through the nut quite a way before it was able to fit into the coupler.

I threaded 2 x 10mm x 600mm guide rails through the holes in the side of the parts, which proved to me that the two parts were aligned well.

I am pretty sure I’m going to have to disassemble this again, so I didn’t tighten up any of the nuts or bolts (actually I’m 100% sure because I need to get the actual print head onto the horizontal guide rails).

WP_20160314_21_30_17_Pro

Attaching the Y-axis and X-axis motors

I decided to get all the motors attached, so I attached the motor for the Y-axis using 4 x M3 nuts (which I made early on in the construction process).

WP_20160314_21_39_50_Pro

And finally for this part, I used another 4 x M3 nuts to attach the left X-axis assembly to another stepper motor.

WP_20160314_21_39_28_Pro

This it for this part – next time I’m going to start ordering in the Arduino and RAMPS hardware to drive the motors, and test the movement of the X-axis in the vertical direction.

 

 

 

 

3d Printing, Making, Taz

Building a 3d printer – Taz-5, Part 7: Thread and guide rails for the Z-axis

It’s been a couple of weeks since I posted an update on this – I needed to get out to the garage to do some work on this and it’s been kind of cold so I’ve been avoiding going out there. But today was starting to warm up a bit so I decided to get out and do something.

The Taz-5 has a very precise threaded rod – called a ball screw rod – to allow the printer mechanism to run up and down the Z-axis. These are pretty expensive and take a long time to arrive from China (I can’t find them available anywhere else in the world), so I decided to try this with a regular M8 threaded rod which is cheaper and immediately available locally. I was able to buy some of this from Screwfix for under £10.

WP_20160309_17_39_27_Pro

I also needed to insert guide rails into the frame – I purchased some 10mm x 600mm steel rods from eBay for this.I fitted the rods into the frame of the printer so far, and used some electrical tape to mark where I needed to cut them.

WP_20160309_17_47_46_Pro

I used a regular hacksaw to cut these to size, filed the sharp edges down, and placed them back into the frame.

WP_20160309_18_15_23_Pro

I repeated this for both sides of the X/Z-axis frame, so I now have rails and threaded rod completed for one axis.

I decided to follow up on a few smaller things that needed to be done – one was to get a small “thumbscrew” to allow me to adjust when the Z-axis limit switch is triggered. The photos below show the thumbscrews I purchased from eBay, and where one of them fits into the frame so far.

Finally for this time, I needed to connect the stepper motor (which has a shaft of 5mm diameter) and the M8 rod (which is 8mm in diameter). Obviously there’s a difference in diameter, but fortunately there are custom connectors which are widely available, and are known as Flexible Shaft Couplers, or Beam Couplers. I purchased a couple of these, and inserted them into the frame as shown below.

These couplers can be very securely attached to the shafts of the stepper motor and the threaded rods using pre-fitted grub screws- however, I didn’t tighten the nuts in these couplers yet because I’ll need to remove the rods for the next step.

The photo below shows where I am in the project so far.

WP_20160309_22_47_55_Pro

Next time, I’ll start creating the X-axis which holds the printer unit.

3d Printing, arduino, Making, Robotics

3d printed robotic hand – Part #4, testing servos

Previously, I experimented with using solenoids to control finger movement on the robotic hand. This proved to not be suitable – the solenoids which were powerful enough to move the finger were big – which meant heavy, and also drained power too quickly.

I bought some servos from Amazon – these weigh 9g, and are rated as 1kg/cm, which means that the motor will stall (i.e. not move) if 1kg is applied at 1 cm from the centre of rotation.

servo
From Amazon

I decided to control these with an Arduino – this was pretty simple. I connected the red wire to the +5v of the Arduino, the black wire to GND, and I connected the orange wire to Pin 9. The Arduino programming environment ships with a program for a servo already – you can find it at File -> Examples -> Servo -> Sweep. This just makes the servo rotate backwards and forwards from 0 degrees to 180 degrees.

In order to test this with my robotic hand, I designed another jig – this one was a bit more complex than the previous one because the servo isn’t symmetrical.

Servo bracket

I printed this out, connected one of the fingers from last time and attached the servo and arduino. This proved to be much more successful.

WP_20160304_19_18_58_Pro

WP_20160304_19_19_09_Pro

Instead of snapping shut, and then depending on a spring for the return motion, the servo allows me to open and close the finger’s movement in a much more controlled way – I can actually specify its position in degress from 0 to 180, which gives a much smoother movement. The servo is way lighter than the solenoid, and also much smaller – so I’ve a much better chance of fitting 5 of them into a robotic hand.

Next time I’m going to re-design the palm of the hand and attempt to fit 4 servos, so that I can control each of the fingers individually.

3d Printing, Making, Robotics

3d printed robotic hand – Part #3, more printing, lessons learned so far

Last time, I tested the mechanism which moves the fingers, and I identified a solenoid which looked suitable for powering the mechanism. This time I print out the rest of the fingers, and design a mounting bracket for the fingers and the solenoids.

I’ve deliberately not done much research into how to build robotic hand – I think there’s a possibility that I’ll become too influenced by other people’s good ideas, and end up just building a replica of someone else’s project (which I don’t want to do). This approach has the advantage that even though I’ll make more mistakes, I’ll still end up learning more things (which is a slightly strange sounding advantage, but anyway). This time I make a few mistakes, and run into a few dead ends.

I’ll finish the post with a few lessons learned and things I’ll plan to do in future posts.

Re-designing the knuckle

Last time, I mentioned that I wanted to re-design the knuckle so that it could be bolted onto any mounting brackets, rather than acetone welded. This makes it easy to move or replace the knuckle unit. The picture below shows my redesign – using the splitting tool, I cut a hexagonal shaped hole into the knuckle, which allows an M3 nut to tightly fit. When I come to build the mounting bracket, it’s an easy task to extend a 1.8mm radius hole through the bracket, so the knuckle can be bolted on.

Designing the rest of the fingers

I based the other fingers on the one I designed last time – I aimed to make them approximately the same proportions as fingers on my own left hand. The proximal phalange was slightly tricky to adjust as I had used a curve for the outer edge, so it wasn’t possible to just cut a section out to shorten it. However, Autodesk 123D’s scale tool was useful here – I scaled in only one direction, shortening the proximal phalange by 10%. I then used the slicing tool to cut the holes again (as these will have become slightly enlongated during the scale).

featured image 2

I printed out each of these fingers, shown below.

printed fingers

Designing the mounting bracket

One of the things I’ve noticed about other similar projects (in the deliberately limited research that I’ve actually done) is that the fingers usually seem to be set out to be perfectly parallel, which I don’t think reflects how a real hand looks – the fingers are at a slight angle to each other. I decided to try setting my mounting bracket out to reflect this, and see what I learn. I set the index finger out at 10 degrees to the middle finger, and the ring finger and little finger to be 5 degrees to the middle finger in an opposite direction.

I designed and built an initial mounting bracket, which I’ve shown below.

test jig for knuckles

I ordered more solenoids, and extended the design of this bracket to allow them to be attached to the bracket and the fingers. This looked alright in theory – the bracket seemed to be a bit wide, so I decided to use the middle sized solenoid from last time to control the little finger.

WP_20160301_19_46_46_Pro

One other problem which became obvious pretty quickly was that the solenoids were too big to allow them to be set out in line with their respective finger. I set them out parallel to each other, figuring that that I could print a linkage with a mounting hole at a 10 degrees or 5 degrees angle, which would allow the mechanism to move.

Arranging the fingers on the mounting bracket in Autodesk 123D showed that they would fit without clashing into each other – each of the fingers appears in one colour this time because I combined all the parts into a single part to help with Autodesk 123D’s memory usage on my computer. If you do this, make sure to save this as a copy as you can’t easily undo the operation.

I printed the bracket out using a wide brim on my printer as something with a large surface area is likely to warp quite easily.

After attaching the fingers to the mounting bracket (shown below) they all fitted reasonably well, although I’ve noticed that some of the alignment is slightly off. This misalignment is because I printed the proximal phalanges in two separate pieces, and they’ve not been acetone welded in a perfectly symmetrical way. This means that the opposing bolt holes are slightly misaligned, and that small error is greatly magnified over the length of the finger. I think for version two I’ll try printing these phalange pieces out in one go.

assembled hand

So at this point, it was starting to become really obvious that this wasn’t going to work – the solenoids are far too big, and also too heavy (I didn’t even bother installing the smaller solenoid for the little finger).

Another problem that occurred to me was that whereas the solenoids will close the four fingers, they’re either on or off – which means that when power is applied to the solenoids, they’ll snap shut – not great for picking up something fragile. Finally, the solenoids really drain power quickly.

So next time, I’m going to go back to doing some research and development – I’m going to investigate whether a small servo would be suitable to power the mechanism, instead of the solenoids.

3d Printing, Making, Robotics

3d printed robotic hand – Part #2, testing the mechanism with a solenoid

In the previous part I started designing the fingers in the Autodesk 123D CAD package, and 3d printed one of these fingers out. In this part, I’d like to find a way to electrically control the movement of the finger.

The finger rotates around the knuckle joint – this part of the mechanism is too small to allow a motor to fit into it, so I decided to try another linkage which would allow a linear movement to be translated into rotation.

I thought a good transducer would be a small solenoid – this would allow me to convert electrical energy (from a battery or power supply) into a linear movement. When the current flows through the circuit, the solenoid’s coil wire is magnetised, which then pulls a metal core into the coil of wire. When the current is removed, a spring forces the metal core back into it’s original position. I can attach a link from the finger mechanism to the end of the metal core, so switching on the current will make the finger move.

Three Solenoids

I ordered three types of solenoid – I didn’t really have any idea of the suitability of hardware I was going to receive – each of these purchases was really just a shot in the dark, hoping something would be suitable.

3-12V 0.08-0.35A Push-Pull Type DC Open Frame Linear Solenoid

solenoid
Purchased from eBay
  • Voltage:3-12v;
  • Current:0.08-0.35A;
  • Dimensions: 11 x 12 x 20.3mm

DC 12V 2.1Kg Force 10mm Push Pull Type Electric Solenoid Electromagnet

61xbhkuimzl-_sy355_
Purchased from Amazon

 

  • Voltage:12v;
  • Dimensions: 30 x 15 x 13mm;
  • Force: 2.1kg (I know force is measured in Newtons, but this is from the spec)

1kg Force 10mm Stroke Push Open Frame Solenoid Electromagnet DC 12V

solenoid2
Purchased from Amazon
  • Voltage:12v;
  • Dimensions: 40 x 29 x 24mm;
  • Force: 1kg (again, I know force is measured in Newtons, but this is from the spec)

Comparison

I photographed all three of these solenoids side by side, and placed them beside a UK 10p piece to show their relative sizes.

WP_20160227_23_35_00_Pro

I think this makes the differences pretty clear!

I applied 12v to each of these and tested their strength by pressing against them.

  • The smallest solenoid is incredibly weak, and obviously unsuitable –  it presented almost no resistance. Also, there’s nothing to stop the metal core coming out of the main solenoid body;
  • The middle sized solenoid was quite a lot stronger, but this definitely would not be able to pick up 2.1kg – still pretty weak;
  • The largest solenoid was – obviously enough – the strongest of the three. I thought this would be strong enough to make the mechanism work.

I found this video on YouTube about another solenoid, which is similar to the smallest solenoid.

I designed a jig in Autodesk 123D to test the existing printed finger with this largest solenoid (shown below). The large regtangular pad in the main green part is where the solenoid will sit, and the solenoid plunger will screw into the yellow linkages protruding from the blue part.

finger with base jig (full)

The image below shows the same finger and jig with a few parts hidden so that the internal linkage mechanism is clearer.

finger with base jig

And here’s the complete test apparatus part after printing the green jig and new yellow linkages. I attached the knuckle to the jig by acetone welding the two parts together – I don’t want to do this again, so I’ll redesign the knuckle to allow it to be bolted to any attachments.

WP_20160226_23_23_33_Pro

Here’s what happens after 12V is applied to the solenoid.

WP_20160226_23_23_19_Pro

Here’s what happens after the 12V is removed from the solenoid…no change.

WP_20160226_23_23_19_Pro

Looks like the solenoid spring isn’t strong enough to return the mechanism to it’s original position. Fortunately I had suspected that might happen, so deliberately designed a couple of holes at the back of the proximal phalanges (blue parts in the CAD diagrams above) for a spring.

I added a spring – you can see this at the bottom left of the picture below. This allowed the finger mechanism to return to its original position, although it does make it a bit harder for the solenoid to pull the metal core into the body of the solenoid.

WP_20160227_20_18_46_Pro

I think this is a good enough proof of concept for version one, so I’ll proceed with a few more of the solenoids used above. Next time, I’ll design more fingers and consider how they knuckles will be positioned on the main part of the hand.