Sunday, February 4, 2007

[technical stuff] rockhopper gets a brain!

This is _not_ battlebots. While I enjoy robotic mayhem of two robots fighting to the death as much as anyone I find the challenge of autonomous robotics much more interesting. For the robot to be autonomous it of course needs some sort of CPU. My first Trinity competition robot from 2001 used 2 PIC microcontrollers for low level functions connected to a Palm for higher level processing. That worked fairly well however since it was all implemented on solderless breadboards it was less than reliable. It did however show me just how much you could do with a $5 PIC. My second entry from 2005 (Fawkes as shown in my first blog post) used a Motorola 68HC11 based "Handyboard" robot controller.

The most difficult part of these earlier robots was debugging the code. Since these run embedded code with no operating system there is little that can be done for debugging beyond printing short messages on an LCD or flashing an LED. I found myself spending most of my time making minor changes to the code, recompiling, downloading to the robot with a serial cable and trying again. So much time was spent on this that it did not leave time to write any complex AI code.

I needed something that could run a real OS. In my line of work there is only ONE choice here! There are several companies that make single board computers (SBC) using the ARM cpu that run Linux quite well. I made the choice to go with the TS7260 from Technologic Systems.

Basic specs:
  • 200 MHz ARM cpu
  • on board ethernet
  • on board USB
  • PC104 bus to allow for expansion options
  • 64MB RAM
  • 32MB Flash memory
Running Linux means development and debugging should go much more smoothly. Code can be compiled using a cross compiler on my desktop Linux system and copied over to the ARM for testing. For the early development work I am running the ARM booted with the root filesystem over NFS but I will move over the the flash filesystem when the initial kernel and driver work is complete. Having onboard USB will allow me to use wirless networking so I can log in and debug code _while_ the robot is moving about. I also plan on using a USB memory stick for additional filesystem space since the 32MB flash will be tight.

The one downside of the Technologic Systems boards is they only support a 2.4 Linux kernel. With the help of others on the discussion group and a lot of digging I was able to cobble together a set of patches for the 2.6.20 kernel.

1 comment:

Jenny from the Park Blocks said...

Holy Crap! You weren't kidding when you said technical stuff. :-) Sounds like something from star trek... :-) Impressive, but in some other language. You sure that's English, bro?

Glad your project seems to be going well.