An extensible task engine framework for humanoid robots. Robot
instructions are stored as tasks and skills. Tasks are designed so that
they can be executed by a variety of robots with differing
configurations. A task can refer to zero or more skills. A skill can be
designed for a particular configuration of robot. A task can be
transferred from robot to robot. When executed on a particular robot, the
task makes calls to one or more skills that can take advantage of the
capabilities of that robot.