# US 10,120,463 B2 · Determining forward pointing direction of a handheld device

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,120,463 B2
- Document ID: US10120463B2
- Status: Granted
- Kind: B2
- Application number: 15/796,058
- Filed: 2017-10-27
- Published: 2018-02-15
- Granted: 2018-11-06
- Earliest claimed: 2010-06-03
- Assignees: IDHL Holdings, Inc.
- Applicants: IDHL Holdings, Inc.
- Inventors: Matthew G. Liberty; Bryan A. Cook
- Web page: https://patentgrep.com/patent/US10120463B2

## CPC

- G06F 3/0346: with detection of the device orientation or free movement in a three-dimensional [3D] space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
- G06F 3/017: {Gesture based interaction, e.g. based on a set of recognized hand gestures (interaction based on gestures traced on a digitiser G06F3/04883)}
- G06F 3/0383: {Signal control means within the pointing device}
- G06F 17/16: Matrix or vector computation {, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization (matrix transposition G06F7/78)}
- G08C 17/02: using a radio link
- G08C 23/04: using light waves, e.g. infrared
- H04N 21/42204: {User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor (constructive details of casings for the remote control device H01H9/0235; user interfaces for controlling a tuning device of a television receiver through a remote control H03J9/00; remote control of peripheral devices connected to a television receiver through the remote control device of the television receiver H04B1/205)}
- G06F 2203/0384: Wireless input, i.e. hardware and software details of wireless interface arrangements for pointing devices
- G08C 2201/32: Remote control based on movements, attitude of remote control device
- H04N 21/42222: {Additional components integrated in the remote control device, e.g. timer, speaker, sensors for detecting position, direction or movement of the remote control, microphone or battery charging device}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G08C: TRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS (fluid pressure transmitting systems F15B; mechanical means for transferring the output of a sensing member into a different variable G01D5/00; mechanical control systems G05G)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

A forward pointing direction associated with a handheld device is estimated or determined by, for example, calculating a center of rotation of the device. A resultant combined or selected bias estimate may then be used to compensate the biased output of the sensor in, e.g., a 3D pointing device.

## Claims

### Claim 1

An apparatus for determining a forward pointing direction of a device having a user interface, the apparatus comprising:
an accelerometer for sensing an acceleration of the device and outputting at least one acceleration output;
at least one sensor for sensing rotation of the device and outputting at least one angular velocity output; and
a processor configured to process the acceleration output and the at least one angular velocity output to calculate a center of rotation of the device and determine the forward pointing direction of the device based on the determined center of rotation of the device.

### Claim 2 (depends on 1)

The apparatus of claim 1 wherein the processor determines the forward pointing direction of the device as the vector from the center of rotation to the device.

### Claim 3 (depends on 1)

The device of claim 1 wherein the calculation of the center of rotation of the device is further based on a gravitational constant.

### Claim 4 (depends on 3)

The apparatus of claim 3, wherein the calculation of the center of rotation of the device uses:
an angular velocity matrix based upon the angular velocity output;
an angular acceleration matrix based upon the angular velocity output;
a direction cosine matrix based upon the angular velocity matrix and the angular acceleration matrix for defining the device frame of reference relative to an earth frame of reference; and
a linear acceleration based on the acceleration output.

### Claim 5 (depends on 1)

The apparatus of claim 1 wherein the processing comprises converting raw sensor data into International System (SI) unit data and wherein the SI unit data is filtered to remove undesirable sensor characteristics comprising at least one of variable bias offset, cross-axis effects, scale variations, non-linearities, temperature effects and aging effects.

### Claim 6 (depends on 5)

The apparatus of claim 5 further comprising a radio frequency (RF) transmitter communicatively connected to the processing unit, wherein the RF transmitter is configured to transmit the forward pointing direction.

### Claim 7 (depends on 1)

The apparatus of claim 1 wherein the at least one sensor is a rotational sensor.

### Claim 8 (depends on 1)

The apparatus of claim 1 wherein the at least one sensor is a gyroscope.

### Claim 9 (depends on 1)

The apparatus of claim 1 wherein said at least one sensor is a magnetometer.

### Claim 10 (depends on 4)

The apparatus of claim 4 further comprising a magnetometer, wherein the processor is further configured to use the magnetometer to improve calculation of the direction cosine matrix.

### Claim 11 (depends on 1)

The apparatus of claim 1 wherein the processor is further configured to adjust a position of an object on the user interface based on said calculation.

### Claim 12

A method for determining a forward pointing direction of a device, the method comprising:
collecting data associated with the device's acceleration and rotation while the device is in motion; and
calculating of a center of rotation of the device based on the collected data and determining the forward pointing direction of the device based on the calculated center of rotation of the device.

### Claim 13 (depends on 12)

The method of claim 12 further comprising:
filtering the data to remove at least one sensor characteristic from a group of sensor characteristics comprising variable bias offset, cross-axis effects, scale variations, non-linearities, temperature effects and aging effects.

### Claim 14 (depends on 12)

The method of claim 12 wherein the calculating of the center of rotation of the device comprises calculating:
b
⁢
c
=
(
b
⁢
Ω
.
+
Ω
2
b
)
⁢
(
b
⁢
a
-
Q
B
←
U
⁢
u
⁢
g
)
,
where:
bΩ2 is an angular acceleration matrix associated with the device in a body frame of reference, bΩ2 is a square of an angular velocity matrix associated with the device in the body frame of reference, bα is a linear acceleration associated with the device in the body frame of reference,
Q
B
→
U
is a direction cosine matrix defining the body frame of reference relative to a user frame of reference and ug is earth's gravitational constant associated with the user frame of reference.

### Claim 15 (depends on 14)

The method of claim 14 wherein the bΩ2 is:
b
⁢
Ω
.
=
(
0
-
ω
.
z
b
ω
.
y
b
ω
.
z
b
0
-
ω
.
x
b
-
ω
.
y
b
ω
.
x
b
0
)
,
where:
bωx is the x component of the angular acceleration of the device in the body frame of reference, bωx is the y component of the angular acceleration of the device in the body frame of reference and bωx is the z component of the angular acceleration of the device in the body frame of reference.

### Claim 16 (depends on 14)

The method of claim 14 wherein the bΩ2 is:
Ω
2
b
=
(
-
ω
y
2
b
-
ω
z
2
b
ω
z
b
⁢
ω
y
b
ω
z
b
⁢
ω
z
b
ω
x
b
⁢
ω
y
b
-
ω
z
2
b
-
ω
z
2
b
ω
y
b
⁢
ω
z
b
ω
x
b
⁢
ω
z
b
ω
y
b
⁢
ω
z
b
-
ω
z
2
b
-
ω
y
2
b
)
,
where:
bωx is the x component of the angular velocity of the device in the body frame of reference, bωy is the y component of the angular velocity of the device in the body frame of reference and bωx is the z component of the angular velocity of the device in the body frame of reference.

### Claim 17 (depends on 14)

The method of claim 14 wherein multiple calculations of the device's center of rotation vector are combined to optimize the center of rotation vector calculation.

### Claim 18 (depends on 17)

The method of claim 17 wherein the center of rotation vector calculation result is offset based on an offset value of an accelerometer, associated with the device, from a center of the device.

### Claim 19 (depends on 12)

The method of claim 12 wherein the calculating a center of rotation of the device comprises calculating:
bc=((b{dot over (Ω)}2+bΩ22)−(I+bΩTΔt)(b{dot over (Ω)}1+bΩ12))−1(ba2−(I+bΩTΔt)ba1), where:
bΩ2 is an angular acceleration matrix of a first sample associated with the device in a body frame of reference, bΩ2 is an angular acceleration matrix of a second sample associated with the device in a body frame of reference, bΩ12 is the square of the angular velocity matrix of the first sample associated with the device in the body frame of reference, bΩ22 is the square of the angular velocity matrix of the second sample associated with the device in the body frame of reference, ba1 is a linear acceleration of the first sample associated with the device in the body frame of reference, ba2 is a linear acceleration of the second sample associated with the device in the body frame of reference, bΩT Δt is the average angular velocity between the first sample and the second sample and I is an identity matrix.

### Claim 20 (depends on 12)

The method of claim 12 further comprising:
adjusting a position of an object on a user interface of the device based on said calculation.
