The chassis and suspension were designed from scratch, with modularity and budget in mind.  I used the 1cm x 1cm MakerBeam Starter Kit, plus the add-on corner cube and bearing hinge kits, and designed my own joints and servo brackets which I sent off to a commercial print shop.  The MakerBeam bearing hinges are a little cheesy, basically a molded copper strip which clamps a pair of bearings against a beam.  It doesn't support a lot of weight, and I eventually swapped these out for a pair of steel pillow blocks for the main rocker pivots.

I wasn't aware of any similar projects when I designed this.  I later discovered Roger Cheng's Sawppy project.  He did a MUCH better job with all of the joints, wheels, etc.  If you're thinking about building something like this, use his design.  It looks much more rugged and well thought-out.  Sawppy looks a little bigger than mine, too.  @Ameer also did a fine job building his own Rover-X, derived from Roger's design, with some unique updates of his own.

I used an Adafruit PCA9685 16-ch servo driver to power the ten mobility metal-gear micro-servo plus two for the mast.  I hand-modified the six wheel drive servos to allow continuous drive.  The Pololu robot wheels mounted directly onto regular servo horns.  Found some servo pull rods that are normally used for steering linkage in RC cars and I used these to link the rocker arms to the differential arm across the top.  The swivel action is butter smooth, and it's fun to see how the two sides counter each other to stabilize the center chassis.

I chickened out from building a robotic arm.  Pretty sure my suspension would not have supported the weight, and the micro-servos likely wouldn't have been up to the task either.

The ESP8266 operates the servo driver, current sensor, LCD display, and optical flow sensor over i2c, which is awesome - all of this on just 2 wires from the ESP8266.

When we drive the Curiosity test rover around JPL's Mars Yard, someone (an intern, usually) holds a panic button at all times, to shut off power to the rover's motors if anything goes wrong.  I wanted a similar emergency interrupt capability for my rover, but didn't want a push-button that would be hard to press on the back of the somewhat fragile, moving chassis.  Instead, I put a capacitive touch sensor against the chassis, so that touching any part of the chassis stops the motor driver.  It works beautifully, and I highly recommend this feature for micro-rover builds and other robotic projects.

Mainly for bragging rights, I programmed a CLI which accepts driving commands like the ones we use on Mars.  The most common point-to-point driving command is called "mob-arc", which takes two arguments, a path length and an azimuthal change in heading.  The ESP8266 calculates Ackerman steering angles for each corner wheel, then calculates the speeds needed from each wheel in order to drive constant angular rate around the arc, and then drives the requested distance by running the wheels at the calculated speeds for calculated duration.  This didn't work all that well at first, due to imprecision in rate control and slippage between the rubber wheels and the surface it's driving on.  Path lengths were accurate to about 10-20%, which isn't good enough if you care about repeatability.  Heading changes weren't super precise either.

I found a solution for drive distance accuracy that worked out remarkably well.  I mounted an Apm2.5 optical flow sensor (with an attached lens) to the chassis, pointing downward.  This basically works like an optical mouse, tracking motion relative to the floor like your mouse tracks itself relative to a mousepad.  Turns out this measures traversed distances to within about 1% or better.  I linked this into my mob-arc routine instead of a simple timer, and now drives and turns are quite repeatable.  It was a piece of cake to incorporate the optical flow sensor, with an i2c interface and a data format that is super easy to integrate.

I also added an IMU, and had the ESP8266 reading it, but I hadn't yet integrated the IMU data into a coherent self-tracking navigation system when I had to set this project aside, after my daughter was born.

That acoustic range finder on the end of the mast was going to be used for mapping, but I never got around to implementing that. Mapping would have required precise position knowledge which I hadn’t  quite finished developing.  Kept the sensor there anyway because, well, it looks like a pair of adorable eyes!

The rover is now collecting dust on the corner of my desk, but it won't be relegated to the corner for much longer.  My daughter, soon to be 3, is very interested in it and keeps asking me to make it drive.  I'll need to fix a few things and should have it running again soon.  I'll post code at some point.

Please drop me a line if you have any questions or found any part of this useful.

Thanks for looking!