Continuous collision detection for rigid bodies
Contact Methods for Rigid Body Dynamics
Task Matrix for programming humanoid robots
Reaching for humanoid robots
Human and humanoid movement classification

Task Matrix


My dissertation investigated means to program behaviors on humanoid robots. Programming humanoid robots to execute arbitrary tasks is difficult for numerous reasons, including high kinematic redundancy, complex dynamics, and the problems involved with balancing and locomotion. Additionally, once behaviors have been developed, "porting" a program to a robot with even slightly different kinematics or dynamics is generally quite difficult. Consequently, behaviors are typically written anew, thus ignoring one of the key tenets of software development, component reuse.

The Task Matrix (from the definition for matrix as a surrounding medium or structure) framework promotes portability of humanoid behaviors by providing a consistent interface to access robot hardware; in collaboration with Honda Research Institute, USA, I have developed robot-independent behaviors such as pointing, reaching, and fixating.

My dissertation examined how the Task Matrix can be used to perform occupational tasks (i.e., tasks performed in the workplace). I implemented a large subset of the MTM-1 work measurement system's task primitives; MTM-1 is a proven system for decomposing occupational tasks into primitives. Thus, a full implementation of MTM-1 provides some measure of completeness over the space of occupational tasks. The combination of the robot-independence provided by the Task Matrix framework and the approximate completeness offered by the MTM-1 inspired behaviors results in a constantly improving set of behaviors for performing useful tasks.

Videos from research into the Task Matrix

Waving

The following two movies show Asimo and the mannequin waving using a "canned" (i.e., free-space movement) task program.

NEW! Physically embodied Asimo waving:

Fixating

Videos showing both robots focusing their gaze on moving objects. fixate obviously works on unmoving targets as well. Note that the fixate program attempts to use the degrees-of-freedom of both the base orientation and the neck; if not possible (e.g., the base DOF are currently being used for reaching), only the DOF for the neck are used.

Asimo focusing its gaze on a rolling tennis ball.

The mannequin focusing its gaze on a rolling tennis ball.

Asimo fixating on another, walking Asimo.

The mannequin fixating on a walking Asimo.

NEW! Physically embodied Asimo fixating on a wine flute (augmented with a marker to aid in object recognition). The goal of the task is to keep the cup centered in Asimo's camera display. The movie on the right shows Asimo's viewpoint:

Pointing

Pointing is a sophisticated behavior that conveys intention, trains the sensors, and is useful for communication. The video on the left shows the simulated robot pointing (one arm points while the other trains an arm-mounted camera on the target), and the video on the right shows the physically embodied robot pointing; the object to be pointed to is a wine flute (augmented with a marker to facilitate recognition).

Reaching

Reaching is used to prepare the robot to grasp an object. Multiple valid pregrasping configurations for the hand may be specified to address the scenario when one or more configurations is unreachable.

"Interactive" reaches are shown below. Each time the robot reaches to the tennis ball, it is moved to a new location. This video shows that motion-planning is used (in real-time) to navigate around obstacles.

NEW! Physically simulated Asimo reaching (to 15cm) away to a wine flute. We are currently getting this behavior working on the robot.

Grasping

Videos showing Asimo grasping a couple of objects. No videos of the mannequin are shown grasping.

Releasing

A video showing Asimo releasing a grasped object. No videos of the mannequin are shown grasping.

Exploring the environment

The Task Matrix utilizes a passive sensing model to allow task programs to query the environment. The model of the environment is typically kept updated by fixating on manipulated objects, but the model must be constructed to map object locations for manipulation and collision avoidance. The explore task program performs such an initial construction.

The time-lapsed videos below show the environment being modeled using the robots' simulated sensor (the red tetrahedron-like wireframe emanating from the robots' heads). When the sensor models part of a surface, a brown texture appears on that surface.

Note that because only the kinematics of the robots in the videos are simulated, locomotion is depicted in an unrealistic manner (sliding across the floor rather than walking). This behavior will not require any porting, however, to effect locomotion on a dynamically simulated or embodied humanoid.

Picking up an object

We constructed a complex behavior for picking up an object using three primitive task programs: reach, grasp, and fixate. The robot fixates on the target object while simultaneously planning how to reach to it. After planning is complete, the robot reaches to the object while simultaneously still attempting to fixate on it. When the object is graspable, the robot grasps it, which also terminates the fixate program.

The state machine for performing the pickup behavior.

Asimo picking up a tennis ball.

Asimo picking up a vacuum.

The mannequin picking up a vacuum.

Putting down an object

The putdown task program is analogous to pickup; it uses position, release, and fixate to place an object onto a surface. However, there are a couple of significant differences. Putdown uses two conditions, near and above, to determine valid operational-space configurations to place the target object. Second, the fixate subprogram focuses on the surface rather than the grasped object.

The state machine for performing the putdown behavior.

Asimo placing a tennis ball on a table.

Asimo placing a vacuum on a table.

The mannequin placing a vacuum on a table.

Vacuuming a region of the environment

The vacuum program is a complex task program consisting not only of the primitive task programs position and fixate, but also of the complex task programs pickup and putdown. It commands the robot to pickup a vacuum, vacuum a region of the environment, and put the vacuum down when complete. The position subprogram uses the above condition to guide the tip of the vacuum above the debris to be vacuumed.

The state machine for performing the vacuuming behavior.

Greeting a humanoid

The greet behavior is a complex task program composed of the primitive subprogram fixate and programs for preparing to wave (i.e., a postural task program) and waving (i.e., a canned task program). Greet first focuses the robot's gaze on the target humanoid. When it has focused completely, it brings the arm up and begins waving. When waving is complete, the robot reverts to a rest posture and stops tracking the target robot. See [1] for information on video artifacts.

The state machine for performing the greeting behavior.

Asimo greeting a fellow, walking Asimo.

The mannequin greeting a walking Asimo.

Relevant publications: