Our first attempt at rover software was a wonderfully informative hands-on adventure on creating a path from a cell phone's web browser HTML all the way to serial bus commands sent to a RoboClaw motor controller. Fortunately or unfortunately, these lessons also put a finite lifespan to the software as we start to discover basic mistakes that we didn't know we were making until we got a little smarter.

Before we leave the first draft behind, however, it had one final role to play. This point in software development timeline coincided with our rover wheel development's completion. The actual six-wheeled rover chassis is still in the future, but our wheel development is mature enough for us to build a test chassis. Two wheel units were assembled and integrated into a bare-bones test chassis.

This chassis needed a brain and a controller.

To enable motor control via differential drive, we hacked together a minimal user interface for sending commands to our test chassis. Not much effort was spent on user-friendliness and its layout is very much an engineering number cruncher's idea of an interface. (Also referred to as "bad UI.") It was just enough to let us move the robot around and uncover some finishing issues in the wheel design, but not much more than that.

The robot moving under its own power attracted attention from other people in the work space. Naturally some asked if they could try driving the robot but one look at the interface and the response was "Um... maybe I'll wait for a later version" and the phone was handed back.

No offense taken, it's another vote in favor of moving on. We'll close out the "RogerPiBot" project at this point and start a new rover control project incorporating all the lessons we've learned.

Raw Differential Drive