IP Library Granted Patent US 11,731,278
Granted Patent B1
US 11,731,278 · App. 16/853,627 · Granted Aug 22, 2023

Robot teleoperation using mobile device motion sensors and web standards

Inventor: Renato Cazangi (Mountain View, CA)
Assignee: Google LLC
B25J9/1689B25J9/161B25J9/1656B25J5/007
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,731,278
App. No.
16/853,627
Granted
Aug 22, 2023
Kind
B1
Abstract

A method includes receiving an indication that a web-based application has been accessed for control of a robotic device by a mobile device, wherein the mobile device comprises one or more sensors to detect movement of the mobile device. The method further includes subscribing the web-based application to at least one motion event web API, wherein the at least one motion event web API listens normalizes motion data from the one or more sensors of the mobile device into one or more standardized motion parameters. The method additionally includes receiving the one or more standardized motion parameters of the mobile device from the at least one motion event web API. The method further includes converting the one or more standardized motion parameters into one or more requested movement commands for the robotic device. The method further includes sending the one or more requested movement commands to the robotic device.

Claims (62)

1. A method comprising:

receiving an indication that a web-based application has been accessed for control of a robotic device by an internet browser running on a mobile device, wherein the mobile device comprises one or more sensors to detect movement of the mobile device, and wherein the robotic device comprises a plurality of types of components;

after receiving the indication, causing the web-based application to display a list of selectable component identifiers that are associated with one or more types of components of the plurality of types of components of the robotic device;

receiving, at the web-based application, a selected component identifier corresponding to a type of a selected component of the robotic device to be controlled;

subscribing the web-based application to at least one motion event web application programming interface (API), wherein the at least one motion event web API listens for motion data from the one or more sensors of the mobile device and normalizes the motion data into one or more standardized motion parameters;

when a motion event is detected by the at least one motion event web API, receiving, by the web-based application, the one or more standardized motion parameters of the mobile device from the at least one motion event web API;

converting, by the web-based application, the one or more standardized motion parameters into one or more requested movement commands for the robotic device, wherein the one or more requested movement commands for the robotic device are dependent on a type of the selected component of the robotic device; and

sending, by the web-based application, the one or more requested movement commands to the robotic device, wherein sending, by the web-based application, the one or more requested movement commands to the robotic device comprises:

sending the one or more requested movement commands to cloud-hosted data storage, wherein the robotic device is configured to receive the one or more requested movement commands from the cloud-hosted data storage.

2. The method of claim 1 , wherein the at least one motion event web API comprises at least a first motion event web API that reads orientation of the mobile device and a second motion event web API that reads acceleration of the mobile device.

3. The method of claim 1 , further comprising:

after receiving the indication, causing the robotic device to output a code;

receiving a further indication that the code has been inputted into the web-based application; and

after receiving the further indication, authorizing the mobile device for control of the robotic device.

4. The method of claim 1 , further comprising causing the web-based application to display a list of selectable robotic device identifiers that are associated with a plurality of robotic devices, wherein the web-based application is configured to convert standardized motion parameters into requested movement commands for each of the plurality of robotic devices.

5. The method of claim 1 , wherein the one or more types of components of the robotic device comprise at least a base, an arm, and a head.

6. The method of claim 1 , wherein sending the one or more requested movement commands to the robotic device is triggered by a touch-based user input to the mobile device, wherein the touch-based user input comprises a press-and-hold actuation that allows the web-based application to send the requested movement commands to the robotic device, and wherein releasing the press-and-hold actuation stops subsequent requested movement commands from being sent to the robotic device.

7. The method of claim 1 , wherein sending, by the web-based application, the one or more requested movement commands to the robotic device comprises:

sending the one or more requested movement commands through a Web Socket connection protocol to the robotic device.

8. The method of claim 1 , further comprising:

receiving feedback from the robotic device that at least one of the one or more requested movement commands could not be executed; and

in response to receiving the feedback, triggering a vibration web API to cause the mobile device to vibrate.

9. A system, comprising:

a robotic device, comprising:

a control system configured to receive requested movement commands; and

one or more components configured to execute the requested movement commands; and

a web-based application configured to:

receive an indication that the web-based application has been accessed for control of the robotic device by an internet browser running on a mobile device, wherein the mobile device comprises one or more sensors to detect movement of the mobile device, and wherein the robotic device comprises a plurality of types of components;

after receiving the indication, cause the web-based application to display a list of selectable component identifiers that are associated with one or more types of components of the plurality of types of components of the robotic device;

receive a selected component identifier corresponding to a type of a selected component of the robotic device to be controlled;

subscribe the web-based application to at least one motion event web application programming interface (API), wherein the at least one motion event web API listens for motion data from the one or more sensors of the mobile device and normalizes the motion data into one or more standardized motion parameters;

when a motion event is detected by the at least one motion event web API, receive the one or more standardized motion parameters of the mobile device from the at least one motion event web API;

convert the one or more standardized motion parameters into one or more requested movement commands for the robotic device, wherein the one or more requested movement commands for the robotic device are dependent on the type of the selected component of the robotic device; and

send the one or more requested movement commands to the robotic device, wherein sending the one or more requested movement commands to the robotic device comprises:

sending the one or more requested movement commands to cloud-hosted data storage, wherein the robotic device is configured to receive the one or more requested movement commands from the cloud-hosted data storage.

10. The system of claim 9 , wherein the system further comprises:

the mobile device comprising:

the internet browser, wherein the internet browser is configured to access the web-based application; and

the one or more motion sensors configured to detect the movement of the mobile device.

11. The system of claim 9 , wherein the web-based application is further configured to:

after receiving the indication, cause the robotic device to output a code;

receive a further indication that the code has been inputted into the web-based application; and

after receiving the further indication, authorize the mobile device for control of the robotic device.

12. The system of claim 9 , further comprising a plurality of robotic devices, wherein the web-based application is further configured to display a list of selectable robotic device identifiers that are associated with the plurality of robotic devices, wherein the web-based application is configured to convert standardized motion parameters into requested movement commands for each of the plurality of robotic devices.

13. The system of claim 9 , wherein:

the one or more types of components of the robotic device are configured to receive and execute requested movement commands.

14. The system of claim 9 , wherein the one or more types of components of the robotic device comprise at least a base, an arm, and a head.

15. The system of claim 9 , wherein the web-based application is configured to send the one or more requested movement commands to the robotic device responsive to a touch-based user input to the mobile device, wherein the touch-based user input comprises a press-and-hold actuation that allows the web-based application to send the requested movement commands to the robotic device, and wherein releasing the press-and-hold actuation stops subsequent requested movement commands from being sent to the robotic device.

16. The system of claim 9 , wherein the web-based application is configured to send the one or more requested movement commands to the robotic device by:

sending the one or more requested movement commands through a Web Socket connection protocol to the robotic device.

17. A non-transitory computer readable medium comprising program instructions executable by at least one processor to cause the at least processor to perform functions comprising:

receiving an indication that a web-based application has been accessed for control of a robotic device by an internet browser running on a mobile device, wherein the mobile device comprises one or more sensors to detect movement of the mobile device, and wherein the robotic device comprises a plurality of types of components;

after receiving the indication, causing the web-based application to display a list of selectable component identifiers that are associated with one or more types of components of the plurality of types of components of the robotic device;

receiving, at the web-based application, a selected component identifier corresponding to a type of a selected component of the robotic device to be controlled;

subscribing the web-based application to a motion event web application programming interface (API), wherein the motion event web API listens for motion data from the one or more sensors of the mobile device and normalizes the motion data into one or more standardized motion parameters;

when a motion event is detected by the motion event web API, receiving, by the web-based application, the one or more standardized motion parameters of the mobile device from the motion event web API;

converting, by the web-based application, the one or more standardized motion parameters into one or more requested movement commands for the robotic device, wherein the one or more requested movement commands for the robotic device are dependent on a type of the selected component of the robotic device; and

sending, by the web-based application, the one or more requested movement commands to the robotic device, wherein sending, by the web-based application, the one or more requested movement commands to the robotic device comprises:

sending the one or more requested movement commands to cloud-hosted data storage, wherein the robotic device is configured to receive the one or more requested movement commands from the cloud-hosted data storage.

18. The method of claim 5 , wherein the selected component identifier corresponds to the base of the robotic device, and wherein converting the one or more standardized motion parameters into the one or more requested movement commands for the robotic device is dependent on the type of the selected component being the base of the robotic device.

19. The method of claim 5 , wherein the selected component identifier corresponds to the arm of the robotic device, and wherein converting the one or more standardized motion parameters into the one or more requested movement commands for the robotic device is dependent on the type of the selected component being the arm of the robotic device.

20. The method of claim 5 , wherein the selected component identifier corresponds to the head of the robotic device, and wherein converting the one or more standardized motion parameters into the one or more requested movement commands for the robotic device is dependent on the type of the selected component being the head of the robotic device.

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 Aug 21, 2023
From: X DEVELOPMENT LLC
To: GOOGLE LLC
Reel/Frame 064658/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2020
From: CAZANGI, RENATO
To: X DEVELOPMENT LLC
Reel/Frame 052480/0926 →