IP Library Granted Patent US 11,619,497
Granted Patent B2
US 11,619,497 · App. 17/086,144 · Granted Apr 4, 2023

Autonomous vehicle navigation using with coalescing constraints for static map data

Inventors: Mengda Yang (Sunnyvale, CA); Michael Wu (San Jose, CA); Ke Li (San Jose, CA); Piaoyang Cui (Santa Clara, CA)
Assignee: Pony AI Inc.
G01C21/32G05D1/0274G06V10/757G05D1/0248
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,619,497
App. No.
17/086,144
Granted
Apr 4, 2023
Kind
B2
Abstract

Systems, methods, and non-transitory computer readable media are provided for obtaining a slice of static map data comprising a plurality of blocks, each block comprising a plurality of cells, each, each cell having a cell value indicating a probability that an object is present in the cell; loading the slice into a cache memory of a parallel processor; arranging the static map data in the cache memory in contiguous memory spaces assigned to a group of workers of the parallel processor that have coalescing constraints; loading a frame of dynamic map data into the cache memory; obtaining a plurality of scan match candidates each representing a possible position and attitude of the vehicle; processing, in the parallel processor, the static and dynamic map data and the candidates to generate results each representing a candidate and score; and selecting the candidate having the highest score as a vehicle position.

Claims (85)

1. A system comprising:

one or more processors; and

a memory storing instructions that, when executed by the one or more processors, cause the system to perform a method comprising:

obtaining, using a three-dimensional rounding buffer, a slice of static map data representing a static geographical map, wherein:

each slice represents a horizontal region of the static geographical map;

each slice comprises a plurality of blocks;

each block comprises a plurality of cells;

each cell corresponds to a respective three-dimensional region of the static geographical map; and

each cell has a cell value that indicates an object probability that an object is present in the cell;

loading the slice of static map data into a cache memory of a parallel processor;

arranging the static map data in the cache memory in contiguous memory spaces assigned to a group of workers of the parallel processor that have coalescing constraints, wherein the coalescing constraints comprise requirements in order for multiple memory access in the contiguous memory spaces to be combined in a single transaction;

obtaining a frame of dynamic map data, wherein the dynamic map data represents LIDAR data collected by a rotating LIDAR sensor on a vehicle;

loading the frame of the dynamic map data into the cache memory of the parallel processor;

obtaining a plurality of scan match candidates each representing a possible position and attitude of the vehicle;

processing, in the parallel processor, the static map data, the dynamic map data, and the plurality of scan match candidates to generate one or more results, wherein each result represents one of the scan match candidates and a score for the one of the scan match candidates; and

selecting the scan match candidate having the highest score as a position of the vehicle.

2. The system of claim 1 , wherein the instructions further cause the system to perform:

obtaining a further frame of the dynamic map data;

loading the further frame of the dynamic map data into the cache memory of the parallel processor;

obtaining a further plurality of the scan match candidates;

processing, in the parallel processor, the further frame of the dynamic map data, the further plurality of the scan match candidates, and the static map data, to generate one or more further results, wherein each further result represents a further one of the scan match candidates and a further score for the one of the scan match candidates; and

selecting the further scan match candidate having the highest score as a further position of the vehicle.

3. The system of claim 1 , wherein:

the slice of static map data comprises a block occupancy mask that identifies blocks containing at least one cell with a non-zero cell value; and

loading the slice of static map data into a cache memory of a parallel processor comprises: loading only blocks identified by the block occupancy mask.

4. The system of claim 3 , wherein:

the block occupancy mask is encoded according to Group Varint Encoding (GVE), which indicates a number of blocks to skip.

5. The system of claim 3 , wherein:

each block comprises N by N by N cells of the LIDAR data; and

N is an integer greater than one.

6. The system of claim 5 , wherein:

the slice of static map data comprises a cell index for each block that indexes the cells in each block in z-order; and

loading the slice of static map data into a cache memory of a parallel processor comprises: loading the cells of the static map data into the cache memory of the parallel processor according to the cell indexes.

7. The system of claim 1 , wherein 32 contiguous threads access adjacent words of the static map data in the cache memory in a single transaction.

8. A non-transitory computer readable medium comprising instructions that, when executed, cause one or more processors to perform a method comprising:

obtaining, using a three-dimensional rounding buffer, a slice of static map data representing a static geographical map, wherein each slice represents a horizontal region of the static geographical map, wherein each slice comprises a plurality of blocks, wherein each block comprises a plurality of cells, wherein each cell corresponds to a respective three-dimensional region of the static geographical map, and wherein each cell has a cell value that indicates an object probability that an object is present in the cell;

loading the slice of static map data into a cache memory of a parallel processor;

arranging the static map data in the cache memory in contiguous memory spaces assigned to a group of workers of the parallel processor that have coalescing constraints, wherein the coalescing constraints comprise requirements in order for multiple memory access in the contiguous memory spaces to be combined in a single transaction;

obtaining a frame of dynamic map data, wherein the dynamic map data represents LIDAR data collected by a rotating LIDAR sensor on a vehicle;

loading the frame of the dynamic map data into the cache memory of the parallel processor;

obtaining a plurality of scan match candidates each representing a possible position and attitude of the vehicle;

processing, in the parallel processor, the static map data, the dynamic map data, and the plurality of scan match candidates to generate one or more results, wherein each result represents one of the scan match candidates and a score for the one of the scan match candidates; and

selecting the scan match candidate having the highest score as a position of the vehicle.

9. The non-transitory computer readable medium of claim 8 , wherein the instructions further cause the one or more processors to perform:

obtaining a further frame of the dynamic map data;

loading the further frame of the dynamic map data into the cache memory of the parallel processor;

obtaining a further plurality of the scan match candidates;

processing, in the parallel processor, the further frame of the dynamic map data, the further plurality of the scan match candidates, and the static map data, to generate one or more further results, wherein each further result represents a further one of the scan match candidates and a further score for the one of the scan match candidates; and

selecting the further scan match candidate having the highest score as a further position of the vehicle.

10. The non-transitory computer readable medium of claim 8 , wherein:

the slice of static map data comprises a block occupancy mask that identifies blocks containing at least one cell with a non-zero cell value; and

loading the slice of static map data into a cache memory of a parallel processor comprises: loading only blocks identified by the block occupancy mask.

11. The non-transitory computer readable medium of claim 10 , wherein:

the block occupancy mask is encoded according to Group Varint Encoding (GVE).

12. The non-transitory computer readable medium of claim 10 , wherein:

each block comprises N by N by N cells of the LIDAR data; and

N is an integer greater than one.

13. The non-transitory computer readable medium of claim 12 , wherein:

the slice of static map data comprises a cell index for each block that indexes the cells in each block in z-order; and

loading the slice of static map data into a cache memory of a parallel processor comprises: loading the cells of the static map data into the cache memory of the parallel processor according to the cell indexes.

14. The non-transitory computer readable medium of claim 12 , wherein N=4.

15. A method, comprising:

obtaining, using a three-dimensional rounding buffer, a slice of static map data representing a static geographical map, wherein each slice represents a horizontal region of the static geographical map, wherein each slice comprises a plurality of blocks, wherein each block comprises a plurality of cells, wherein each cell corresponds to a respective three-dimensional region of the static geographical map, and wherein each cell has a cell value that indicates an object probability that an object is present in the cell;

loading the slice of static map data into a cache memory of a parallel processor;

arranging the static map data in the cache memory in contiguous memory spaces assigned to a group of workers of the parallel processor that have coalescing constraints, wherein the coalescing constraints comprise requirements in order for multiple memory access in the contiguous memory spaces to be combined in a single transaction;

obtaining a frame of dynamic map data, wherein the dynamic map data represents LIDAR data collected by a rotating LIDAR sensor on a vehicle;

loading the frame of the dynamic map data into the cache memory of the parallel processor;

obtaining a plurality of scan match candidates each representing a possible position and attitude of the vehicle;

processing, in the parallel processor, the static map data, the dynamic map data, and the plurality of scan match candidates to generate one or more results, wherein each result represents one of the scan match candidates and a score for the one of the scan match candidates; and

selecting the scan match candidate having the highest score as a position of the vehicle.

16. The method of claim 15 , further comprising:

obtaining a further frame of the dynamic map data;

loading the further frame of the dynamic map data into the cache memory of the parallel processor;

obtaining a further plurality of the scan match candidates;

processing, in the parallel processor, the further frame of the dynamic map data, the further plurality of the scan match candidates, and the static map data, to generate one or more further results, wherein each further result represents a further one of the scan match candidates and a further score for the one of the scan match candidates; and

selecting the further scan match candidate having the highest score as a further position of the vehicle.

17. The method of claim 15 , wherein:

the slice of static map data comprises a block occupancy mask that identifies blocks containing at least one cell with a non-zero cell value; and

loading the slice of static map data into a cache memory of a parallel processor comprises: loading only blocks identified by the block occupancy mask.

18. The method of claim 17 , wherein:

the block occupancy mask is encoded according to Group Varint Encoding (GVE).

19. The method of claim 17 , wherein each block comprises N by N by N cells of the LIDAR data, wherein N is an integer, wherein N>1.

20. The method of claim 19 , wherein:

the slice of static map data comprises a cell index for each block that indexes the cells in each block in z-order; and

loading the slice of static map data into a cache memory of a parallel processor comprises: loading the cells of the static map data into the cache memory of the parallel processor according to the cell indexes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2020
From: YANG, MENGDA; WU, MICHAEL; LI, KE; CUI, PIAOYANG
To: PONY AI INC.
Reel/Frame 054240/0033 →
Continuity (1)
Related Publication 20220136838A1 · May 5, 2022
Cited By (1)
US 12,516,952