For a while now, I have wanted to experiment with the rocker-bogie type chassis, read NASA Mars Rover, and seeing its mechanical merits. However, the time and effort needed to construct one has been preventing me from doing this. Creating this type of chassis without a significant time commitment is easier said then done, unless you already have the right set of components that play well together.
This is where the right blend of build-plate strips, Meccano parts and micro-motors come in handy to build the table-top version of NASA Mars Rover quickly - the 'R0kker-bot'. The build-plate construction system is a set of aluminum strips that can you can drill, bend and cut to any shape or form you wish. And just in case you're not up to speed on what Meccano is, you can look it up here; I highly doubt that though, as you are here and reading this, but just in case :).
The basic chassis setup, excluding wiring and electronics took three hours to complete. You can bolt together the main chassis in an hour using Meccano parts, and it takes another two hours to drill and attach the motors using build-plate aluminum strips. Most of those three hours went into trying to fit Meccano and build-plate components together nicely, and into ensuring that the dual-wheel arch frame has enough clearance for rotation and doesn't get stuck against the main robot body. Meccano’s large bolts do get in the way; therefore it is essential to make sure that there is enough clearance between the frame and the main body. In the picture below, you can see how the motor/wheel combination is attached to the build-plate aluminum strip and then to the Meccano part with regular Meccano bolts. Once the mechanical part was finished, I proceeded with getting everything wired up.
I decided to set up the initial version of this robot as a remote-controlled platform so that I could evaluate the mechanical merits of the chassis first. I am not a huge fan of wasting my time on a chassis that does not work well from the beginning. However, before moving on to the remote control setup, I needed to address the motor controls portion of the robot first. The rocker-bogie chassis setup uses six motors in total - three motors on each side. Each side, (or channel, from a motor controller perspective) can draw approximately 5A (amps) in a “stall” current. I decided to go with Pololu's SMC05a motor controller for this project. This controller can deal the high stall current levels and it can also accommodate the additional current throughput for the motors, when the robot is turning or going up an inclined surface.
One great aspect of the SMC05a is that it can work with either 5V or 3V logic level, which is something that many motor controllers don’t have - Kudos to Pololu for a job well done. Considering this feature, plus the fact that it speaks serial when it interacts with command-and-control modules, my exploratory side nudged me to take a different approach, when setting up the remote control portion of things. My original plan was to use a SPE Arduino PRO mini-module with a nRF24L01 and a remote control module from Active Innovation to control the chassis. The Arduino PRO module would shape the captured data into four-byte commands and forward them to the SMC05a to act on. However, this seemed to be an over-kill solution compared to the alternative, with the alternative setup using only a pair of XBee modules and a PC/laptop, masquerading as a remote control. The XBee modules and a PC/laptop are good if you are just trying to test the chassis configuration, as I was, in this case.
Once the motor controller was picked and the remote control portion was decided, I had to get things wired up and talking to each other. First and foremost was the VCC power for the XBee modules and the SMC05a motor controller. I installed a 3.3V voltage regulator with a couple of capacitors for that. The VReg out pin was connected to the XBee's VIN and the SMC05a VCC pin. I used a XBee 1 module so the 100mA 3.3v voltage regulator is adequate, but if you have the XBee 2/2.5/PRO module, you will need a more powerful voltage regulator as those modules draw higher current levels. Be sure to consult your XBee datasheet for the current draw requirements. You also need to setup both XBee modules for the point-to-point communication with a 19200 baud rate. The 19200 baud rate is the MAX bit-rate a SMC05a can handle. I have used two 6V (600mA) batteries wired in parallel to provide ample current to power the XBee, SMC05a and six motors.
Now that the robot's transceiver/motor controller portion was complete, it was time to move into the testing. First, I downloaded and installed the Pololu's Serial Transmitter (PST) utility. This is a great utility if you need to test Pololu-made modules quickly. I then connected an Xbee Xplorer board module to my desktop PC. Then, I pointed the PST utility to use XBee as my serial line and sent a group of four byte commands (motor A & B: forward/reverse, stop) to the SMC05a module. Motors turned and stopped as expected. Now, it was time to move on to a trial run of negotiating obstacles. Here is a video of the robot driving over a couple of books that double as obstacles. Each book is at least as thick as a wheel diameter but that doesn't stop r0kker from getting to the other end of the obstacle course.
As a next stage, I need to make controlling the robot easier than banging out 4 byte commands in the console or the PST. I am currently working on a Java Swing-based application to capture the keyboard’s input, translate it into four-byte commands and then send it to the r0kker-bot over a serial link. This should complete the test system.
In the end, I'm happy with the results. I was able to whip out a r0kker-bot pretty quickly, able to control the bot without any wires attached, and able to get from the concept to obstacle course within 48 hours. Last but not least, the chassis turned out to be pretty solid with a lot of potential to be used as part of other, larger robot projects. It turns out that mixing build-plate strips and Meccano components allows for a great robot prototyping system, and combining the Pololu SMC05a motor controller with the XBee wireless module delivers a perfect wireless motor control platform for wheeled and/or tracked robots.
Here are a few more pictures to enjoy...
Update - 12/31/2009
This video will show you how using Java application and a couple of XBee modules you can control R0kker-bot or any other robot utilizing Pololu's SMC05a motor controller for that matter...