# US 12,223,124 B2 · Inertially isolated spatial control

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

- Number: US 12,223,124 B2
- Document ID: US12223124B2
- Status: Granted
- Kind: B2
- Application number: 18/311,370
- Filed: 2023-05-03
- Published: 2023-10-19
- Granted: 2025-02-11
- Earliest claimed: 2022-04-13
- Assignees: Tomahawk Robotics, Inc.
- Applicants: Tomahawk Robotics, Inc.
- Inventors: Michael E. Bowman; William S. Bowman; Daniel R. Hedman; Matthew D. Summer; Andrew D. Falendysz; Kevin Makovy; Michael W. Holt
- Web page: https://patentgrep.com/patent/US12223124B2

## CPC

- G05D 1/2285: using voice or gesture commands
- 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
- G05D 1/0016: {characterised by the operator's input device (input arrangements for computing systems in general G06F3/00)}
- G05D 1/0038: {by providing the operator with simple or augmented images from one or more cameras located onboard the vehicle, e.g. tele-operation (images analyzed by a computer and used for automatic navigation G05D1/0246)}
- G05D 1/223: Command input arrangements on the remote controller, e.g. joysticks or touch screens
- G05D 1/2247: {providing the operator with simple or augmented images from one or more cameras}
- G05D 1/245: using dead reckoning
- G06F 3/014: {Hand-worn input/output arrangements, e.g. data gloves}
- 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)}
- B64U 2201/20: Remote controls
- G05D 2111/52: {generated by inertial navigation means, e.g. gyroscopes or accelerometers}
- G05D: SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- B64U: UNMANNED AERIAL VEHICLES [UAV]; EQUIPMENT THEREFOR

## Abstract

Methods and systems are described herein for detecting motion-induced errors received from inertial-type input devices and for generating accurate vehicle control commands that account for operator movement. These methods and systems may determine, using motion data from inertial sensors, whether the hand/arm of the operator is moving in the same motion as the body of the operator, and if both are moving in the same way, these systems and methods may determine that the motion is not intended to be a motion-induced command. However, if the hand/arm of the operator is moving in a different motion from the body of the operator, these methods and systems may determine that the operator intended the motion to be a motion-induced command to a vehicle.

## Claims

### Claim 1

A system for detecting motion-induced errors received from inertial-type input devices, the system comprising:
one or more processors; and
a non-transitory computer-readable storage medium storing instructions which, when executed by the one or more processors, cause the one or more processors to perform operations comprising:
receiving, from a controller, first motion data, wherein the first motion data comprises a first acceleration and a first angular velocity;
determining that the first motion data corresponds to a candidate motion-induced command;
receiving, from an inertial sensor, second motion data, wherein the second motion data comprises a second acceleration and a second angular velocity;
determining, based on comparing the first acceleration from the controller with the second acceleration from the inertial sensor, and the first angular velocity from the controller with the second angular velocity from the inertial sensor, whether the first motion data matches the second motion data; and
based on determining that the first motion data does not match the second motion data:
generating a third acceleration based on subtracting the second acceleration from the first acceleration;
generating a third angular velocity based on subtracting the second angular velocity from the first angular velocity;
generating a motion-induced command based on the third acceleration and the third angular velocity; and
transmitting the motion-induced command to one or more vehicles.

### Claim 2 (depends on 1)

The system of claim 1, wherein the instructions further cause the one or more processors to perform operations comprising:
based on determining that the first motion data matches the second motion data:
determining that the candidate motion-induced command corresponds to a motion-induced error; and
refraining from transmitting the candidate motion-induced command to the one or more vehicles.

### Claim 3 (depends on 1)

The system of claim 1, wherein the inertial sensor is being worn by an operator and wherein the second acceleration is torso acceleration of the operator, and the second angular velocity is torso angular velocity of the operator.

### Claim 4 (depends on 1)

The system of claim 1, wherein the instructions when executed by the one or more processors, further cause the one or more processors to perform operations comprising:
determining that the first acceleration meets an acceleration threshold or the first angular velocity meets an angular velocity threshold;
based on determining that the first acceleration meets the acceleration threshold or the first angular velocity meets the angular velocity threshold, stopping detection of new motion-induced commands from the controller;
generating for display on the controller a selectable option to enable detecting the new motion-induced commands; and
in response to receiving a selection of the selectable option, enabling the detection of the new motion-induced commands.

### Claim 5

A method comprising:
receiving, from a controller, first motion data, wherein the first motion data comprises a first acceleration and a first angular velocity;
determining that the first motion data corresponds to a candidate motion-induced command;
receiving, from an inertial sensor, second motion data, wherein the second motion data comprises a second acceleration and a second angular velocity;
determining, based on comparing the first acceleration from the controller with the second acceleration from the inertial sensor, and the first angular velocity from the controller with the second angular velocity from the inertial sensor, whether the first motion data matches the second motion data; and
based on determining that the first motion data does not match the second motion data:
generating a third acceleration based on subtracting the second acceleration from the first acceleration;
generating a third angular velocity based on subtracting the second angular velocity from the first angular velocity;
generating a motion-induced command based on the third acceleration and the third angular velocity; and
transmitting the motion-induced command to one or more vehicles.

### Claim 6 (depends on 5)

The method of claim 5, further comprising, based on determining that the first motion data matches the second motion data:
determining that the candidate motion-induced command corresponds to a motion-induced error; and
refraining from transmitting the candidate motion-induced command to the one or more vehicles.

### Claim 7 (depends on 5)

The method of claim 5, wherein the inertial sensor is being worn by an operator and wherein the second acceleration is torso acceleration of the operator, and the second angular velocity is torso angular velocity of the operator.

### Claim 8 (depends on 5)

The method of claim 5, further comprising:
determining that the first acceleration meets an acceleration threshold or the first angular velocity meets an angular velocity threshold; and
based on determining that the first acceleration meets the acceleration threshold or the first angular velocity meets the angular velocity threshold, stopping detection of new motion-induced commands from the controller.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
generating for display on the controller a selectable option to enable detecting the new motion-induced commands; and
in response to receiving a selection of the selectable option, enabling the detection of the new motion-induced commands.

### Claim 10 (depends on 5)

The method of claim 5, wherein the controller comprises a second inertial sensor and detects motion-induced commands to control the one or more vehicles, and wherein the second inertial sensor generates measurements of acceleration and angular velocity of the controller.

### Claim 11 (depends on 5)

The method of claim 5, wherein the inertial sensor is attached to a vehicle an operator is riding and wherein the second acceleration is vehicle acceleration of the vehicle and the second angular velocity is vehicle angular velocity of the vehicle.

### Claim 12 (depends on 5)

The method of claim 5, wherein determining, based on the first acceleration, the second acceleration, the first angular velocity, and the second angular velocity, that the first motion data matches the second motion data comprises:
generating an acceleration difference based on subtracting the second acceleration from the first acceleration;
generating an angular velocity difference based on subtracting the second angular velocity from the first angular velocity;
determining that the acceleration difference does not meet an acceleration threshold and the angular velocity difference does not meet an angular velocity threshold; and
based on determining that the acceleration difference does not meet the acceleration threshold and the angular velocity difference does not meet the angular velocity threshold, determining that the first motion data matches the second motion data.

### Claim 13

A non-transitory, computer-readable medium comprising instructions for detecting motion-induced errors received from inertial-type input devices, that when executed by one or more processors, cause the one or more processors to perform operations comprising:
receiving, from a controller, first motion data associated with the controller;
determining that the first motion data corresponds to a candidate motion-induced command;
receiving, from an inertial sensor, second motion data associated with the inertial sensor;
determining whether the first motion data matches the second motion data; and
based on determining that the first motion data from the controller does not match the second motion data from the inertial sensor:
generating third motion data, wherein the third motion data is generated based on subtracting a component of the second motion data from a corresponding component of the first motion data;
generating a motion-induced command based on the third motion data; and
providing the motion-induced command to one or more vehicles.

### Claim 14 (depends on 13)

The non-transitory, computer-readable medium of claim 13, wherein the first motion data comprises a first acceleration and a first angular velocity and the second motion data comprises a second acceleration and a second angular velocity.

### Claim 15 (depends on 14)

The non-transitory, computer-readable medium of claim 14, wherein the instructions for determining, based on the first acceleration, the second acceleration, the first angular velocity, and the second angular velocity, that the first motion data matches the second motion data further cause the one or more processors to perform operations comprising:
generating an acceleration difference based on subtracting the second acceleration from the first acceleration;
generating an angular velocity difference based on subtracting the second angular velocity from the first angular velocity;
determining that the acceleration difference does not meet an acceleration threshold and the angular velocity difference does not meet an angular velocity threshold; and
based on determining that the acceleration difference does not meet the acceleration threshold and the angular velocity difference does not meet the angular velocity threshold, determining that the first motion data matches the second motion data.

### Claim 16 (depends on 14)

The non-transitory, computer-readable medium of claim 14, wherein the instructions for generating the motion-induced command further cause the one or more processors to perform operations comprising:
generating a third acceleration based on subtracting the second acceleration from the first acceleration;
generating a third angular velocity based on subtracting the second angular velocity from the first angular velocity; and
generating the motion-induced command based on the third acceleration and the third angular velocity.

### Claim 17 (depends on 14)

The non-transitory, computer-readable medium of claim 14, wherein the instructions further cause the one or more processors to perform operations comprising:
determining that the first acceleration meets an acceleration threshold or the first angular velocity meets an angular velocity threshold; and
based on determining that the first acceleration meets the acceleration threshold or the first angular velocity meets the angular velocity threshold, stopping detection of new motion-induced commands from the controller.

### Claim 18 (depends on 17)

The non-transitory, computer-readable medium of claim 17, wherein the instructions further cause the one or more processors to perform operations comprising:
generating for display on the controller a selectable option to enable detecting the new motion-induced commands; and
in response to receiving a selection of the selectable option, enabling the detection of the new motion-induced commands.

### Claim 19 (depends on 13)

The non-transitory, computer-readable medium of claim 13, wherein the controller comprises a second inertial sensor and receives motion-induced commands to control the one or more vehicles, and wherein the second inertial sensor generates measurements of acceleration and angular velocity of the controller.

### Claim 20 (depends on 13)

The non-transitory, computer-readable medium of claim 13, wherein the inertial sensor is attached to a vehicle an operator is riding and wherein the second motion data is vehicle motion data.
