IP Library Granted Patent US 12,214,507
Granted Patent B1
US 12,214,507 · App. 18/381,786 · Granted Feb 4, 2025

Injecting noise into robot simulation

Inventors: Matthew Bennice (San Jose, CA); Paul Bechard (Ogdensburg, NY); Joséphine Simon (San Francisco, CA); Chuyuan Fu (Sunnyvale, CA); Wenlong Lu (Sunnyvale, CA)
Assignee: GOOGLE LLC
B25J9/1671B25J9/163B25J9/1638B25J9/1697B25J13/085B25J13/088
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 12,214,507
App. No.
18/381,786
Granted
Feb 4, 2025
Kind
B1
Abstract

Implementations are provided for increasing realism of robot simulation by injecting noise into various aspects of the robot simulation. In various implementations, a three-dimensional (3D) environment may be simulated and may include a simulated robot controlled by an external robot controller. Joint command(s) issued by the robot controller and/or simulated sensor data passed to the robot controller may be intercepted. Noise may be injected into the joint command(s) to generate noisy commands. Additionally or alternatively, noise may be injected into the simulated sensor data to generate noisy sensor data. Joint(s) of the simulated robot may be operated in the simulated 3D environment based on the one or more noisy commands. Additionally or alternatively, the noisy sensor data may be provided to the robot controller to cause the robot controller to generate joint commands to control the simulated robot in the simulated 3D environment.

Claims (46)

1. A method implemented using one or more processors, comprising:

simulating an environment, wherein the simulated environment includes a simulated robot controlled by an external robot controller;

intercepting a temporal sequence of robot commands issued by the robot controller to control the simulated robot in the simulated environment;

generating a temporal sequence of progressing noise values using a time series machine learning model, wherein the time series machine learning model is trained based on empirical data about effects of environmental conditions on robot joint operation;

injecting the temporal sequence of progressing noise values into corresponding robot commands of the temporal sequence of robot commands to generate noisy robot commands, wherein the injecting includes altering, skewing, biasing, or replacing existing robot command values with noisy robot command values; and

operating the simulated robot in the simulated environment based on the noisy robot commands.

2. The method of claim 1 , wherein injecting the temporal sequence of progressing noise values includes:

operating a state machine to generate the temporal sequence of progressing noise values, wherein one or more progressing noise values of the temporal sequence of progressing noise values are generated based at least in part on one or more previous progressing noise values of the temporal sequence of progressing noise values.

3. The method of claim 1 , further comprising generating the temporal sequence of progressing noise values using a time series machine learning model.

4. The method of claim 3 , wherein the generating comprises iteratively applying time series data indicative of environmental conditions as inputs across the time series machine learning model.

5. A method implemented using one or more processors, comprising:

simulating an environment, wherein the simulated environment includes a simulated robot controlled by an external robot controller;

intercepting a temporal sequence of robot commands issued by the robot controller to control the simulated robot in the simulated environment;

generating a temporal sequence of progressing noise values using a time series machine learning model, wherein the generating comprises iteratively applying time series data indicative of wear and tear metrics associated with a real-world robot;

injecting the temporal sequence of progressing noise values into corresponding robot commands of the temporal sequence of robot commands to generate noisy robot commands, wherein the injecting includes altering, skewing, biasing, or replacing existing robot command values with noisy robot command values; and

operating the simulated robot in the simulated environment based on the noisy robot commands.

6. A method implemented using one or more processors, comprising:

simulating an environment, wherein the simulated environment includes a simulated robot controlled by an external robot controller;

intercepting a temporal sequence of robot commands issued by the robot controller to control the simulated robot in the simulated environment;

injecting a temporal sequence of progressing noise values into corresponding robot commands of the temporal sequence of robot commands to generate noisy robot commands, wherein the injecting includes altering, skewing, biasing, or replacing existing robot command values with noisy robot command values, and wherein the temporal sequence of progressing noise values simulate a bias of gravity over time on oscillations of one or more joints of the simulated robot; and

operating the simulated robot in the simulated environment based on the noisy robot commands.

7. The method of claim 1 , wherein the temporal sequence of progressing noise values are calculated based on one or more operating tolerances of a robot controlled by the robot controller.

8. The method of claim 7 , wherein one or more of the operating tolerances include a motor operating tolerance.

9. A system comprising one or more processors and memory storing instructions that, in response to execution by the one or more processors, cause the one or more processors to:

simulate an environment, wherein the simulated environment includes a simulated robot controlled by an external robot controller;

intercept a temporal sequence of robot commands issued by the robot controller to control the simulated robot in the simulated environment;

generate a temporal sequence of progressing noise values using a time series machine learning model, wherein the time series machine learning model is trained based on empirical data about effects of environmental conditions on robot joint operation;

inject the temporal sequence of progressing noise values into corresponding robot commands of the temporal sequence of robot commands to generate noisy robot commands, wherein the injecting includes altering, skewing, biasing, or replacing existing robot command values with noisy robot command values; and

operate the simulated robot in the simulated environment based on the noisy robot commands.

10. The system of claim 9 , wherein the instructions to inject the temporal sequence of progressing noise values include instructions to:

operate a state machine to generate the temporal sequence of progressing noise values, wherein one or more progressing noise values of the temporal sequence of progressing noise values are generated based at least in part on one or more previous progressing noise values of the temporal sequence of progressing noise values.

11. The system of claim 9 , further comprising instructions to generate the temporal sequence of progressing noise values using a time series machine learning model.

12. The system of claim 11 , wherein the instructions to generate include instructions to iteratively apply time series data indicative of environmental conditions as inputs across the time series machine learning model.

13. A system comprising one or more processors and memory storing instructions that, in response to execution by the one or more processors, cause the one or more processors to:

simulate an environment, wherein the simulated environment includes a simulated robot controlled by an external robot controller;

intercept a temporal sequence of robot commands issued by the robot controller to control the simulated robot in the simulated environment;

generate a temporal sequence of progressing noise values using a time series machine learning model, wherein the instructions to generate include instructions to iteratively apply time series data indicative of wear and tear metrics associated with a real-world robot;

inject the temporal sequence of progressing noise values into corresponding robot commands of the temporal sequence of robot commands to generate noisy robot commands, wherein the injecting includes altering, skewing, biasing, or replacing existing robot command values with noisy robot command values; and

operate the simulated robot in the simulated environment based on the noisy robot commands.

14. A system comprising one or more processors and memory storing instructions that, in response to execution by the one or more processors, cause the one or more processors to:

simulate an environment, wherein the simulated environment includes a simulated robot controlled by an external robot controller;

intercept a temporal sequence of robot commands issued by the robot controller to control the simulated robot in the simulated environment;

inject a temporal sequence of progressing noise values into corresponding robot commands of the temporal sequence of robot commands to generate noisy robot commands, wherein the injecting includes altering, skewing, biasing, or replacing existing robot command values with noisy robot command values, and wherein the temporal sequence of progressing noise values simulate a bias of gravity over time on oscillations of one or more joints of the simulated robot; and

operate the simulated robot in the simulated environment based on the noisy robot commands.

15. The system of claim 9 , wherein the temporal sequence of progressing noise values are calculated based on one or more operating tolerances of a robot controlled by the robot controller.

16. The system of claim 15 , wherein one or more of the operating tolerances include a motor operating tolerance.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2025
From: GOOGLE LLC
To: GDM HOLDING LLC
Reel/Frame 071109/0342 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 17, 2024
From: X DEVELOPMENT LLC
To: GOOGLE LLC
Reel/Frame 067743/0278 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2023
From: BENNICE, MATTHEW; BECHARD, PAUL; SIMON, JOSÉPHINE; FU, CHUYUAN; LU, WENLONG
To: X DEVELOPMENT LLC
Reel/Frame 065637/0084 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2023
From: X DEVELOPMENT LLC
To: GOOGLE LLC
Reel/Frame 065658/0631 →
Continuity (1)
Continuation 17336986 · Jun 2, 2021
References Cited (24)
US 10800040B1 · Beckman et al. · 2020 [cited by applicant]
US 10981272B1 · Nagarajan · 2021 [cited by applicant]
US 11400587B2 · Levine · 2022 [cited by applicant]
US 20120048027A1 · Hashiguchi · 2012 [cited by examiner]
US 20150112484A1 · Nishida · 2015 [cited by applicant]
US 20150217449A1 · Meier · 2015 [cited by examiner]
US 20150306768A1 · Liang · 2015 [cited by examiner]
US 20170065440A1 · Ha · 2017 [cited by examiner]
US 20170120449A1 · Matsunami et al. · 2017 [cited by applicant]
US 20170320210A1 · Ding et al. · 2017 [cited by applicant]
US 20170351245A1 · Zhang · 2017 [cited by applicant]
US 20190151882A1 · Tritt et al. · 2019 [cited by applicant]
US 20190232488A1 · Levine · 2019 [cited by examiner]
US 20200114506A1 · Toshev · 2020 [cited by examiner]
US 20200206913A1 · Kaehler · 2020 [cited by examiner]
US 20200279134A1 · Bousmalis · 2020 [cited by applicant]
US 20200333752A1 · Doerr · 2020 [cited by examiner]
US 20210107157A1 · Bai · 2021 [cited by applicant]
US 20210205988A1 · James · 2021 [cited by examiner]
US 20220097226A1 · Kwon · 2022 [cited by examiner]
US 20220111517A1 · Bennice · 2022 [cited by applicant]
US 20220305646A1 · Jain · 2022 [cited by examiner]
US 20220343216A1 · Okumura · 2022 [cited by examiner]
US 20230294279A1 · Matsuzaki · 2023 [cited by examiner]