Initial musings on robotic vehicles

I finally started working on my first robotic vehicle about 2 months ago.  It’s built around the RP5 tracked chassis and the Romeo controller board, both from DFRobot.  I chose the RP5 because it’s low-cost, the tracks make it a bit more capable for traveling over small objects, and it was fully assembled.  I chose the Romeo because it’s an Arduino-compatible board with support for driving the motors built in (no need for a motor controller board) and lots of convenient 3-pin headers (pwr, gnd, and signal) tied to the Arduino pins, making it really easy to connect sensors and other items.

My goal for the first robot is for it to run indoors, using dead reckoning to navigate (as best it can) to a series of pre-specified waypoints, while avoiding obstacles along the way.  I wanted to build capability in stages.  Here’s what I’ve found out so far:

  1. It is trivial to use available kit parts, like the RP5 and the Romeo, to quickly get up a vehicle that moves around, whether in a straight line, by moving and turning for preset time periods, or moving at random.
  2. It is surprisingly easy to add a sensor and instigate obstacle avoidance.
  3. It is 1-2 orders of magnitude harder to add position sensing and navigation.

Having said that, I’m well along the way to getting navigation working, it’s been fun, and given me the opportunity to learn or relearn a lot of basic C along the way (my previous C experience being limited to 1 course about 25 years ago).  I find it’s much easier to learn a technical subject if you’ve got a hands-on project you’re working on, and that even a simple robot touches on a lot of the basics of the C language.