IP Library Granted Patent US 11,550,693
Granted Patent B2
US 11,550,693 · App. 17/373,024 · Granted Jan 10, 2023

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: Intrinsic Innovation 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,550,693
App. No.
17/373,024
Granted
Jan 10, 2023
Kind
B2
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 (50)

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) repeatedly executing a software module loop and ii) performing real-time data logging, wherein:

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

each software module in the software module loop executes within a predetermined time window, and

performing the real-time data logging comprises copying one or more segments of real-time data processed by a particular software module of the software module loop to a buffer accessible by a non-real-time downstream system, wherein each of the one or more segments 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 segments of real-time data.

2. The system of claim 1 , wherein:

at least one software module of the software module loop executes according to respective predefined data interfaces,

the at least one software module of the software module loop exchanges real-time messages with one or more other software modules of the software module loop 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 of the software module loop.

3. The system of claim 1 , wherein copying each segment of the one or more segments of real-time data takes a respective predetermined amount of time.

4. The system of claim 1 , wherein copying the 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 performing 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 performing the 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 the 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 visualizer system,

a debugging system,

an analytics system,

an auditing system,

a preventative maintenance system, or

a machine learning system.

10. The system of claim 1 , wherein each of the one or more segments of real-time data is overwritten at each execution of the software module loop, and wherein the respective predetermined time for copying each segment of real-time data precedes the overwriting of the segment of real-time data in the software module loop.

11. A method comprising:

receiving data representing a software module loop to be repeatedly executed by a real-time robotic control system, wherein the software module loop comprises a plurality of software modules to be executed in a predetermined sequence;

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 real-time robotic control system;

selecting, within the schedule and relative to the execution of the software modules in the software module loop, respective times to copy one or more segments of real-time data processed by a particular software module of 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 copying the one or more segments of real-time data to a buffer accessible by a non-real-time downstream system.

12. The method of claim 11 , wherein:

receiving data representing a software module loop comprises receiving data representing a respective data interface for at least one 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.

13. The method of claim 11 , wherein copying each segment of real-time data takes a respective predetermined amount of time.

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

15. The method of claim 11 , wherein copying the one or more segments of real-time data to a buffer accessible by a non-real-time downstream system 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.

16. The method of claim 11 , 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.

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

18. The method of claim 11 , wherein copying the 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.

19. The method of claim 11 , wherein:

each of the one or more segments of real-time data is overwritten at each execution of the software module loop, and

selecting, within the schedule and relative to the execution of the software modules in the software module loop, respective times to copy the one or more segments of real-time data comprises, for each segment of real-time data, selecting a time within the schedule that precedes the overwriting of the segment of real-time data.

20. 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 to be repeatedly executed by a real-time robotic control system, wherein the software module loop comprises a plurality of software modules to be executed in a predetermined sequence;

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 real-time robotic control system;

selecting, within the schedule and relative to the execution of the software modules in the software module loop, respective times to copy one or more segments of real-time data processed by a particular software module of 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 copying the one or more segments of real-time data to a buffer accessible by a non-real-time downstream system.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2021
From: BEARDSWORTH, MICHAEL; SZCZODRAK, MARCIN KRZYSZTOF; PRISAMENT, GREGORY J.
To: X DEVELOPMENT LLC
Reel/Frame 057273/0207 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2021
From: X DEVELOPMENT LLC
To: INTRINSIC INNOVATION LLC
Reel/Frame 057650/0405 →
Continuity (2)
Continuation 16724939 · Dec 23, 2019
Related Publication 20220107877A1 · Apr 7, 2022