From OpenCog
(Redirected from SequentialOrLink)
Jump to: navigation, search

The SequentialAndLink and SequentialOrLink are a type of Link which are used to group a set of Atoms in a sequential manner, such as in the case of action execution (aka "behavior trees") in embodiment (i.e. robot control).

Evaluation of a SequentialAndLink wrapped inside a SatisfactionLink will proceed in sequential order, one by one, until the first clause that evaluates to false. In this case, the SatisfactionLink returns false as well; if all clauses succeed, the SatisfactionLink returns true.

Evaluation of a SequentialOrLink proceeds similarly, except that termination halts with the first successful evaluation. Thus, SequentialOr is a kind of fallback device. It is logically equivalent to (NotLink (SequentialAndLink (NotLink ...))).

The behavior tree page shows an example of using a SequentialAndLink to trigger a series of actions; the actions are run in order; the next action is not performed unless the previous action returned TRUE_TV. Multiple examples can be found in the /examples directory. A large application can be found in the ROS behavior tree code. ROS is the well-known "Robot Operating System"; this application demonstrates how Atomese can be integrated with ROS sensory/perception systems as well as action (motor-control) systems.

PLN Semantics

In PLN a SequentialAndLink is used in temporal reasoning as well, see Temporal_Reasoning#SequentialAnd for more info.

See also