A method of controlling a robot includes running multiple applications on
a processor, where each application has a robot controller and an action
selection engine. Each application is in communication with at least one
behavior and at least one action model of at least part of the robot. The
method includes running periodic action selection cycles on each action
selection engine. Each action selection cycle includes selecting a
command for each action space of each action model, generating a single
overall command based on the accumulated commands for each action model,
and sending the overall command to the robot controller for execution on
the robot.