US 12,443,774 B2
Deterministic sampling of autonomous vehicle simulation variables at runtime
Yuzhu Shen, Santa Clara, CA (US); and Marc Sunet, Santa Clara, CA (US)
Assigned to Beijing Voyager Technology Co., Ltd., Beijing (CN)
Filed by Beijing Voyager Technology Co., Ltd., Beijing (CN)
Filed on Dec. 30, 2020, as Appl. No. 17/138,706.
Prior Publication US 2022/0207209 A1, Jun. 30, 2022
Int. Cl. G06F 30/20 (2020.01); B60W 60/00 (2020.01); G06F 7/58 (2006.01); G06F 111/02 (2020.01); G06F 111/08 (2020.01)
CPC G06F 30/20 (2020.01) [G06F 7/582 (2013.01); B60W 60/0011 (2020.02); B60W 2540/30 (2013.01); B60W 2720/103 (2013.01); G06F 2111/02 (2020.01); G06F 2111/08 (2020.01)] 20 Claims
OG exemplary drawing
 
1. A non-transitory computer readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform a method of generating one or more scenarios and simulating an operation of an autonomous vehicle, the method comprising:
determining a plurality of sets of sample values for a plurality of simulation variables, each of the simulation variables being associated with a plurality of possible sample values, the determining comprising:
for each simulation variable of the plurality of simulation variables, using a pseudorandom number generator seeded with a combination of a master seed and an identification of the simulation variable to determine a set of sample values for the simulation variable to facilitate a deterministic and order-independent sampling of the plurality of simulation variables such that the simulation variable is assigned a same set of sample values for different executions of the same simulation of the operation of the autonomous vehicle, wherein the plurality of simulation variables are defined within at least one of a set of layers and each layer in the set of layers defines one or more variables, wherein a first layer provides a first definition of a position noise variable, and wherein a second layer provides a second definition of the position noise variable;
generating the one or more scenarios for simulating the operation of the autonomous vehicle based on the plurality of sets of sample values determined for the plurality of simulation variables; and
for a scenario of the one or more scenarios, simulating the operation of the autonomous vehicle by:
applying a set of sample values to a set of simulation variables associated with the scenario, the set of simulation variables comprising a first simulation variable associated with an output of a sensor of the autonomous vehicle configured to detect a position of one or more vehicles on a road other than the autonomous vehicle and a second simulation variable associated with timing of one or more messages being passed between components of the autonomous vehicle, wherein the set of simulation variables includes the position noise variable and wherein determining a sample value for the position noise variable comprises:
determining a first specification for the position noise variable based on the first definition from the first layer of the set of layers;
determining a second specification for the position noise variable based on the second definition from the second layer, the second layer being associated with a higher priority than the first layer which is associated with a lower priority, wherein the second specification defines variables in a scene or scenario definition, and wherein specifications of the higher priority have precedence over specifications of the lower priority such that, for a variable included in both the first layer and the second layer, the variable is defined based on the second specification; and
determining a final specification for the position noise variable by overriding or refining the first specification based on the second specification;
performing a plurality of tests associated with the scenario by altering a position of the one or more vehicles on the road by injecting noise into a first set of sample values applied to the first simulation variable, wherein the first simulation variable is a position variable, wherein the first set of sample values correspond to position values for the position variable, and wherein injecting noise into the first set of sample values modifies the first set of sample values to enable performance of the plurality of tests with different positions of the one or more vehicles; and
altering timing of the one or more messages being passed between components of the autonomous vehicle by varying a second set of sample values for the second simulation variable.