IP Library Granted Patent US 11,845,190
Granted Patent B1
US 11,845,190 · App. 17/336,986 · Granted Dec 19, 2023

Injecting noise into robot simulation

Inventors: Matthew Bennice (San Jose, CA); Paul Bechard (San Jose, CA); 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 11,845,190
App. No.
17/336,986
Granted
Dec 19, 2023
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 (36)

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

simulating a three-dimensional (3D) environment, wherein the simulated 3D environment includes a simulated robot controlled by an external robot controller;

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

operating a state machine to generate a 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;

injecting the temporal sequence of progressing noise values into corresponding joint commands of the temporal sequence of joint commands to generate noisy commands; and

operating one or more joints of the simulated robot in the simulated 3D environment based on the noisy commands.

2. The method of claim 1 , wherein the temporal sequence of progressing noise values simulates a bias of gravity over time on oscillations of one or more joints of the simulated robot.

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

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

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

simulating a three-dimensional (3D) environment, wherein the simulated 3D environment includes a simulated robot controlled by an external robot controller;

intercepting one or more joint commands issued by the robot controller to control the simulated robot in the simulated 3D environment, wherein the one or more joint commands include one or more commands to rotate one or more wheels of the simulated robots;

injecting noise into the one or more joint commands to generate one or more noisy commands, wherein the injected noise simulates variance in real-world wheel rotation; and

operating one or more joints of the simulated robot in the simulated 3D environment based on the one or more noisy commands.

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

simulating a three-dimensional (3D) environment, wherein the simulated 3D environment includes a simulated robot controlled by an external robot controller;

intercepting a temporal sequence of sensor data passed to the robot controller by one or more sensors that are simulated in the simulated 3D environment;

operating a state machine to generate a 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;

injecting the temporal sequence of progressing noise values into corresponding points of the temporal sequence of the sensor data to generate noisy sensor data; and

providing the noisy sensor data to the robot controller to cause the robot controller to generate joint commands to control one or more joints of the simulated robot in the simulated 3D environment.

7. The method of claim 6 , wherein one or more of the sensors comprises a vision sensor, and the temporal sequence of sensor data simulates a change in temperature of the vision sensor over time.

8. The method of claim 6 , wherein one or more of the sensors comprises an inertial measurement unit (IMU).

9. The method of claim 8 , wherein the temporal sequence of sensor data simulates drift of the IMU over time.

10. The method of claim 8 , wherein the temporal sequence of sensor data simulates perturbation of the IMU over time caused by thermal-mechanical stimuli.

11. The method of claim 6 , wherein one or more of the sensors comprises a light detection and ranging (LIDAR) sensor.

12. The method of claim 6 , wherein one or more of the sensors comprises a force torque sensor.

13. The method of claim 6 , wherein one or more of the sensors comprises a joint or wheel encoder.

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

simulate a three-dimensional (3D) environment, wherein the simulated 3D environment includes a simulated robot controlled by an external robot controller;

intercept sensor data passed to the robot controller by one or more sensors that are simulated in the simulated 3D environment;

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

operate a state machine to generate a 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;

inject the temporal sequence of progressing noise values into corresponding joint commands of the temporal sequence of joint commands to generate noisy commands;

inject noise into the sensor data to generate noisy sensor data;

provide the noisy sensor data to the robot controller; and

operate one or more joints of the simulated robot in the simulated 3D environment based on the noisy commands.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2025
From: GOOGLE LLC
To: GDM HOLDING LLC
Reel/Frame 071109/0342 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2023
From: X DEVELOPMENT LLC
To: GOOGLE LLC
Reel/Frame 063992/0371 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2021
From: BENNICE, MATTHEW; BECHARD, PAUL; SIMON, JOSÉPHINE; FU, CHUYUAN; LU, WENLONG
To: X DEVELOPMENT LLC
Reel/Frame 056602/0764 →