The
modular, hierarchical programs written in CHARON are inherently parallel,
both at the agent level and the mode level; to implement this parallelism
on our test-bed platform (the ClodBuster robots controlled by radio
link from a Windows NT server) we have been investigating the use
of "live objects". A live object encapsulates algorithms
and data in the usual object-oriented manner together with control
of a thread within which the algorithms will execute, and a number
of events which allow communication with other live objects. The parallel
execution required by CHARON programs is provided by the use of threads,
hierarchy by control of the execution of each object's thread, and
modularity by the use of standard C++ object-oriented techniques.
The
live object data structure has been defined, and we are currently
incorporating our existing algorithms into this new framework. In
the coming months, we are aiming to use combinations of these objects
in hierarchies to accomplish basic robotic exploration and localization
abilities. It is expected that once a basic set of sensing and control
strategies have been implemented as live objects, then combination
and re-use of these objects to provide novel functionality should
prove straightforward.