The successful acquisition and organization of a large number of
skills for humanoid robots can be facilitated with a collection of performable tasks organized in a \emph{task matrix}. Tasks in the matrix can utilize particular preconditions and inconditions to enable execution, motion trajectories to specify desired movement, and references to other tasks to perform subtasks. Interaction between the matrix and external modules such as goal planners is achieved via a high-level interface that categorizes a task using its semantics and execution parameters, allowing queries on the matrix to be performed using different selection criteria. Performable tasks are stored in an XML-based file format
that can be readily edited and processed by other applications. In its
current implementation, the matrix
is populated with sets of primitive tasks (eg., reaching, grasping, arm-waving) and macro tasks that reference multiple primitive tasks (Pick-and-place and
Facing-and-waving).