The Motor schemas approach was proposed by Ronald Arkin [4],
and it is a more biologically based approach to control architectures
than the previous two.
As in the previous approaches, each behavior receives sensory
information as inputs and generates an action as output.
This output is always a vector that defines how should the robot
move, and can have as many dimensions as needed (e.g. two dimensions for
ground-based navigation, three for flying or underwater navigation, etc.).
Each behavior uses the potential field approach (developed by Khatib
[34] and Krogh [37]) to produce its output
vector. However, instead of
computing the entire potential field, only the response at the
current location of the robot is computed, allowing a simple and fast
computation. Contrarily to the previous two approaches,
motor schemas uses a cooperative coordination mechanism.
The way the different behaviors are coordinated is through vector
summation. Each behavior contributes to the global reaction depending
on a gain factor (). Each output vector (
) is multiplied by its behavior
gain factor and summed up with the rest to produce a single output
vector that will be sent to the robot's actuators (see Figure
2.6).
These gain factors are very useful for adaptability purposes, as they
can be dynamically changed during execution, thus, as the action
selection architecture, also overcoming the restricting subsumption
architecture's priority scheme.
However, cooperative mechanisms have some problems. A first problem is that they can reach local minima in the potential field. Imagine the situation in which the robot has an obstacle in front of it, and the task to be performed is to reach a target located right behind the obstacle. In this situation, the behavior for avoiding obstacles would compute a repulsive vector coming from the obstacle, while the go-to-target behavior would compute a vector going to the target, which would also point to the obstacle. Thus, in a particular location, the sum of both vectors would be null, and the robot would not move anymore from that location. This problem is easily solved by adding a noise schema, that always produces a small random vector in order to avoid these blocking situations from happening. Another problem of cooperative mechanisms is that the action actually executed is one that no behavior has generated. Again, imagine a robot with an obstacle ahead, and imagine that two different behaviors generate outputs for avoiding that obstacle, one trying to avoid it through the right and the other one trying to avoid it through the left. The sum of the vector would be a vector going straight ahead to the obstacle, which obviously would not be the best thing to do.
© 2003 Dídac Busquets