IP Library Granted Patent US 11,061,801
Granted Patent B1
US 11,061,801 · App. 16/724,939 · Granted Jul 13, 2021

Data logger for a real-time robotic control system

Inventors: Michael Beardsworth (San Francisco, CA); Marcin Krzysztof Szczodrak (Mountain View, CA); Gregory J. Prisament (East Palo Alto, CA)
Assignee: X Development LLC
G06F11/3476B25J9/1628G06F11/3419G06F2201/805G06F2201/865
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,061,801
App. No.
16/724,939
Granted
Jul 13, 2021
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for logging real-time data of a robot control system. One of the systems comprises a real-time robotic control system comprising one or more computers, programmed to perform operations comprising i) software module loops and ii) real-time data logging, wherein each software module loop comprises a plurality of software modules executed repeatedly in a predetermined sequence, each software module executes within a predetermined time window, and the real-time data logging comprises copying segments of real-time data used by a particular software module to a buffer accessible by a non-real-time downstream system, wherein each segment of real-time data is copied at a respective predetermined time relative to execution of the software modules in the software module loop; and the non-real-time downstream system comprising one or more computers, the non-real-time downstream system programmed to perform operations that consume the real-time messages.

Claims (45)

1. A system comprising:

a real-time robotic control system comprising one or more computers, the real-time robotic control system programmed to perform operations comprising i) one or more software module loops and ii) real-time data logging, wherein:

each software module loop comprises a plurality of software modules executed repeatedly in a predetermined sequence,

each software module executes within a predetermined time window, and

the real-time data logging comprises accessing a configuration file that specifies one or more disallowed segments of real time data, and copying one or more segments of the real-time data used by a particular software module that are not disallowed by the configuration file to a buffer accessible by a non-real-time downstream system, wherein each segment of real-time data is copied at a respective predetermined time relative to execution of the software modules in the software module loop; and

the non-real-time downstream system comprising one or more computers, the non-real-time downstream system programmed to perform operations that consume the one or more real-time messages.

2. The system of claim 1 , wherein:

each software module executes according to a predefined data interface,

each software module exchanges real-time messages with one or more other software modules according to the respective predefined data interfaces, and

the one or more segments of real-time data comprise one or more real-time messages exchanged between respective software modules.

3. The system of claim 1 , wherein copying a respective segment of real-time data used by a particular software module takes a predetermined amount of time.

4. The system of claim 1 , wherein copying one or more segments of real-time data comprises accessing a configuration file that specifies the one or more segments of real-time data.

5. The system of claim 1 , wherein the real-time logging further comprises:

processing the one or more segments of real-time data, and

inserting the one or more segments of processed real-time data into the buffer accessible by the non-real-time downstream system.

6. The system of claim 1 , wherein copying the one or more segments of real-time data to a buffer comprises serializing the segments of real-time data in the buffer.

7. The system of claim 1 , wherein real-time data logging further comprises configuring a size of the buffer accessible by the non-real-time downstream system.

8. The system of claim 1 , wherein copying one or more segments of real-time data to a buffer comprises selecting a respective location in the buffer for each segment of real-time data to be copied.

9. The system of claim 1 , wherein the non-real-time downstream system comprises one or more of:

a debugging system,

an analytics system,

an auditing system,

a preventative maintenance system, or

a machine learning system.

10. A method for configuring an instance of a real-time robotic control system, the method comprising:

receiving data representing a software module loop, wherein the software module loop comprises a plurality of software modules executed repeatedly in a predetermined sequence to control one or more robots;

generating a schedule that specifies a respective time at which to execute each software module in the software module loop according to one or more real-time constraints of the one or more robots;

selecting, within the schedule, respective times to copy one or more segments of real-time data used by a particular software module, relative to execution of other software modules in the software module loop; and

generating a modified schedule that when executed by the real-time robotic control system causes the real-time robotic control system to perform operations comprising accessing a configuration file that specifies one or more disallowed segments of real-time data, and copying the segments of the real-time data that are not disallowed by the configuration file to a buffer accessible by a non-real-time downstream system.

11. The method of claim 10 , wherein:

receiving data representing a software module loop comprises receiving data representing a respective data interface for each of the software modules in the software module loop, wherein each data interface specifies real-time messages exchanged between the respective software module and other software modules in the software module loop; and

the one or more segments of real-time data comprise one or more real-time messages exchanged between respective software modules.

12. The method of claim 10 , wherein copying a respective segment of real-time data used by a particular software module takes a predetermined amount of time.

13. The method of claim 10 , wherein copying one or more segments of real-time data comprises accessing a configuration file that specifies the one or more segments of real-time data.

14. The method of claim 10 , wherein copying the segments of real-time data to a buffer accessible by a non-real-time downstream system comprises:

processing the segments of real-time data, and

inserting the segments of processed real-time data into the buffer accessible by the non-real-time downstream system.

15. The method of claim 10 , wherein copying the segments of real-time data to a buffer comprises serializing the segments of real-time data in the buffer.

16. The method of claim 10 , further comprising configuring a size of the buffer accessible by the non-real-time downstream system.

17. The method of claim 10 , wherein copying the segments of real-time data to a buffer comprises selecting a respective location in the buffer for each segment of real-time data to be copied.

18. One or more non-transitory computer storage media encoded with computer program instructions that when executed by a plurality of computers cause the plurality of computers to perform operations comprising:

receiving data representing a software module loop, wherein the software module loop comprises a plurality of software modules executed repeatedly in a predetermined sequence to control one or more robots;

generating a schedule that specifies a respective time at which to execute each software module in the software module loop according to one or more real-time constraints of the one or more robots;

selecting, within the schedule, respective times to copy one or more segments of real-time data used by a particular software module, relative to execution of other software modules in the software module loop; and

generating a modified schedule that when executed by the real-time robotic control system causes the real-time robotic control system to perform operations comprising accessing a configuration file that specifies one or more disallowed segments of real-time data, and copying the segments of the real-time data that are not disallowed by the configuration file to a buffer accessible by a non-real-time downstream system.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2021
From: X DEVELOPMENT LLC
To: INTRINSIC INNOVATION LLC
Reel/Frame 057650/0218 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2020
From: BEARDSWORTH, MICHAEL; SZCZODRAK, MARCIN KRZYSZTOF; PRISAMENT, GREGORY J.
To: X DEVELOPMENT LLC
Reel/Frame 051490/0569 →