U.S. patent application number 17/399830 was filed with the patent office on 2021-12-02 for system and method for a virtual reality motion controller.
The applicant listed for this patent is Kevin Chaohwa CHANG, Emanuel Yosef DRUCKMANN. Invention is credited to Kevin Chaohwa CHANG, Emanuel Yosef DRUCKMANN.
Application Number | 20210373652 17/399830 |
Document ID | / |
Family ID | 1000005769624 |
Filed Date | 2021-12-02 |
United States Patent
Application |
20210373652 |
Kind Code |
A1 |
CHANG; Kevin Chaohwa ; et
al. |
December 2, 2021 |
SYSTEM AND METHOD FOR A VIRTUAL REALITY MOTION CONTROLLER
Abstract
A system and method for generating motion commands based on
detected motion of a user, the system including: a processing
circuitry; an orientation sensor; a communication interface; and a
housing having the processing circuitry, the orientation sensor,
and the communication interface disposed therein, the housing
further configured to be securely fastened to a body of a user;
wherein the orientation sensor is configured to provide sensor
readings indicative of a three-dimensional motion of a user;
wherein the processing circuitry is configured to receive the
sensor readings from the orientation sensor; determine an initial
reference position based on the sensor readings; determine a
current user position based on the sensor readings; and determine
the motion commands based on an angle between the current user
position and the initial reference position; and wherein the
communication interface is configured to relay the motion commands
to a VR device.
Inventors: |
CHANG; Kevin Chaohwa; (Los
Angeles, CA) ; DRUCKMANN; Emanuel Yosef; (Stevenson
Ranch, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
CHANG; Kevin Chaohwa
DRUCKMANN; Emanuel Yosef |
Los Angeles
Stevenson Ranch |
CA
CA |
US
US |
|
|
Family ID: |
1000005769624 |
Appl. No.: |
17/399830 |
Filed: |
August 11, 2021 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
15830802 |
Dec 4, 2017 |
11119566 |
|
|
17399830 |
|
|
|
|
62485415 |
Apr 14, 2017 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
A63F 13/25 20140902;
G06T 19/003 20130101; A63F 13/212 20140902; G06F 3/0346 20130101;
G06F 3/017 20130101; G06F 1/163 20130101; A63F 13/5255 20140902;
A63F 13/211 20140902; G06T 19/006 20130101; G06F 3/011
20130101 |
International
Class: |
G06F 3/01 20060101
G06F003/01; A63F 13/212 20060101 A63F013/212; A63F 13/211 20060101
A63F013/211; G06F 1/16 20060101 G06F001/16; G06F 3/0346 20060101
G06F003/0346; A63F 13/25 20060101 A63F013/25; A63F 13/5255 20060101
A63F013/5255 |
Claims
1. A virtual reality (VR) motion controller, comprising: a
processing circuitry; an orientation sensor; a communication
interface; and a housing having the processing circuitry, the
orientation sensor, and the communication interface disposed
therein, the housing further configured to be securely fastened to
a body of a user; wherein the orientation sensor is configured to
provide sensor readings indicative of a three-dimensional motion of
a user; wherein the processing circuitry is configured to: receive
the sensor readings from the orientation sensor; determine an
initial reference position based on the sensor readings; determine
a current user position based on the sensor readings; and determine
the motion commands based on an angle between the current user
position and the initial reference position; and wherein the
communication interface is configured to relay the motion commands
to a VR device.
2. The VR motion controller of claim 1, further comprising: a
fastener attached to the housing and configured to secure the
housing to the chest of the user.
3. The VR motion controller of claim 1, further comprising: a power
source configured to power the processing circuitry, the
orientation sensor, and the communication interface, wherein the
power source is disposed in the housing.
4. The VR motion controller of claim 1, wherein the orientation
sensor is further configured to: determine a current user position
relative to an initial reference position, wherein the position of
a user is determined based on the rotation of the orientation
sensor along at least one axis.
5. The VR motion controller of claim 1, wherein the current
position of a user is determined using quaternion values
representing rotation from the initial reference position.
6. The VR motion controller of claim 5, wherein at least one of the
quaternion values is computed along a single axis.
7. The VR motion controller of claim 1, wherein the communication
interface is configured to connect the VR motion controller to the
VR device using at least one of: a wireless connection or a wired
connection.
8. The VR motion controller of claim 1, wherein the motion commands
include at least one of: forward walk, forward run, backward walk,
backward run, strafe left walk, strafe left run, strafe right walk,
strafe right run, rotate left walk, rotate left run, rotate right
walk, and rotate right run.
9. The VR motion controller of claim 1, wherein the processing
circuitry is further configured to: recalibrate the initial
reference position based on comparing a new reference position to
the initial reference position, such that any subsequent
determination of user position is calculated based on the new
reference position.
10. The VR motion controller of claim 9, wherein the new reference
position is determined by converting quaternion values of the
initial reference position to quaternion values of the new
reference position.
11. The VR motion controller of claim 1, wherein the processing
circuitry is further configured to: determine the motion commands
based on the motion of the user when the sensor readings exceed a
predetermined threshold.
12. The VR motion controller of claim 11, wherein the threshold is
adjustable.
13. A method for generating motion commands based on detected
motion of a user, comprising: determining an initial reference
position; determining a current user position based on the initial
reference position; determining motion commands based on the
determined current user position; to determine the motion commands
based on an angle between the current user position and the initial
reference position; and sending the motion commands to a VR
device.
14. The method of claim 13, wherein the motion commands include at
least one of: forward walk, forward run, backward walk, backward
run, strafe left walk, strafe left run, strafe right walk, strafe
right run, rotate left walk, rotate left run, rotate right walk,
and rotate right run.
15. The method of claim 13, further comprising: computing the
difference between the current user position and the initial
reference position using quaternion values to determine current
user position is determined.
16. The method of claim 15, wherein at least one of the quaternion
values is calculated along a single axis.
17. The method of claim 15, further comprising: recalibrating the
initial reference position based on comparing a new reference
position to the initial reference position, such that any
subsequent determination of user position is calculated based on
the new reference position.
18. The method of claim 17, wherein the new reference position is
determined by converting quaternion values of the initial reference
position to quaternion values of the new reference position.
19. The method of claim 13, further comprising: determining the
motion commands based on the motion of the user when the sensor
readings exceed a predetermined threshold.
20. The method of claim 19, wherein the threshold is
adjustable.
21. A non-transitory computer readable medium having stored thereon
instructions for causing one or more processing units to execute a
process for generating motion commands based on detected motion of
a user, the process comprising: determining an initial reference
position; determining a current user position based on the initial
reference position; determining motion commands based on the
determined current user position; to determine the motion commands
based on an angle between the current user position and the initial
reference position; and sending the motion commands to a VR device.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. application Ser.
No. 15/830,802 which claims the benefit of U.S. Provisional
Application No. 62/485,415 filed on Apr. 14, 2017, the contents of
which are hereby incorporated by reference.
TECHNICAL FIELD
[0002] The present disclosure relates generally to virtual reality
devices, and more specifically, to devices using user body
movements to send signals to a virtual reality system.
BACKGROUND
[0003] The virtual reality (VR) space is a fast-growing area of
computer graphics and visual media where it is possible to
transport people to worlds in a way that was previously unavailable
with traditional gaming, movies, and television. Using a VR
headset, users are able to stand right in the middle of the action,
world, or scene, adding a layer of immersion that helps connect
audiences to the story being unfolded in front of their eyes.
[0004] There are currently many different uses for VR being
explored, all aimed to further engage audiences beyond traditional
media methods. The most common application at the moment is for
gaming, specifically to add a level of detail and experience for
players when it comes to first-person genre game play. Similarly,
it can also be used for storytelling or documentaries where
experiencing an event through someone else's eyes is crucial to
capturing or conveying an emotion for the piece. For example,
following along as a soldier navigates a dangerous stretch of enemy
territory can help users empathize with the stress and anxiety of
being in that situation. VR in this case is the difference between
"living" the experience with the subject versus as a removed
viewer.
[0005] While people are beginning to better understand and unlock
the potential that VR provides through use of a VR headset, there
is one element of the space that is still largely unexplored, which
is how to move within the scene. There are a number of methods
currently being explored that help people navigate in VR scenes.
The most common is the category of handheld controllers with
buttons and controls that move the camera or viewer around the
scene. There are also wand-like controllers that allow users to
navigate by waving it around via gesture commands. Lastly, there is
the method of translating in the scene where a user looks at preset
locations within the scene using the VR headset to teleport or jump
between different locations. Regardless of the method, these types
of controls still present a drawback and limitation for the user,
which is the disconnect between what the user is seeing and what is
being experienced by the rest of his or her body.
[0006] In traditional gaming and movies, users experience the media
through a 2D television or computer monitor screen, which separates
the sensation of watching someone moving on screen and physically
moving in real life. However, this distinction gets blurred in VR
due to the added immersion of the VR headset. With the headset on,
watching and experiencing movement in VR can and often does feel
like movement in real life which triggers some users to
instinctively move as they experience motion wearing the headset.
This sensation can be disjointed if the user attempts to use a
traditional controller to navigate a scene, because while the
movement is occurring in the headset, the user is typically
standing still or sitting, so the brain and eyes are perceiving
motion while the body is stationary. The best-case scenario when
using a controller in this situation is that users will adjust and
adapt to this conflicting sensation, but in any other case, it will
lead to a less engaging experience and can remove the user from the
"reality" of being in the scene, defeating the main benefit of the
VR experience.
[0007] It would therefore be advantageous to provide a solution
that would overcome the challenges noted above.
SUMMARY
[0008] A summary of several example embodiments of the disclosure
follows. This summary is provided for the convenience of the reader
to provide a basic understanding of such embodiments and does not
wholly define the breadth of the disclosure. This summary is not an
extensive overview of all contemplated embodiments, and is intended
to neither identify key or critical elements of all embodiments nor
to delineate the scope of any or all aspects. Its sole purpose is
to present some concepts of one or more embodiments in a simplified
form as a prelude to the more detailed description that is
presented later. For convenience, the term "some embodiments" may
be used herein to refer to a single embodiment or multiple
embodiments of the disclosure.
[0009] Certain embodiments disclosed herein include a virtual
reality (VR) motion controller, having a processing circuitry; an
orientation sensor; a communication interface; and a housing having
the processing circuitry, the orientation sensor, and the
communication interface disposed therein, the housing further
configured to be securely fastened to a body of a user; where the
orientation sensor is configured to provide sensor readings
indicative of a three-dimensional motion of a user; where the
processing circuitry is configured to receive the sensor readings
from the orientation sensor; determine an initial reference
position based on the sensor readings; determine a current user
position based on the sensor readings; and determine the motion
commands based on an angle between the current user position and
the initial reference position; and where the communication
interface is configured to relay the motion commands to a VR
device.
[0010] Certain embodiments disclosed herein also include a method
for generating motion commands based on detected motion of a user,
including: determining an initial reference position; determining a
current user position based on the initial reference position;
determining motion commands based on the determined current user
position; and sending the motion commands to a VR device.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The subject matter disclosed herein is particularly pointed
out and distinctly claimed in the claims at the conclusion of the
specification. The foregoing and other objects, features, and
advantages of the disclosed embodiments will be apparent from the
following detailed description taken in conjunction with the
accompanying drawings.
[0012] FIG. 1A is a perspective view of a user wearing the
controller and a VR headset in a seated position according to an
embodiment.
[0013] FIG. 1B is a perspective view of a user wearing the
controller, a VR headset, and a motion wand in a standing position
according to an embodiment.
[0014] FIG. 2 is a block diagram of the virtual reality motion
controller according to an embodiment.
[0015] FIG. 3 is a schematic diagram of an orientation sensor found
within the virtual reality motion controller according to an
embodiment.
[0016] FIG. 4 is a schematic diagram of the commands available to
be sent to a VR system from the virtual reality motion controller
according to an embodiment.
[0017] FIG. 5 is a flowchart of the method used by the virtual
reality motion controller according to an embodiment.
[0018] FIG. 6 is a flowchart of a method of recalibrating the
reference position of the virtual reality motion controller.
DETAILED DESCRIPTION
[0019] It is important to note that the embodiments disclosed
herein are only examples of the many advantageous uses of the
innovative teachings herein. In general, statements made in the
specification of the present application do not necessarily limit
any of the various claimed embodiments. Moreover, some statements
may apply to some inventive features but not to others. In general,
unless otherwise indicated, singular elements may be in plural and
vice versa with no loss of generality. In the drawings, like
numerals refer to like parts through several views.
[0020] The various disclosed embodiments include a method and
system for a virtual reality (VR) motion controller to be used with
a VR system. A VR system includes a VR headset that may be used
with the present disclosure, as will be described herein. The use
of the term VR headset in this application simply describes any
virtual reality device to be worn by a user containing a screen
that allows a user to view a 3D experience, where the screen may be
a smartphone attached to a wearable device or built into the unit
itself. Examples of VR headsets include the Google.RTM. Cardboard,
PlayStation.RTM. VR Headset, and Oculus.RTM. Rift.RTM.. The present
disclosure described below can connect to a VR headset and send
signals to the VR system to allow users to control their motion
inside a 3D scene being shown with their body movements.
[0021] FIGS. 1A and 1B show perspective views of a user wearing a
VR motion controller 101 and a VR headset 103. In an embodiment,
the VR motion controller 101 includes at least one orientation
sensor configured to detect motions and accelerations (not shown in
FIG. 1). In an embodiment, the VR motion controller 101 is secured
to a user by a strap 102, such as, but not limited to a chest
strap.
[0022] The strap 102 is sufficiently tightened against the user's
body (e.g., chest) so as to ensure that any motion performed by the
user will create clean and accurate orientation sensor readings.
Such readings are then translated into desired motion commands for
use within the VR system.
[0023] It should be appreciated that securing the strap to the
chest provides accurate sensor readings of user motions.
Alternatively, attaching the controller 101 to another part of the
body, such as the hand or wrist, will often record user movements
that are not intended to be commands for the VR system. For
example, a user could easily flick a hand inadvertently while their
torso remains stationary. As such, if the VR motion controller 101
is attached to a hand, stretching out an arm would cause a motion
command to be sent to the VR system, even though the user has not
rotated or shifted their body position.
[0024] Thus, in a preferred embodiment, the chest is the most
optimal position for an orientation sensing device for a VR system
designed to relay motions intended to mimic realistic user motions.
As shown in FIG. 1A, this configuration may even be implemented in
a seated position, where a user can simply turn or lean their body
in a desired direction, which is then imparted to the VR system via
the controller 101.
[0025] The VR motion controller 101 is worn in tandem with a VR
headset 103, and is connected thereto via a wired or wireless
connection. In addition, further VR accessories may be used
simultaneously as well, such as a wand 104 shown in FIG. 1B,
configured to relay various specialized commands, e.g., the firing
of a weapon or the execution of a specific maneuver.
[0026] The VR system may include a console (not shown) connected to
the VR headset and to the VR motion controller 101 configured to
execute applications and process 3D scenes for viewing.
Alternatively, the VR system may include a user device (not shown),
such as a smartphone or tablet, that is mountable within the VR
headset which is configured to execute applications as well as be
implemented as a VR display.
[0027] FIG. 2 is a block diagram of the VR motion controller 101
designed according to an embodiment. The VR motion controller 101
includes a processing circuitry 210 connected to an orientation
sensor 230 and a power source 220. The power source 220 may include
a rechargeable battery connected to a charging unit 250, which
would allow the controller 101 to be recharged after use without
having to replace the batteries, while ensuring cord-free
operation.
[0028] The orientation sensor 230 may include components configured
to measure both motion and acceleration, such as an accelerometer,
allowing the tracking not only of a user's position, but also of
the speed and direction in which they move. These recordings can
enhance a VR system's ability to convincingly reproduce the
illusion of a user being present within a 3D scene.
[0029] The processing circuitry 210 may be realized as one or more
hardware logic components and circuits. For example, and without
limitation, illustrative types of hardware logic components that
can be used include field programmable gate arrays (FPGAs),
application-specific integrated circuits (ASICs),
Application-specific standard products (ASSPs), system-on-a-chip
systems (SOCs), general-purpose microprocessors, microcontrollers,
digital signal processors (DSPs), and the like, or any other
hardware logic components that can perform calculations or other
manipulations of information.
[0030] The processing circuitry 210 is further connected to a
communication interface 240 that is configured to connect to
various components of a VR system, such as a VR headset or wand. In
an embodiment, the communication interface 240 is configured to
connect wirelessly to the VR system using wireless communication
protocols, such as Bluetooth.RTM., Near Field Communication (NFR),
WiFi, WiGig and the like. In an alternative embodiment, the
communication interface 240 of the controller 101 is configured to
connect to a VR system via a wired connection using USB, HDMI,
DisplayPort cables and the like.
[0031] In an embodiment, the VR motion controller 101 may further
include memory 260 configured to store software. Software shall be
construed broadly to mean any type of instructions, whether
referred to as software, firmware, middleware, microcode, hardware
description language, or otherwise. Instructions may include code
(e.g., in source code format, binary code format, executable code
format, or any other suitable format of code). The instructions,
when executed by the one or more processors, cause the processing
circuitry 210 to perform the various processes described herein.
Specifically, the instructions, when executed, cause the processing
circuitry 210 to determine motion and acceleration via the
orientation sensor 230 and to send the orientation data to a
connected VR headset via either a wired or a wireless
connection.
[0032] FIG. 3 is a schematic diagram of the orientation sensor 230
operable in the VR motion controller 101 according to an
embodiment. The orientation sensor 230 is configured to monitor at
least six different types of motion as shown in FIG. 3, with two
degrees of strength for each of those motions, for a total of 12
commands that can be sent to the VR headset. The types of motion
include a pitch 231, a yaw 232, and a roll 233 of the orientation
sensor with respect to a reference frame. That is, if the
orientation sensor 230 has rotated in a positive or negative
direction for each of the pitch 231, yaw 232, and roll 233.
[0033] Any combination of the readings 231, 232, and 233 can be
translated into specific motion directions. As an example shown in
FIG. 4, the directions may indicate if a user has leaned forward
404 or backward 405, moved, or strafed, left 407 or right 406, or
rotated clockwise 408 or counterclockwise 409. The motion
directions 404-409 can be translated to commands available to be
sent to a VR system from the VR motion controller 101.
[0034] In addition to the direction, the command may designate the
speed of the motion in that particular direction. That is, two
different strengths of motion may be measured, depending on how
much the user leans or rotates with his or her body and how quickly
they do so. For a forward move motion, for example, if the user
does a slight lean forward, it will register it as a "walk" forward
command, and if the user continues to lean forward beyond that, can
register it as a "run" forward command instead. The same applies
for each of the other commands, whether moving backwards, leaning
left or right, or rotating clockwise or counterclockwise
[0035] For example, the commands may include: forward walk, forward
run, backward walk, backward run, strafe (i.e., to move laterally
sideways without rotating) left walk, strafe left run, strafe right
walk, strafe right run, rotate left walk, rotate left run, rotate
right walk, and rotate right run.
[0036] In an embodiment, the readings of the orientation sensor 230
are translated into a direction and then to a command based on the
strength of a signal indicative of the motion readings (231, 232,
or 233, FIG. 3) and the frequency of change in the motion
readings.
[0037] In an example embodiment, a threshold is implemented to
determine a speed of a motion (e.g., a walk and/or a run) and may
be adjustable based on user preferences. For example, when seated,
a user may wish to use a lower threshold, such that a smaller range
of motion registers as a run. Likewise, when standing, a user may
wish to use a higher threshold, requiring more motion (e.g., a
large movement forward) to indicate a run as opposed to a walk
command. Further, for each motion reading a configurable threshold
can be utilized to determine the desired command based on the
sensor readings. The utilization of the thresholds to determine the
motion and its speed are discussed below.
[0038] Additionally, in an embodiment, the VR motion controller 101
may send any of the commands as keyboard or joystick commands. For
example, a certain motion can be linked to a specialized keyboard
combination to send a specialized command to the VR system.
[0039] In the previously mentioned embodiment, twelve commands can
be sent based on the recorded motions, allowing for twelve main
movements in a 3D space. Those commands may include: forward walk,
forward run, backward walk, backward run, strafe (i.e., move
laterally sideways without rotating) left walk, strafe left run,
strafe right walk, strafe right run, rotate left walk, rotate left
run, rotate right walk, and rotate right run. Leaning forward leads
to a forward walk or run command. Leaning backwards leads to a
backward walk or backward run command in the scene. Leaning or
tilting left leads to a left strafe walk or run, where, e.g., a
character moves left in a scene while maintaining a forward
oriented direction. Leaning right does the same in the right
direction. Finally, the user turning his or her body
counterclockwise leads to a rotate or turn left walk or run, where
the character in the 3D scene rotates counterclockwise or left and
essentially rotates the forward look direction while staying
stationary. The same applies to a turn in the clockwise direction
which leads to a turn clockwise or directional right in the
scene.
[0040] Each of the move commands has areal threshold in a general
direction on top of the strength threshold to determine the speed
of the motion (e.g., a walk versus a run). This threshold is the
area of effect that allows the move to be triggered, similar to a
zone of movement. In other words, if a user is interested in moving
forward, the VR motion controller 101 can be configured such that
any degree of leaning forward can trigger a move command, and the
direction does not need to necessarily be in a direct line forward
along the "forward" axis. This allows for overlapping zones so that
it is possible to trigger multiple commands simultaneously, such
that a move forward and a strafe right can cause a user to move
diagonally right within the 3D scene while facing forward.
Depending on the degree of the motion, these simultaneous movements
can be a translated as a walk, a run, or any combination thereof,
based on the orientation and strength of motion for each separate
command. This type of simultaneous motion better mimics how users
move in real life scenarios, providing a more natural experience
within the VR scene.
[0041] The commands sent by the controller to the VR headset can be
either in digital or analog signal format. This allows for
flexibility in how the commands are received and handled depending
on the hardware and software being used in the VR system. In
addition, an analog signal may provide a more granular strength of
motion beyond walking and running by sending a continuous move
value versus separate specific walk or run commands, so that the
controller can behave more similarly to a game joystick in addition
to sending keyboard controls. The forward and backward motions on
the joystick would map to the forward and backward move commands.
Left and right would map to strafe left and strafe right, and
twisting left and twisting right on the joystick would map to a
rotate left and rotate right.
[0042] It should be noted that while one embodiment of the
controller 101 focuses on twelve main commands that are used to
move in 3D space, the controller 101 may be programmed to handle as
many commands as desired based on different user motions.
[0043] FIG. 5 is a flowchart of the method 500 used by the virtual
reality motion controller according to an embodiment. The trigger
for a command is sent from the VR motion controller when motion
from at least one of the twelve aforementioned potential movements
is detected, based off of a calculated initial reference
position.
[0044] At S510, an initial reference position is calculated and
established, such that all subsequent calculations can be made in
reference to the initial reference position.
[0045] At S520, a subsequent measurement of a user's position is
determined with respect to the initial reference positions. The
position may be determined by calculating any change in rotational
value along any of the axes of rotation, e.g., roll, yaw and pitch,
and assigned a quaternion value compared to the initial reference
position. For example, the orientation sensor may detect that a
user has leaned forward and slightly to the left. The position is
determined by calculating how far forward and sideways the
orientation sensor has moved relative to its starting reference
position.
[0046] It is further determined if the user is currently in motion.
That is, if a movement or acceleration is detected and if so, what
the direction of the movement or acceleration is. The motion and
acceleration can be determined by calculated the rate of change of
position over a period of time. For example, as discussed above, a
steeper angle may be determined to indicate a running command,
while a shallower angle may be determined to be a walking command.
In an alternative embodiment, the desired command, e.g., running or
walking, may be determined based on an acceleration detected by the
orientation sensor.
[0047] In an embodiment, to properly calculate the user position, a
current quaternion reading from the orientation sensor is taken and
compared to the initial reference position reading, and the
difference is used to determine how the user is moving while
wearing the controller. To simplify the calculations and help
visualize the movements of the controller in a 3D space, the
controller is configured to solve for all of the movements in a
coordinate space along one axis.
[0048] To this end, a determination is made if the user is leaning,
strafing, or rotating by calculating the w, x, y, and z differences
between the initial reference quaternion along the chosen axis and
the current reading output by the orientation sensor. The
differences for each of these variables in the quaternion allows
for identification of the position, motion, and acceleration
currently being performed by the user.
[0049] A threshold may be predetermined to establish when a level
of acceleration of movement is sufficient to establish a desired
motion, e.g., a movement, rotation or acceleration. In an
embodiment, the controller is configured to allow for an adjustable
threshold for when the quaternion differentials trigger commands.
The larger the desired threshold, the further the user must lean,
strafe, or rotate to trigger a command. A smaller threshold value
allows for more subtle and nuanced motion to trigger motions.
[0050] This flexibility allows the VR motion controller to
accommodate different strengths of motion as well as different body
shapes and sizes creating different readings. For example, users
using the controller while seated may prefer small and subtle
movements as sitting in a chair may limit the range and strength of
motion available. While standing, users have much more freedom of
motion, and as such may prefer the larger threshold values. In
addition, because the controller, even when worn correctly, will
rest differently on different individuals, similar motions on those
users can yield slightly different readings so adjusting the
threshold is paramount for creating a consistent experience.
[0051] At S530, commands are determined based on the determined
user position and motion. It should be noted that while there are a
number of different methods available that can determine the
motions being made by the user and translate them into controller
commands, the quaternion calculations offer specific and distinct
advantages. An alternative method involves using Euler angle
rotations in a traditional 3D coordinate space to collect the
sensor data. However, there are limitations with Euler rotations
that make solving movement equations both more complex and more
limiting. Euler rotation can be limited by gimbal lock, limiting
detection to a single rotational axis, which can occur if the
controller is calibrated in certain initial orientations.
Additionally, with Euler angles the rotation vectors can also
potentially create inaccurate calculations, leading to incorrect
commands being triggered. Quaternions provide an efficient method
that allows the controller to begin in any initial calibration
without the concern for gimbal lock occurring.
[0052] At S540, the determined commands are sent to the VR system.
In an embodiment, the commands are sent directly to a VR headset,
allowing a user to "move around" within the displayed scene. In an
alternative embodiment, the commands may be sent to a central unit,
such as a console, which is subsequently sent to a VR headset.
[0053] FIG. 6 is a flowchart of a method 600 of recalibrating the
reference position of the virtual reality motion controller. At
S610, an initial reference position is determined. The initial
reference position is based on the sensor readings from the
orientation sensor of a VR motion controller. For example, if a
user's natural resting position involves a slight lean forward, the
initial reference position will determine such a lean forward as a
resting position, and no commands will be sent. Consequently, if
the user subsequently sits up in a straightened position, the VR
motion controller will interpret that position as a lean
backwards.
[0054] At S620, a new reference position is set. This may be
accomplished manually, e.g., when a user selects a recalibration
setting, or automatically, e.g., based on the position a user is in
at a certain point in time.
[0055] At S630, the difference between the initial reference
position and the new reference position are calculated. The may be
accomplished by solving for the changes in angles, e.g., the
quaternion values, between the two positions. In an embodiment, the
reference position is determined along a single axis to simplify
the calculations. After solving for the new reference position in a
simplified quaternion space, i.e., along a single axis, the
solution for all subsequent user orientations is calculated by
finding the rotation quaternion which allows for the ability to
rotate any starting position back to that space. When the
controller is calibrated, that reading is stored as a quaternion of
the initial orientation reading, and the corresponding rotation
quaternion that allows for rotation between the current user space
back to the initial reference solved space is calculated. All user
orientation readings from the sensor are then rotated by that
rotation quaternion to move us back to that simplified space where
the desired move commands are known. This means that regardless of
the orientation and position of the controller, the controller
resorts back to the same solved reference quaternion space where we
can easily translate motions to the proper commands to send to the
VR headset.
[0056] Choosing an initial target quaternion looking down an axis
of rotation simplifies the calculations needed to determine
commands to send to the VR headset. It also simplifies the
threshold calculations for determining a walk versus a run command,
as well as any analog signals to be sent if desired. Based on the
quaternion difference in the initial reference position and the
current user position, we can determine whether the threshold has
been reached as well as what motion is being performed. That is,
unique differences in the four quaternion values, w, x, y, and z,
allow for determining whether a user is moving forward, moving
backward, strafing left, strafing right, rotating left, or rotating
right, creating a translation table that converts the differences
to the appropriate movements to be sent to the VR system.
[0057] At S640, a user position determined using the new reference
is translated to the reference of the initial reference position,
allowing for a more efficient calculation of user positions and
motions. At S650, motion commands are calculated based on the
translated user positions, and may be sent to a VR system.
[0058] As used herein, the phrase "at least one of" followed by a
listing of items means that any of the listed items can be utilized
individually, or any combination of two or more of the listed items
can be utilized. For example, if a system is described as including
"at least one of A, B, and C," the system can include A alone; B
alone; C alone; A and B in combination; B and C in combination; A
and C in combination; or A, B, and C in combination.
[0059] The various embodiments disclosed herein can be implemented
as hardware, firmware, software, or any combination thereof.
Moreover, the software is preferably implemented as an application
program tangibly embodied on a program storage unit or computer
readable medium consisting of parts, or of certain devices and/or a
combination of devices. The application program may be uploaded to,
and executed by, a machine comprising any suitable architecture.
Preferably, the machine is implemented on a computer platform
having hardware such as one or more central processing units
("CPUs"), a memory, and input/output interfaces. The computer
platform may also include an operating system and microinstruction
code. The various processes and functions described herein may be
either part of the microinstruction code or part of the application
program, or any combination thereof, which may be executed by a
CPU, whether or not such a computer or processor is explicitly
shown. In addition, various other peripheral units may be connected
to the computer platform such as an additional data storage unit
and a printing unit. Furthermore, a non-transitory computer
readable medium is any computer readable medium except for a
transitory propagating signal.
[0060] All examples and conditional language recited herein are
intended for pedagogical purposes to aid the reader in
understanding the principles of the disclosed embodiment and the
concepts contributed by the inventor to furthering the art, and are
to be construed as being without limitation to such specifically
recited examples and conditions. Moreover, all statements herein
reciting principles, aspects, and embodiments of the disclosed
embodiments, as well as specific examples thereof, are intended to
encompass both structural and functional equivalents thereof.
Additionally, it is intended that such equivalents include both
currently known equivalents as well as equivalents developed in the
future, i.e., any elements developed that perform the same
function, regardless of structure.
* * * * *