The behavior module transfers information across different modules and incorporates fail-safe mechanisms to accommodate the crash or inaccuracy of any module. The image processing module may fail to locate the ball or the goal post. In such a scenario, the behavior framework will supply last locations of the same to the path module so that a path can be generated.Since such processes occur on a frame-by-frame basis, errors introduced by such mechanisms are easily corrected later.
Another crucial function of the behavior module is to maintain a current global position of the robot. It achieves this by using a motion model framework which is charted out above. The localization module forwards the present global location with an associated confidence. Similarly, the walk module maintains a constantly updated current position estimate which also has an associated confidence derived from the accuracy of the walk of the robot. This confidence decays exponentially with time, and the model is refreshed whenever the robot localizes with high confidence. In case the localization module reports a low confidence value, the motion model framework looks to the walk position estimate for the current position. In some cases it uses a weighted average of the two. It then forwards the current position to the path planning module.
With the help of the XABSL behaviour framework, data is easily extracted from and passed to different threads running in the processor. Multithreading APIs prevent data races among the threads. A block diagram showing information transfer between the threads is shown below.