POSH (Parallel-rooted, Ordered Slip-stack Hierarchy) is an architecure interpreting so-called dynamic plans that are the structures used for action selection (also known as behavior arbitration or coordination) in Behavior Oriented Design (BOD). The POSH was created by J.J.Bryson at University of Bath. More about POSH at J.J. Bryson POSH page.
POSH can be efectively used for creating reactive behavior for virtual agents or robots. The POSH design was created mainly for use in robots, still it was revealed that the POSH can be easilly used to control virtual agents too.
The POSH features reactive behavior, opportunity to write pre-prepared plans completing some goal (according to BOD) and sequences of actions.
There are two primitives in POSH plans:
- acts (used for executing actions)
- senses (used for sensing information)
These acts and senses are implemented as methods in some ordinary programming language (currently Python and LISP versions of POSH are available). Typically, these methods are stored in some class, which is called behavior module (one agent can have more behavior modules - for example one for each kind of behavior).
Acts and senses are very tightly coupled in behavior-based AI. Sometimes they are overlapping each other. For example sense can somewhat change agents memory and act can wait for some additional event in environment (entering the elevator will finish, when the elevator arrives and I will step in).
The difference in POSH is that sense can return some value (that can be compared with something), act just succeeds or fails.
The POSH plans are organized in tree-like structure (hierarchical). Acts and senses are the leaves in this tree. Acts and senses are the only connection in POSH to external environment.
There are three types of aggregates in POSH:
- drive collection: this is the root of the POSH hierarchy, and on every POSH action-selection cycle, this reconsiders which goal the agent should be working on. Simply you can see the drive collection like as the set of if-then rules with priority. Every time the rule with highest priority fires (they higher rule interrupts lower). The right side of the rule can be competence or action pattern.
- competences: these are basic reactive pre-prepared plans. They can be hierarchical. They allow a BOD agent to complete a task robustly and opportunistically. You can also see the competences as the set of if-then rules, but they are organized in different manner then in drive-collection (for example, rules here dont interrupt each other).
- action patterns: or simple sequences of actions. This basic approach is usefull in quite a lot of sitautions (despite its lack of flexibility). It also reduces the combinatorial complexity of the POSH plan.