US20200372702A1 - Multi-layered artificial reality controller pose tracking architecture having prioritized motion models - Google Patents
Multi-layered artificial reality controller pose tracking architecture having prioritized motion models Download PDFInfo
- Publication number
- US20200372702A1 US20200372702A1 US16/417,244 US201916417244A US2020372702A1 US 20200372702 A1 US20200372702 A1 US 20200372702A1 US 201916417244 A US201916417244 A US 201916417244A US 2020372702 A1 US2020372702 A1 US 2020372702A1
- Authority
- US
- United States
- Prior art keywords
- controller
- hand
- held controller
- motion
- artificial reality
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 157
- 230000004913 activation Effects 0.000 claims abstract description 59
- 230000001133 acceleration Effects 0.000 claims abstract description 26
- 230000006399 behavior Effects 0.000 claims description 78
- 238000000034 method Methods 0.000 claims description 57
- 238000005259 measurement Methods 0.000 claims description 44
- 238000009877 rendering Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 13
- 230000001360 synchronised effect Effects 0.000 claims 2
- 238000004891 communication Methods 0.000 description 10
- 230000009849 deactivation Effects 0.000 description 10
- 208000013057 hereditary mucoepithelial dysplasia Diseases 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 4
- 238000001429 visible spectrum Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 210000004247 hand Anatomy 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000001228 spectrum Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 210000000245 forearm Anatomy 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000002329 infrared spectrum Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0346—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
Definitions
- This disclosure generally relates to artificial reality systems, such as virtual reality, mixed reality, and/or augmented reality systems, and more particularly, to tracking controllers for artificial reality systems.
- artificial reality systems are becoming increasingly ubiquitous with applications in many fields such as computer gaming, health and safety, industrial, and education. As a few examples, artificial reality systems are being incorporated into mobile devices, gaming consoles, personal computers, movie theaters, and theme parks. In general, artificial reality is a form of reality that has been adjusted in some manner before presentation to a user, which may include, e.g., a virtual reality (VR), an augmented reality (AR), a mixed reality (MR), a hybrid reality, or some combination and/or derivatives thereof.
- VR virtual reality
- AR augmented reality
- MR mixed reality
- hybrid reality or some combination and/or derivatives thereof.
- Typical artificial reality systems include one or more devices for rendering and displaying content to users.
- an artificial reality system may incorporate a head mounted display (HMD) worn by a user and configured to output artificial reality content to the user.
- the artificial reality content may include completely-generated content or generated content combined with captured content (e.g., real-world video and/or images).
- the user may utilize a hand-held controller to interact with applications or interact with the artificial reality system. Aspects of graphical elements within the artificial reality content may be determined based on the position and orientation of the hand-held controller.
- this disclosure describes artificial reality (AR) systems and, more specifically, a controller tracking sub-system for an AR system that includes a head mounted display (HMD), one or more hand-held controllers, and sensors or cameras to determine and track the pose of the one or more hand-held controllers.
- HMD head mounted display
- sensors or cameras to determine and track the pose of the one or more hand-held controllers.
- a technical problem with conventional AR systems that use sensors or cameras to track the pose of a hand-held controller is that the hand-held controller may leave the field of view (FOV) of the sensors or cameras, or may be within the field of view but occluded by another object such as a hand or other body part of the user, a second hand-held controller, or by other objects in the physical environment.
- the AR system thus cannot determine an accurate pose for the hand-held controller, which can lead to user dissatisfaction and frustration with the operation of the AR system.
- some aspects include a controller tracking sub-system that can determine a pose for a hand-held controller based on image data provided by the sensors or cameras of an AR system when the hand-held controller is trackable within the field of view of the sensors or cameras of the AR system, and can also use other available data and motion models to determine a pose for the hand-held controller when the hand-held controller is not trackable within the field of view of the sensors or cameras, or if the hand-held controller is occluded by another object in the field of view.
- the controller tracking sub-system can have two components, a FOV tracking component (also referred to as a constellation tracking component) and a non-FOV tracking component (also referred to as a “corner-case” tracking component) that applies specialized motion models when one or more of the controllers are not readily trackable within the field of view of sensors and cameras of an AR system.
- FOV tracking component receives HMD state data and controller measurement data (velocity, acceleration etc.) to compute image-based controller state data for a hand-held controller.
- the image-based controller state data is used to determine the controller pose and the non-FOV tracking component is bypassed. If the hand-held controller is not trackable within the field of view and the hand-held controller measurement data meets activation conditions for one or more tracking corner cases, the non-FOV tracking component applies one or more activated specialized motion models to compute model-based controller state data for one or more of the hand-held controllers. The model-based controller state data is then used to determine the controller pose.
- Example corner cases include: controller near the HMD and not attached to the HMD, hand-over-hand not attached, hand-over-hand attached, position of the controller is unreliable, and controller at rest.
- Each of the corner cases can have activation and deactivation conditions that determine whether a motion model associated with the activation conditions is evaluated.
- the behavior for a corner case can include a finite state machine (FSM) and a constrained motion model that can be used to determine a model-based controller state for the hand-held controllers. Behaviors for more than one corner case can be activated during a display frame generation cycle. The resulting model-based controller state data resulting from evaluation of the activated model associated with the highest priority behavior can be used to determine the pose for the hand-held controller.
- FSM finite state machine
- a constrained motion model that can be used to determine a model-based controller state for the hand-held controllers.
- Behaviors for more than one corner case can be activated during a display frame generation cycle.
- the aspects described above and further aspects described below can provide a technical improvement over conventional artificial reality system implementations, and can provide one or more practical applications, such as enabling an AR system to determine a pose for a hand-held controller in cases where the hand-held controller is not within the field of view of sensors and/or cameras of the AR system, or when a hand-held controller is occluded.
- the resulting controller pose can be used to provide a more accurate rendering of artificial reality content by the artificial reality system when the controller is not trackable within the field of view of the sensors and/or cameras of the AR system.
- an artificial reality system includes an image capture device configured to capture image data representative of a physical environment; a head mounted display (HMD) configured to output artificial reality content; a pose tracker configured to determine, based at least in part on controller state data, a controller pose representing a position and orientation of a hand-held controller, the pose tracker including a non-FOV tracker having a plurality of motion models associated with different motion behaviors for the hand-held controller, each of the plurality of motion models associated with one or more respective activation conditions, wherein the non-FOV tracker is configured to determine the controller state data in accordance with one of the plurality of motion models in response to a determination that the hand-held controller is not trackable within the image data and that the one of the plurality of motion models is activated; and a rendering engine configured to render for display at the HMD the artificial reality content and at least one graphical object in accordance with the controller pose.
- HMD head mounted display
- a method includes obtaining, by an image capture device of an artificial reality system including a head mounted display (HMD), image data representative of a physical environment; determining, by a non-FOV tracker of the artificial reality system, controller state data for a hand-held controller in accordance with a motion model of a plurality of motion models associated with different motion behaviors for the hand-held controller, each of the plurality of motion models associated with one or more respective activation conditions, wherein the determining the controller state data in accordance with the motion model is in response to determining that the hand-held controller is not trackable within the image data and that controller measurement data indicative of a motion behavior for the hand-held controller satisfies the one or more activation conditions associated with the motion model; determining, by the artificial reality system, a controller pose representing a position and orientation of the hand-held controller based, at least in part, on the controller state data; and rendering, by the artificial reality system for display at the HMD, artificial reality content and at least one graphical object in accord
- HMD head mounted display
- a non-transitory, computer-readable medium comprises instructions that, when executed, cause one or more processors of an artificial reality system to obtain image data representative of a physical environment via an image capture device; determine the controller state data for a hand-held controller in accordance with a motion model of a plurality of motion models associated with different motion behaviors for the hand-held controller, each of the plurality of motion models associated with one or more respective activation conditions, wherein the determination of the controller state data in accordance with the motion model is in response to a determination that the hand-held controller is not trackable within the image data and that controller measurement data indicative of a motion behavior for the hand-held controller satisfies the one or more activation conditions associated with the motion model; determine a controller pose representing a position and orientation of the hand-held controller based, at least in part, on the controller state data; and render for display at the HMD, artificial reality content and at least one graphical object in accordance with the controller pose.
- FIG. 1A is an illustration depicting an example artificial reality system that performs pose tracking for one or more hand-held controllers that are not trackable within a field of view of image capture devices of the artificial reality system in accordance with the techniques of the disclosure.
- FIG. 1B is an illustration depicting another example artificial reality system that performs pose tracking for one or more hand-held controllers that are not trackable within a field of view of image capture devices of the artificial reality system in accordance with the techniques of the disclosure.
- FIG. 2 is an illustration depicting an example HMD that operates in accordance with the techniques of the disclosure.
- FIG. 3 is a block diagram depicting an example in which pose tracking for a hand-held controller is performed by an example instance of the HMD of the artificial reality systems of FIGS. 1A, 1B in accordance with the techniques of the disclosure.
- FIG. 4 is a block diagram showing example implementations in which pose tracking for a hand-held controller is performed by example instances of the console and the HMD of the artificial reality systems of FIGS. 1A, 1B .
- FIG. 5 is a block diagram showing components of an example non-FOV tracker in accordance with aspects of the disclosure.
- FIG. 6 is a flowchart illustrating example operations of a method for determining a controller pose for a hand-held controller that is not trackable, in some cases, in a field of view in accordance with aspects of the disclosure.
- FIGS. 7-10 are flowcharts illustrating example operations of methods for activating behaviors and evaluating motion models associated with the activated behaviors in accordance with aspects of the disclosure.
- FIG. 11 is a flowchart illustrating example operations of a method for reducing jitter when a hand-held controller reenters a field of view in accordance with aspects of the disclosure.
- FIGS. 12A-12B, 13A-13B, 14A-14B, and 15A-15B illustrate example physical environments and example artificial reality content based on the example physical environments.
- FIG. 1A is an illustration depicting an example artificial reality system 10 that performs pose tracking for one or more hand-held controllers 114 that are not trackable within a field of view of image capture devices of an artificial reality system in accordance with the techniques of the disclosure.
- artificial reality system 10 generates and renders graphical elements to a user 110 based on one or more detected poses of one or more hand-held controllers 114 operated by user 110 . That is, as described herein, artificial reality system 10 presents one or more graphical elements 126 , 136 based on poses of a controller 114 operated by user 110 , such as particular motions, configurations, positions, and/or orientations of the controller 114 .
- artificial reality system 10 includes head mounted device (HMD) 112 .
- HMD 112 is typically worn by user 110 and includes an electronic display and optical assembly for presenting artificial reality content 122 to user 110 .
- HMD 112 includes one or more motion sensors (e.g., accelerometers) for tracking motion of the HMD 112 and may include one or more image capture devices 138 , e.g., cameras, infrared (IR) detectors, Doppler radar, line scanners and the like, for capturing image data of the surrounding physical environment.
- IR infrared
- HMD 112 operates as a stand-alone, mobile artificial reality system.
- an artificial reality system 10 can optionally include a console 106 and/or one or more external sensors 90 in addition to, or instead of HMD 112 .
- console 106 is shown as a single computing device, such as a gaming console, workstation, a desktop computer, or a laptop.
- console 106 may be distributed across a plurality of computing devices, such as a distributed computing network, a data center, or a cloud computing system.
- Console 106 , HMD 112 , and sensors 90 may, as shown in this example, be communicatively coupled via network 104 , which may be a wired or wireless network, such as WiFi, a mesh network or a short-range wireless communication medium.
- artificial reality system 10 uses information captured from a real-world, 3D physical environment to render artificial reality content 122 for display to user 110 .
- user 110 views the artificial reality content 122 constructed and rendered by an artificial reality application executing on HMD 112 and/or console 106 .
- artificial reality content 122 may be a consumer gaming application in which user 110 is rendered as avatar 120 with one or more virtual objects 128 A, 128 B.
- artificial reality content 122 may comprise a mixture of real-world imagery and virtual objects, e.g., mixed reality and/or augmented reality.
- artificial reality content 122 may be, e.g., a video conferencing application, a navigation application, an educational application, training or simulation applications, or other types of applications that implement artificial reality.
- the artificial reality application constructs artificial reality content 122 for display to user 110 by tracking and computing pose information for a frame of reference, typically a viewing perspective of HMD 112 .
- a frame of reference typically a viewing perspective of HMD 112 .
- the artificial reality application uses HMD 112 as a frame of reference, and based on a current field of view 130 as determined by current estimated pose of HMD 112 and current estimated poses for one or more controllers 114 , the artificial reality application renders 3D artificial reality content which, in some examples, may be overlaid, at least in part, upon the real-world, 3D physical environment of user 110 .
- the artificial reality application uses sensed data received from HMD 112 and the one or more controllers 114 , such as movement information and user commands, and, in some examples, data from any external sensors 90 , such as external cameras, to capture 3D information within the real world, physical environment, such as motion by user 110 and/or motion of the one or more controllers 114 . Based on the sensed data, the artificial reality application determines a current pose for the frame of reference of HMD 112 , a current pose for the one or more controllers 114 and, in accordance with the current poses of the HMD 112 and controllers 114 , renders the artificial reality content 122 .
- the artificial reality system 10 can determine a pose for the one or more controllers 114 based on data from sensors or cameras of an artificial reality system 10 when the one or more controllers 114 are trackable within the field of view of the sensors or cameras, and artificial reality system 10 can use motion models and available controller measurement data when the one or more controllers 114 are not trackable within the field of view of the sensors or cameras.
- image capture devices 138 of HMD 112 capture image data representative of objects in the real world, physical environment that are within a field of view 130 of image capture devices 138 . These objects can include the one or more controllers 114 .
- Field of view 130 typically corresponds with the viewing perspective of HMD 112 .
- the artificial reality application renders the portions of hand 132 of user 110 that are within field of view 130 as a virtual hand 136 within artificial reality content 122 .
- the virtual hand 136 can be rendered in accordance with a pose of a controller 114 held in hand 132 .
- the artificial reality application can render virtual objects such as virtual sword 126 based on a pose of the one or more controllers 114 .
- artificial reality systems as described herein may provide a high-quality artificial reality experience to a user, such as user 110 , of the artificial reality application by generating and rendering graphical elements overlaid on the artificial reality content based on poses determined for a controller 114 , regardless of whether or not the controller 114 is trackable within the field of view of sensors and/or cameras of the artificial reality system 10 .
- FIG. 1B is an illustration depicting another example artificial reality system 20 that performs pose tracking for one or more hand-held controllers that are not trackable within a field of view of image capture devices of the artificial reality system 20 in accordance with the techniques of the disclosure. Similar to artificial reality system 10 of FIG. 1A , in some examples, artificial reality system 20 of FIG. 1B may present and control graphical elements for user interaction and manipulation within an artificial reality environment based on poses determined for one or more controllers 114 .
- artificial reality system 20 includes external cameras 102 A and 102 B (collectively, “external cameras 102 ”), HMDs 112 A- 112 C (collectively, “HMDs 112 ”), controllers 114 A, 114 B and 114 C (collectively, “controllers 114 ”), console 106 , and sensors 90 .
- artificial reality system 20 represents a multi-user environment in which an artificial reality application executing on HMDs 112 and/or console 106 presents artificial reality content to each of users 110 A- 110 C (collectively, “users 110 ”) based on a current viewing perspective of a corresponding frame of reference for the respective user.
- the artificial reality application constructs artificial content by tracking and computing pose information for a frame of reference for each of HMDs 112 and respective controllers 114 .
- Artificial reality system 20 uses data received from cameras 102 , HMDs 112 , and controllers 114 to capture 3D information within the real world environment, such as motion by users 110 and/or tracking information with respect to controllers 114 for use in computing updated pose information for the controllers 114 within a corresponding frame of reference of HMDs 112 .
- the artificial reality application may render, based on a current viewing perspective determined for HMD 112 C, artificial reality content 122 having virtual objects 128 A- 128 C (collectively, “virtual objects 128 ”) as spatially overlaid upon real world objects 108 A- 108 C (collectively, “real world objects 108 ”). Further, from the perspective of HMD 112 C, artificial reality system 20 renders avatars 120 A, 120 B based upon the estimated positions for users 110 A, 110 B, respectively. Further, the artificial reality system 20 can render graphical objects based on the poses of the controllers 114 as determined by the artificial reality system 20 .
- Each of HMDs 112 concurrently operates within artificial reality system 20 .
- each of users 110 may be a “player” or “participant” in the artificial reality application, and any of users 110 may be a “spectator” or “observer” in the artificial reality application.
- HMD 112 C may operate substantially similar to HMD 112 of FIG. 1A by tracking controller 114 C held by hand 132 C of user 110 C, and rendering the hand 132 C as virtual hand 136 within artificial reality content 122 when a controller 114 C held by hand 132 C is within field of view 130 .
- HMD 112 C may also render virtual objects such as sword 126 based on a determined pose of controller 114 C when controller 114 C is in the field of view 130 .
- Controller 114 C may be in communication with HMD 112 C using near-field communication of short-range wireless communication such as Bluetooth, using wired communication links, or using other types of communication links.
- HMD 112 A and HMD 112 B may also operate substantially similar to HMD 112 of FIG. 1A .
- HMD 112 B may receive user inputs from controllers 114 A and 144 B held by user 110 B.
- input data from external cameras 102 may be used to track and detect particular motions, configurations, positions, and/or orientations of controllers 114 .
- FIG. 2 is an illustration depicting an example HMD 112 and controller 114 configured to operate in accordance with the techniques of the disclosure.
- HMD 112 of FIG. 2 may be an example of any of HMDs 112 of FIGS. 1A and 1B .
- HMD 112 may operate as a stand-alone, mobile artificial realty system configured to implement the techniques described herein or may be part of an artificial reality system, such as artificial reality systems 10 , 20 of FIGS. 1A, 1B .
- HMD 112 includes a front rigid body and a band to secure HMD 112 to a user.
- HMD 112 includes an interior-facing electronic display 203 configured to present artificial reality content to the user.
- Electronic display 203 may be any suitable display technology, such as liquid crystal displays (LCD), quantum dot display, dot matrix displays, light emitting diode (LED) displays, organic light-emitting diode (OLED) displays, cathode ray tube (CRT) displays, e-ink, or monochrome, color, or any other type of display capable of generating visual output.
- the electronic display is a stereoscopic display for providing separate images to each eye of the user.
- the known orientation and position of display 203 relative to the front rigid body of HMD 112 is used as a frame of reference, also referred to as a local origin, when tracking the position and orientation of HMD 112 for rendering artificial reality content according to a current viewing perspective of HMD 112 and the user.
- the frame of reference may also be used in tracking the position and orientation of controller 114 with respect to the HMD 112 .
- HMD 112 may take the form of other wearable head mounted displays, such as glasses or goggles.
- HMD 112 further includes one or more motion sensors 206 , such as one or more accelerometers (also referred to as inertial measurement units or “IMUs”) that output data indicative of current acceleration of HMD 112 , GPS sensors that output data indicative of a location of HMD 112 , radar or sonar that output data indicative of distances of HMD 112 from various objects, or other sensors that provide indications of a location or orientation of HMD 112 or other objects within a physical environment.
- accelerometers also referred to as inertial measurement units or “IMUs”
- GPS sensors that output data indicative of a location of HMD 112
- radar or sonar that output data indicative of distances of HMD 112 from various objects, or other sensors that provide indications of a location or orientation of HMD 112 or other objects within a physical environment.
- HMD 112 may include integrated image capture devices 138 A and 138 B (collectively, “image capture devices 138 ”), such as video cameras, still cameras, IR scanners, UV scanners, laser scanners, Doppler radar scanners, depth scanners, or the like, configured to output image data representative of the physical environment.
- image capture devices 138 can capture image data from a visible spectrum and an invisible spectrum of the electromagnetic spectrum (e.g., IR light).
- the image capture devices 138 may include one or more image capture devices that capture image data from the visible spectrum and one or more separate image capture devices that capture image data from the invisible spectrum, or these may be combined in the same one or more image capture devices.
- image capture devices 138 capture image data representative of objects in the physical environment that are within a field of view 130 A, 130 B of image capture devices 138 , which typically corresponds with the viewing perspective of HMD 112 .
- HMD 112 includes an internal control unit 210 , which may include an internal power source and one or more printed-circuit boards having one or more processors, memory, and hardware to provide an operating environment for executing programmable operations to process sensed data and present artificial reality content on display 203 .
- Controller 114 can be a hand-held controller for use in interacting with an artificial reality system 10 , 20 .
- Controller 114 can include one or more emitters 208 that emit light in the visible or non-visible spectrum.
- the controller 114 can include ten or more emitters 208 .
- emitters 208 can be IR emitters.
- Emitters 208 can be arranged in a pattern (also referred to as a “constellation”) that can be used by artificial reality system 10 , 20 to determine a pose of the controller 114 .
- Controller 114 can include user interface features such as buttons, dials etc. that can provide input for use by artificial reality system 10 , 20 .
- control unit 210 is configured to, based on the sensed image data, determine a pose for a controller 114 .
- the artificial reality system can detect a pattern of the emitters 208 of controller 14 within the image data and use the pattern to determine a pose of the controller 114 .
- the controller 114 is not trackable within the field of view of the image capture devices 138 or occluded within the fields of view 130 A, 130 B, the artificial reality system can use measurements obtained from the controller 114 along with motion models specific to particular cases to determine the pose of the controller 114 , as further described below.
- the controller 114 may be determined to be not trackable within the image data if fewer than three emitters of the controller 114 are detectable in the image data.
- the control unit 210 can render virtual objects and other artificial reality content based on the determination of the estimated pose of the controller 114 .
- FIG. 3 is a block diagram showing an example in which pose tracking for a hand-held controller is performed by an example instance of artificial reality system 10 , 20 of FIGS. 1A, 1B .
- HMD 112 performs pose tracking and rendering for HMD 112 and controllers 114 in accordance with the techniques described herein based on sensed data, such as motion data and image data received from HMD 112 and/or controllers 114 .
- HMD 112 includes one or more processors 302 and memory 304 that, in some examples, provide a computer platform for executing an operating system 305 , which may be an embedded, real-time multitasking operating system, for instance, or other type of operating system.
- operating system 305 provides a multitasking operating environment for executing one or more software components 317 .
- Processors 302 are coupled to one or more I/O interfaces 315 , which provide I/O interfaces for communicating with controller 114 via similar I/O interfaces 319 and other devices such as a keyboard, game controllers, display devices, image capture devices, other HMDs, and the like.
- the one or more I/O interfaces 315 , 319 may include one or more wired or wireless network interface controllers (NICs) for communicating with a network, such as network 104 .
- NICs network interface controllers
- processor(s) 302 are coupled to electronic display 203 , motion sensors 206 , and image capture devices 138 .
- processors 302 and memory 304 may be separate, discrete components.
- memory 304 may be on-chip memory collocated with processors 302 within a single integrated circuit.
- Software applications 317 of HMD 112 operate to provide an overall artificial reality application.
- software applications 317 include application engine 340 , rendering engine 322 , and pose tracker 326 .
- application engine 340 includes functionality to provide and present an artificial reality application, e.g., a teleconference application, a gaming application, a navigation application, an educational application, training or simulation applications, and the like.
- Application engine 340 may include, for example, one or more software packages, software libraries, hardware drivers, and/or Application Programming Interfaces (APIs) for implementing an artificial reality application on HMD 112 .
- APIs Application Programming Interfaces
- rendering engine 322 Responsive to control by application engine 340 , renders 3D artificial reality content for display to the user by application engine 340 of HMD 112 .
- Application engine 340 and rendering engine 322 construct the artificial content for display to user 110 in accordance with current pose information for controller 114 and HMD 112 within a frame of reference, typically a viewing perspective of HMD 112 , as determined by pose tracker 326 . Based on the current viewing perspective, rendering engine 322 constructs the 3D, artificial reality content which may in some cases be overlaid, at least in part, upon the real-world 3D environment of user 110 .
- pose tracker 326 operates on sensed data received from HMD 112 and controller measurement data received from controller 114 , such as movement information and user commands, and, in some examples, data from any external sensors 90 ( FIGS.
- pose tracker 326 determines a current pose for the HMD 112 and controller 114 within the frame of reference of HMD 112 and, in accordance with the current poses, constructs the artificial reality content for display to user 110 .
- Pose tracker 326 includes an FOV tracker 342 and a non-FOV tracker 344 .
- FOV tracker 342 operates on image data obtained via image capture devices 138 and controller 114 measurement data to determine image-based controller state data that can be used to compute an estimated pose for the controller 114 when the controller 114 is trackable with the field of view of image capture devices 138 .
- a controller 114 can be considered trackable within the field of view when the controller 114 is within the field of view, is not occluded by other objects, and is not at rest.
- Non-FOV tracker 342 operates on measurements obtained from the controller 114 and HMD 112 to determine a pose for controller 114 when the controller 114 is not trackable within the field of view of image capture devices 138 and the measurements and other available data meet activation conditions for particular cases of controller 114 and/or HMD 112 positioning.
- pose tracker 326 Further details on the operation of pose tracker 326 , FOV tracker 342 and non-FOV tracker 344 are provided below with respect to FIGS. 5-11 .
- Controller 114 can be a hand-held controller that provides for user interaction with artificial reality system 10 , 20 .
- controller 114 includes emitters 208 , motion sensors 306 , and I/O interface 319 .
- Emitters 208 can emit and/or reflect light within the visible or non-visible spectrum.
- emitters 208 can emit light in the IR spectrum.
- Motion sensors 206 can include sensors such as one or more accelerometers (also referred to as inertial measurement units or “IMUs”) that output data indicative of current acceleration of controller 114 , GPS sensors that output data indicative of a location of controller 114 , radar or sonar that output data indicative of distances of controller 114 from various objects, or other sensors that provide indications of a location or orientation of controller 114 or other objects within a physical environment.
- IMUs inertial measurement units
- FIG. 4 is a block diagram showing example implementations in which pose tracking for a hand-held controller is performed by example instances of console 106 and HMD 112 of artificial reality system 10 , 20 of FIGS. 1A, 1B .
- console 106 performs pose tracking and rendering for HMD 112 in accordance with the techniques described herein based on sensed data, such as motion data received from a HMD 112 and/or controller 114 , and image data received from HMD 112 and/or external sensors.
- HMD 112 includes one or more processors 302 and memory 304 that, in some examples, provide a computer platform for executing an operating system 305 , which may be an embedded, real-time multitasking operating system, for instance, or other type of operating system.
- operating system 305 provides a multitasking operating environment for executing one or more software components 317 .
- processor(s) 302 are coupled to electronic display 203 , motion sensors 206 , and image capture devices 138 .
- console 106 is a computing device that processes image and tracking information received from cameras 102 ( FIG. 1B ) and/or HMD 112 , and measurement data from controller 114 to perform pose tracking, and content rendering for HMD 112 and controller 114 .
- console 106 is a single computing device, such as a workstation, a desktop computer, a laptop, or gaming system.
- console 106 such as processors 412 and/or memory 414 , may be distributed across a cloud computing system, a data center, or across a network, such as the Internet, another public or private communications network, for instance, broadband, cellular, Wi-Fi, and/or other types of communication networks for transmitting data between computing systems, servers, and computing devices.
- a cloud computing system such as processors 412 and/or memory 414
- a network such as the Internet
- another public or private communications network for instance, broadband, cellular, Wi-Fi, and/or other types of communication networks for transmitting data between computing systems, servers, and computing devices.
- console 106 includes one or more processors 412 and memory 414 that, in some examples, provide a computer platform for executing an operating system 416 , which may be an embedded, real-time multitasking operating system, for instance, or other type of operating system.
- operating system 416 provides a multitasking operating environment for executing one or more software components 417 .
- Processors 412 are coupled to one or more I/O interfaces 415 , which provide I/O interfaces for communicating with external devices, such as a keyboard, game controllers, display devices, image capture devices, HMDs, and the like.
- the one or more I/O interfaces 415 may include one or more wired or wireless network interface controllers (NICs) for communicating with a network, such as network 104 .
- NICs network interface controllers
- processors 302 , 412 may comprise any one or more of a multi-core processor, a controller, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or equivalent discrete or integrated logic circuitry.
- Memory 304 , 414 may comprise any form of memory for storing data and executable software instructions, such as random-access memory (RAM), read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), and flash memory.
- RAM random-access memory
- ROM read only memory
- PROM programmable read only memory
- EPROM erasable programmable read only memory
- EEPROM electronically erasable programmable read only memory
- Software applications 417 of console 106 operate to provide an overall artificial reality application.
- software applications 417 include application engine 420 , rendering engine 422 , and pose tracker 426 .
- application engine 420 includes functionality to provide and present an artificial reality application, e.g., a teleconference application, a gaming application, a navigation application, an educational application, training or simulation applications, and the like.
- Application engine 420 may include, for example, one or more software packages, software libraries, hardware drivers, and/or Application Program Interfaces (APIs) for implementing an artificial reality application on console 106 .
- APIs Application Program Interfaces
- rendering engine 422 Responsive to control by application engine 420 , renders 3D artificial reality content for display to the user by application engine 340 of HMD 112 .
- Application engine 420 and rendering engine 422 construct the artificial content for display to user 110 in accordance with current pose information for HMD 112 and controller 114 within a frame of reference, typically a viewing perspective of HMD 112 , as determined by pose tracker 426 . Based on the current viewing perspective, rendering engine 422 constructs the 3D, artificial reality content which may in some cases be overlaid, at least in part, upon the real-world 3D environment of user 110 .
- pose tracker 426 operates on sensed data received from HMD 112 and controller 114 , such as image data from sensors on HMD 112 , motion sensor data from controller 114 , and, in some examples, data from any external sensors 90 ( FIGS.
- pose tracker 426 determines a current pose for the HMD 112 and the controller 114 within the frame of reference of HMD 112 and, in accordance with the current poses, constructs the artificial reality content for communication, via the one or more I/O interfaces 315 , 415 , to HMD 112 for display to user 110 .
- pose tracker 426 includes an FOV tracker 442 and a non-FOV tracker 444 .
- FOV tracker 442 operates on image data obtained via image capture devices 138 or external cameras 102 to determine image-based controller state data for the controller 114 when the controller 114 is trackable with the field of view of image capture devices 138 , 102 .
- a controller 114 can be considered trackable within the field of view when the controller 114 is within the field of view, is not occluded by other objects, and is not at rest.
- Non-FOV tracker 442 operates on measurements obtained from the controller 114 and HMD 112 to determine model-based controller state data for controller 114 when the controller 114 is not trackable within the field of view of image capture devices 138 , 102 and the measurements and other available date meet activation conditions for particular cases of controller 114 and/or HMD 112 positioning.
- pose tracker 426 Further details on the operation of pose tracker 426 , FOV tracker 442 and non-FOV tracker 444 are provided below with respect to FIGS. 5-11 .
- FIG. 5 is a block diagram showing components of an example non-FOV tracker 344 (and 444 ) in accordance with aspects of the disclosure.
- non-FOV tracker 344 includes a plurality of behaviors 502 A-N (referred to generically as a behavior 502 ) that correspond to operations performed by the non-FOV tracker 344 in response to determining that the controller 114 is not trackable within the field of view of a camera 138 and that available data indicates that the state of controller 114 may meet one or more activation conditions associated with tracking corner cases.
- behaviors 502 A-N referred to generically as a behavior 502
- corner cases examples include the controller 114 being at rest; the position of the controller is unreliable, out of the field of view and in proximity to the HMD; in the field of view but occluded by another object and attached to the other object; in the field of view but occluded by another object and not attached to the other object.
- the occluding object can be a second hand-held controller.
- Other corner cases are possible and within the scope of the inventive subject matter.
- the non-FOV tracker 344 can receive as input controller measurements 510 obtained from controller 114 .
- the controller measurements 510 can include values from motion sensors 206 in controller 114 .
- the controller measurements can include linear and angular acceleration, linear and angular velocity, and other motion related data received from controller 114 or derived from data received from controller 114 .
- Input controller measurements 510 may also include non-image-based controller measurements generated by HMD 112 , such as distance measurements obtained using radar tracking or near-field communication distance tracking.
- non-FOV tracker 344 can receive HMD state data 512 obtained from HMD 112 .
- the HMD state data can include the current pose of HMD 112 , and can be used to determine a location relationship between HMD 112 and controller 114 .
- Each behavior 502 can have one or more activation conditions and one or more deactivation conditions associated with the behavior 502 .
- the activation conditions can include rules, logic, heuristics, and/or parameter values that can be applied to the controller measurements 510 and HMD state 512 to determine if a tracking corner case associated with a behavior currently exists. If the activation conditions are satisfied, a motion model 506 associated with the satisfied activation conditions for behavior 502 and a motion model 506 associated with the activation conditions are activated.
- the one or more deactivation conditions associated with a behavior 502 can include rules, logic, heuristics and/or parameter values that can be applied to the controller measurements 510 and HMD state 512 to determine if the corner case associated with a behavior no longer exists. If the deactivation conditions associated with a behavior 502 are satisfied, the behavior 502 and a motion model 506 associated with the behavior 502 are deactivated.
- the behavior and associated motion model remain in an activated state until the deactivation conditions for the behavior and associated motion model have been satisfied.
- the deactivation conditions can be optional and a behavior and its associated motion model are activated for as long as the activation conditions remain satisfied, and deactivated when the activation conditions are no longer satisfied.
- the non-FOV tracker 344 can receive image-based controller state data 514 from FOV tracker 342 .
- the image-based controller state data 514 can be output data produced by FOV tracker 342 as a result of attempting to determine a pose for controller 114 using HMD state data 512 , controller measurement data 510 , and image data 518 from image capture devices 138 .
- Each behavior 502 can have an associated motion model 506 .
- the motion model 506 for a behavior defines how model-based controller state data 516 A-N (collectively, “model-based controller state data 516 ”) for the controller 114 is determined.
- model-based controller state data 516 For example, the motion model 506 for a behavior 502 can utilize controller measurement data 510 , HMD state data 512 , and controller state data 514 to determine model-based controller state data 516 .
- Each behavior 502 can have an associated finite state machine (FSM) 504 .
- the FSM 504 associated with a behavior 502 can keep track of state information (activated, deactivated, etc.), transitions from one state to another and other state information associated with a behavior.
- the FSM 504 for a behavior can preserve state information between display frames and can be used by the motion model 506 associated with the behavior 502 to determine model-based controller state data 516 .
- the behaviors 502 A-N are associated with a priority.
- the priority for the behaviors can be determined in various ways. For example, priority can be determined based on likelihood of occurrence of the corner case, devastation of user experience should the corner case occur, number of times the corner case is reported as a problem etc.
- the behaviors 502 A-N can be organized in a subsumption architecture.
- the behaviors 502 A-N for the corner cases are organized in respective layers that prioritize each behavior.
- the bottom layer, behavior 502 N is the highest priority behavior.
- Behavior 502 A at the top layer is the lowest priority behavior.
- Candidate versions of the model-based controller state data 516 can be determined by motion models 506 associated with each activated behavior.
- Candidate model-based controller state data 516 determined according to motion models 506 of higher (lower-priority) layers can be ignored, blocked or replaced by the candidate model-based controller state data 516 determined by a lower (higher-priority) layer behavior 502 in the subsumption architecture.
- the activated behaviors 502 can be evaluated in parallel with one another.
- Each activated behavior 502 can determine a candidate version of the model-based controller state data 516 based on its associated motion model 506 and input controller measurement data 510 , HMD state data 512 , and image-based controller state data 514 .
- the candidate version of the model-based controller state data 516 determined by the motion model 506 in the layer having the highest priority among the activated behaviors 502 can be used as the final version of the controller state data 520 output by non-FOV tracker 344 .
- the non-FOV tracker 344 acts as a pass-through, and the image-based controller state data 514 determined by the FOV tracker 342 and provided to non-FOV tracker 344 as input is used as the output controller state data 520 of non-FOV tracker 344 .
- the controller state data 520 will be determined based on the motion model 506 associated with the highest-priority activated behavior. If no behaviors are activated, the controller state data 520 will be based on the image-based controller state data 514 .
- the controller state data 520 output by the non-FOV tracker 344 can be used by pose tracker 326 to determine a controller pose for controller 114 .
- a motion model 506 for a behavior 502 may utilize information other than that available from controller measurement data 510 , HMD state data 512 , and controller state data 514 .
- Configuration data 522 can store and provide such data.
- some motion models may use an average length of an arm or average position of a torso with respect to a head in order to determine position data for model-based controller state data 516 .
- the average length of an arm or average position of a torso with respect to a head can be stored in configuration data 516 for used by a motion model 506 .
- FIG. 6 is a flowchart 600 illustrating example operations of a method for determining a controller pose for a hand-held controller that is not trackable, in some cases, in a field of view in accordance with aspects of the disclosure.
- the example operations described in flowchart 600 can be performed periodically or in response to an event.
- the example operations can be performed as part of a response to a display frame generation event where the event causes an artificial reality system to render a display frame for presentation on HMD 112 .
- An FOV tracker can receive image data from one or more image capture devices 138 of an HMD 112 and controller measurement data from a controller 114 ( 602 ). Additionally, the image data can include image data provided by cameras or sensors external to the HMD 112 . The FOV tracker can determine image-based controller state data using the image data and the controller measurement data ( 604 ).
- the FOV tracker can determine if the controller 114 is trackable within the image data ( 606 ). In some aspects, the FOV tracker can determine that the controller 114 is trackable within the image data if at least three emitters 208 of controller 114 are detectable with the image data and the controller measurement data indicates the controller is not at rest. In some aspects, the FOV tracker can use sensor fusion to determine if the controller 114 is trackable within the image data.
- the controller pose can be determined based on the image-based controller state data as determined by the FOV tracker ( 610 ). If the FOV tracker determines that the controller 114 is not trackable within the image data (NO branch of 606 ), the non-FOV tracker determines if any non-FOV behaviors have been activated, or if non-FOV activation conditions have been satisfied for a behavior ( 608 ). The non-FOV tracker can determine if any behavior activation conditions have been satisfied based on the controller measurement data, the HMD state data, and/or the image-based controller state data. If no activation conditions have been satisfied and no behaviors are currently activated (NO branch of 608 ), then the controller pose can be determined based on the image-based controller state data as determined by the FOV tracker ( 610 ).
- the non-FOV tracker can determine candidate model-based controller state data by evaluating the motion models associated with each behavior that is activated ( 612 ).
- the motion models can access the input controller measurement data, HMD state data, and image-based controller state values as needed to determine the candidate model-based controller state data associated with a behavior.
- the controller pose can then be determined based on the candidate model-based controller state data produced by the motion model associated with the highest priority behavior ( 614 ).
- the pose tracker can determine the controller pose based on the image-based controller state data determined by the FOV tracker if the controller is trackable in the image data or if no motion models are activated.
- the pose tracker can determine the controller pose based on the model-based controller state data determined by the non-FOV tracker if the controller is not trackable in the image data (to determine a controller pose) and a motion model has been activated.
- the rendering engine can render artificial reality content based on the determined controller pose and HMD pose ( 616 ).
- FIGS. 7-10 are flowcharts illustrating operations of example methods for activating behaviors and evaluating motion models associated with the activated behaviors in accordance with aspects of the disclosure.
- FIG. 7 is a flowchart illustrating example operations of a method for determining a controller pose in the corner case that the controller is near the HMD, but not attached to the HMD.
- An activation condition for this case includes determining that the controller is not trackable in the field of view of image capture devices of an AR system (NO branch of 704 ). As discussed above, in some aspects, the controller is not trackable in the field of view if the controller is not located in the field of view of any cameras or sensors, if the controller is occluded within the field of view by another object, if the position of the controller is unreliable, or if the controller is at rest.
- the distance between the controller and the HMD is less than a predefined or configurable threshold (NO branch of 706 ). If both activation conditions are met, the behavior and motion model associated with the corner case are activated. If the controller is trackable within the field of view of image capture devices of AR system (YES branch of 704 ) or the distance between the HMD and the controller is greater than the configurable threshold (YES branch of 706 ), then the activation conditions for this corner case are not satisfied and the method ends.
- the motion model associated with the corner case behavior sets position values in the candidate model-based controller state data for the behavior to cause a virtual hand or other object associated with controller to pivot about a position of a virtual elbow ( 708 ).
- the position of the virtual elbow in the virtual world space can be determined based a pre-defined or configurable forearm length stored in the configuration data and the last known controller position and headset position.
- the motion model in this case can be referred to as a “controller-on-a-stick” model, where the stick is a virtual arm representing the user's arm, the virtual elbow is at one end of the stick and a virtual hand associated with the position of the controller is at the other end of the stick.
- deactivation conditions for the corner case can include reacquiring tracking on the controller when the controller becomes trackable within the field of view.
- FIGS. 12A and 12B illustrate an example physical environment for the corner case described above with reference to FIG. 7 .
- FIG. 12A is a front view of a user wearing an HMD 112 and holding a controller 114 in hand 132 within threshold distance 1202 of HMD 112 .
- FIG. 12 B is a side view of the user. As can be seen in FIG. 12B , the controller 114 is not within the field of view 130 of cameras on HMD 112 .
- the user may be waving their arm to greet or attract the attention of another user in the same virtual environment.
- a virtual hand and arm may be rendered so as to appear to wave based on the motion model. The waving motion can be rendered by having the virtual hand pivot about the elbow.
- FIG. 8 is a flowchart illustrating example operations of a method for determining a controller pose in the corner case that a first controller is within the field of view, but obstructed by a second controller, and the first controller is not “attached” to the second controller.
- An activation condition for this case includes determining that the first controller not within the field of view (NO branch of 804 ).
- a further activation condition for the corner case is that the distance between the first controller and the second controller is less than a predefined or configurable threshold (YES branch of 806 ).
- a still further activation condition is that the first controller's acceleration values (as determined from controller measurement data) are not in synchronization with the second controller's acceleration values (YES branch of 808 ).
- the motion model and behavior associated with the corner case is activated. If the controller is trackable within the field of view of image capture devices of AR system (YES branch of 804 ), the distance between the first and second controller is greater than the configurable threshold (NO branch of 806 ), or the first controller's acceleration values are in synchronization with the second controller's acceleration values (NO branch of 808 ), then the activation conditions for this corner case are not satisfied and the method ends.
- the motion model associated with the corner case behavior fixes position values in the candidate model-based controller state data for the first controller to a position of a virtual torso of the user ( 810 ).
- the position of the virtual torso can be determined based on configuration data that provides an average distance between a torso and an HMD, HMD poses, and controller orientation.
- deactivation conditions for the corner case can include the visible (second) controller leaving the camera or sensor field of view, or the obstructed (first) controller becoming trackable within the field of view.
- FIGS. 13A and 13B illustrate an example physical environment and example artificial reality content for the corner case described above with reference to FIG. 8 .
- FIG. 13A is a front view of a user wearing an HMD 112 and holding a controller 114 A in hand 132 A and a controller 114 B in hand 132 B. Controller 114 B is occluded by the hand 132 A and/or controller 114 A.
- the user may be interacting with a menu on a virtual wrist watch 1302 . As the user moves his or her hands to manipulate the menu, the first and second controllers 114 A and 114 B experience different acceleration values and are thus not attached to one another.
- FIG. 13B illustrates example artificial reality content 122 for the example illustrated in FIG. 13A .
- the motion model for this corner case behavior causes the virtual hand 1324 B to be rendered at a fixed distance from a virtual torso 1304 when controller 114 B is occluded and not moving in synchronization with controller 114 A.
- FIG. 9 is a flowchart illustrating example operations of a method for determining a controller pose in the tracking corner case that a first controller is within the field of view, but obstructed by a second controller and is attached to the second controller.
- An activation condition for this case includes determining that the first controller is not trackable in the field of view (NO branch of 904 ).
- a further activation condition for the corner case is that the distance between the first controller and the second controller is less than a predefined or configurable threshold (YES branch of 906 ).
- a still further activation condition is that the first controller's acceleration values (as determined from controller measurement data) are in synchronization with the second controller's acceleration values (YES branch of 908 ).
- the motion model and behavior for the corner case are activated. If the controller is trackable within the field of view of image capture devices of AR system (YES branch of 904 ), the distance between the first and second controller is greater than the configurable threshold (NO branch of 906 ), or the first controller's acceleration values are not in synchronization with the second controller's acceleration values (NO branch of 908 ), then the activation conditions for this corner case are not satisfied and the method ends.
- the motion model associated with the corner case behavior sets the position values in the candidate model-based controller state data for the first controller to a fixed position with respect to the position of the second controller ( 910 ).
- deactivation conditions for the corner case can include the visible (second) controller leaving the camera or sensor field of view, or the obstructed (first) controller becoming trackable within the field of view, or the first and second controllers' acceleration values are no longer in synchronization.
- FIGS. 14A and 14B illustrate an example physical environment and example artificial reality content for the corner case described above with reference to FIG. 9 .
- FIG. 14A is a side view of a user wearing an HMD 112 and holding a controller 114 A in hand 132 A and a controller 114 B in hand 132 B. Controller 114 B may be occluded by the hand 132 A and/or controller 114 A.
- the artificial reality content may comprise a shooting game where a user shoots a virtual gun at a target using a two handed grip. As the user moves his or her hands to aim, the first and second controllers 114 A and 114 B generate substantially the same acceleration values because the user's hands are both gripping the same object (i.e., the gun) and are thus determined to be attached to one another.
- FIG. 14B illustrates example artificial reality content 122 for the example illustrated in FIG. 14A .
- the user has aimed a virtual gun 1402 at a virtual target 1404 .
- the motion model for this corner case behavior causes the virtual hand 1424 A to be rendered at a fixed position with respect to the position of virtual hand 1424 B.
- FIG. 10 is a flowchart illustrating example operations of a method for determining a controller pose in the corner case that a position of the controller is unreliable or at rest in the field of view.
- a controller's position may become unreliable if the controller is positioned too far from the cameras to allow determination of the position with reasonable confidence. Additionally, a controller's position may become unreliable if the controller is at rest (e.g., placed on a tabletop or other stationary position). In this case, noise from the motion sensor devices may cause the controller to appear to move when it in fact should be stationary.
- An activation condition for this case includes determining that the absolute values of a most recent set of acceleration values from a motion sensor of the controller are less than a predefined or configurable threshold (YES branch of 1004 ).
- a further activation condition for the corner case is that the variance of a buffered set of motion sensor values is less than a predefined or configurable threshold (YES branch of 1006 ). If both of the above activation conditions are met, the motion model and behavior for the “controller at rest” corner case are activated.
- the motion model associated with the corner case behavior anchors position values in the candidate model-based controller state data for the controller to a fixed position in a world reference frame ( 1008 ).
- deactivation conditions for the corner case can include the variance of buffered motion sensor samples exceeding a predetermined or configurable threshold, or the absolute value of most-recent motion sensor value sample exceeding a predetermined or configurable threshold.
- FIG. 11 is a flowchart illustrating example operations of a method for reducing jitter when a hand-held controller reenters a field of view in accordance with aspects of the disclosure.
- a pose tracker can determine whether a controller was trackable within a field of view during the previous display frame ( 1104 ). If the controller was trackable during the previous display frame (YES branch of 1104 ), the controller has not reentered the field of view. Jitter reduction operations are therefore not necessary, and the method ends.
- the pose tracker can determine whether the controller is trackable in the field of view for the current display frame ( 1106 ). If the controller was not trackable in the previous frame and the controller is not trackable in the current display frame, jitter reduction is not necessary, and the method ends (NO branch of 1106 ). If the controller was not trackable in the previous display frame and is trackable in the current display frame, the controller has reentered the field of view (YES branch of 1106 ). The pose tracker can determine controller poses for a series of display frames using interpolation to prevent a virtual object whose position is determined with respect to the controller from appearing to “jump” position ( 1108 ).
- the pose tracker can determine controller poses by interpolating between a position of the controller determined by the non-FOV tracker when the controller was outside of the field of view and a position of the controller determined by the FOV tracker when the controller reenters the field of view.
- FIGS. 15A and 15B illustrate an example of the interpolation performed by the method of FIG. 11 .
- FIG. 15A illustrates an initial state of a physical environment where a first controller 114 A is not in the field of view 130 of cameras or sensors of HMD 112 .
- the user of HMD 112 may be participating in a virtual boxing game provided on the artificial reality system.
- FIG. 15B illustrates a subsequent state of the physical environment where the first controller 114 A has reentered the field of view 130 of HMD 112 .
- the user may perform a “punch” with the hand holding controller 114 .
- the non-FOV tracker has determined the position of the controller 114 A at P 1 and the FOV tracker determines the position of the controller 114 A at P 2 .
- the path of a virtual hand representing hand 132 A may appear to jump from P 1 to P 2 before proceeding to P 3 in subsequent display frames.
- the pose tracker can interpolate a path between P 1 and P 3 that smoothes the transition of the virtual hand from out of the field of view 130 to within the field of view 130 over a series of display frames.
- the uninterpolated path is represented by a solid line connecting points P 1 , P 2 and P 3 .
- the interpolated path is represented by a dashed line connecting P 1 and P 3 .
- the interpolation speed and duration can be determined based on a measurement or estimation of activity within the artificial reality content.
- processors including one or more microprocessors, DSPs, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuitry, as well as any combinations of such components.
- processors including one or more microprocessors, DSPs, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuitry, as well as any combinations of such components.
- ASICs application specific integrated circuits
- FPGAs field programmable gate arrays
- a control unit comprising hardware may also perform one or more of the techniques of this disclosure.
- Such hardware, software, and firmware may be implemented within the same device or within separate devices to support the various operations and functions described in this disclosure.
- any of the described units, modules or components may be implemented together or separately as discrete but interoperable logic devices. Depiction of different features as modules or units is intended to highlight different functional aspects and does not necessarily imply that such modules or units must be realized by separate hardware or software components. Rather, functionality associated with one or more modules or units may be performed by separate hardware or software components or integrated within common or separate hardware or software components.
- Computer readable storage media may include random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), flash memory, a hard disk, a CD-ROM, a floppy disk, a cassette, magnetic media, optical media, or other computer readable media.
- RAM random access memory
- ROM read only memory
- PROM programmable read only memory
- EPROM erasable programmable read only memory
- EEPROM electronically erasable programmable read only memory
- flash memory a hard disk, a CD-ROM, a floppy disk, a cassette, magnetic media, optical media, or other computer readable media.
- artificial reality is a form of reality that has been adjusted in some manner before presentation to a user, which may include, e.g., a virtual reality (VR), an augmented reality (AR), a mixed reality (MR), a hybrid reality, or some combination and/or derivatives thereof.
- Artificial reality content may include completely generated content or generated content combined with captured content (e.g., real-world photographs).
- the artificial reality content may include video, audio, haptic feedback, or some combination thereof, and any of which may be presented in a single channel or in multiple channels (such as stereo video that produces a three-dimensional effect to the viewer).
- artificial reality may be associated with applications, products, accessories, services, or some combination thereof, that are, e.g., used to create content in an artificial reality and/or used in (e.g., perform activities in) an artificial reality.
- the artificial reality system that provides the artificial reality content may be implemented on various platforms, including a head mounted device (HMD) connected to a host computer system, a standalone HMD, a mobile device or computing system, or any other hardware platform capable of providing artificial reality content to one or more viewers.
- HMD head mounted device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Graphics (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Optics & Photonics (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- User Interface Of Digital Computer (AREA)
- Processing Or Creating Images (AREA)
Abstract
Description
- This disclosure generally relates to artificial reality systems, such as virtual reality, mixed reality, and/or augmented reality systems, and more particularly, to tracking controllers for artificial reality systems.
- Artificial reality systems are becoming increasingly ubiquitous with applications in many fields such as computer gaming, health and safety, industrial, and education. As a few examples, artificial reality systems are being incorporated into mobile devices, gaming consoles, personal computers, movie theaters, and theme parks. In general, artificial reality is a form of reality that has been adjusted in some manner before presentation to a user, which may include, e.g., a virtual reality (VR), an augmented reality (AR), a mixed reality (MR), a hybrid reality, or some combination and/or derivatives thereof.
- Typical artificial reality systems include one or more devices for rendering and displaying content to users. As one example, an artificial reality system may incorporate a head mounted display (HMD) worn by a user and configured to output artificial reality content to the user. The artificial reality content may include completely-generated content or generated content combined with captured content (e.g., real-world video and/or images). During operation, the user may utilize a hand-held controller to interact with applications or interact with the artificial reality system. Aspects of graphical elements within the artificial reality content may be determined based on the position and orientation of the hand-held controller.
- In general, this disclosure describes artificial reality (AR) systems and, more specifically, a controller tracking sub-system for an AR system that includes a head mounted display (HMD), one or more hand-held controllers, and sensors or cameras to determine and track the pose of the one or more hand-held controllers.
- A technical problem with conventional AR systems that use sensors or cameras to track the pose of a hand-held controller is that the hand-held controller may leave the field of view (FOV) of the sensors or cameras, or may be within the field of view but occluded by another object such as a hand or other body part of the user, a second hand-held controller, or by other objects in the physical environment. The AR system thus cannot determine an accurate pose for the hand-held controller, which can lead to user dissatisfaction and frustration with the operation of the AR system.
- As a technical solution to the aforementioned technical problem, some aspects include a controller tracking sub-system that can determine a pose for a hand-held controller based on image data provided by the sensors or cameras of an AR system when the hand-held controller is trackable within the field of view of the sensors or cameras of the AR system, and can also use other available data and motion models to determine a pose for the hand-held controller when the hand-held controller is not trackable within the field of view of the sensors or cameras, or if the hand-held controller is occluded by another object in the field of view.
- For example, the controller tracking sub-system can have two components, a FOV tracking component (also referred to as a constellation tracking component) and a non-FOV tracking component (also referred to as a “corner-case” tracking component) that applies specialized motion models when one or more of the controllers are not readily trackable within the field of view of sensors and cameras of an AR system. In particular, under typical operating conditions, the FOV tracking component receives HMD state data and controller measurement data (velocity, acceleration etc.) to compute image-based controller state data for a hand-held controller. If the hand-held controller is trackable (e.g., within the field of view, not occluded, and not at rest), the image-based controller state data is used to determine the controller pose and the non-FOV tracking component is bypassed. If the hand-held controller is not trackable within the field of view and the hand-held controller measurement data meets activation conditions for one or more tracking corner cases, the non-FOV tracking component applies one or more activated specialized motion models to compute model-based controller state data for one or more of the hand-held controllers. The model-based controller state data is then used to determine the controller pose.
- Example corner cases include: controller near the HMD and not attached to the HMD, hand-over-hand not attached, hand-over-hand attached, position of the controller is unreliable, and controller at rest. Each of the corner cases can have activation and deactivation conditions that determine whether a motion model associated with the activation conditions is evaluated. The behavior for a corner case can include a finite state machine (FSM) and a constrained motion model that can be used to determine a model-based controller state for the hand-held controllers. Behaviors for more than one corner case can be activated during a display frame generation cycle. The resulting model-based controller state data resulting from evaluation of the activated model associated with the highest priority behavior can be used to determine the pose for the hand-held controller.
- The aspects described above and further aspects described below can provide a technical improvement over conventional artificial reality system implementations, and can provide one or more practical applications, such as enabling an AR system to determine a pose for a hand-held controller in cases where the hand-held controller is not within the field of view of sensors and/or cameras of the AR system, or when a hand-held controller is occluded. The resulting controller pose can be used to provide a more accurate rendering of artificial reality content by the artificial reality system when the controller is not trackable within the field of view of the sensors and/or cameras of the AR system.
- In one or more example aspects, an artificial reality system includes an image capture device configured to capture image data representative of a physical environment; a head mounted display (HMD) configured to output artificial reality content; a pose tracker configured to determine, based at least in part on controller state data, a controller pose representing a position and orientation of a hand-held controller, the pose tracker including a non-FOV tracker having a plurality of motion models associated with different motion behaviors for the hand-held controller, each of the plurality of motion models associated with one or more respective activation conditions, wherein the non-FOV tracker is configured to determine the controller state data in accordance with one of the plurality of motion models in response to a determination that the hand-held controller is not trackable within the image data and that the one of the plurality of motion models is activated; and a rendering engine configured to render for display at the HMD the artificial reality content and at least one graphical object in accordance with the controller pose.
- In one or more further example aspects, a method includes obtaining, by an image capture device of an artificial reality system including a head mounted display (HMD), image data representative of a physical environment; determining, by a non-FOV tracker of the artificial reality system, controller state data for a hand-held controller in accordance with a motion model of a plurality of motion models associated with different motion behaviors for the hand-held controller, each of the plurality of motion models associated with one or more respective activation conditions, wherein the determining the controller state data in accordance with the motion model is in response to determining that the hand-held controller is not trackable within the image data and that controller measurement data indicative of a motion behavior for the hand-held controller satisfies the one or more activation conditions associated with the motion model; determining, by the artificial reality system, a controller pose representing a position and orientation of the hand-held controller based, at least in part, on the controller state data; and rendering, by the artificial reality system for display at the HMD, artificial reality content and at least one graphical object in accordance with the controller pose.
- In one or more additional example aspects, a non-transitory, computer-readable medium comprises instructions that, when executed, cause one or more processors of an artificial reality system to obtain image data representative of a physical environment via an image capture device; determine the controller state data for a hand-held controller in accordance with a motion model of a plurality of motion models associated with different motion behaviors for the hand-held controller, each of the plurality of motion models associated with one or more respective activation conditions, wherein the determination of the controller state data in accordance with the motion model is in response to a determination that the hand-held controller is not trackable within the image data and that controller measurement data indicative of a motion behavior for the hand-held controller satisfies the one or more activation conditions associated with the motion model; determine a controller pose representing a position and orientation of the hand-held controller based, at least in part, on the controller state data; and render for display at the HMD, artificial reality content and at least one graphical object in accordance with the controller pose.
- The details of one or more examples of the techniques of this disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the techniques will be apparent from the description and drawings, and from the claims.
-
FIG. 1A is an illustration depicting an example artificial reality system that performs pose tracking for one or more hand-held controllers that are not trackable within a field of view of image capture devices of the artificial reality system in accordance with the techniques of the disclosure. -
FIG. 1B is an illustration depicting another example artificial reality system that performs pose tracking for one or more hand-held controllers that are not trackable within a field of view of image capture devices of the artificial reality system in accordance with the techniques of the disclosure. -
FIG. 2 is an illustration depicting an example HMD that operates in accordance with the techniques of the disclosure. -
FIG. 3 is a block diagram depicting an example in which pose tracking for a hand-held controller is performed by an example instance of the HMD of the artificial reality systems ofFIGS. 1A, 1B in accordance with the techniques of the disclosure. -
FIG. 4 is a block diagram showing example implementations in which pose tracking for a hand-held controller is performed by example instances of the console and the HMD of the artificial reality systems ofFIGS. 1A, 1B . -
FIG. 5 is a block diagram showing components of an example non-FOV tracker in accordance with aspects of the disclosure. -
FIG. 6 is a flowchart illustrating example operations of a method for determining a controller pose for a hand-held controller that is not trackable, in some cases, in a field of view in accordance with aspects of the disclosure. -
FIGS. 7-10 are flowcharts illustrating example operations of methods for activating behaviors and evaluating motion models associated with the activated behaviors in accordance with aspects of the disclosure. -
FIG. 11 is a flowchart illustrating example operations of a method for reducing jitter when a hand-held controller reenters a field of view in accordance with aspects of the disclosure. -
FIGS. 12A-12B, 13A-13B, 14A-14B, and 15A-15B illustrate example physical environments and example artificial reality content based on the example physical environments. - Like reference characters refer to like elements throughout the figures and description.
-
FIG. 1A is an illustration depicting an exampleartificial reality system 10 that performs pose tracking for one or more hand-heldcontrollers 114 that are not trackable within a field of view of image capture devices of an artificial reality system in accordance with the techniques of the disclosure. In some example implementations,artificial reality system 10 generates and renders graphical elements to auser 110 based on one or more detected poses of one or more hand-heldcontrollers 114 operated byuser 110. That is, as described herein,artificial reality system 10 presents one or moregraphical elements controller 114 operated byuser 110, such as particular motions, configurations, positions, and/or orientations of thecontroller 114. - In the example of
FIG. 1A ,artificial reality system 10 includes head mounted device (HMD) 112. As shown, HMD 112 is typically worn byuser 110 and includes an electronic display and optical assembly for presentingartificial reality content 122 touser 110. In addition, HMD 112 includes one or more motion sensors (e.g., accelerometers) for tracking motion of the HMD 112 and may include one or moreimage capture devices 138, e.g., cameras, infrared (IR) detectors, Doppler radar, line scanners and the like, for capturing image data of the surrounding physical environment. - In some example implementations HMD 112 operates as a stand-alone, mobile artificial reality system. In other implementations, an
artificial reality system 10 can optionally include aconsole 106 and/or one or moreexternal sensors 90 in addition to, or instead of HMD 112. In the example illustrated inFIG. 1A ,console 106 is shown as a single computing device, such as a gaming console, workstation, a desktop computer, or a laptop. In other examples,console 106 may be distributed across a plurality of computing devices, such as a distributed computing network, a data center, or a cloud computing system.Console 106, HMD 112, andsensors 90 may, as shown in this example, be communicatively coupled vianetwork 104, which may be a wired or wireless network, such as WiFi, a mesh network or a short-range wireless communication medium. - In general,
artificial reality system 10 uses information captured from a real-world, 3D physical environment to renderartificial reality content 122 for display touser 110. In the example ofFIG. 1A ,user 110 views theartificial reality content 122 constructed and rendered by an artificial reality application executing onHMD 112 and/orconsole 106. As one example,artificial reality content 122 may be a consumer gaming application in whichuser 110 is rendered asavatar 120 with one or morevirtual objects artificial reality content 122 may comprise a mixture of real-world imagery and virtual objects, e.g., mixed reality and/or augmented reality. In other examples,artificial reality content 122 may be, e.g., a video conferencing application, a navigation application, an educational application, training or simulation applications, or other types of applications that implement artificial reality. - During operation, the artificial reality application constructs
artificial reality content 122 for display touser 110 by tracking and computing pose information for a frame of reference, typically a viewing perspective ofHMD 112. UsingHMD 112 as a frame of reference, and based on a current field ofview 130 as determined by current estimated pose ofHMD 112 and current estimated poses for one ormore controllers 114, the artificial reality application renders 3D artificial reality content which, in some examples, may be overlaid, at least in part, upon the real-world, 3D physical environment ofuser 110. During this process, the artificial reality application uses sensed data received fromHMD 112 and the one ormore controllers 114, such as movement information and user commands, and, in some examples, data from anyexternal sensors 90, such as external cameras, to capture 3D information within the real world, physical environment, such as motion byuser 110 and/or motion of the one ormore controllers 114. Based on the sensed data, the artificial reality application determines a current pose for the frame of reference ofHMD 112, a current pose for the one ormore controllers 114 and, in accordance with the current poses of theHMD 112 andcontrollers 114, renders theartificial reality content 122. In accordance with the techniques of this disclosure, theartificial reality system 10 can determine a pose for the one ormore controllers 114 based on data from sensors or cameras of anartificial reality system 10 when the one ormore controllers 114 are trackable within the field of view of the sensors or cameras, andartificial reality system 10 can use motion models and available controller measurement data when the one ormore controllers 114 are not trackable within the field of view of the sensors or cameras. - More specifically, as further described herein,
image capture devices 138 ofHMD 112 capture image data representative of objects in the real world, physical environment that are within a field ofview 130 ofimage capture devices 138. These objects can include the one ormore controllers 114. Field ofview 130 typically corresponds with the viewing perspective ofHMD 112. In some examples, such as the illustrated example ofFIG. 1A , the artificial reality application renders the portions ofhand 132 ofuser 110 that are within field ofview 130 as avirtual hand 136 withinartificial reality content 122. Thevirtual hand 136 can be rendered in accordance with a pose of acontroller 114 held inhand 132. Further, the artificial reality application can render virtual objects such asvirtual sword 126 based on a pose of the one ormore controllers 114. - Accordingly, the techniques of the disclosure provide specific technical improvements to the computer-related field of rendering and displaying content by an artificial reality system. For example, artificial reality systems as described herein may provide a high-quality artificial reality experience to a user, such as
user 110, of the artificial reality application by generating and rendering graphical elements overlaid on the artificial reality content based on poses determined for acontroller 114, regardless of whether or not thecontroller 114 is trackable within the field of view of sensors and/or cameras of theartificial reality system 10. -
FIG. 1B is an illustration depicting another exampleartificial reality system 20 that performs pose tracking for one or more hand-held controllers that are not trackable within a field of view of image capture devices of theartificial reality system 20 in accordance with the techniques of the disclosure. Similar toartificial reality system 10 ofFIG. 1A , in some examples,artificial reality system 20 ofFIG. 1B may present and control graphical elements for user interaction and manipulation within an artificial reality environment based on poses determined for one ormore controllers 114. - In the example of
FIG. 1B ,artificial reality system 20 includesexternal cameras HMDs 112A-112C (collectively, “HMDs 112”),controllers controllers 114”),console 106, andsensors 90. As shown inFIG. 1B ,artificial reality system 20 represents a multi-user environment in which an artificial reality application executing onHMDs 112 and/orconsole 106 presents artificial reality content to each ofusers 110A-110C (collectively, “users 110”) based on a current viewing perspective of a corresponding frame of reference for the respective user. That is, in this example, the artificial reality application constructs artificial content by tracking and computing pose information for a frame of reference for each ofHMDs 112 andrespective controllers 114.Artificial reality system 20 uses data received from cameras 102,HMDs 112, andcontrollers 114 to capture 3D information within the real world environment, such as motion byusers 110 and/or tracking information with respect tocontrollers 114 for use in computing updated pose information for thecontrollers 114 within a corresponding frame of reference ofHMDs 112. As one example, the artificial reality application may render, based on a current viewing perspective determined forHMD 112C,artificial reality content 122 havingvirtual objects 128A-128C (collectively, “virtual objects 128”) as spatially overlaid upon real world objects 108A-108C (collectively, “real world objects 108”). Further, from the perspective ofHMD 112C,artificial reality system 20 rendersavatars users artificial reality system 20 can render graphical objects based on the poses of thecontrollers 114 as determined by theartificial reality system 20. - Each of
HMDs 112 concurrently operates withinartificial reality system 20. In the example ofFIG. 1B , each ofusers 110 may be a “player” or “participant” in the artificial reality application, and any ofusers 110 may be a “spectator” or “observer” in the artificial reality application.HMD 112C may operate substantially similar toHMD 112 ofFIG. 1A by trackingcontroller 114C held byhand 132C ofuser 110C, and rendering thehand 132C asvirtual hand 136 withinartificial reality content 122 when acontroller 114C held byhand 132C is within field ofview 130.HMD 112C may also render virtual objects such assword 126 based on a determined pose ofcontroller 114C whencontroller 114C is in the field ofview 130.Controller 114C may be in communication withHMD 112C using near-field communication of short-range wireless communication such as Bluetooth, using wired communication links, or using other types of communication links. -
HMD 112A andHMD 112B may also operate substantially similar toHMD 112 ofFIG. 1A .HMD 112B may receive user inputs fromcontrollers 114A and 144B held byuser 110B. - As shown in
FIG. 1B , in addition to or alternatively to image data captured viacamera 138 ofHMD 112C, input data from external cameras 102 may be used to track and detect particular motions, configurations, positions, and/or orientations ofcontrollers 114. -
FIG. 2 is an illustration depicting anexample HMD 112 andcontroller 114 configured to operate in accordance with the techniques of the disclosure.HMD 112 ofFIG. 2 may be an example of any ofHMDs 112 ofFIGS. 1A and 1B .HMD 112 may operate as a stand-alone, mobile artificial realty system configured to implement the techniques described herein or may be part of an artificial reality system, such asartificial reality systems FIGS. 1A, 1B . - In this example,
HMD 112 includes a front rigid body and a band to secureHMD 112 to a user. In addition,HMD 112 includes an interior-facingelectronic display 203 configured to present artificial reality content to the user.Electronic display 203 may be any suitable display technology, such as liquid crystal displays (LCD), quantum dot display, dot matrix displays, light emitting diode (LED) displays, organic light-emitting diode (OLED) displays, cathode ray tube (CRT) displays, e-ink, or monochrome, color, or any other type of display capable of generating visual output. In some examples, the electronic display is a stereoscopic display for providing separate images to each eye of the user. In some examples, the known orientation and position ofdisplay 203 relative to the front rigid body ofHMD 112 is used as a frame of reference, also referred to as a local origin, when tracking the position and orientation ofHMD 112 for rendering artificial reality content according to a current viewing perspective ofHMD 112 and the user. The frame of reference may also be used in tracking the position and orientation ofcontroller 114 with respect to theHMD 112. In other examples,HMD 112 may take the form of other wearable head mounted displays, such as glasses or goggles. - As further shown in
FIG. 2 , in this example,HMD 112 further includes one ormore motion sensors 206, such as one or more accelerometers (also referred to as inertial measurement units or “IMUs”) that output data indicative of current acceleration ofHMD 112, GPS sensors that output data indicative of a location ofHMD 112, radar or sonar that output data indicative of distances ofHMD 112 from various objects, or other sensors that provide indications of a location or orientation ofHMD 112 or other objects within a physical environment. Moreover,HMD 112 may include integratedimage capture devices image capture devices 138”), such as video cameras, still cameras, IR scanners, UV scanners, laser scanners, Doppler radar scanners, depth scanners, or the like, configured to output image data representative of the physical environment. In some aspects, theimage capture devices 138 can capture image data from a visible spectrum and an invisible spectrum of the electromagnetic spectrum (e.g., IR light). Theimage capture devices 138 may include one or more image capture devices that capture image data from the visible spectrum and one or more separate image capture devices that capture image data from the invisible spectrum, or these may be combined in the same one or more image capture devices. More specifically,image capture devices 138 capture image data representative of objects in the physical environment that are within a field ofview image capture devices 138, which typically corresponds with the viewing perspective ofHMD 112.HMD 112 includes aninternal control unit 210, which may include an internal power source and one or more printed-circuit boards having one or more processors, memory, and hardware to provide an operating environment for executing programmable operations to process sensed data and present artificial reality content ondisplay 203. -
Controller 114 can be a hand-held controller for use in interacting with anartificial reality system Controller 114 can include one ormore emitters 208 that emit light in the visible or non-visible spectrum. In some example implementations, thecontroller 114 can include ten ormore emitters 208. In some aspects,emitters 208 can be IR emitters.Emitters 208 can be arranged in a pattern (also referred to as a “constellation”) that can be used byartificial reality system controller 114.Controller 114 can include user interface features such as buttons, dials etc. that can provide input for use byartificial reality system - In one example, in accordance with the techniques described herein,
control unit 210 is configured to, based on the sensed image data, determine a pose for acontroller 114. When within the field of view of theimage capture devices 138, the artificial reality system can detect a pattern of theemitters 208 of controller 14 within the image data and use the pattern to determine a pose of thecontroller 114. When thecontroller 114 is not trackable within the field of view of theimage capture devices 138 or occluded within the fields ofview controller 114 along with motion models specific to particular cases to determine the pose of thecontroller 114, as further described below. For example, thecontroller 114 may be determined to be not trackable within the image data if fewer than three emitters of thecontroller 114 are detectable in the image data. Thecontrol unit 210 can render virtual objects and other artificial reality content based on the determination of the estimated pose of thecontroller 114. -
FIG. 3 is a block diagram showing an example in which pose tracking for a hand-held controller is performed by an example instance ofartificial reality system FIGS. 1A, 1B . In the example ofFIG. 3 ,HMD 112 performs pose tracking and rendering forHMD 112 andcontrollers 114 in accordance with the techniques described herein based on sensed data, such as motion data and image data received fromHMD 112 and/orcontrollers 114. - In this example,
HMD 112 includes one ormore processors 302 andmemory 304 that, in some examples, provide a computer platform for executing anoperating system 305, which may be an embedded, real-time multitasking operating system, for instance, or other type of operating system. In turn,operating system 305 provides a multitasking operating environment for executing one ormore software components 317.Processors 302 are coupled to one or more I/O interfaces 315, which provide I/O interfaces for communicating withcontroller 114 via similar I/O interfaces 319 and other devices such as a keyboard, game controllers, display devices, image capture devices, other HMDs, and the like. Moreover, the one or more I/O interfaces 315, 319 may include one or more wired or wireless network interface controllers (NICs) for communicating with a network, such asnetwork 104. Additionally, processor(s) 302 are coupled toelectronic display 203,motion sensors 206, andimage capture devices 138. In some examples,processors 302 andmemory 304 may be separate, discrete components. In other examples,memory 304 may be on-chip memory collocated withprocessors 302 within a single integrated circuit. -
Software applications 317 ofHMD 112 operate to provide an overall artificial reality application. In this example,software applications 317 includeapplication engine 340,rendering engine 322, and posetracker 326. - In general,
application engine 340 includes functionality to provide and present an artificial reality application, e.g., a teleconference application, a gaming application, a navigation application, an educational application, training or simulation applications, and the like.Application engine 340 may include, for example, one or more software packages, software libraries, hardware drivers, and/or Application Programming Interfaces (APIs) for implementing an artificial reality application onHMD 112. Responsive to control byapplication engine 340,rendering engine 322 generates 3D artificial reality content for display to the user byapplication engine 340 ofHMD 112. -
Application engine 340 andrendering engine 322 construct the artificial content for display touser 110 in accordance with current pose information forcontroller 114 andHMD 112 within a frame of reference, typically a viewing perspective ofHMD 112, as determined bypose tracker 326. Based on the current viewing perspective,rendering engine 322 constructs the 3D, artificial reality content which may in some cases be overlaid, at least in part, upon the real-world 3D environment ofuser 110. During this process, posetracker 326 operates on sensed data received fromHMD 112 and controller measurement data received fromcontroller 114, such as movement information and user commands, and, in some examples, data from any external sensors 90 (FIGS. 1A, 1B ), such as external cameras, to capture 3D information within the real world environment, such as motion byuser 110, position and location ofcontroller 114, and/or feature tracking information with respect touser 110. Based on the sensed data, posetracker 326 determines a current pose for theHMD 112 andcontroller 114 within the frame of reference ofHMD 112 and, in accordance with the current poses, constructs the artificial reality content for display touser 110. - Pose
tracker 326 includes anFOV tracker 342 and anon-FOV tracker 344.FOV tracker 342 operates on image data obtained viaimage capture devices 138 andcontroller 114 measurement data to determine image-based controller state data that can be used to compute an estimated pose for thecontroller 114 when thecontroller 114 is trackable with the field of view ofimage capture devices 138. Acontroller 114 can be considered trackable within the field of view when thecontroller 114 is within the field of view, is not occluded by other objects, and is not at rest. -
Non-FOV tracker 342 operates on measurements obtained from thecontroller 114 andHMD 112 to determine a pose forcontroller 114 when thecontroller 114 is not trackable within the field of view ofimage capture devices 138 and the measurements and other available data meet activation conditions for particular cases ofcontroller 114 and/orHMD 112 positioning. - Further details on the operation of
pose tracker 326,FOV tracker 342 andnon-FOV tracker 344 are provided below with respect toFIGS. 5-11 . -
Controller 114 can be a hand-held controller that provides for user interaction withartificial reality system controller 114 includesemitters 208,motion sensors 306, and I/O interface 319.Emitters 208 can emit and/or reflect light within the visible or non-visible spectrum. For example,emitters 208 can emit light in the IR spectrum. -
Motion sensors 206, can include sensors such as one or more accelerometers (also referred to as inertial measurement units or “IMUs”) that output data indicative of current acceleration ofcontroller 114, GPS sensors that output data indicative of a location ofcontroller 114, radar or sonar that output data indicative of distances ofcontroller 114 from various objects, or other sensors that provide indications of a location or orientation ofcontroller 114 or other objects within a physical environment. -
FIG. 4 is a block diagram showing example implementations in which pose tracking for a hand-held controller is performed by example instances ofconsole 106 andHMD 112 ofartificial reality system FIGS. 1A, 1B . In the example ofFIG. 4 ,console 106 performs pose tracking and rendering forHMD 112 in accordance with the techniques described herein based on sensed data, such as motion data received from aHMD 112 and/orcontroller 114, and image data received fromHMD 112 and/or external sensors. - In this example, similar to
FIG. 3 ,HMD 112 includes one ormore processors 302 andmemory 304 that, in some examples, provide a computer platform for executing anoperating system 305, which may be an embedded, real-time multitasking operating system, for instance, or other type of operating system. In turn,operating system 305 provides a multitasking operating environment for executing one ormore software components 317. Moreover, processor(s) 302 are coupled toelectronic display 203,motion sensors 206, andimage capture devices 138. - In general,
console 106 is a computing device that processes image and tracking information received from cameras 102 (FIG. 1B ) and/orHMD 112, and measurement data fromcontroller 114 to perform pose tracking, and content rendering forHMD 112 andcontroller 114. In some examples,console 106 is a single computing device, such as a workstation, a desktop computer, a laptop, or gaming system. In some examples, at least a portion ofconsole 106, such asprocessors 412 and/ormemory 414, may be distributed across a cloud computing system, a data center, or across a network, such as the Internet, another public or private communications network, for instance, broadband, cellular, Wi-Fi, and/or other types of communication networks for transmitting data between computing systems, servers, and computing devices. - In the example of
FIG. 4 ,console 106 includes one ormore processors 412 andmemory 414 that, in some examples, provide a computer platform for executing anoperating system 416, which may be an embedded, real-time multitasking operating system, for instance, or other type of operating system. In turn,operating system 416 provides a multitasking operating environment for executing one ormore software components 417.Processors 412 are coupled to one or more I/O interfaces 415, which provide I/O interfaces for communicating with external devices, such as a keyboard, game controllers, display devices, image capture devices, HMDs, and the like. Moreover, the one or more I/O interfaces 415 may include one or more wired or wireless network interface controllers (NICs) for communicating with a network, such asnetwork 104. Each ofprocessors Memory -
Software applications 417 ofconsole 106 operate to provide an overall artificial reality application. In this example,software applications 417 includeapplication engine 420,rendering engine 422, and posetracker 426. - In general,
application engine 420 includes functionality to provide and present an artificial reality application, e.g., a teleconference application, a gaming application, a navigation application, an educational application, training or simulation applications, and the like.Application engine 420 may include, for example, one or more software packages, software libraries, hardware drivers, and/or Application Program Interfaces (APIs) for implementing an artificial reality application onconsole 106. Responsive to control byapplication engine 420,rendering engine 422 generates 3D artificial reality content for display to the user byapplication engine 340 ofHMD 112. -
Application engine 420 andrendering engine 422 construct the artificial content for display touser 110 in accordance with current pose information forHMD 112 andcontroller 114 within a frame of reference, typically a viewing perspective ofHMD 112, as determined bypose tracker 426. Based on the current viewing perspective,rendering engine 422 constructs the 3D, artificial reality content which may in some cases be overlaid, at least in part, upon the real-world 3D environment ofuser 110. During this process, posetracker 426 operates on sensed data received fromHMD 112 andcontroller 114, such as image data from sensors onHMD 112, motion sensor data fromcontroller 114, and, in some examples, data from any external sensors 90 (FIGS. 1A, 1B ), such as external cameras, to capture 3D information within the real world environment, such as motion byuser 110, motion ofcontroller 114, and/or feature tracking information with respect touser 110. Based on the sensed data, posetracker 426 determines a current pose for theHMD 112 and thecontroller 114 within the frame of reference ofHMD 112 and, in accordance with the current poses, constructs the artificial reality content for communication, via the one or more I/O interfaces 315, 415, toHMD 112 for display touser 110. - Similar to pose
tracker 326 described above with respect toFIG. 3 , posetracker 426 includes anFOV tracker 442 and anon-FOV tracker 444.FOV tracker 442 operates on image data obtained viaimage capture devices 138 or external cameras 102 to determine image-based controller state data for thecontroller 114 when thecontroller 114 is trackable with the field of view ofimage capture devices 138, 102. Acontroller 114 can be considered trackable within the field of view when thecontroller 114 is within the field of view, is not occluded by other objects, and is not at rest. -
Non-FOV tracker 442 operates on measurements obtained from thecontroller 114 andHMD 112 to determine model-based controller state data forcontroller 114 when thecontroller 114 is not trackable within the field of view ofimage capture devices 138, 102 and the measurements and other available date meet activation conditions for particular cases ofcontroller 114 and/orHMD 112 positioning. - Further details on the operation of
pose tracker 426,FOV tracker 442 andnon-FOV tracker 444 are provided below with respect toFIGS. 5-11 . -
FIG. 5 is a block diagram showing components of an example non-FOV tracker 344 (and 444) in accordance with aspects of the disclosure. In some aspects,non-FOV tracker 344 includes a plurality ofbehaviors 502A-N (referred to generically as a behavior 502) that correspond to operations performed by thenon-FOV tracker 344 in response to determining that thecontroller 114 is not trackable within the field of view of acamera 138 and that available data indicates that the state ofcontroller 114 may meet one or more activation conditions associated with tracking corner cases. Examples of such corner cases include thecontroller 114 being at rest; the position of the controller is unreliable, out of the field of view and in proximity to the HMD; in the field of view but occluded by another object and attached to the other object; in the field of view but occluded by another object and not attached to the other object. In some aspects, the occluding object can be a second hand-held controller. Other corner cases are possible and within the scope of the inventive subject matter. - The
non-FOV tracker 344 can receive asinput controller measurements 510 obtained fromcontroller 114. Thecontroller measurements 510 can include values frommotion sensors 206 incontroller 114. For example, the controller measurements can include linear and angular acceleration, linear and angular velocity, and other motion related data received fromcontroller 114 or derived from data received fromcontroller 114.Input controller measurements 510 may also include non-image-based controller measurements generated byHMD 112, such as distance measurements obtained using radar tracking or near-field communication distance tracking. - Additionally,
non-FOV tracker 344 can receiveHMD state data 512 obtained fromHMD 112. The HMD state data can include the current pose ofHMD 112, and can be used to determine a location relationship betweenHMD 112 andcontroller 114. - Each behavior 502 can have one or more activation conditions and one or more deactivation conditions associated with the behavior 502. The activation conditions can include rules, logic, heuristics, and/or parameter values that can be applied to the
controller measurements 510 andHMD state 512 to determine if a tracking corner case associated with a behavior currently exists. If the activation conditions are satisfied, a motion model 506 associated with the satisfied activation conditions for behavior 502 and a motion model 506 associated with the activation conditions are activated. - Conversely, the one or more deactivation conditions associated with a behavior 502 can include rules, logic, heuristics and/or parameter values that can be applied to the
controller measurements 510 andHMD state 512 to determine if the corner case associated with a behavior no longer exists. If the deactivation conditions associated with a behavior 502 are satisfied, the behavior 502 and a motion model 506 associated with the behavior 502 are deactivated. - In some aspects, once a behavior and its associated motion models have been activated in response to the activation conditions being satisfied, the behavior and associated motion model remain in an activated state until the deactivation conditions for the behavior and associated motion model have been satisfied. In other aspects, the deactivation conditions can be optional and a behavior and its associated motion model are activated for as long as the activation conditions remain satisfied, and deactivated when the activation conditions are no longer satisfied.
- Further, the
non-FOV tracker 344 can receive image-basedcontroller state data 514 fromFOV tracker 342. The image-basedcontroller state data 514 can be output data produced byFOV tracker 342 as a result of attempting to determine a pose forcontroller 114 usingHMD state data 512,controller measurement data 510, andimage data 518 fromimage capture devices 138. - Each behavior 502 can have an associated motion model 506. The motion model 506 for a behavior defines how model-based
controller state data 516A-N (collectively, “model-based controller state data 516”) for thecontroller 114 is determined. For example, the motion model 506 for a behavior 502 can utilizecontroller measurement data 510,HMD state data 512, andcontroller state data 514 to determine model-based controller state data 516. - Each behavior 502 can have an associated finite state machine (FSM) 504. The FSM 504 associated with a behavior 502 can keep track of state information (activated, deactivated, etc.), transitions from one state to another and other state information associated with a behavior. The FSM 504 for a behavior can preserve state information between display frames and can be used by the motion model 506 associated with the behavior 502 to determine model-based controller state data 516.
- In some aspects, the
behaviors 502A-N are associated with a priority. The priority for the behaviors can be determined in various ways. For example, priority can be determined based on likelihood of occurrence of the corner case, devastation of user experience should the corner case occur, number of times the corner case is reported as a problem etc. - In some implementations, the
behaviors 502A-N can be organized in a subsumption architecture. In a subsumption architecture, thebehaviors 502A-N for the corner cases are organized in respective layers that prioritize each behavior. In the example illustrated inFIG. 5 , the bottom layer,behavior 502N, is the highest priority behavior.Behavior 502A at the top layer is the lowest priority behavior. Candidate versions of the model-based controller state data 516 can be determined by motion models 506 associated with each activated behavior. Candidate model-based controller state data 516 determined according to motion models 506 of higher (lower-priority) layers can be ignored, blocked or replaced by the candidate model-based controller state data 516 determined by a lower (higher-priority) layer behavior 502 in the subsumption architecture. - In some implementations, the activated behaviors 502 can be evaluated in parallel with one another. Each activated behavior 502 can determine a candidate version of the model-based controller state data 516 based on its associated motion model 506 and input
controller measurement data 510,HMD state data 512, and image-basedcontroller state data 514. The candidate version of the model-based controller state data 516 determined by the motion model 506 in the layer having the highest priority among the activated behaviors 502 can be used as the final version of thecontroller state data 520 output bynon-FOV tracker 344. - If no behaviors are activated, the
non-FOV tracker 344 acts as a pass-through, and the image-basedcontroller state data 514 determined by theFOV tracker 342 and provided tonon-FOV tracker 344 as input is used as the outputcontroller state data 520 ofnon-FOV tracker 344. - As will be appreciated from the above, the
controller state data 520 will be determined based on the motion model 506 associated with the highest-priority activated behavior. If no behaviors are activated, thecontroller state data 520 will be based on the image-basedcontroller state data 514. Thecontroller state data 520 output by thenon-FOV tracker 344 can be used bypose tracker 326 to determine a controller pose forcontroller 114. - In some cases, a motion model 506 for a behavior 502 may utilize information other than that available from
controller measurement data 510,HMD state data 512, andcontroller state data 514.Configuration data 522 can store and provide such data. For example, as described below, some motion models may use an average length of an arm or average position of a torso with respect to a head in order to determine position data for model-based controller state data 516. The average length of an arm or average position of a torso with respect to a head can be stored in configuration data 516 for used by a motion model 506. -
FIG. 6 is aflowchart 600 illustrating example operations of a method for determining a controller pose for a hand-held controller that is not trackable, in some cases, in a field of view in accordance with aspects of the disclosure. The example operations described inflowchart 600 can be performed periodically or in response to an event. For example, the example operations can be performed as part of a response to a display frame generation event where the event causes an artificial reality system to render a display frame for presentation onHMD 112. - An FOV tracker can receive image data from one or more
image capture devices 138 of anHMD 112 and controller measurement data from a controller 114 (602). Additionally, the image data can include image data provided by cameras or sensors external to theHMD 112. The FOV tracker can determine image-based controller state data using the image data and the controller measurement data (604). - The FOV tracker can determine if the
controller 114 is trackable within the image data (606). In some aspects, the FOV tracker can determine that thecontroller 114 is trackable within the image data if at least threeemitters 208 ofcontroller 114 are detectable with the image data and the controller measurement data indicates the controller is not at rest. In some aspects, the FOV tracker can use sensor fusion to determine if thecontroller 114 is trackable within the image data. - If the FOV tracker determines that the
controller 114 is trackable within the image data (YES branch of 606), the controller pose can be determined based on the image-based controller state data as determined by the FOV tracker (610). If the FOV tracker determines that thecontroller 114 is not trackable within the image data (NO branch of 606), the non-FOV tracker determines if any non-FOV behaviors have been activated, or if non-FOV activation conditions have been satisfied for a behavior (608). The non-FOV tracker can determine if any behavior activation conditions have been satisfied based on the controller measurement data, the HMD state data, and/or the image-based controller state data. If no activation conditions have been satisfied and no behaviors are currently activated (NO branch of 608), then the controller pose can be determined based on the image-based controller state data as determined by the FOV tracker (610). - If at least one behavior has been activated or at least one activation condition has been satisfied (YES branch of 608), the non-FOV tracker can determine candidate model-based controller state data by evaluating the motion models associated with each behavior that is activated (612). The motion models can access the input controller measurement data, HMD state data, and image-based controller state values as needed to determine the candidate model-based controller state data associated with a behavior. The controller pose can then be determined based on the candidate model-based controller state data produced by the motion model associated with the highest priority behavior (614).
- The pose tracker can determine the controller pose based on the image-based controller state data determined by the FOV tracker if the controller is trackable in the image data or if no motion models are activated. The pose tracker can determine the controller pose based on the model-based controller state data determined by the non-FOV tracker if the controller is not trackable in the image data (to determine a controller pose) and a motion model has been activated. The rendering engine can render artificial reality content based on the determined controller pose and HMD pose (616).
-
FIGS. 7-10 are flowcharts illustrating operations of example methods for activating behaviors and evaluating motion models associated with the activated behaviors in accordance with aspects of the disclosure. -
FIG. 7 is a flowchart illustrating example operations of a method for determining a controller pose in the corner case that the controller is near the HMD, but not attached to the HMD. An activation condition for this case includes determining that the controller is not trackable in the field of view of image capture devices of an AR system (NO branch of 704). As discussed above, in some aspects, the controller is not trackable in the field of view if the controller is not located in the field of view of any cameras or sensors, if the controller is occluded within the field of view by another object, if the position of the controller is unreliable, or if the controller is at rest. A further activation condition for the corner case ofFIG. 7 is that the distance between the controller and the HMD is less than a predefined or configurable threshold (NO branch of 706). If both activation conditions are met, the behavior and motion model associated with the corner case are activated. If the controller is trackable within the field of view of image capture devices of AR system (YES branch of 704) or the distance between the HMD and the controller is greater than the configurable threshold (YES branch of 706), then the activation conditions for this corner case are not satisfied and the method ends. - The motion model associated with the corner case behavior sets position values in the candidate model-based controller state data for the behavior to cause a virtual hand or other object associated with controller to pivot about a position of a virtual elbow (708). The position of the virtual elbow in the virtual world space can be determined based a pre-defined or configurable forearm length stored in the configuration data and the last known controller position and headset position. The motion model in this case can be referred to as a “controller-on-a-stick” model, where the stick is a virtual arm representing the user's arm, the virtual elbow is at one end of the stick and a virtual hand associated with the position of the controller is at the other end of the stick.
- In some aspects, deactivation conditions for the corner case can include reacquiring tracking on the controller when the controller becomes trackable within the field of view.
-
FIGS. 12A and 12B illustrate an example physical environment for the corner case described above with reference toFIG. 7 .FIG. 12A is a front view of a user wearing anHMD 112 and holding acontroller 114 inhand 132 withinthreshold distance 1202 ofHMD 112. FIG. 12B is a side view of the user. As can be seen inFIG. 12B , thecontroller 114 is not within the field ofview 130 of cameras onHMD 112. In this example, the user may be waving their arm to greet or attract the attention of another user in the same virtual environment. A virtual hand and arm may be rendered so as to appear to wave based on the motion model. The waving motion can be rendered by having the virtual hand pivot about the elbow. -
FIG. 8 is a flowchart illustrating example operations of a method for determining a controller pose in the corner case that a first controller is within the field of view, but obstructed by a second controller, and the first controller is not “attached” to the second controller. An activation condition for this case includes determining that the first controller not within the field of view (NO branch of 804). A further activation condition for the corner case is that the distance between the first controller and the second controller is less than a predefined or configurable threshold (YES branch of 806). A still further activation condition is that the first controller's acceleration values (as determined from controller measurement data) are not in synchronization with the second controller's acceleration values (YES branch of 808). If all of the above activation conditions are met, the motion model and behavior associated with the corner case is activated. If the controller is trackable within the field of view of image capture devices of AR system (YES branch of 804), the distance between the first and second controller is greater than the configurable threshold (NO branch of 806), or the first controller's acceleration values are in synchronization with the second controller's acceleration values (NO branch of 808), then the activation conditions for this corner case are not satisfied and the method ends. - The motion model associated with the corner case behavior fixes position values in the candidate model-based controller state data for the first controller to a position of a virtual torso of the user (810). The position of the virtual torso can be determined based on configuration data that provides an average distance between a torso and an HMD, HMD poses, and controller orientation.
- In some aspects, deactivation conditions for the corner case can include the visible (second) controller leaving the camera or sensor field of view, or the obstructed (first) controller becoming trackable within the field of view.
-
FIGS. 13A and 13B illustrate an example physical environment and example artificial reality content for the corner case described above with reference toFIG. 8 .FIG. 13A is a front view of a user wearing anHMD 112 and holding acontroller 114A inhand 132A and acontroller 114B inhand 132B.Controller 114B is occluded by thehand 132A and/orcontroller 114A. In this example, the user may be interacting with a menu on avirtual wrist watch 1302. As the user moves his or her hands to manipulate the menu, the first andsecond controllers -
FIG. 13B illustrates exampleartificial reality content 122 for the example illustrated inFIG. 13A . The motion model for this corner case behavior causes thevirtual hand 1324B to be rendered at a fixed distance from avirtual torso 1304 whencontroller 114B is occluded and not moving in synchronization withcontroller 114A. -
FIG. 9 is a flowchart illustrating example operations of a method for determining a controller pose in the tracking corner case that a first controller is within the field of view, but obstructed by a second controller and is attached to the second controller. An activation condition for this case includes determining that the first controller is not trackable in the field of view (NO branch of 904). A further activation condition for the corner case is that the distance between the first controller and the second controller is less than a predefined or configurable threshold (YES branch of 906). A still further activation condition is that the first controller's acceleration values (as determined from controller measurement data) are in synchronization with the second controller's acceleration values (YES branch of 908). If all of the above activation conditions are met, the motion model and behavior for the corner case are activated. If the controller is trackable within the field of view of image capture devices of AR system (YES branch of 904), the distance between the first and second controller is greater than the configurable threshold (NO branch of 906), or the first controller's acceleration values are not in synchronization with the second controller's acceleration values (NO branch of 908), then the activation conditions for this corner case are not satisfied and the method ends. - The motion model associated with the corner case behavior sets the position values in the candidate model-based controller state data for the first controller to a fixed position with respect to the position of the second controller (910).
- In some aspects, deactivation conditions for the corner case can include the visible (second) controller leaving the camera or sensor field of view, or the obstructed (first) controller becoming trackable within the field of view, or the first and second controllers' acceleration values are no longer in synchronization.
-
FIGS. 14A and 14B illustrate an example physical environment and example artificial reality content for the corner case described above with reference toFIG. 9 .FIG. 14A is a side view of a user wearing anHMD 112 and holding acontroller 114A inhand 132A and acontroller 114B inhand 132B.Controller 114B may be occluded by thehand 132A and/orcontroller 114A. The artificial reality content may comprise a shooting game where a user shoots a virtual gun at a target using a two handed grip. As the user moves his or her hands to aim, the first andsecond controllers -
FIG. 14B illustrates exampleartificial reality content 122 for the example illustrated inFIG. 14A . In this example, the user has aimed avirtual gun 1402 at avirtual target 1404. The motion model for this corner case behavior causes thevirtual hand 1424A to be rendered at a fixed position with respect to the position ofvirtual hand 1424B. -
FIG. 10 is a flowchart illustrating example operations of a method for determining a controller pose in the corner case that a position of the controller is unreliable or at rest in the field of view. A controller's position may become unreliable if the controller is positioned too far from the cameras to allow determination of the position with reasonable confidence. Additionally, a controller's position may become unreliable if the controller is at rest (e.g., placed on a tabletop or other stationary position). In this case, noise from the motion sensor devices may cause the controller to appear to move when it in fact should be stationary. In either case, a user might see jitter (position of virtual object associated with the controller oscillates near the actual location) or fly-away-then-snap (virtual object associated with the controller flies away, then quickly jumps to the actual location). An activation condition for this case includes determining that the absolute values of a most recent set of acceleration values from a motion sensor of the controller are less than a predefined or configurable threshold (YES branch of 1004). A further activation condition for the corner case is that the variance of a buffered set of motion sensor values is less than a predefined or configurable threshold (YES branch of 1006). If both of the above activation conditions are met, the motion model and behavior for the “controller at rest” corner case are activated. If the most recent set of acceleration values from a motion sensor of the controller are greater than a predefined or configurable threshold (NO branch of 1004) or the variance of the buffered set of motion sensor values is greater than a predefined or configurable threshold (NO branch of 1006), then the activation conditions for this corner case are not satisfied and the method ends. - The motion model associated with the corner case behavior anchors position values in the candidate model-based controller state data for the controller to a fixed position in a world reference frame (1008).
- In some aspects, deactivation conditions for the corner case can include the variance of buffered motion sensor samples exceeding a predetermined or configurable threshold, or the absolute value of most-recent motion sensor value sample exceeding a predetermined or configurable threshold.
-
FIG. 11 is a flowchart illustrating example operations of a method for reducing jitter when a hand-held controller reenters a field of view in accordance with aspects of the disclosure. A pose tracker can determine whether a controller was trackable within a field of view during the previous display frame (1104). If the controller was trackable during the previous display frame (YES branch of 1104), the controller has not reentered the field of view. Jitter reduction operations are therefore not necessary, and the method ends. - If the controller was not trackable during the previous display frame (NO branch of 1104), the pose tracker can determine whether the controller is trackable in the field of view for the current display frame (1106). If the controller was not trackable in the previous frame and the controller is not trackable in the current display frame, jitter reduction is not necessary, and the method ends (NO branch of 1106). If the controller was not trackable in the previous display frame and is trackable in the current display frame, the controller has reentered the field of view (YES branch of 1106). The pose tracker can determine controller poses for a series of display frames using interpolation to prevent a virtual object whose position is determined with respect to the controller from appearing to “jump” position (1108). In particular, the pose tracker can determine controller poses by interpolating between a position of the controller determined by the non-FOV tracker when the controller was outside of the field of view and a position of the controller determined by the FOV tracker when the controller reenters the field of view.
-
FIGS. 15A and 15B illustrate an example of the interpolation performed by the method ofFIG. 11 .FIG. 15A illustrates an initial state of a physical environment where afirst controller 114A is not in the field ofview 130 of cameras or sensors ofHMD 112. As an example, the user ofHMD 112 may be participating in a virtual boxing game provided on the artificial reality system. -
FIG. 15B illustrates a subsequent state of the physical environment where thefirst controller 114A has reentered the field ofview 130 ofHMD 112. For example, the user may perform a “punch” with thehand holding controller 114. In the example illustrated inFIG. 15B , the non-FOV tracker has determined the position of thecontroller 114A at P1 and the FOV tracker determines the position of thecontroller 114A at P2. Without interpolation, the path of a virtualhand representing hand 132A may appear to jump from P1 to P2 before proceeding to P3 in subsequent display frames. Using the method described above inFIG. 11 , the pose tracker can interpolate a path between P1 and P3 that smoothes the transition of the virtual hand from out of the field ofview 130 to within the field ofview 130 over a series of display frames. In the example illustrated inFIG. 15B , the uninterpolated path is represented by a solid line connecting points P1, P2 and P3. The interpolated path is represented by a dashed line connecting P1 and P3. The interpolation speed and duration can be determined based on a measurement or estimation of activity within the artificial reality content. - The description above of various aspects of the disclosure has been presented in the context of an artificial reality system. The techniques described herein can be implemented as well in other types of systems that use image or other sensor data to determine positions of objects that may move in and out of a field of view of a camera or sensor.
- The techniques described in this disclosure may be implemented, at least in part, in hardware, software, firmware or any combination thereof. For example, various aspects of the described techniques may be implemented within one or more processors, including one or more microprocessors, DSPs, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuitry, as well as any combinations of such components. The term “processor” or “processing circuitry” may generally refer to any of the foregoing logic circuitry, alone or in combination with other logic circuitry, or any other equivalent circuitry. A control unit comprising hardware may also perform one or more of the techniques of this disclosure.
- Such hardware, software, and firmware may be implemented within the same device or within separate devices to support the various operations and functions described in this disclosure. In addition, any of the described units, modules or components may be implemented together or separately as discrete but interoperable logic devices. Depiction of different features as modules or units is intended to highlight different functional aspects and does not necessarily imply that such modules or units must be realized by separate hardware or software components. Rather, functionality associated with one or more modules or units may be performed by separate hardware or software components or integrated within common or separate hardware or software components.
- The techniques described in this disclosure may also be embodied or encoded in a computer-readable medium, such as a computer-readable storage medium, containing instructions. Instructions embedded or encoded in a computer-readable storage medium may cause a programmable processor, or other processor, to perform the method, e.g., when the instructions are executed. Computer readable storage media may include random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), flash memory, a hard disk, a CD-ROM, a floppy disk, a cassette, magnetic media, optical media, or other computer readable media.
- As described by way of various examples herein, the techniques of the disclosure may include or be implemented in conjunction with an artificial reality system. As described, artificial reality is a form of reality that has been adjusted in some manner before presentation to a user, which may include, e.g., a virtual reality (VR), an augmented reality (AR), a mixed reality (MR), a hybrid reality, or some combination and/or derivatives thereof. Artificial reality content may include completely generated content or generated content combined with captured content (e.g., real-world photographs). The artificial reality content may include video, audio, haptic feedback, or some combination thereof, and any of which may be presented in a single channel or in multiple channels (such as stereo video that produces a three-dimensional effect to the viewer). Additionally, in some embodiments, artificial reality may be associated with applications, products, accessories, services, or some combination thereof, that are, e.g., used to create content in an artificial reality and/or used in (e.g., perform activities in) an artificial reality. The artificial reality system that provides the artificial reality content may be implemented on various platforms, including a head mounted device (HMD) connected to a host computer system, a standalone HMD, a mobile device or computing system, or any other hardware platform capable of providing artificial reality content to one or more viewers.
Claims (20)
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/417,244 US10853991B1 (en) | 2019-05-20 | 2019-05-20 | Multi-layered artificial reality controller pose tracking architecture having prioritized motion models |
JP2021554613A JP2022532826A (en) | 2019-05-20 | 2020-05-19 | Multilayer artificial reality controller with preferred motion model Posture tracking architecture |
EP20730930.3A EP3973373A1 (en) | 2019-05-20 | 2020-05-19 | Multi-layered artificial reality controller pose tracking architecture having prioritized motion models |
KR1020217034813A KR20220007723A (en) | 2019-05-20 | 2020-05-19 | Multi-layer artificial reality controller pose tracking architecture with prioritized motion models |
CN202080037945.4A CN113892073B (en) | 2019-05-20 | 2020-05-19 | Multi-layer artificial reality controller gesture tracking architecture with prioritized motion models |
PCT/US2020/033652 WO2020236843A1 (en) | 2019-05-20 | 2020-05-19 | Multi-layered artificial reality controller pose tracking architecture having prioritized motion models |
TW109116753A TWI840560B (en) | 2019-05-20 | 2020-05-20 | Artificial reality system, method for tracking hand-held controller in artificial reality system and relevant non-transitory computer-readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/417,244 US10853991B1 (en) | 2019-05-20 | 2019-05-20 | Multi-layered artificial reality controller pose tracking architecture having prioritized motion models |
Publications (2)
Publication Number | Publication Date |
---|---|
US20200372702A1 true US20200372702A1 (en) | 2020-11-26 |
US10853991B1 US10853991B1 (en) | 2020-12-01 |
Family
ID=70978695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/417,244 Active US10853991B1 (en) | 2019-05-20 | 2019-05-20 | Multi-layered artificial reality controller pose tracking architecture having prioritized motion models |
Country Status (7)
Country | Link |
---|---|
US (1) | US10853991B1 (en) |
EP (1) | EP3973373A1 (en) |
JP (1) | JP2022532826A (en) |
KR (1) | KR20220007723A (en) |
CN (1) | CN113892073B (en) |
TW (1) | TWI840560B (en) |
WO (1) | WO2020236843A1 (en) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11073902B1 (en) * | 2019-12-30 | 2021-07-27 | Facebook Technologies, Llc | Using skeletal position to predict virtual boundary activation |
US11320896B2 (en) * | 2020-08-03 | 2022-05-03 | Facebook Technologies, Llc. | Systems and methods for object tracking using fused data |
WO2022147248A1 (en) * | 2020-12-30 | 2022-07-07 | Meta Platforms Technologies, Llc | Hand-locked rendering of virtual objects in artificial reality |
US20230041519A1 (en) * | 2021-08-09 | 2023-02-09 | Htc Corporation | Tracking system, tracking method and non-transitory computer-readable storage medium |
WO2023019077A1 (en) * | 2021-08-10 | 2023-02-16 | Qualcomm Incorporated | Electronic device for tracking objects |
US20230107586A1 (en) * | 2021-09-28 | 2023-04-06 | Htc Corporation | Virtual image display device and object selection method for virtual image thereof |
GB2614330A (en) * | 2021-12-31 | 2023-07-05 | Sony Interactive Entertainment Europe Ltd | Peripheral tracking system and method |
US11947122B1 (en) * | 2022-12-08 | 2024-04-02 | Varjo Technologies Oy | Tracking system and method incorporating selective control of light sources of controller |
US20240126381A1 (en) * | 2022-10-14 | 2024-04-18 | Meta Platforms Technologies, Llc | Tracking a handheld device |
GB2624929A (en) * | 2022-12-01 | 2024-06-05 | Sony Interactive Entertainment Inc | Systems and methods for mapping and localisation |
EP4418080A1 (en) * | 2023-02-15 | 2024-08-21 | HTC Corporation | Method for generating pass-through view with better scale and host |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11275453B1 (en) | 2019-09-30 | 2022-03-15 | Snap Inc. | Smart ring for manipulating virtual objects displayed by a wearable device |
US11277597B1 (en) | 2020-03-31 | 2022-03-15 | Snap Inc. | Marker-based guided AR experience |
US11798429B1 (en) | 2020-05-04 | 2023-10-24 | Snap Inc. | Virtual tutorials for musical instruments with finger tracking in augmented reality |
US11520399B2 (en) | 2020-05-26 | 2022-12-06 | Snap Inc. | Interactive augmented reality experiences using positional tracking |
US11925863B2 (en) * | 2020-09-18 | 2024-03-12 | Snap Inc. | Tracking hand gestures for interactive game control in augmented reality |
US11546505B2 (en) | 2020-09-28 | 2023-01-03 | Snap Inc. | Touchless photo capture in response to detected hand gestures |
US12086324B2 (en) | 2020-12-29 | 2024-09-10 | Snap Inc. | Micro hand gestures for controlling virtual and graphical elements |
KR20230124077A (en) | 2020-12-30 | 2023-08-24 | 스냅 인코포레이티드 | Augmented reality precision tracking and display |
US11740313B2 (en) | 2020-12-30 | 2023-08-29 | Snap Inc. | Augmented reality precision tracking and display |
US11531402B1 (en) | 2021-02-25 | 2022-12-20 | Snap Inc. | Bimanual gestures for controlling virtual and graphical elements |
WO2022225761A1 (en) | 2021-04-19 | 2022-10-27 | Snap Inc. | Hand gestures for animating and controlling virtual and graphical elements |
US11599338B2 (en) * | 2021-06-18 | 2023-03-07 | Qingdao Pico Technology Co., Ltd. | Model loading method and apparatus for head-mounted display device, and head-mounted display device |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9255813B2 (en) * | 2011-10-14 | 2016-02-09 | Microsoft Technology Licensing, Llc | User controlled real object disappearance in a mixed reality display |
JP6355978B2 (en) * | 2014-06-09 | 2018-07-11 | 株式会社バンダイナムコエンターテインメント | Program and image generation apparatus |
US10684485B2 (en) * | 2015-03-06 | 2020-06-16 | Sony Interactive Entertainment Inc. | Tracking system for head mounted display |
US9996804B2 (en) | 2015-04-10 | 2018-06-12 | Facebook, Inc. | Machine learning model tracking platform |
US10186081B2 (en) * | 2015-12-29 | 2019-01-22 | Microsoft Technology Licensing, Llc | Tracking rigged smooth-surface models of articulated objects |
US10249090B2 (en) * | 2016-06-09 | 2019-04-02 | Microsoft Technology Licensing, Llc | Robust optical disambiguation and tracking of two or more hand-held controllers with passive optical and inertial tracking |
US10241587B2 (en) * | 2016-12-22 | 2019-03-26 | Microsoft Technology Licensing, Llc | Magnetic tracker power duty cycling |
US10417731B2 (en) * | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10996742B2 (en) * | 2017-10-17 | 2021-05-04 | Logitech Europe S.A. | Input device for AR/VR applications |
US20200051561A1 (en) * | 2018-08-13 | 2020-02-13 | Hing Yin Lai | Instant key mapping reload and real time key commands translation by voice command through voice recognition device for universal controller |
-
2019
- 2019-05-20 US US16/417,244 patent/US10853991B1/en active Active
-
2020
- 2020-05-19 WO PCT/US2020/033652 patent/WO2020236843A1/en unknown
- 2020-05-19 JP JP2021554613A patent/JP2022532826A/en not_active Ceased
- 2020-05-19 KR KR1020217034813A patent/KR20220007723A/en not_active Application Discontinuation
- 2020-05-19 CN CN202080037945.4A patent/CN113892073B/en active Active
- 2020-05-19 EP EP20730930.3A patent/EP3973373A1/en active Pending
- 2020-05-20 TW TW109116753A patent/TWI840560B/en active
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11073902B1 (en) * | 2019-12-30 | 2021-07-27 | Facebook Technologies, Llc | Using skeletal position to predict virtual boundary activation |
US11320896B2 (en) * | 2020-08-03 | 2022-05-03 | Facebook Technologies, Llc. | Systems and methods for object tracking using fused data |
US12153724B2 (en) | 2020-08-03 | 2024-11-26 | Meta Platforms Technologies, Llc | Systems and methods for object tracking using fused data |
WO2022147248A1 (en) * | 2020-12-30 | 2022-07-07 | Meta Platforms Technologies, Llc | Hand-locked rendering of virtual objects in artificial reality |
US11402634B2 (en) | 2020-12-30 | 2022-08-02 | Facebook Technologies, Llc. | Hand-locked rendering of virtual objects in artificial reality |
US20230041519A1 (en) * | 2021-08-09 | 2023-02-09 | Htc Corporation | Tracking system, tracking method and non-transitory computer-readable storage medium |
US11836301B2 (en) * | 2021-08-10 | 2023-12-05 | Qualcomm Incorporated | Electronic device for tracking objects |
WO2023019077A1 (en) * | 2021-08-10 | 2023-02-16 | Qualcomm Incorporated | Electronic device for tracking objects |
US20230048398A1 (en) * | 2021-08-10 | 2023-02-16 | Qualcomm Incorporated | Electronic device for tracking objects |
US20240045515A1 (en) * | 2021-08-10 | 2024-02-08 | Qualcomm Incorporated | Electronic device for tracking objects |
US20230107586A1 (en) * | 2021-09-28 | 2023-04-06 | Htc Corporation | Virtual image display device and object selection method for virtual image thereof |
US11693479B2 (en) * | 2021-09-28 | 2023-07-04 | Htc Corporation | Virtual image display device and object selection method for virtual image thereof |
EP4206867A1 (en) * | 2021-12-31 | 2023-07-05 | Sony Interactive Entertainment Europe Limited | Peripheral tracking system and method |
US20230214006A1 (en) * | 2021-12-31 | 2023-07-06 | Sony Interactive Entertainment Europe Limited | Peripheral Tracking System and Method |
US11983306B2 (en) * | 2021-12-31 | 2024-05-14 | Sony Interactive Entertainment Europe Limited | Peripheral tracking system and method |
GB2614330B (en) * | 2021-12-31 | 2024-10-02 | Sony Interactive Entertainment Europe Ltd | Peripheral tracking system and method |
GB2614330A (en) * | 2021-12-31 | 2023-07-05 | Sony Interactive Entertainment Europe Ltd | Peripheral tracking system and method |
US20240126381A1 (en) * | 2022-10-14 | 2024-04-18 | Meta Platforms Technologies, Llc | Tracking a handheld device |
GB2624929A (en) * | 2022-12-01 | 2024-06-05 | Sony Interactive Entertainment Inc | Systems and methods for mapping and localisation |
US11947122B1 (en) * | 2022-12-08 | 2024-04-02 | Varjo Technologies Oy | Tracking system and method incorporating selective control of light sources of controller |
EP4418080A1 (en) * | 2023-02-15 | 2024-08-21 | HTC Corporation | Method for generating pass-through view with better scale and host |
Also Published As
Publication number | Publication date |
---|---|
WO2020236843A1 (en) | 2020-11-26 |
US10853991B1 (en) | 2020-12-01 |
EP3973373A1 (en) | 2022-03-30 |
CN113892073B (en) | 2024-04-05 |
KR20220007723A (en) | 2022-01-18 |
TWI840560B (en) | 2024-05-01 |
JP2022532826A (en) | 2022-07-20 |
CN113892073A (en) | 2022-01-04 |
TW202111483A (en) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10853991B1 (en) | Multi-layered artificial reality controller pose tracking architecture having prioritized motion models | |
US10890983B2 (en) | Artificial reality system having a sliding menu | |
US20210327156A1 (en) | Performing operations using a mirror in an artificial reality environment | |
RU2745828C1 (en) | Method and system for automated protection against collisions and preservation of camera structure | |
US20240037880A1 (en) | Artificial Reality System with Varifocal Display of Artificial Reality Content | |
US9361732B2 (en) | Transitions between body-locked and world-locked augmented reality | |
US9430038B2 (en) | World-locked display quality feedback | |
US11119568B2 (en) | Suspend mode feature for artificial reality systems | |
EP3980871A1 (en) | Artificial reality system having a self-haptic virtual keyboard | |
JP6558839B2 (en) | Intermediary reality | |
US11195320B2 (en) | Feed-forward collision avoidance for artificial reality environments | |
KR20220012990A (en) | Gating Arm Gaze-Driven User Interface Elements for Artificial Reality Systems | |
US10755486B2 (en) | Occlusion using pre-generated 3D models for augmented reality | |
US11073902B1 (en) | Using skeletal position to predict virtual boundary activation | |
KR20210121156A (en) | Artificial Reality Systems with Adaptive Degrees of Freedom (DOF) Selection | |
KR20210118185A (en) | Artificial Reality System With Multiple Engagement Modes | |
EP3980872A1 (en) | Artificial reality systems with personal assistant element for gating user interface elements | |
US11036987B1 (en) | Presenting artificial reality content using a mirror | |
US11816757B1 (en) | Device-side capture of data representative of an artificial reality environment | |
KR20220018562A (en) | Gating Edge-Identified Gesture-Driven User Interface Elements for Artificial Reality Systems | |
WO2020247908A1 (en) | Artificial reality system having a digit-mapped self-haptic input method | |
US20230252691A1 (en) | Passthrough window object locator in an artificial reality system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: FACEBOOK TECHNOLOGIES, LLC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:YAN, CHENGYUAN;LINDE, OSKAR;SIGNING DATES FROM 20190603 TO 20190606;REEL/FRAME:049406/0782 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: META PLATFORMS TECHNOLOGIES, LLC, CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:FACEBOOK TECHNOLOGIES, LLC;REEL/FRAME:060802/0799 Effective date: 20220318 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |