Building a Rover

Recently I’ve started building a remote-controllable rover. The main purpose of this is the exercise of controlling an embedded system and make actual things move with code.

By profession (and dare I say calling…) I’m a software engineer and not a hardware guy at all. But I also like challenges and had the odd course involving electronics in high school and during university. In one of the university projects I had a bit of hardware controlling and the fascination for this didn’t let go. So it’s time to do something about it.

Recently I’ve discovered the power of Raspberry Pi. A very powerful, tiny machine with lots of extensibility and raw performance. I use one as my living room media center, connected straight to a Synology NAS and the AVR/TV. Lots of fun.

Coming back to the rover. You can program the Raspberry with C and Python. It has lots of GPIO.
Admittedly I’m not as fluent and confident with C and the surrounding tool chain as I probably should be. But so far everything I want to do is also possible with Python, so why not make my life easier.

Basic Requirements

So what should the rover be able to do?

I’ve come up with the following list so far, subject to change for technical problems, budget, etc.:

  1. Movement: Foward, backward, rotate. I don’t require actual steering. Something tank-like with tracks will do fine and is easy to control and predict. I’ve decided for the Dagu Rover 5 chassis with 4 motors and 4 encoders.
  2. A camera with tilt and swivel. There’s a Camera for Raspberry Pi, which I want to use.
  3. The Raspberry Pi for programming, control, video capturing and everything else.
  4. Use of ROS, the Robot Operating System at some stage for controlling and interfacing
  5. Sensors. I want to add proximity sensors, a Gyro/Compass, etc. Let’s see how far I get.

As you see from the list I have a very vague idea and not really a plan. For having a plan I don’t know enough about the available compontents, their programming, etc. yet. This will come over time with more research and trying stuff out.

I will likely be writing more about the individual components and challenges as I go to keep track for myself, and maybe even for somebody else who’s doing something similar.

Because I’m a software guy there will be listings, code snippets, repositories and stuff as well. Not really schematics or anything deeper related to the hardware. The hardware tasks so far were limited to soldering jumper pins on breakout boards and connecting all the cables for signal pins and power supply.