Robotic locomotion
Introduction
Robotics is an area that I'm interested in for the long term. It's similar to software development twenty years ago: it's immature, there's no general consensus on what the 'best' way to do things is, and there are a lot of unsolved problems. The development cost is starting to come down to the point where ordinary individuals can tinker and learn without external sponsorship.
I think the 'unsolved problems' element is important. In software, 20 years ago, we were contrained by technology and immaturity. We didn't have cheap multi-GHz CPU's. We didn't have cheaply accessible worldwide communications networks. We didn't have stable, reliable, cheap operating systems. In 1988, we had the 8086, DOS and maybe a megabyte of RAM.
You can't solve interesting problems with the 8086, DOS and a megabyte of RAM. Your effort goes into removing obstructions like "how do I address more than a megabyte of RAM" or "how do I efficiently update all of the cells on this spreadsheet".
Nowadays, you just throw processing power and memory at the problems. The fact that we have multi-GHz computers and multiple gigabytes of RAM makes a lot of common computing problems seem positively obscene. Why do we tolerate Windows Vista taking several minutes to start up? Why does Word take up a gigabyte of disk space? Where the hell are all of these resources going?
But I digress.
Robotics has a great number of unsolved problems, primarily revolving around dealing with the real world. This isn't terribly surprising, as we've never had to build machines that can deal with the real world before. Traditionally, we've just restricted the real world or modified it to suit the machine. The ubiquity of smooth, soft, rubber-impregnated roads reflects the total dominance of the car and the pneumatic tyre as methods of land locomotion.
Robotic Locomotion
I'm interested in robotic locomotion, specifically walking motions and why they're difficult. Wheeled vehicles have a number of advantages - they're inherently stable, they're simple to build and they're efficient. Inherent stability is especially important as a safety factor. If your car runs out of fuel, it doesn't fall to the ground and break. (You might lose steering and brakes, but not immediately).
Vehicles like the Segway have the interesting characteristic of not being inherently stable. There is a control system that keeps the vehicle upright. This control system must operate correctly, all of the time. Failures are not tolerable.
Anyone who's done any technology development knows that failures are inevitable. This becomes an important safety problem.
I'm interested, specifically, in robots with legs. We don't see many of them because the advantages of stable wheeled vehicles are so compelling. And yet, there's this tremendously useful method of locomotion that is going almost completely unused because of technical problems.
There are a number of robots out there that can walk, for very small values of 'walk'. Because of the stability problems, robot legs tend to have very large feet. This places the CG (centre of gravity) above the foot. They also use very small steps and short legs so that the CG never moves out from above the foot. This means that your 'walk' tends to be more of a shuffle. The robot can't move very fast, it can't climb obstacles, it chews up a ton of power, and everyone wishes they'd just built a wheeled robot to begin with.
Compare this with a human walking. If you stand on your toes so that your foot is completely elevated, you can still stand. You're not very stable and you have to make regular corrections, but you can stand. When you take a step, you don't just move one leg out in front of the other (unless you're an infant). This doesn't work. In order to move one leg out in front, you have to push with the other leg to keep yourself balanced (in the forward-back axis). Then you 'catch' yourself with the front foot and continue pushing with your back foot to move your weight over the front foot. You can't stand still in this position because you're not well-balanced on an axis 45 degrees to fore-aft. And the fact that your legs are offset relative to your CG means that there's a side-to-side motion to be corrected by your stomach muscles and (maybe) your arms.
Basically, it's just too hard for us to build a machine to do this right now. What looks like a simple mechanism - hip joint, knee joint - becomes insanely complicated when you take into account twisting motions from the offset feet, Newton's third law and probably other things that I haven't considered yet.
Sidebar: The human body has some interesting optimisations such as knee joints that lock into a standing position and elastic tendons through the calf and ankle to efficiently store and extract energy during the walking motion.
A spider-walker is a good compromise. You can still have excellent stability because there are many legs - at any given point in time, locking the limbs in their current position will not result in a fall. You can have good flexibility and adaptability as the legs can overcome obstacles. With sufficient intelligence, you can try multiple strategies to overcome an obstacle.
Hence, I want to start building a spider-walking robot.
Ideas
I'm thinking of using four legs, mostly because it'll simplify the motion equations. If you have eight legs and don't have your leg positions exactly right, you'll get slippage. I assume that real animals solve this with some level of elasticity in their limbs. There's a fundamental impedence mismatch in that real animals produce a certain amount of force on a muscle, while doing so on conventional machines is horrendously inefficient.
Three legs requires that when you take a step, the robot is only placing weight on two legs. Without ankles, calves and feet, this means it's 'airborne' to some extent. This is not infeasible, though - the worst case is that you fall down on the moving leg. While you're stationary, you're inherently stable.
Two legs requires that the robot be unstable all of the time. When you take a step, you have much greater forces to correct.
As such, I think a good development path would be to start with four legs and remove one at a time as I solve the relevant problems.
Design
I started out thinking about pneumatic cylinders. They map nicely to the muscles on an organic creature and are typically high-torque devices. I abandoned this line of thinking for two reasons: compressed air is finite and difficult to recharge, and most conventional pneumatics are at a much larger scale than what I want to deal with right now. They also tend to be 'binary' devices - either at one end or the other of their range of motion.
Next on the list was linear servos. These are very applicable to the problem at hand: linear motion, high torque, battery power and easy computer control. Again, they're pretty big - 50mm was the smallest I saw. They use a ton of power, though I can deal with that. The killer was that they're expensive - AUD$130 per servo. I'm planning on four legs and with three servos predicted per leg, this was going to be an expensive experiment.
Finally, plain old RC servos. They can be had for a pittance on eBay. They're common and cheap and well-understood. They produce rotational motion and aren't balanced quite right on torque-speed relationship, but they'll do for now.
Lack of torque was my major problem. Speed, too, for the dynamic motions, but torque was more pressing. Common servos are rated to 15kg/cm, which is pretty marginal in this application. It also explains why all of the servo-driven walking robots have such short legs - they just don't have enough torque to drive anything longer.
My plan so far is three servos per leg: one at the 'hip' to rotate the leg forward/back, another at the hip to raise and lower the leg, and another at the knee to raise and lower the calf. The servos will be directly attached to the joints. While I'd prefer to gear them down for more torque, this will be the simplest immediate solution.
I'm expecting to have weight issues with the hip servos; they'll have to lift the entire knee servo and leg with leg leverage working against it. (There's a good reason why our upper leg muscles are the most powerful in the body). Solutions include a chain drive, modifying the servo to have better torque (but lower speed) and using extremely short legs. Right now, though, I just want to see something work. I could theorize all day about the best way to build this, but an actual implementation will be much more useful.
