android 10 part 2
|My previous write up of the incomplete Android 10 project was featured on Engadget, HackedGadgets, Makezine and Digg amongst others around 4th July 2008.
This brought around 25,000 visitors to XRobots consuming nearly 50Gb of bandwidth in 5 days, more than two years worth of normal traffic.
Many people have commented on the linked articles above, so I have decided to continue with the project. Check back for updates over the next few weeks and months.
This article in in ‘reverse blog order’ – newest at the bottom.
8th July 2008
Here are some taster pics to kick the article off. I’ve strung up the torso with more bungee cord, and despite the pic of my hand holding the android up at the end of the last article, it will in fact stay pretty much anywhere you put it within reason. The following pics are all of the android free standing without any support.
The tin of soup is there for size reference as I didn’t have a can of coke (it’s about the same size).
9th July 2008
I decided to explain my thoughts for the control system for Android 10. I’ve had a long time to think about it since I put the project on hold last year, but overall I’ve decided to make it as cheap and simple as possible. The android currently has 20 motors and with the exception of the knees each axis is a ball joint, so it could get quite hectic if I overcomplicate the control system. Many companies have built walking robots for lots of money that took years to complete, but that’s not what my projects are about. The main details are therefore as follows:
-
Each joint will have extra strings attached that pull switches attached to various cords and springs, so that they switch on and off at various points as the joints move. I could have used some analogue position device or encoder here, but that would require reading them all as linear devices. It’s far simpler to have switches marking points that I’ll set the positions for through a process of trial and error by tightening or loosening strings.
-
The motors will be driven by pairs of relays. Typically each motor would require two relays so it can move in either direction or be switched off. However, in this case each joint is driven by a pair of opposing motors (like your bicep and tricep for instance), so one will always move in the opposite direction to the other. I will just use double-pole relays to control both motors from a single pair of relays.
-
The motor that is ‘unwinding’ will be switched in series with some resistors so that it doesn’t turn quicker than the ‘winding’ motor which will be under a heavier load. This will stop string getting unwound everywhere and keep tension to hold the joint in place when it comes to rest. The relay system uses ‘magnetic braking’ so it should lock the joint solid when there’s no power applied.
-
The switches mounted on each joint will cut off the relays when they get switched. Mainly this will occur with switches marking the end point for travel which means that I don’t need to read every switch with an overall control system. This sort of makes an open-loop control system, so all that’s left is to switch on relays at the right time to move the joints in the right direction and have them stop when they get there.
-
Of course the overall timing for driving the joints in different directions could be dynamically controlled, a bit like Android 9. This used a gyro in the torso to roughly tell if inertia had built up too much and it was going to tip over. If the gyro reading was outside a certain threshold then it just waited a bit before leaning back the other way. In contrast Android 7 had nothing like this and just relied on dampening in the joints to stay stable.
-
As usual, and in keeping with my simplistic viewpoint, I shall be using Picaxe Chips for the entire control system. Each leg joint will be independently addressable, so there will be one big Picaxe 40X controlling three other smaller 8-output Picaxes, which will in turn drive the relays through Darlington arrays.
-
The three slave Picaxes will also have some intelligence in terms of timing when particular joints are turned off and on, and in the future they may even read extra switches that denote other way-points in the movement of the joints – for the centre point of an axis for instance. This only leaves the master Picaxe to output minimal high level instructions to each slave at the right time, leaving more time for it to monitor a gyro or gyro/accelerometer combination.
-
The overall control to make the android walk or do whatever will be provided by a higher level system such as a PC connected via serial or infra-red. However, this will only trigger the actions and won’t have any low level control over them.
Here’s a scribble I did that roughly shows how it hangs together, although double the amount of relays required is shown. Click it for a bigger version:
I’ve already ordered a whole load of switches, relays and string as well as some clamps to hold some of the strings to the motor shafts, so watch this space…
10th July 2008
My order from Rapid Online – Rapid Electronics Ltd arrived today. I’ve got 44 relays, which is more than I need assuming my plans to have a pair of relays operate a pair of motors works out, otherwise I have two per motor as per my previous control system. I also have 26 micro switches and a large piece of stripboard to build it on.
The relays worked out about £0.49 +VAT and the switches were £0.38 +VAT. My order was over £30 so I got free delivery and it all arrived the next day. Rapid is also where I bought the Polymorph from which the robot is made from. I’ve not found it cheaper anywhere else than Rapid where it is currently £15 per Kg which means you get free delivery if you buy two packs.
This is my plan for using the switches. As the string is pulled tight it switches the switch marking the end point for motion and stopping the pair of motors driving that axis:
Here’s a couple of the switches attached to the android – only another 18 to go:
11th July 2008
Today I received my order of 6mm wire clamps which I bought on eBay for only £0.14 each (yes 14 pence). These will clamp on the motor shafts and grip the cord which pulls each joint. Each consists of a U-bolt, a saddle and two nuts:
These fit the hex screwdriver bits perfectly that are fitted in the cordless screwdriver motors. However, there is not enough clearance, particularly around the hip motor shafts to fit the whole assembly. This means that I have to do a horrible bodge and ‘crimp’ the U-bolts in place after cutting them down with a hacksaw, although the one I’ve tried so far is rock solid. You can see this in the picture below where the bottom wire clamp assembly is complete and has space to rotate on the knee motor, but the hip motor above it looks like a bent piece of metal, because it is. I also tried drilling into the black plastic piece which is what that dodgy hole is, but there’s not enough depth to screw something into it to hold the cord.
I’ve made up all the micro switch assemblies and attached all of them apart from two on the front of the knees – these will require some more polymorph loops attaching. Here are some various shots:
Ankles:
Back of the legs, note that the two switches on the backs of the knees are currently pulled tight and ‘switched’ because these mark the end stop for the leg in it’s straight position:
These switches and strings also act as end stops for the movement. I’ve set them to be roughly how I think they need to be for normal walking, but they will no doubt be subject to adjustment later on. As a result of these new strings, the android can support itself in a number of new positions where it would previously have toppled over:
Next step is to string up all the motors so the legs can be locked in various positions… and of course the control system to go with it.
16th July 2008
I’ve received the batteries I bought on eBay that will power the motors. I got five 3.6v 4Ah Ni-Cad batteries for £5 the lot:
I’m going to run them in pairs – in parallel as the original electric screwdrivers the motors came out of were 3.6v, so this will make two 3.6v 8Ah packs and leave one battery spare. I’ll charge them in series pairs which makes a 7.2v pack, so this way they can be charged from a standard radio control/hobby battery charger.
Pairs of these batteries fit quite neatly inside the pelvis of the android, one pack at the front and one at the back:
A separate 12v battery will power the control system and relays so it doesn’t suffer power ‘brown-outs’ as the motors are running.
Still working on stringing the android up – the hip motors are all done, just the ankles and knees to go…