I'm a software guy for work, so I do hardware-ey things for hobby to get some variation. I ended up with robotics because it's hardware that requires software... If all you want to do is see the question, look at the last paragraph. Here comes the back story:
Right now, I'm converting an old RC truck (a Nikko that's one step up from the Radio Shack specials) to something that could solve a RoboMagellan course. I don't know if I'll actually ever compete, but it's an interesting challenge.
The main problem I'm working on now is the "relative scale" problem of mechanics. A flat floor or paved sidewalk is "flat" for a normal human, and also for an 18" long robot. However, a "cracked" sidewalk might still be "flat" to a human or bicycle or car, but is decidedly "bumpy" to a 2-foot robot. A front-yard lawn is "flat" to a human, but is quite "craggy" to a robot.
I have PWM control of my traction motors, and I have separate front and rear axle drives, each with a differential (but it's not four direct drive wheels.) I can turn this up to the point where I have good acceleration even over lumpy grass, and I can modulate it to provide a "rocking start" if I get stuck. However, the relative coordinate system of the robot rocks with it -- and even just going fast across the lawn, it bumps around by up to 20 degrees within a tenth of a second! This makes sensor integration very hard.
Similarly, if I tune PWM to just make some progress on the lawn, it will race away with wild abandon when it gets to a truly flat place, like that concrete sidewalk. (Good thing I have that remote stop :-)
I'm using AVR microcontrollers on perfboard for sensors and devices, a home-grown MOSFET 10A H-bridge (aw yeah!) for brawn, and will probably end up with Intel CPUs on Mini-ITX form factor for brains. For now, I have telemetry and remote e-stop through long-range nRF24L01+ modules, and some simple AVR-based behaviors. The goal is to use stereo vision based on two HD webcams, and a forward-firing laser to get a known "common reference point." If that doesn't work out, I'll fall back to single-camera vision.
But, what do I do about the problem that a "flat lawn" to me is a "jumbled rockscape" to my robot? Do I build a bigger robot? I don't want the platform itself to go much beyond 15 pounds, because the required drive powertrain will become crazy big, and the weight limit for the overall robot is 40 pounds. There's also price to consider, although I can budget saving hobby expenditures for a while if the right thing is available.
Or are there suspensions available for the sensor package itself? The truck already has a sprung suspension, but no shock absorbers. Some kind of Gimbal for the cameras and laser (and perhaps the gyro and GPS) would be nice, but that sounds complex and pricey.
Or should I attempt to do some crazy software-based motion compensation?
Or even just run the software fast enough that I can do the full 3D SLAM in real time while bouncing around? :-) (That'd be nice, but my cameras only go up to 30 Hz, and somehow I doubt this would be the most efficient approach)