IP Library Granted Patent US 11,550,623
Granted Patent B2
US 11,550,623 · App. 16/727,665 · Granted Jan 10, 2023

Distributed system task management using a simulated clock

Inventor: Alok Priyadarshi (Mountain View, CA)
Assignee: Beijing Voyager Technology Co., Ltd.
G06F9/4881G05D1/0094G06F1/14G06F9/3818G06F30/20G05D2201/0213
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,550,623
App. No.
16/727,665
Granted
Jan 10, 2023
Kind
B2
Abstract

Systems and methods are provided for the deterministic simulation of distributed systems, such as vehicle-based processing systems. A distributed system may be represented as a plurality of subsystems or “nodelets” executing with a single process of a computing device during a simulation. A simulated clock may be used during execution of the nodelets to mitigate the variability in timestamped data that may be caused by latency or jitter. In some embodiments, all timestamps generated during a given frame of work will be assigned the same time value, regardless of when within the frame the timestamps were generated. A task scheduler can update the value of the simulated clock as execution proceeds through different frames of work.

Claims (68)

1. A system comprising:

a first computing device configured to at least:

execute a first instance of a vehicle-based processing system in a production mode, wherein the vehicle-based processing system comprises a computation graph comprising a plurality of subsystems, wherein individual subsystems of the plurality of subsystems comprise executable instructions, wherein the computation graph is configured to execute in a simulation mode in which the subsystems execute serially to process simulated sensor data, and wherein the computation graph is further configured to execute in the production mode in which two or more subsystems of the plurality of subsystems execute concurrently to process sensor data received from the one or more sensors;

receive sensor data from one or more sensors coupled to the first computing device;

identify at least a first subset of the plurality of subsystems, wherein the first subset is to process the sensor data; and

execute the first subset to process the sensor data, wherein a system clock of the first computing device advances during execution of the first subset, and wherein a first timestamp is generated based at least partly on a value of the system clock during execution of the first subset; and

a second computing device configured to at least:

execute a second instance of the vehicle-based processing system in the simulation mode;

receive simulated sensor data representing data generated by one or more sensors;

identify at least a second subset of the plurality of subsystems, wherein the second subset is to process the simulated sensor data;

set a simulated clock to a simulated time; and

execute the second subset to process the simulated sensor data, wherein the simulated clock remains static during execution of the second subset, and wherein a second timestamp is generated based at least partly on the simulated clock during execution of the second subset.

2. The system of claim 1 , wherein the first computing device comprises an onboard computing device of a vehicle, and wherein the second computing device comprises a user device separate from the vehicle.

3. The system of claim 1 , wherein the sensor data is generated by at least one of: a LiDAR sensor, a RADAR sensor, an inertial sensor, or a camera.

4. The system of claim 1 , wherein the second computing device is further configured to at least:

determine, during execution of the second subset, that a callback to a subsystem of the plurality of subsystems is to be executed; and

delay execution of the callback to the subsystem until the simulated time represented by the simulated clock is changed, wherein execution of the callback to the subsystem occurs after execution of the second subset has completed.

5. The system of claim 1 , wherein the first computing device is further configured to at least:

determine, during execution of the first subset on a first thread, that a callback to a subsystem of the plurality of subsystems is to be executed; and

execute the callback to the subsystem on a second thread, wherein execution of the first subset continues on the first thread during execution of the callback to the subsystem on the second thread.

6. A computer-implemented method comprising:

under control of a computing system comprising a computer processor configured to execute specific instructions,

executing an instance of a vehicle-based processing system in a simulation mode, wherein the vehicle-based processing system comprises a computation graph comprising a plurality of subsystems, wherein individual subsystems of the plurality of subsystems comprise executable instructions, wherein the computation graph is configured to execute in the simulation mode in which the subsystems execute serially to process simulated sensor data, and wherein the computation graph is further configured to execute in a production mode in which two or more subsystems of the plurality of subsystems execute concurrently to process sensor data received from the one or more sensors;

loading an input data item from an input data collection comprising simulated sensor data;

determining a time represented by a first timestamp associated with the input data item;

setting a simulated clock to the time represented by the first timestamp;

determining that a subsystem of the plurality of subsystems is to process the input data item; and

executing the subsystem, wherein a period of time passes during execution of the subsystem, wherein the simulated clock remains static during execution of the subsystem, and wherein the subsystem uses the simulated clock to generate a second timestamp associated with an output message.

7. The computer-implemented method of claim 6 , further comprising executing a second subsystem of the plurality of subsystems to process the output message, wherein the simulated clock remains static during execution of the second subsystem, and wherein the second subsystem uses the simulated clock to generate a third timestamp associated with a second output message.

8. The computer-implemented method of claim 7 , further comprising incrementing the simulated clock by a predetermined amount between execution of the subsystem and execution of the second subsystem.

9. The computer-implemented method of claim 6 , further comprising:

determining, during execution of the subsystem, that a callback to a second subsystem of the plurality of subsystems is to be executed; and

delaying execution of the callback to the second subsystem until the time represented by the simulated clock is changed, wherein execution of the callback to the second subsystem occurs after execution of the subsystem has completed.

10. The computer-implemented method of claim 6 , further comprising:

advancing the simulated clock to a second time;

determining, based at least partly on the second time, that a callback to a second subsystem of the plurality of subsystems is to be executed; and

executing the callback to the second subsystem.

11. The computer-implemented method of claim 6 , further comprising:

determining that a second subsystem of the plurality of subsystems is to be executed to process the input data item; and

executing the second subsystem after execution of the subsystem completes, wherein the simulated clock remains static during execution of both the subsystem and the second subsystem.

12. A system comprising:

a computer-readable memory; and

one or more processors in communication with the computer readable memory and configured to at least:

execute an instance of a vehicle-based processing system in a simulation mode, wherein the vehicle-based processing system comprises a computation graph comprising a plurality of subsystems, wherein individual subsystems of the plurality of subsystems comprise executable instructions, wherein the computation graph is configured to execute in the simulation mode in which the subsystems execute serially to process simulated sensor data, and wherein the computation graph is further configured to execute in a production mode in which two or more subsystems of the plurality of subsystems execute concurrently to process sensor data received from the one or more sensors;

load an input data item from an input data collection comprising simulated sensor data;

determine a time represented by a first timestamp associated with the input data item;

set a simulated clock to the time represented by the first timestamp;

determine that a subsystem of the plurality of subsystems is to process the input data item; and

execute the subsystem, wherein a period of time passes during execution of the subsystem, wherein the simulated clock remains static during execution of the subsystem, and wherein the subsystem uses the simulated clock to generate a second timestamp associated with an output message.

13. The system of claim 12 , wherein the one or more processors are further configured to at least execute a second subsystem of the plurality of subsystems to process the output message, wherein the simulated clock remains static during execution of the second subsystem, and wherein the second subsystem uses the simulated clock to generate a third timestamp associated with a second output message.

14. The system of claim 13 , wherein the one or more processors are further configured to increment the simulated clock by a predetermined amount between execution of the subsystem and execution of the second subsystem.

15. The system of claim 13 , wherein the simulated clock remains static throughout execution of the subsystem and second subsystem.

16. The system of claim 12 , wherein the one or more processors are further configured to:

load a second input data item from the input data collection;

determine a time represented by a third timestamp associated with the second input data item;

set the simulated clock to the time represented by the third timestamp;

determine that a third subsystem of the plurality of subsystems is to process the second input data item; and

execute the third subsystem, wherein a second period of time passes during execution of the third subsystem, and wherein the simulated clock remains static during execution of the third subsystem.

17. The system of claim 12 , wherein the one or more processors are further configured to at least:

determine, during execution of the subsystem, that a callback to a second subsystem of the plurality of subsystems is to be executed; and

delay execution of the callback to the second subsystem until the time represented by the simulated clock is changed, wherein execution of the callback to the second subsystem occurs after execution of the subsystem has completed.

18. The system of claim 12 , wherein the one or more processors are further configured to at least:

advance the simulated clock to a second time;

determine, based at least partly on the second time, that a callback to a second subsystem of the plurality of subsystems is to be executed; and

execute the callback to the second subsystem.

19. The system of claim 12 , wherein the one or more processors are further configured to at least:

determine that a second subsystem of the plurality of subsystems is to be executed to process the input data item; and

execute the second subsystem after execution of the subsystem completes, wherein the simulated clock remains static during execution of both the subsystem and the second subsystem.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2020
From: DIDI RESEARCH AMERICA, LLC
To: VOYAGER (HK) CO., LTD.
Reel/Frame 052181/0607 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2020
From: VOYAGER (HK) CO., LTD.
To: BEIJING VOYAGER TECHNOLOGY CO., LTD.
Reel/Frame 052182/0307 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2020
From: PRIYADARSHI, ALOK
To: DIDI RESEARCH AMERICA, LLC
Reel/Frame 051860/0144 →
Continuity (2)
Provisional Application 62786290 · Dec 28, 2018
Related Publication 20200210234A1 · Jul 2, 2020