
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 68
HC11 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.