# US 11,029,415 B2 · Systems and methods for estimating initial heading at start-up of navigation

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

- Number: US 11,029,415 B2
- Document ID: US11029415B2
- Status: Granted
- Kind: B2
- Application number: 16/399,241
- Filed: 2019-04-30
- Published: 2020-05-14
- Granted: 2021-06-08
- Earliest claimed: 2018-11-13
- Assignees: Pointr Limited
- Applicants: Pointr Limited
- Inventors: Ismail Ege Akpinar; Sinan Isik; Can Tunca; Mehmet Can Akpinar
- Web page: https://patentgrep.com/patent/US11029415B2

## CPC

- G01C 21/206: {specially adapted for indoor navigation}
- G01S 5/0294: {Trajectory determination or predictive filtering, e.g. target tracking or Kalman filtering}
- G01C 21/16: by integrating acceleration or speed, i.e. inertial navigation
- G01C 21/1654: {with electromagnetic compass}
- G01S 5/017: {Detecting state or type of motion}
- G01S 5/0264: {at least one of the systems being a non-radio wave positioning system}
- G01S 19/53: Determining attitude
- G01C: MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY (measuring liquid level G01F; radio navigation, determining distance or velocity by use of propagation effects, e.g. Doppler effects, propagation time, of radio waves, analogous arrangements using other waves G01S)
- G01S: RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES

## Abstract

Estimating initial heading at start-up of navigation. At least some of the example embodiments are computer-implemented methods including: spawning a plurality of clone processes, each clone process given an identical location and speed, and each clone process given a unique direction; calculating, by each clone process, a respective position at the end of a frame period; terminating clone processes whose position at the end of the frame period is outside a predetermined threshold, the terminating results in remaining clone processes; and determining the heading of the mobile device from the remaining clone processes.

## Claims

### Claim 1

A computer-implemented method of determining a heading of a mobile device, comprising:
spawning, by a controller of the mobile device, a plurality of clone processes, each clone process given an identical location and speed, and each clone process given a unique direction;
calculating, by the controller running each clone process, a respective position at the end of a frame period;
terminating, by the controller of the mobile device, clone processes whose position at the end of the frame period is outside a predetermined threshold, the terminating results in remaining clone processes; and
determining, by the controller of the mobile device, the heading of the mobile device from the remaining clone processes.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1 wherein spawning the plurality of clone processes further comprises spawning the plurality of clone processes such that the unique directions span a range of headings greater than 90 degrees.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2 wherein spawning the plurality of clone processes further comprises spawning such that the unique directions are evenly spaced within the range of headings.

### Claim 4 (depends on 2)

The computer-implemented method of claim 2 wherein spawning the plurality of clone processes further comprises refraining from spawning clone processes with unique directions heading toward one or more obstacles.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1 wherein spawning the plurality of clone processes further comprises spawning the plurality of clone processes such that the unique directions span 360 degrees.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1 wherein calculating, by each clone process, the respective position further comprises, a plurality of times during each frame period:
receiving, by each clone process, updated speed and a value indicative of change of direction; and
calculating, by each clone process, the respective position using the updated speed and the value indicative of change of direction.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1 wherein terminating clone processes further comprises, for each clone process:
receiving an actual position, and calculating a separation between the respective position and the actual position; and
terminating each clone process whose separation is greater than the predetermined threshold being a separation threshold.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1 wherein terminating clone processes further comprises, for each clone process:
determining a gap between the respective position and an obstacle; and
terminating each clone process whose gap is less than the predetermined threshold being a gap threshold.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1 wherein determining the heading of the mobile device further comprises:
calculating an average vector using a unique direction from each of the remaining clone processes; and
using a heading of the average vector as the heading of the mobile device.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1 further comprising, prior to determining the heading:
calculating an average vector using a unique direction from each of the remaining clone processes; and
repeating the calculating and terminating until an attribute of the average vector meets or exceeds a convergence threshold.

### Claim 11 (depends on 10)

The computer-implemented method of claim 10 wherein repeating the calculating and terminating further comprises repeating the calculating and terminating until a magnitude of the average vector meets or exceeds a magnitude threshold.

### Claim 12 (depends on 1)

The computer-implemented method of claim 1 wherein spawning the plurality of clone processes further comprises spawning an Extended Kalman Filter for each of the plurality of clone processes.

### Claim 13 (depends on 1)

The computer-implemented method of claim 1 further comprising, prior to spawning the clone processes:
reading an accelerometer of the mobile device, the reading creates accelerometer data;
estimating a stride length of a person carrying the mobile device using the accelerometer data;
determining the speed based on the stride length.

### Claim 14 (depends on 13)

The computer-implemented method of claim 13 further comprising at least one selected from a group comprising: modifying the stride length based on data regarding the person carrying the mobile device; modifying the stride length based on data regarding a venue within which the person and mobile device are moving; modifying the stride length based on data received from a beacon device within the venue.

### Claim 15

A hand-held computing device comprising:
a processor;
a memory coupled to the processor;
a display device electrically coupled to the processor;
an accelerometer electrically coupled to the processor;
a wireless communication system electrically coupled to the processor, the wireless communication system configured to receive location information wirelessly from beacons external to the hand-held computing device;
wherein the memory stores a program that, when executed by the processor, causes the processor to:
spawn a plurality of clone processes, each clone process given an identical location and speed, and each clone process given a unique direction;
calculate, by each clone process, a respective position at the end of a frame period;
terminate clone processes whose position at the end of the frame period is outside a predetermined threshold, the terminating results in remaining clone processes; and
determine the heading of the hand-held computing device from the remaining clone processes;
provide an indication of direction to travel to a user of the hand-held device by way of the display device.

### Claim 16 (depends on 15)

The hand-held computing device of claim 15 wherein when the processor spawns the plurality of clone processes, the program causes the processor to spawn the plurality of clone processes such that the unique directions span a range of headings greater than 90 degrees.

### Claim 17 (depends on 16)

The hand-held computing device of claim 16 wherein when the processor spawns the plurality of clone processes, the program causes the processor to spawn such that the unique directions are evenly spaced within the range of headings.

### Claim 18 (depends on 16)

The hand-held computing device of claim 16 wherein when the processor spawns the plurality of clone processes, the program causes the processor to refrain from spawning clone processes with unique directions heading toward one or more obstacles.

### Claim 19 (depends on 15)

The hand-held computing device of claim 15 wherein when the processor spawns the plurality of clone processes, the program causes the processor to spawn the plurality of clone processes such that the unique directions span 360 degrees.

### Claim 20 (depends on 15)

The hand-held computing device of claim 15 wherein when the processor calculates, for y each clone process, the respective position the program further causes the processor to, a plurality of times during each frame period:
calculate updated speed and a value indicative of change of direction; and
calculate, for each clone process, the respective position using the updated speed and the value indicative of change of direction.

### Claim 21 (depends on 15)

The hand-held computing device of claim 15 wherein when the processor terminates clone processes, the program further causes the processor to:
determine an actual position using the wireless communication system;
calculate, for each clone process, a separation between the respective position and the actual position; and
terminate each clone process whose separation is greater than the predetermined threshold being a separation threshold.

### Claim 22 (depends on 15)

The hand-held computing device of claim 15 wherein the processor terminates the clone processes, the program further causes the processor to, for each clone process:
determine a gap between the respective position and an obstacle; and
terminate each clone process whose gap is less than the predetermined threshold being a gap threshold.

### Claim 23 (depends on 15)

The hand-held computing device of claim 15 wherein when the processor determines the heading of the hand-held computing device, the program further causes the processor to:
calculate an average vector using a unique heading from each of the remaining clone processes; and
use a heading of the average vector as the heading of the hand-held computing device.

### Claim 24 (depends on 15)

The hand-held computing device of claim 15 wherein the program further causes the processor to, prior to the determination of the heading:
calculate an average vector using a unique heading from each of the remaining clone processes; and
repeat the calculation of the respective positions and the termination until an attribute of the average vector meets or exceeds convergence threshold.

### Claim 25 (depends on 15)

The hand-held computing device of claim 15 wherein prior to when the processor spawns the clone processes, the program further causes the processor to:
read the accelerometer, the reading creates accelerometer data;
estimate a stride length of a person carrying the hand-held computing device using the accelerometer data; and
determining the speed based on the stride length.

### Claim 26 (depends on 25)

The hand-held computing device of claim 25 wherein the program further causes the processor to at least one selected from a group comprising: modify the stride length based on data regarding the person carrying the hand-held computing device; modify the stride length based on data regarding a venue within which the person and hand-held computing device are moving; and modify the stride length based on data received from a beacon device within the venue.
