A while ago I was happily planning to build a robot that was able to map it's environment, but quite soon I realised that 2d mapping is part of a bigger picture. A robot that is only aware of where it is not a goal in itself, especially if it's an autonomous robot. I tried to find a purpose for such a robot for quite a while, but I couldn't think of anything without getting way over my head into object recognition etc. Fortunately I like to plan things before building something so no harm was done. (If for every abandoned robot project a dollar was given to solve the world hunger problem, we all would be drowning in food.)
Anyway, a biped it's going to be. An autonomous one. Getting a robot to walk properly is a goal in itself, challenging and rewarding. To avoid spending hours on making parts I'm going to buy a 17 DOF humanoid kit from which the arms will be removed and eventually added to the legs. (The beauty of brackets, they're just like Meccano!) So it's going to be a head with legs, sort of a "Bob", only with a few DOFs extra. Actually I'm going to start with a 4 DOF biped to get my feet wet and when all works as I want it to, I'll add another pair of servos and then some more, etc. until I have reached 6 DOF per leg, that should be enough. The bottom up approach, succes almost guaranteed. And if it doesn't, I can always make a four legged walker, a robot cow or something.
The whole thing is going to be powered by Chinese MG996r servos. In theory they should be powerful enough to keep the biped from collapsing. Next to the servos I will be using a compass sensor to help the robot walk in straight lines. One or more ultrasonic sensors will be used, an infrared sensor and a 3 axis accelerometer (or maybe tilt sensors?). An Arduino Mega 2560 will be the "brain".
My biggest question is: Will a Mega be enough? I know it can control a whole lot of servos, but is it also able to process the data for the walking gait, object avoidance, etc.? Weight is definitely an issue so it would be nice if I don't have to add other controllers, although a 12 bit servo controller would be nice, but I assume the higher resolution will come at a price? (having to use Uintegers instead of bytes for example)
Talking about a higher servo resolution: I tried the writeMicroseconds command instead of just write and I can't get my servo to 0 degrees. According to the Arduino manual 1000 uS should be 0 degrees, 2000 uS 180 degrees. In my case 2350 uS is 180 degrees and 0 uS is about 10 degrees!
Cheers,
Paul