Jump to the ICARUS Overview page.
Jump to the Architectural Details Menu page.
Jump to the Home page.
Architectural Details
The ICARUS architecture is divided into three modules which run
asynchronously, but communicate by storing and reading information
from a shared subset of memory. All the long-term memories of the
system are stored by a single organization - a hierarchy of
probabilistic concepts. This memory is handled by yet another module.
- ARGUS - perception
- This module monitors the outside world, within the agent's sensor
ranges, and detects qualitative breaks. It then uses an attention
mechanism to determine which of these changes is worthy of attention.
This list of objects and attributes is then returned to LABYRINTH.
- DAEDALUS - planning
- This component uses a variant of means-end analalysis for plan
generation. It compares its current state with the goal state and
calls LABYRINTH to determine what operator to use or what stored plan
is applicable. Two subproblems are created, one to go from our current
state to a state that satisfies the operators precondations, and one
to go from the state after the operator is applied to the goal state.
If a stored plan was applicable it uses this plan as long as each subplan
is applicable. When it fails, ir reverts to means-end analysis. If a
loop is detected it will backtrack and try a different operator. This
results in a type of heuristic best-first search through the problem
space.
- MAENDER - execution
- This module traverses the current plan, as generated by DAEDALUS,
and executes all the primitive actions on it. It does this to the best
of its abilities. If one of the actions does not have the expected
effect it is up to the perception system (ARGUS) to notice this and
inform the planner (DAEDALUS). The frequency of monitoring is
determined by ARGUS.
- LABYRINTH - memory
- This is the single memory module. It uses a probabilistic
hierarchy to store the knowledge. A new concept, either an object,
plan or a problem, is first decomposed into its components. Each one
is sorted through the memory, starting at the root node, until a place
is found for it. The sorting is done with the aid of a function called
a category utility, which tells us what child node a component
will fit in, or if it deserves its own new node. Once the different
components are stored then the whole concept can be stored. The
storage of the concept will depend on the storage its components
received.