A method for controlling the motion of a bipedal humanoid robot having a center of mass, a first leg and a second leg, said first leg ending in a first support foot bounded by a first support polygon, and said second leg ending in a second support foot bounded by a second support polygon, comprising:
- a. providing said robot with sensors configured to determine orientation information for said humanoid robot and rate of orientation change for said humanoid robot;
- b. providing a control system for said robot, with said control system receiving said orientation and said orientation rate information from said sensors;
- c. said control system using said orientation information and said rate of orientation change information to determine a position of said center of mass and a velocity of said center of mass;
- d. said control system determining an instantaneous capture point of said humanoid robot based on said position of said center of mass, and said velocity of said center of mass;
- e. said control system using said orientation information to determine a set of vertices for said first polygon that are visible from said instantaneous capture point;
- f. said control system defining a set of reflected visible vertices by reflecting each of said visible vertices through said instantaneous capture point;
- g. said control system using said instantaneous capture point and said set of reflected visible vertices to define first and second capture region boundary rays;
- h. said control system determining a maximum step boundary;
- i. said control system defining a capture region bounded by said set of reflected visible vertices, said first capture region boundary ray, said second capture region boundary ray, and said maximum step boundary;
- and
- j. said control system controlling the motion of said second leg to place at least a portion of said second support polygon into said capture region.