|Surveyor Robotics Journal|
Mon, 08 Jan 2007
first steps in enabling adaptive / emergent behavior in the SRV-1
I have recently been thinking about the functions we might add to firmware that could enable the robot to locate its position based on visual cues and navigate through an area with a sense of purpose. We need this capability for RoboCup soccer play as well as variety of other activies (self-guided remote monitoring, object searches, execution of specific tasks, etc). This is not a new problem - many researchers have focused energy on "simultaneous localization and mapping (SLAM)", and a number of interesting techniques have been explored. My original thought was to develop some kind of map storage mechanism and some pattern matching routines, and that would give us a base level of functionality, but such an approach wouldn't easily adapt to changes in the environment or varying lighting conditions.
Though both were written 20+ years ago, two books that have shaped my thinking on this subject are "Vehicles, Experiments in Synthetic Psychology" by Valentino Braitenberg (1984) and "Self-Organization and Associate Memory" by Teuvo Kohonen (1987) (plus I ordered a more recent volume by the same author called "Self Organizing Maps"). Both books essentially explore artificial neural network structures which might apply nicely to the types of capabilities we wish to develop.
In particular, there are some specific functions which I'd like to add:
In all cases, it would seem that artificial neural network techniques might be appropriate, especially if we can scale the input and output dimensions in order to keep the computational requirements within reasonable bounds. I found a nice tool for modeling some of these techniques - it is the Python-based "Conx" code that is found in the Pyro Robotics toolkit. Pyro has a forthcoming interface to the SRV-1, plus we're already working in Python with the pySRV1Console, so this should be helpful in modeling some of the techniques on the host before committing to implementation in firmware on the robot. Once we have something interesting to test, we'll post something here in the journal.