next up previous
Next: Bottom-Up Design Up: Behavior Previous: Architecture

Computation of the Dynamics

The dynamic systems of the sensors, behaviors, and actuators can be specified and analyzed as a set of differential equations. Of course, the actual computations are done using difference equations. Here, the time runs in discrete steps of $\Delta t^0 = t^0_i - t^0_{i-1}$ at the lowest level 0. At the higher levels the updates are done less frequently: $\Delta t^z = t^z_i - t^z_{i-1} = f \Delta t^{z-1}$, where useful choices of the subsampling factor c could be 2, 4, 8, .... In the figure, c=2 was used.

A layer z is updated in time step tzi as follows:

${\bf s}_{i}^z$
- Sensor values:
The nzs sensor values ${\bf s}_{i}^z = (s^z_{i,0}, s^z_{i,1}, \ldots , s^z_{i,n^z_s-1})$ depend on the readings of the nzr physical sensors ${\bf r}_{i}^z = (r^z_{i,0}, r^z_{i,1}, \ldots , r^z_{i,n^z_r-1})$ that are connected to layer z, the previous sensor values ${\bf s}_{i-1}^z$, and the previous sensor values from the layer below ${\bf s}_{ci}^{z-1}$, ${\bf s}_{ci-1}^{z-1}$, ${\bf s}_{ci-2}^{z-1}$, ....
In order to avoid the storage of old values in the lower level, the sensor values can be updated from the layer below, e.g. as moving average.
${\bf\alpha}_i^z$
- Activation factors:
The $n^z_\alpha$ activations ${\bf\alpha}_{i}^z = (\alpha^z_{i,0}, \alpha^z_{i,1}, \ldots , \alpha^z_{i,n^z_\alpha-1})$ of the behaviors depend on the sensor values ${\bf s}_{i}^z$, the previous activations ${\bf\alpha}_{i-1}^z$, and on the activations of behaviors in the level above ${\bf\alpha}_{i/c}^{z+1}$. A higher behavior can use multiple layer-z-behaviors and each of them can be activated by many behaviors. For every behavior k on level (z+1) that uses a behavior j from level z there is a term $\alpha^{z+1}_{i/c,k} T^z_{j,k}({\bf\alpha}_{i-1}^z, {\bf s}_i^z)$ that describes the desired change of the activation $\alpha^z_{i,j}$. Note that this term vanishes, if the upper level behavior is not active. To determine the new activations the changes from all T-terms are accumulated. A product term is used to deactivate a behavior, if no corresponding higher behavior is active.
${\bf G}_i^z$
- Target values:
Each behavior j can specify for each actuator k a target value $g^z_{i,j,k} = G^z_{j,k}({\bf s}_i^z, {\bf a}_{i/c}^{z+1})$.
${\bf a}_i^z$
- Actuator values:
The more active a behavior j is, the more it can influence the actuator values
${\bf a}_i^z = (a^z_{i,0}, a^z_{i,1}, \ldots , a^z_{i,n^z_a-1})$
.
The desired change for the actuator value azi,k is:
$u^z_{i,j,k} = \tau^z_{i,j,k} \alpha^z_{i,j} (g^z_{i,j,k} - a^z_{i-1,k})$
.
If several behaviors want to change the same actuator k, the desired updates are added:
$a^z_{i,k} = a^z_{i-1,k} + u^z_{i,j_0,k}+ u^z_{i,j_1,k} + u^z_{i,j_2,k} + \ldots$


  
Figure 2: Recording of two sensors (distance and direction of the target) and two actuators (average motor speed and difference between the two motors) during a simple taxis behavior. The robot first turns towards the target, then accelerates, drives fast, slows down, and finally it stops at the target position.
\begin{figure*}
\centerline{\psfig{figure=taxis.eps,width=0.9\hsize}}
\end{figure*}


next up previous
Next: Bottom-Up Design Up: Behavior Previous: Architecture
Sven Behnke
1999-10-07