IP Library Granted Patent US 9,342,154
Granted Patent B2
US 9,342,154 · App. 14/590,877 · Granted May 17, 2016

Interfacing application programs and motion sensors of a device

Inventors: Steven S. Nasiri (Saratoga, CA); Joseph Jiang (Sunnyvale, CA); David Sachs (New York, NY)
Assignee: InvenSense, Inc.
G06F3/017A63F13/211G06F3/038G06F3/0346A63F2300/105A63F2300/209
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 9,342,154
App. No.
14/590,877
Granted
May 17, 2016
Kind
B2
Abstract

Interfacing application programs and motion sensors of a device. In one aspect, a high-level command is received from an application program running on a motion sensing device, where the application program implements one of multiple different types of applications available for use on the device. The high-level command requests high-level information derived from the output of motion sensors of the device that include rotational motion sensors and linear motion sensors. The command is translated to cause low-level processing of motion sensor data output by the motion sensors, the low-level processing following requirements of the type of application and determining the high-level information in response to the command. The application program is ignorant of the low-level processing, and the high-level information is provided to the application program.

Claims (33)

1. A motion processing unit comprising:

at least one gyroscope configured to sense angular velocity for a plurality of axes;

at least one accelerometer configured to sense acceleration for a plurality of axes;

a plurality of registers;

a motion processor configured to receive sensor data from the at least one gyroscope and the at least one accelerometer, read the values of one or more of the plurality of registers to identify settings that set up one or more motion algorithms to run in the background, and process the sensor data based on the one or more motion algorithms, wherein the settings indicate to the motion processor which of the one or more motion algorithms should run, which of the sensor data should be processed using the one or more motion algorithms, and which of the one or more motion algorithms provide information to one or more of the plurality of registers.

2. The motion processing unit of claim 1 further comprising at least one additional sensor, wherein the sensor data includes data received from the at least one additional sensor.

3. The motion processing unit of claim 2 wherein the at least one additional sensor comprises one or more of a barometer, a compass, a temperature sensor, an optical sensor, an ultrasonic sensor, a radio frequency sensor, and a magnetic field sensor.

4. The motion processing unit of claim 1 wherein said one or more motion algorithms comprise one or more of a user motion algorithm, a motion tracking algorithm, a gesture recognition algorithm, a scrolling algorithm, a motion presence algorithm, an orientation algorithm, an algorithm identifying motion in space, a hand jitter algorithm, an image stabilization algorithm, a dead reckoning algorithm, a gravity compensation algorithm, a Euler angle algorithm, and a quaternion algorithm.

5. The motion processing unit of claim 1 further comprising a memory that includes a motion library that stores the one or more motion algorithms.

6. The motion processing unit of claim 1 , wherein the motion processor is configured to provide an interrupt based on the information provided to the one or more of the plurality of registers.

7. The motion processing unit of claim 1 , wherein the motion processor is configured to identify an interesting property based on at least some of the sensor data, and provide an interrupt based on the identification of the interesting property.

8. The motion processing unit of claim 1 , wherein the motion processor is configured to communicate with a processor of a device.

9. The motion processing unit of claim 8 , wherein the motion processor is configured to communicate with an application layer running on the processor of the device.

10. The motion processing unit of claim 8 , wherein the motion processor is configured to communicate with an application interface layer running on the processor of the device.

11. The motion processing unit of claim 8 , wherein the motion processor is configured to communicate with the processor of the device via an interface bus.

12. The motion processing unit of claim 11 , wherein the interface bus comprises a I2C bus or a serial peripheral interface bus.

13. A method for processing sensor data, comprising:

receiving sensor data from at least one gyroscope sensing angular velocity for a plurality of axes and at least one accelerometer sensing acceleration for a plurality of axes;

reading the values of one or more of a plurality of registers to identify settings that set up one or more motion algorithms to run in the background, wherein the settings indicate to a motion processor which of the one or more motion algorithms should run, which of the sensor data should be processed using the one or more motion algorithms, and which of the one or more motion algorithms provide information to one or more of the plurality of registers; and

processing the sensor data based on the settings and the one or more motion algorithms.

14. The method of claim 13 further comprising receiving additional sensor data from at least one additional sensor.

15. The method of claim 14 , wherein the at least one additional sensor comprises one or more of a barometer, a compass, a temperature sensor, an optical sensor, an ultrasonic sensor, a radio frequency sensor, and a magnetic field sensor.

16. The method of claim 13 wherein said one or more motion algorithms comprise one or more of a user motion algorithm, a motion tracking algorithm, a gesture recognition algorithm, a scrolling algorithm, a motion presence algorithm, an orientation algorithm, an algorithm identifying motion in space, a hand jitter algorithm, an image stabilization algorithm, a dead reckoning algorithm, a gravity compensation algorithm, a Euler angle algorithm, and a quaternion algorithm.

17. The method of claim 13 further comprising accessing a memory that includes a motion library that stores the one or more motion algorithms.

18. The method of claim 13 further comprising providing an interrupt based on the information provided to the one or more of the plurality of registers.

19. The method of claim 13 , further comprising:

identifying an interesting property based on at least some of the sensor data; and

providing an interrupt based on the identification of the interesting property.

20. The method of claim 13 , further comprising communicating with a processor of a device.

21. The method of claim 20 , wherein communicating with the processor of the device comprises communicating with an application layer running on the processor of the device.

22. The method of claim 20 , wherein communicating with the processor of the device comprises communicating with an application interface layer running on the processor of the device.

23. The method of claim 20 , wherein communicating with the processor of the device comprises communicating with the processor of the device via an interface bus.

24. The method of claim 23 , wherein the interface bus comprises a I2C bus or a serial peripheral interface bus.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 6, 2015
From: NASIRI, STEVEN S.; JIANG, JOSEPH; SACHS, DAVID
To: INVENSENSE, INC.
Reel/Frame 034648/0183 →
Continuity (3)
Continuation 12106921 · Apr 21, 2008
Provisional Application 61022143 · Jan 18, 2008
Related Publication 20150193006A1 · Jul 9, 2015