IP Library Granted Patent US 11,416,003
Granted Patent B2
US 11,416,003 · App. 16/573,284 · Granted Aug 16, 2022

Constrained mobility mapping

Inventors: Eric Whitman (Waltham, MA); Gina Christine Fay (Waltham, MA); Alex Khripin (Waltham, MA); Max Bajracharya (Los Altos, CA); Matthew Malchano (Waltham, MA); Adam Komoroski (Waltham, MA); Christopher Stathis (Waltham, MA)
Assignee: Boston Dynamics, Inc.
G05D1/0251B25J9/1666B25J9/1697B25J13/089B62D57/032G05D1/0214G05D1/0219G05D1/0238G05D1/0253
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,416,003
App. No.
16/573,284
Granted
Aug 16, 2022
Kind
B2
Abstract

A method of constrained mobility mapping includes receiving from at least one sensor of a robot at least one original set of sensor data and a current set of sensor data. Here, each of the at least one original set of sensor data and the current set of sensor data corresponds to an environment about the robot. The method further includes generating a voxel map including a plurality of voxels based on the at least one original set of sensor data. The plurality of voxels includes at least one ground voxel and at least one obstacle voxel. The method also includes generating a spherical depth map based on the current set of sensor data and determining that a change has occurred to an obstacle represented by the voxel map based on a comparison between the voxel map and the spherical depth map. The method additional includes updating the voxel map to reflect the change to the obstacle.

Claims (73)

1. A method comprising:

receiving, at data processing hardware, from at least one sensor of a robot, at least one original set of sensor data and a current set of sensor data, each of the at least one original set of sensor data and the current set of sensor data corresponding to an environment about the robot, the robot comprising a body;

generating, by the data processing hardware, a voxel map comprising a plurality of voxels based on the at least one original set of sensor data, the plurality of voxels comprising at least one ground voxel and at least one obstacle voxel;

generating, by the data processing hardware, a spherical depth map based on the current set of sensor data;

comparing, by the data processing hardware, one or more vertical columns of the voxel map to one or more corresponding vertical columns of the spherical depth map;

determining, by the data processing hardware, that a change has occurred to an object represented by the voxel map as an obstacle based on the comparison between the one or more vertical columns of the voxel map and the one or more corresponding vertical columns of the spherical depth map; and

updating, by the data processing hardware, the voxel map to reflect the change to the object within the environment.

2. The method of claim 1 , wherein the robot comprises four legs defining a quadruped.

3. The method of claim 1 , wherein generating the voxel map comprises:

determining whether three-dimensional units of space about the robot are occupied; and

for each three-dimensional unit that is occupied, classifying a respective unit as one of ground, an obstacle, or neither ground nor an obstacle.

4. The method of claim 1 , wherein the voxel map comprises a three-dimension (3D) grid and wherein the method further comprises, for each cell of the 3D grid of the voxel map, consolidating, by the data processing hardware, contiguous voxels of one or more respective vertical columns to form a segment, the segment comprising a height and a point weight, the point weight indicating a degree of certainty that one or more voxels forming the segment are occupied based on the at least one original set of sensor data.

5. The method of claim 4 , further comprising reducing, by the data processing hardware, the point weight of a respective segment when the current set of sensor data does not include sensor data defining the respective segment.

6. The method of claim 4 , further comprising:

comparing, by the data processing hardware, the height of the segment at a location in the voxel map to a height range from the one or more corresponding vertical columns at a respective location in the spherical depth map, the location of the segment and the respective location of the one or more corresponding vertical columns corresponding to the same location relative to the robot; and

determining, by the data processing hardware, that the height of the segment and the height range from the one or more corresponding vertical columns fail to match.

7. The method of claim 1 , wherein the spherical depth map comprises a spherical representation of the current set of sensor data, the spherical representation comprising rectangular structures defined by points of the sensor data at a distance and a height from the at least one sensor capturing the current set of sensor data.

8. The method of claim 1 , wherein updating the voxel map to reflect the change to the object within the environment comprises removing one or more voxels from the voxel map corresponding to the obstacle associated with the change.

9. The method of claim 8 , wherein removing the one or more voxels comprises:

using heuristics to identify nearby voxels that are associated with the change to the object with the environment; and

removing the identified nearby voxels.

10. The method of claim 4 , wherein updating the voxel map to reflect the change to the object within the environment comprises trimming the segment corresponding to the obstacle associated with the change.

11. A method comprising:

receiving, at data processing hardware, original sensor data corresponding to an environment about a robot from at least one sensor of the robot, the robot comprising a body;

generating, by the data processing hardware, a voxel map comprising a plurality of voxels based on the original sensor data, the plurality of voxels comprising at least one ground voxel and at least one obstacle voxel;

receiving, by the data processing hardware, a spherical depth map generated based on a current set of sensor data corresponding to the environment about the robot;

comparing, by the data processing hardware, one or more vertical columns of the voxel map to one or more corresponding vertical columns of the spherical depth map;

determining, by the data processing hardware, that a change has occurred to an object represented by the at least one obstacle voxel of the voxel map based on the comparison between the one or more vertical columns of the voxel map and the one or more corresponding vertical columns of the spherical depth map;

updating, by the data processing hardware, the voxel map to reflect the change to the object;

based on the updated voxel map, generating, by the data processing hardware, a body obstacle map configured to indicate locations in the environment where the body of the robot is capable of moving without interference with an obstacle in the environment, the body obstacle map divided into cells, wherein a plurality of the cells comprise an indication of a nearest obstacle boundary, the nearest obstacle boundary derived from the at least one obstacle voxel of the updated voxel map; and

communicating, by the data processing hardware, the body obstacle map to a control system, the control system configured to move the robot about the environment.

12. The method of claim 11 , wherein the indication comprises an estimate of a distance to the nearest obstacle boundary and a direction to the nearest obstacle boundary.

13. The method of claim 12 , wherein generating the body obstacle map comprises generating a vector field comprising a plurality of vectors, each vector of the plurality of vectors indicating a direction of obstacle avoidance, and wherein each vector comprises a vector direction opposite the direction to the nearest obstacle boundary.

14. The method of claim 11 , wherein the control system is configured to use the body obstacle map to control horizontal motion of the body of the robot and yaw rotation of the body of the robot.

15. The method of claim 11 , further comprising:

filtering, by the data processing hardware, the plurality of voxels of the updated voxel map based on a point weight associated with each voxel of the plurality of voxels, the point weight indicating a degree of certainty that a respective voxel is occupied based on the sensor data, and

wherein generating the body obstacle map based on the updated voxel map comprises translating to the body obstacle map the filtered plurality of voxels that satisfy a point weight threshold and correspond to an obstacle voxel.

16. A method comprising:

receiving, at data processing hardware, original sensor data corresponding to an environment about a robot from at least one sensor of the robot, the robot comprising a body and legs, each leg comprising a distal end;

generating, by the data processing hardware, a voxel map comprising a plurality of segments based on the original sensor data, each segment of the plurality of segments corresponding to a vertical column defined by one or more voxels, the plurality of segments comprising at least one ground segment and at least one obstacle segment;

receiving, by the data processing hardware, a spherical depth map generated based on a current set of sensor data corresponding to the environment about the robot;

comparing, by the data processing hardware, one or more vertical columns of the voxel map to one or more corresponding vertical columns of the spherical depth map;

determining, by the data processing hardware, that a change has occurred to an object represented by the at least one obstacle segment of the voxel map based on the comparison between the one or more vertical columns of the voxel map and the one or more corresponding vertical columns of the spherical depth map;

updating, by the data processing hardware, the voxel map to reflect the change to the object;

based on the updated voxel map, generating, by the data processing hardware, a ground height map configured to indicate heights to place the distal end of a respective leg of the robot when the robot is moving about the environment, the ground height map divided into cells, wherein at least one cell corresponds to a respective ground segment and comprises a respective height based on the respective ground segment; and

communicating, by the data processing hardware, the ground height map to a control system, the control system configured to move the distal end of the respective leg to a placement location in the environment based on the ground height map.

17. The method of claim 16 , wherein generating the ground height map comprises determining that a point weight for one or more voxels of the respective ground segment satisfies a height accuracy threshold, the point weight indicating a degree of certainty that a respective voxel is occupied based on sensor data, the height accuracy threshold indicating a level of accuracy for a height of a given object represented by the respective ground segment.

18. The method of claim 17 , wherein determining that the point weight for one or more voxels of the respective ground segment satisfies the height accuracy threshold comprises traversing the one or more voxels defining the respective ground segment from a greatest height of the respective ground segment to a lowest height of the respective ground segment.

19. The method of claim 16 , further comprising:

identifying, by the data processing hardware, that one or more cells of the ground height map correspond to missing terrain;

determining, by the data processing hardware, whether the missing terrain corresponds to an occlusion of the original sensor data; and

when the missing terrain corresponds to the occlusion of the original sensor data, replacing, by the data processing hardware, the missing terrain with flat terrain.

20. The method of claim 19 , further comprising, when the missing terrain fails to correspond to the occlusion of the original sensor data, replacing, by the data processing hardware, the missing terrain with smooth terrain.

21. The method of claim 19 , wherein the flat terrain persists within the ground height map until new sensor data identifies actual terrain corresponding to the flat terrain.

22. The method of claim 20 , wherein the smooth terrain does not persist for the ground height map during a subsequent iteration of the ground height map.

23. A method comprising:

receiving, at data processing hardware, original sensor data corresponding to an environment about a robot from at least one sensor of the robot, the robot comprising a body and legs, each leg comprising a distal end;

generating, by the data processing hardware, a voxel map comprising a plurality of segments based on the original sensor data, each segment of the plurality of segments corresponding to a vertical column defined by one or more voxels, the plurality of segments comprising at least one ground segment and at least one obstacle segment;

receiving, by the data processing hardware, a spherical depth map generated based on a current set of sensor data corresponding to the environment about the robot;

comparing, by the data processing hardware, one or more vertical columns of the voxel map to one or more corresponding vertical columns of the spherical depth map;

determining, by the data processing hardware, that a change has occurred to an object represented by the at least one obstacle segment of the voxel map based on the comparison between the one or more vertical columns of the voxel map and the one or more corresponding vertical columns of the spherical depth map;

updating, by the data processing hardware, the voxel map to reflect the change to the object;

based on the updated voxel map, generating, by the data processing hardware, a ground height map configured to indicate heights to place the distal end of a respective leg of the robot when the robot is moving about the environment;

based on the ground height map, generating, by the data processing hardware, a no step map comprising one or more no step regions, each no step region configured to indicate a region not to place the distal end of a respective leg of the robot when the robot is moving about the environment, the no step map divided into cells, wherein each cell comprises a distance value and a directional vector, the distance value indicating a distance to a boundary of a nearest obstacle to a cell, the directional vector indicating a direction to the boundary of the nearest obstacle to the cell; and

communicating, by the data processing hardware, the no step map to a control system, the control system configured to move the distal end of the respective leg to a placement location in the environment based on the no step map.

24. The method of claim 23 , wherein the distance to the boundary of the nearest obstacle comprises a sign identifying whether the cell is inside the nearest obstacle or outside the nearest obstacle.

25. The method of claim 23 , further comprising determining, by the data processing hardware, a first no step region corresponding to a potential shin collision by:

determining a minimum slope for a leg to achieve a commanded speed;

identifying a shin collision height based on the minimum slope; and

for each cell of the no step map, comparing the shin collision height to a ground height of a respective cell, the ground height for the respective cell received from the ground height map.

26. The method of claim 25 , further comprising determining, by the data processing hardware, that a difference between the shin collision height and the ground height for the respective cell satisfies a shin collision threshold.

27. The method of claim 23 , wherein at least one no step region of the one or more step regions identifies an area not accessible to the robot based on a current pose of the robot, the area accessible to the robot in an alternative pose different from the current pose.

28. The method of claim 23 , wherein generating the no step map comprises generating the no step map for a particular leg of the robot.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATIONS NUMBERS 63127573 AND 11/302759 AND THE CITY OF THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 057111 FRAME: 0202. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Oct 27, 2021
From: BOSTON DYNAMICS, INC.
To: BOSTON DYNAMICS, INC.
Reel/Frame 057964/0415 →
CHANGE OF NAME Recorded Oct 5, 2021
From: BOSTON DYNAMICS, INC.
To: BOSTON DYNAMICS, INC.
Reel/Frame 057711/0202 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2019
From: WHITMAN, ERIC; FAY, GINA CHRISTINE; KHRIPIN, ALEX; BAJRACHARYA, MAX; MALCHANO, MATTHEW; KOMOROSKI, ADAM; STATHIS, CHRISTOPHER
To: BOSTON DYNAMICS, INC.
Reel/Frame 051232/0266 →
Continuity (2)
Provisional Application 62883310 · Aug 6, 2019
Related Publication 20210041887A1 · Feb 11, 2021
Cited By (27)
US 12,222,723 US 12,235,652 US 12,304,082 US 12,346,116 US 12,365,094 US 12,372,982 US 12,403,611 US 12,420,434 US 12,442,640 US 12,461,531 US 12,466,075 US 12,468,300 US 12,539,618 US 12,578,733 US 12,585,292 US 12,605,824 US 12,611,766 US 12,611,767 US 12,632,051 US 12,637,158 US 12,638,859 US 12,649,246 US 12,697,720 US 12,697,741 US 12,705,880 US 12,707,556 US 12,709,029