# US 9,517,561 B2 · Natural pitch and roll

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,517,561 B2
- Document ID: US9517561B2
- Status: Granted
- Kind: B2
- Application number: 14/586,519
- Filed: 2014-12-30
- Published: 2016-02-25
- Granted: 2016-12-13
- Earliest claimed: 2014-08-25
- Assignees: Google Inc.
- Applicants: Google Inc.
- Inventors: Alex Khripin; Alfred Anthony Rizzi
- Web page: https://patentgrep.com/patent/US9517561B2

## CPC

- B25J 9/1694: {characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion}
- B25J 9/1664: {characterised by motion, path, trajectory planning}
- B62D 57/032: with alternately or sequentially lifted supporting base and legs; with alternately or sequentially lifted feet or skid (B62D57/024 takes precedence)
- G05B 2219/39082: Collision, real time collision avoidance
- G05B 2219/39215: Adaptive control with stabilizing compensation
- G05B 2219/39325: External force control, additional loop comparing forces corrects position
- Y10S 901/01: Mobile robot
- Y10S 901/09: Closed loop, sensor feedback controls arm movement
- Y10S 901/46: Sensing device
- B25J: MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES ({manipulators specially adapted for use in surgery A61B34/70; manipulators used in cleaning hollow articles B08B9/04}; manipulators associated with rolling mills B21B39/20; manipulators associated with forging machines B21J13/10; {manipulators associated with picking-up and placing mechanisms B23P19/007}; means for holding wheels or parts thereof B60B30/00; {vehicles with ground-engaging propulsion means, e.g. walking members B62D57/02, B62D57/032; devices for picking-up and depositing articles or materials between conveyors B65G47/90, B65G47/91; manipulators with gripping or holding means for transferring packages B65H67/065}; cranes B66C; {manipulators used in the protection or supervision of pipe-line installations F17D5/00; walking equipment adapted for nuclear steam-generators F22B37/006}; manipulators specially adapted for, or associated with, nuclear reactors G21C; {apparatus used for handling wafers during manufacture or treatment of semiconductor H10P72/50})
- B62D: MOTOR VEHICLES; TRAILERS (steering, or guiding on a desired track, of agricultural machines or implements A01B69/00; wheels, castors, axles, increasing wheel adhesion B60B; vehicle tyres, tyre inflation or tyre changing B60C; connections between vehicles of a train or the like B60D; vehicles for use on rail and road, amphibious or convertible vehicles B60F; suspension arrangements B60G; heating, cooling, ventilating or other air treating devices B60H; windows, windscreens, non-fixed roofs, doors or similar devices, protective coverings for vehicles not in use B60J; propulsion plant arrangements, auxiliary drives, transmissions, controls, instrumentation or dashboards B60K; electric equipment or propulsion of electrically-propelled vehicles B60L; power supply for electrically-propelled vehicles B60M; passenger accommodation not otherwise provided for B60N; adaptations for load transportation or to carry special loads or objects B60P; arrangement of signalling or lighting devices, the mounting or supporting thereof or circuits therefor, for vehicles in general B60Q; vehicles, vehicle fittings or vehicle parts not otherwise provided for B60R; servicing, cleaning, repairing, supporting, lifting, or manoeuvring, not otherwise provided for, B60S; brake arrangements, brake control systems or parts thereof B60T; air-cushion vehicles B60V; motor-cycles, accessories therefor B62J, B62K; testing of vehicles G01M)
- G05B: CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS (systems for controlling or regulating non-electric variables G05D; systems for regulating electric or magnetic variables G05F; control devices or systems insofar as characterised by mechanical features only G05G)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

A control system may receive a first plurality of measurements indicative of respective joint angles corresponding to a plurality of sensors connected to a robot. The robot may include a body and a plurality of jointed limbs connected to the body associated with respective properties. The control system may also receive a body orientation measurement indicative of an orientation of the body of the robot. The control system may further determine a relationship between the first plurality of measurements and the body orientation measurement based on the properties associated with the jointed limbs of the robot. Additionally, the control system may estimate an aggregate orientation of the robot based on the first plurality of measurements, the body orientation measurement, and the determined relationship. Further, the control system may provide instructions to control at least one jointed limb of the robot based on the estimated aggregate orientation of the robot.

## Claims

### Claim 1

A method comprising:
receiving, from a plurality of sensors connected to a robot, a first plurality of measurements indicative of respective joint angles of a plurality of jointed limbs, wherein the robot comprises a body and the plurality of jointed limbs is connected to the body, and wherein the plurality of jointed limbs is associated with respective properties;
receiving a body orientation measurement indicative of an orientation of the body of the robot;
determining a relationship between the first plurality of measurements and the body orientation measurement based on the respective properties associated with the plurality of jointed limbs of the robot;
determining, based on the first plurality of measurements, the body orientation measurement, and the determined relationship, a predicted aggregate orientation the robot is estimated to be in at a future time;
before causing the robot to assume the predicted aggregate orientation, determining, based on the predicted aggregate orientation, that the predicted aggregate orientation is an unstable aggregate orientation; and
in response to determining that the predicted aggregate orientation of the robot is an unstable aggregate orientation, providing instructions to balance the predicted aggregate orientation by causing the robot to move at least one jointed limb of the plurality of jointed limbs of the robot.

### Claim 2 (depends on 1)

The method of claim 1, wherein the determined relationship is a first relationship, and wherein the method further comprises:
determining a particular mode of operation of the robot corresponding to one or more of the first plurality of measurements being within one or more respective operating ranges; and
determining a second relationship between the first plurality of measurements and the body orientation measurement associated with the particular mode of operation based on (i) the respective properties associated with the plurality of jointed limbs of the robot and (ii) the determined particular mode of operation of the robot.

### Claim 3 (depends on 2)

The method of claim 2, wherein determining the predicted aggregate orientation the robot is estimated to be in at the future time comprises:
based on determining that the robot is operating in the particular mode of operation, determining the predicted orientation the robot is estimated to be in at the future time based on the first plurality of measurements, the body orientation measurement, and the second relationship.

### Claim 4 (depends on 1)

The method of claim 1, wherein providing instructions to balance the predicted aggregate orientation by causing the robot to move the at least one jointed limb of the plurality of jointed limbs of the robot comprises:
based on the predicted aggregate orientation, determining an extent of force with which to place the at least one jointed limb of the plurality of jointed limbs of the robot on a surface in order to balance the predicted aggregate orientation; and
providing instructions to place the at least one jointed limb of the plurality of jointed limbs of the robot on the surface using the determined extent of force.

### Claim 5 (depends on 1)

The method of claim 1, wherein providing instructions to balance the predicted aggregate orientation by causing the robot to move the at least one jointed limb of the plurality of jointed limbs of the robot comprises:
based on the predicted aggregate orientation, determining a location to which to move the at least one jointed limb of the plurality of jointed limbs of the robot in order to balance the predicted aggregate orientation; and
providing instructions to move the at least one jointed limb of the plurality of jointed limbs of the robot to the determined location.

### Claim 6 (depends on 1)

The method of claim 1, wherein the provided instructions are first instructions, and wherein the method further comprises:
determining a path indicative of an expected trajectory of the robot based on the predicted aggregate orientation;
determining that an object is present within the determined path; and
based on determining that the object is present within the determined path, providing second instructions to control at least one jointed limb of the plurality of jointed limbs of the robot to avoid colliding with the object.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
estimating an angular velocity of the robot based on the predicted aggregate orientation of the robot; and
providing instructions to balance the predicted aggregate orientation by causing the robot to move the at least one jointed limb of the plurality of jointed limbs of the robot based on the determined estimated angular velocity.

### Claim 8 (depends on 7)

The method of claim 7, wherein the provided instructions are first instructions, and wherein the method further comprises:
receiving, from the plurality of sensors connected to the robot, a second plurality of measurements indicative of external forces exerted on the robot;
based on the received second plurality of measurements and the estimated angular velocity of the robot, determining a component of the estimated angular velocity caused by the external forces exerted on the robot; and
providing second instructions to balance the predicted aggregate orientation by causing the robot to move the at least one jointed limb of the plurality of jointed limbs of the robot based on the determined component of the estimated angular velocity caused by the external forces exerted on the robot.

### Claim 9 (depends on 1)

The method of claim 1, wherein the provided instructions are first instructions, and wherein the method further comprises:
providing a path indicative of a desired trajectory of the robot; and
based on the provided path and the predicted aggregate orientation of the robot, providing second instructions to control at least one jointed limb of the plurality of jointed limbs of the robot to maneuver the robot to travel along the provided path.

### Claim 10 (depends on 1)

The method of claim 1, wherein the provided instructions are first instructions, and wherein the method further comprises:
after causing the robot to assume the predicted aggregate orientation, determining a current aggregate orientation of the robot based on the first plurality of measurements, the body orientation measurement, and the determined relationship;
determining that a current stance of the robot is not stable based on the current aggregate orientation of the robot; and
in response to determining that the current stance of the robot is not stable, providing second instructions to control at least one jointed limb of the plurality of jointed limbs of the robot to adjust the current stance of the robot.

### Claim 11 (depends on 1)

The method of claim 1, wherein the provided instructions are first instructions, and wherein the method further comprises:
receiving, from the plurality of sensors connected to the robot, a second plurality of measurements indicative of external forces exerted on the robot;
determining an estimated angular velocity of the robot based on the predicted aggregate orientation of the robot;
determining a component of the estimated angular velocity caused by movements of the plurality of jointed limbs of the robot; and
providing second instructions to balance the predicted aggregate orientation by causing the robot to move the at least one jointed limb of the plurality of jointed limbs of the robot based on the determined component of the estimated angular velocity caused by movements of the plurality of jointed limbs of the robot.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
determining whether an object is in front of the robot; and
providing instructions to stop the robot responsive to determining that the object is in front of the robot.

### Claim 13 (depends on 1)

The method of claim 1, further comprising:
determining whether an object is within reach of a particular jointed limb of the plurality of jointed limbs of the robot; and
providing instructions to limit an angle through which the particular jointed limb can move to avoid making contact with the object.

### Claim 14 (depends on 1)

The method of claim 1, wherein the provided instructions are first instructions, wherein the robot is in midair above a surface, and wherein the method further comprises:
determining an angle by which to adjust the at least one jointed limb of the plurality of jointed limbs based on the predicted aggregate orientation in order to balance the predicted aggregate orientation of the robot when the at least one jointed limb of the plurality of jointed limbs lands on the surface; and
providing second instructions to adjust the at least one jointed limb of the plurality of jointed limbs by the determined angle.

### Claim 15 (depends on 1)

The method of claim 1, further comprising:
receiving, from the plurality of sensors connected to the robot, a second plurality of measurements indicative of external forces exerted on the robot;
determining a measured angular momentum of the robot based on the second plurality of measurements and at least one of (i) the first plurality of measurements, and (ii) the body orientation measurement, wherein the measured angular momentum includes noise having a first average amplitude;
estimating an angular velocity of the robot based on the predicted aggregate orientation of the robot;
determining an estimated angular momentum based on the measured angular momentum and the estimated angular velocity, wherein the estimated angular momentum includes noise having a second average amplitude, wherein the second average amplitude is less than the first average amplitude.

### Claim 16

A robot comprising:
a body;
a plurality of jointed limbs connected to the body, wherein the plurality of jointed limbs is associated with respective properties;
a first plurality of sensors configured to provide a first plurality of measurements indicative of respective joint angles of the plurality of jointed limbs;
a second sensor configured to provide a body orientation measurement indicative of an orientation of the body of the robot, wherein the second sensor is coupled to the body;
a processing system, including a processor and a memory, configured to:
determine a relationship between the first plurality of measurements and the body orientation measurement based on the respective properties associated with the plurality of jointed limbs
determine, based on the first plurality of measurements, the body orientation measurement, and the determined relationship, a predicted aggregate orientation the robot is estimated to be in at a future time;
before causing the robot to assume the predicted aggregate orientation, determine, based on the predicted aggregate orientation, that the predicted aggregate orientation is an unstable aggregate orientation; and
in response to determining that the predicted aggregate orientation of the robot is an unstable aggregate orientation, provide instructions to balance the predicted aggregate orientation by causing the robot to move at least one jointed limb of the plurality of jointed limbs of the robot.

### Claim 17 (depends on 16)

The robot of claim 16, wherein the respective properties associated with the plurality of jointed limbs include a mass of each jointed limb and a shape of each jointed limb, and wherein the determined relationship further indicates a relationship between a torque produced from moving a given jointed limb of the plurality of jointed limbs and a torque applied to a portion of the robot.

### Claim 18

A non-transitory computer-readable medium having stored thereon instructions that, upon execution by at least one processor, cause a robot to perform operations comprising:
receiving, from a plurality of sensors connected to the robot, a first plurality of measurements indicative of respective joint angles of a plurality of jointed limbs, wherein the robot comprises the plurality of jointed limbs, and wherein the plurality of jointed limbs is associated with respective properties;
receiving a body orientation measurement indicative of an orientation of a portion of the robot;
determining a relationship between the first plurality of measurements and the body orientation measurement based on the respective properties associated with the plurality of jointed limbs of the robot;
determining, based on the first plurality of measurements, the body orientation measurement, and the determined relationship, a predicted aggregate orientation the robot is estimated to be in at a future time;
before causing the robot to assume the predicted aggregate orientation, determining, based on the predicted aggregate orientation, that the predicted aggregate orientation is an unstable aggregate orientation; and
in response to determining that the predicted aggregate orientation of the robot is an unstable aggregate orientation, providing instructions to balance the predicted aggregate orientation by causing the robot to move at least one jointed limb of the plurality of jointed limbs of the robot.

### Claim 19 (depends on 18)

The non-transitory computer-readable medium of claim 18, wherein the operations further comprise:
providing the predicted aggregate orientation of the robot to a control system, wherein the control system is configured to maintain a balance of the robot.

### Claim 20 (depends on 1)

The method of claim 1, wherein the respective properties associated with the plurality of jointed limbs include a mass of each jointed limb and a shape of each jointed limb, and wherein the determined relationship further indicates a relationship between a torque produced from moving a given jointed limb of the plurality of jointed limbs and a torque applied to a portion of the robot.
