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.