Position tracking system and method for head mounted display systems
Patent Information
- Application Number
- JP2024514112
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-09-28
- Filing Date
- 2022-09-27
- Publication Date
- 2025-09-30
- Estimated Expiration
- 2042-09-27
AI Technical Summary
Existing positional tracking systems for head-mounted display (HMD) systems, such as those used in virtual reality (VR) and augmented reality (AR), face challenges in accurately tracking the position and orientation of components in six degrees of freedom (6DOF) due to interference from scattered or reflected light, leading to inaccuracies and potential motion sickness.
The system employs angle-sensitive detectors and scattered light detectors to filter out scattered light, combined with machine learning techniques to process sensor data, and uses a combination of fixed and movable light sources to enhance positional tracking accuracy, incorporating inertial and image data fusion for improved tracking.
This approach significantly enhances the accuracy of positional tracking in HMD systems, reducing motion sickness and improving the user's perception of the virtual environment by accurately reflecting the user's movements and interactions.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] The present disclosure relates generally to position tracking for objects, such as head mounted display systems and controllers associated with head mounted display systems. [Background technology]
[0002] One current generation of virtual reality (VR) or augmented reality (AR) experiences is created using a stationary computer (such as a personal computer (PC), laptop, or game console) that is combined and / or integrated with a smartphone, and / or a head-mounted display (HMD) that may be coupled to its associated display or may be self-contained. In general, an HMD is a display device that is worn on the user's head, with a small display device in front of one eye (monocular HMD) or each eye (binocular HMD). These display units are typically miniaturized and may include, for example, CRT, LCD, liquid crystal on silicon (LCos) or OLED technologies. Binocular HMDs have the possibility to display different images to each eye. This functionality is used to display stereoscopic images.
[0003] With the development of smartphones, high definition televisions and other electronic devices, the demand for high performance displays is increasing. Such demand is further increased by the popularity of virtual reality and augmented reality systems, especially those using HMDs. Virtual reality systems generally completely envelop the wearer's eyes and replace the actual or physical view (or actual reality) in front of the wearer with a "virtual" reality, while augmented reality systems generally provide a semi-transparent or transparent overlay of one or more screens in front of the wearer's eyes so that the actual view is augmented with additional information, and mediated reality systems may similarly present information to the viewer that combines real-world elements with virtual elements. In many virtual reality and augmented reality systems, the movement of the wearer of such a head-mounted display may be tracked in various ways, such as via sensors in the head-mounted display, a controller, or external sensors, to enable images to be shown to reflect the user's movements and to enable an interactive environment.
[0004] Positional tracking allows an HMD system to estimate the position of one or more components relative to each other and the surrounding environment. Positional tracking may use a combination of hardware and software to achieve absolute position detection of the components of the HMD system. Positional tracking is an important technology for AR or VR systems, allowing the tracking of the movement of the HMD (and / or controller or other peripherals) in six degrees of freedom (6DOF).
[0005] Positional tracking technology may be used to change the user's viewpoint to reflect different actions, such as jumping or crouching, and may enable accurate representation of the user's hands and other objects in the virtual environment. Positional tracking may also increase connectivity between the physical and virtual environments, for example, by using the position of the hands to move virtual objects by touch. Positional tracking improves the user's three-dimensional perception of the virtual environment due to parallax and aids in the perception of distance. Positional tracking may also help minimize motion sickness caused by a mismatch between what the eyes see and what the user feels with the vestibular system of the ears.
[0006] There are several different methods of position tracking, which may include acoustic tracking, inertial tracking, magnetic tracking, optical tracking, combinations thereof, etc. [Brief description of the drawings]
[0007] In the drawings, identical reference numbers identify similar elements or acts. The sizes and relative positions of elements within the drawings are not necessarily drawn to scale. For example, the shapes and angles of various elements are not necessarily drawn to scale, and some of these elements may be arbitrarily enlarged and positioned to improve the readability of the drawings. Furthermore, the particular depicted shapes of elements are not necessarily intended to convey any information regarding the actual shape of the particular elements, but may merely be selected for ease of recognition within the drawings.
[0008] [Figure 1] FIG. 1 is a schematic diagram of a networked environment including one or more systems suitable for performing at least some of the techniques described in this disclosure, including an embodiment of a tracking subsystem.
[0009] [Diagram 2]A diagram illustrating an example environment in which at least some of the described techniques are used in conjunction with an example head-mounted display device that is coupled to a video rendering computing system and provides a virtual reality display to a user.
[0010] [Diagram 3] 1 is a pictorial diagram of an HMD device having a binocular display subsystem and multiple angle-sensing detectors.
[0011] [Figure 4] 1 is a pictorial diagram of a controller that may be used with the HMD device.
[0012] [Diagram 5] FIG. 1 is a schematic block diagram of an HMD device according to an example embodiment of the present disclosure.
[0013] [Figure 6] FIG. 1 is a schematic diagram of an environment in which machine learning techniques can be used to implement a tracking subsystem of an HMD device, according to one non-limiting example implementation.
[0014] [Figure 7] 1 is a flow diagram of a method of operating a position tracking system of an HMD system to track position, orientation, and / or movement of components of the HMD system during use, according to an example embodiment of the present disclosure.
[0015] [Figure 8] FIG. 1 illustrates a perspective view of an example angle sensing detector that may be used in one or more of the implementations of the present disclosure.
[0016] [Figure 9] 1 shows the first linear polarizer, the spatially varying polarizer, and the second linear polarizer of the angle-sensitive photodiode structure, and the polarization of the light or light spot passing therethrough to the photodiode.
[0017] [Figure 10] 1 shows the first linear polarizer, the spatially varying polarizer, and the second linear polarizer of the angle-sensitive photodiode structure, and the polarization of the light or light spot passing therethrough to the photodiode.
[0018] [Figure 11A] FIG. 2 is a top view of an exemplary angle sensing detector that may be used in one or more of the implementations of the present disclosure.
[0019] [Figure 11B] FIG. 11B is a perspective view of the angle sensing detector shown in FIG.
[0020] [Figure 12] FIG. 1 is a simplified diagram illustrating determining the position of components of an HMD system using a light source and an angle-sensing detector according to one non-limiting illustrated implementation.
[0021] [Figure 13] FIG. 2 illustrates an exemplary optical system of a light source and an angle-sensing detector according to one non-limiting illustrated implementation.
[0022] [Figure 14] FIG. 1 illustrates the operation of a scattered light detection module and light source of an example tracking system according to one non-limiting illustrated implementation.
[0023] [Figure 15] FIG. 2 illustrates components of a light source and scattered light detection module of a tracking system according to one non-limiting illustrated implementation.
[0024] [Figure 16]FIG. 1 is a pictorial diagram of an HMD device having a binocular display subsystem, multiple angle-sensing detectors, and multiple scattered light detection modules that act to detect scattered or reflected light and can be used to ignore such scattered light during position tracking of the HMD device or its components.
[0025] [Figure 17] FIG. 1 is a perspective view of components of a light source and scattered light detection module of a tracking system according to one non-limiting illustrated implementation.
[0026] [Figure 18] 1 is a flow diagram of a method of operating a position tracking system of an HMD system to track position, orientation, and / or movement of components of the HMD system during use, according to an example embodiment of the present disclosure.
[0027] [Figure 19] 1 is a flow diagram of a method for adaptively adjusting the brightness of multiple light sources or optical detectors of a position tracking system of an HMD system according to an example embodiment of the present disclosure.
[0028] [Figure 20] FIG. 13 is a flow diagram for a method for adaptively adjusting the brightness of multiple light sources or optical detectors of a position tracking system of an HMD system based on changes in one or more parameters, according to an example embodiment of the present disclosure.
[0029] [Figure 21] FIG. 1 is a flow diagram of a method for compensating for non-uniform brightness of a light source of a position tracking system of an HMD system according to an example embodiment of the present disclosure.
[0030] [Figure 22]FIG. 1 is a flow diagram of a method for adaptively enabling and disabling components (e.g., light sources, optical detectors) of a tracking subsystem of an HMD system according to an example embodiment of the present disclosure.
[0031] [Figure 23] FIG. 13 is a flow diagram for a method of operating a position tracking system of an HMD system to track the position, orientation and / or movement of components of the HMD system by fusing inertial sensor data, optical sensor data, and image data, according to an example embodiment of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0032] In the following description, certain specific details are set forth to provide a thorough understanding of various disclosed implementations. However, those skilled in the art will recognize that implementations may be practiced without one or more of these specific details, or with other methods, components, materials, etc. In other instances, well-known structures related to computer systems, server computers, and / or communication networks have not been shown or described in detail to avoid unnecessarily obscuring the description of the implementations.
[0033] Unless the context otherwise requires, throughout this specification and the claims which follow, the word "comprising" is synonymous with "including" and is inclusive or open-ended (i.e., does not exclude additional, unrecited elements or method actions).
[0034] Throughout this specification, a reference to "one implementation" or an "implementation" means that a particular feature, structure, or characteristic described in connection with that implementation is included in at least one implementation. Thus, the appearances of the phrase "in one implementation" or "in an implementation" in various places throughout this specification are not necessarily all referring to the same implementation. Furthermore, particular features, structures, or characteristics may be combined in any suitable manner in one or more implementations.
[0035] As used in this specification and the appended claims, the singular forms "a," "an," and "the," and the plural forms include plural referents, unless the context clearly dictates otherwise. It should also be noted that the term "or" is generally used in its sense to include "and / or," unless the context clearly dictates otherwise.
[0036] The headings and abstracts of the disclosure provided herein are for convenience only and do not interpret the scope or meaning of the implementations.
[0037] One or more implementations of the present disclosure relate to systems and methods for accurately tracking the position of components (e.g., HMD, controller, peripherals) of a head mounted display (HMD) system. In at least some implementations, the HMD includes a support structure that holds a forward-facing camera ("forward camera" or "front camera") and multiple angle-sensing detectors or light sources. Similarly, one or more controllers may include multiple angle-sensing detectors or light detectors. In other implementations, the HMD does not include a forward camera. The forward camera may capture image sensor data in the field of view of the forward camera at a first frame rate (e.g., 30 Hz, 90 Hz). In at least some implementations, the HMD system may not include an angle-sensing detector or may include other types of optical detectors (e.g., photodiodes). Thus, the systems and methods described herein may utilize non-angle-sensing detectors or angle-sensing detectors, as appropriate.
[0038] As described further below, during operation, one or more fixed or movable light sources (e.g., IR LEDs) may emit light. The light sources may be coupled to the HMD, the controller, a fixed object (e.g., a base station) located in the environment, etc. Each of the angle-sensing detectors captures sensor data in the field of view of each of the angle-sensing detectors at a second frame rate (e.g., 1000 Hz, 2000 Hz) that may be greater than the first frame rate of the forward camera (if present). In at least some implementations, the field of view of the angle-sensing detectors may be narrower than the field of view of the forward camera, but this is not required. For example, the forward camera may have a relatively wide forward camera field of view of 90°, 120°, or 150°, and each of the angle-sensing detectors may have a relatively narrow sensor IC field of view (e.g., 25°, 45°, 75°). In at least some implementations, the angle-sensing detector fields of view may collectively cover at least a majority of the forward camera field of view, or a much larger portion than the forward camera field of view, with each of the angle-sensing detector fields of view overlapping a different portion of the forward camera field of view.
[0039] During operation, at least one processor operably coupled to the multiple angle-sensing detectors may receive sensor data capturing light from multiple light sources (e.g., LEDs, lasers, other light sources). The at least one processor may process the received image sensor data to track a position of a component of the head mounted display based at least in part on the processing of the received image sensor data. For example, the at least one processor may fuse sensor data from the angle-sensing detectors to track one or more features present in the environment. The at least one processor may utilize machine learning techniques, solvers, or another method to process the sensor data to determine a position (e.g., location, orientation, movement) of one or more components of the HMD system. In at least some implementations, the sensor data may be fused with sensor data from other sensors, such as sensor data from a forward-facing camera or an inertial measurement unit (IMU) of an HMD system component. In at least some implementations, one or more scattered light detection modules, or "scattered light detectors," may be used to detect when light is scattered or reflected before reaching one or more angle-sensing detectors, and such light may be ignored by the tracking system because the angle does not accurately indicate the location of the light source from which the light was emitted. Using this technique, the accuracy of position tracking may be greatly improved. Various features of implementations of the present disclosure are described in detail below with reference to the figures.
[0040] 1 is a schematic diagram of a networked environment 100 including a local media rendering (LMR) system 110 (e.g., a gaming system) that includes a local computing system 120 suitable for performing at least some of the techniques described herein, a display device 180 (e.g., an HMD device having two display panels, one for each eye), and one or more controllers 182. In the illustrated embodiment of FIG. 1, the local computing system 120 is communicatively connected to the display device 180 via a transmission link 115 (which may be wired or tethered, such as via one or more cables (cable 220) as shown in FIG. 2, or may alternatively be wireless). The controller 182 may be coupled to the local computing system 120 or the display device 180 via suitable wired or wireless links 186 and 184, respectively. In other embodiments, local computing system 120 may provide encoded image data for display via a wired or wireless link to a panel display device (e.g., a TV, console, or monitor), each comprising one or more addressable pixel arrays, whether in addition to or instead of HMD device 180. In various embodiments, local computing system 120 may include a general-purpose computing system, a gaming console, a video stream processing device, a mobile computing device (e.g., a mobile phone, PDA, or other mobile device), a VR or AR processing device, or other computing system.
[0041] In the illustrated embodiment, local computing system 120 has components including one or more hardware processors (e.g., central processing units, or "CPUs") 125, memory 130, various I / O ("input / output") hardware components 127 (e.g., a keyboard, a mouse, one or more gaming controllers, speakers, a microphone, an IR transmitter and / or receiver, etc.), a video subsystem 140 including one or more dedicated hardware processors (e.g., graphics processing units, or "GPUs") 144 and video memory (VRAM) 148, computer-readable storage 150, and a network connection 160. Also in the illustrated embodiment, an embodiment of a tracking subsystem 135 executes in memory 130 to execute the described techniques, such as by using CPU 125 and / or GPU 144 to perform automated operations implementing at least some of the described techniques, and memory 130 may optionally further execute one or more other programs 133 (e.g., for generating video or other images to be displayed, such as game programs). As part of automated operations implementing at least some of the techniques described herein, tracking subsystem 135 and / or programs 133 executing in memory 130 may store or retrieve various types of data, including data structures in storage 150, in an example database; in this example, the data used may include various types of image data information in database ("DB") 154, various types of application data in DB 152, various types of configuration data in DB 157, and may include additional information such as system data or other information.
[0042] LMR system 110, in the illustrated embodiment, is also communicatively connected via one or more computer networks 101 and network link 102 to an exemplary network-accessible media content provider 190 that may further provide content to LMR system 110 for display, whether in addition to or instead of image generator 133. For the sake of brevity, some details about the network-accessible media content provider are not shown, but media content provider 190 may include one or more computing systems (not shown), each of which may have components similar to those of local computing system 120, including one or more hardware processors, I / O components, local storage devices and memory.
[0043] 1, display device 180 is shown as distinct and separate from local computing system 120, it will be appreciated that in certain embodiments, some or all of the components of local media rendering system 110 may be integrated or housed within a single device, such as a mobile gaming device, a portable VR entertainment system, an HMD device, etc. In such embodiments, transmission link 115 may include, for example, one or more system bus and / or video bus architectures.
[0044] As one example involving operations performed locally by local media rendering system 120, assume that the local computing system is a gaming computing system whereby application data 152 includes one or more gaming applications executing via CPU 125 using memory 130, and various video frame display data is generated and / or processed by image generator 133, such as in combination with GPU 144 of video subsystem 140. To provide a high quality gaming experience, a high volume of video frame data (corresponding to a high image resolution per video frame, and a high "frame rate" of approximately 60-180 such video frames per second) is generated by local computing system 120 and provided to display device 180 via wired or wireless transmission link 115.
[0045] It will also be understood that computing system 120 and display device 180 are merely exemplary and are not intended to limit the scope of the present disclosure. Instead, computing system 120 may include multiple interacting computing systems or devices and may be connected to other devices not shown, including through one or more networks such as the Internet, via the Web, or via a private network (e.g., a mobile communications network, etc.). More generally, computing systems or other computing nodes may include any combination of hardware or software capable of interacting and performing the types of functions described, including, but not limited to, desktop or other computers, gaming systems, database servers, network storage devices and other network devices, PDAs, mobile phones, wireless phones, pagers, electronic organizers, Internet appliances, television-based systems (e.g., using set-top boxes and / or personal / digital video recorders), and various other consumer products that include appropriate communications capabilities. Display device 180 may similarly include one or more devices having one or more display panels of various types and forms, and may optionally include various other hardware and / or software components.
[0046] Additionally, functionality provided by tracking subsystem 135 may be distributed across one or more components (e.g., local and remote processing systems, HMDs, controllers, base stations) in some embodiments, and in some embodiments, some of the functionality of tracking subsystem 135 may not be provided and / or other additional functionality may be available. It will also be understood that while various items are shown as being stored in memory or on storage during use, these items or portions thereof may be transferred between memory and other storage devices for memory management or data integrity. Thus, in some embodiments, some or all of the described techniques may be performed by hardware including one or more processors or other configured hardware circuits or memory or storage, such as when configured by one or more software programs (e.g., by tracking subsystem 135 or components thereof) and / or by data structures (e.g., by execution of software instructions of one or more software programs and / or by storage of such software instructions and / or data structures). Some or all of the components, systems and data structures may be stored (e.g., as software instructions or structured data) on a non-transitory computer-readable storage medium, such as a hard disk or flash drive or other non-volatile storage device, volatile or non-volatile memory (e.g., RAM), network storage device, or portable media product that is read by an appropriate drive (e.g., DVD disk, CD disk, optical disk, etc.) or via an appropriate connection.The systems, components, and data structures may in some embodiments be transmitted as a generated data signal (e.g., as part of a carrier wave or other analog or digital propagated signal) over a variety of computer-readable transmission media, including wireless-based media and wired / cable-based media, and may take a variety of forms (e.g., as part of a single or multiplexed analog signal, or as a number of discrete digital packets or frames). Such computer program products may take other forms in other embodiments. Thus, the invention may be practiced with other computer system configurations.
[0047] 2 illustrates an example environment 200 in which at least some of the described techniques are used with an example HMD device 202 coupled to a video rendering computing system 204 via a tethered connection 220 (or a wireless connection in other embodiments) to provide a virtual reality display to a human user 206. The user wears the HMD device 202 and receives display information of a simulated environment that differs from the actual physical environment from the computing system 204 via the HMD device, which functions as an image rendering system that provides images of the simulated environment, such as images generated by a game program and / or other software program running on the computing system, to the HMD device for display to the user. The user is further able to move around within a tracked volume 201 of the actual physical environment 200 in this example, and may further have one or more I / O ("input / output") devices that allow the user to further interact with the simulated environment, which in this example include handheld controllers 208 and 210.
[0048] In the illustrated example, the environment 200 may include one or more base stations 214 (two are shown, labeled base stations 214a and 214b) that may facilitate tracking of the HMD device 202 or the controllers 208 and 210. As the user moves from place to place or re-orients the HMD device 202, the position of the HMD device is tracked, enabling, for example, a corresponding portion of the simulated environment to be displayed to the user on the HMD device, and the controllers 208 and 210 may further utilize similar techniques for use in tracking the position of the controller (and, optionally, to use that information to help determine or verify the position of the HMD device). After the tracked position of the HMD device 202 is known, the corresponding information is transmitted via the tether 220 or wirelessly to the computing system 204, which uses the tracked position information to generate one or more subsequent images of the simulated environment for display to the user.
[0049] The optical tracking described herein may be used in combination with various methods of position tracking, including, but not limited to, acoustic, inertial, or magnetic tracking, among others.
[0050] In at least some implementations, at least one of the HMD device 202 and the controllers 208 and 210 may include one or more optical receivers or sensors that may be used to implement tracking functions or other aspects of the present disclosure. In at least some implementations, at least one of the HMD device 202, the controllers 208 and 210, or other components may include one or more light sources (e.g., LEDs) that may emit light that is detected by one or more of the optical receivers. The light sources may be in a fixed location or may be on a movable component, such as the HMD device or the controller.
[0051] In at least some implementations, in addition to or instead of generating fixed point sources, the base stations 214 may each scan with an optical signal over the tracked volume 201. Depending on the requirements of each particular implementation, each base station 214 may generate more than one optical signal. For example, while a single base station 214 is typically sufficient for six degrees of freedom tracking, in some embodiments multiple base stations (e.g., base stations 214a, 214b) may be necessary or desirable to provide robust room-wide tracking for the HMD device and peripherals. In this example, optical receivers such as angle-sensing detectors or scattered light detectors are incorporated into the HMD device 202 and / or other tracked objects, such as the controllers 208 and 210. In at least some implementations, the optical receivers may be paired with accelerometer and gyroscope inertial measurement units ("IMU") on each tracked device to support low-latency sensor fusion.
[0052] In at least some implementations, each base station 214 comprises two rotors that scan a straight beam across the tracked volume 201 on mutually orthogonal axes. At the beginning of each scanning cycle, the base station 214 may emit an omnidirectional light pulse (called a "synchronization signal") that is visible to all sensors toward the tracked object. Each sensor therefore calculates a unique angular position in the scanning volume by timing the duration between the synchronization signal and the beam signal. The sensor distance and orientation may be determined using multiple sensors fixed to a single rigid body.
[0053] One or more sensors positioned on the tracked object (e.g., HMD device 202, controllers 208 and 210) may include optoelectronic devices capable of detecting modulated light from the rotor. For visible or near infrared (NIR) light, silicon photodiodes and suitable amplifier / detector circuitry may be used. Because the environment 200 may contain stationary and time-varying signals (optical noise) with wavelengths similar to those of the base station 214 signal, in at least some implementations, the base station light may be modulated to facilitate distinguishing from any interfering signals and / or filtering the sensor from any wavelengths of radiation other than those of the base station signal. As described further below, at least some implementations of angle-sensing detectors may be used to track one or more components of the HMD system, and one or more scattered light detectors may be used to ignore light that may be scattered or reflected before being detected by the optical detector.
[0054] Inside-out tracking is also a type of position tracking that can be used to track the position of the HMD device 202 and / or other objects (e.g., controllers 208 and 210, tablet computers, smartphones). Inside-out tracking differs from outside-in tracking by the location of the camera or other sensor used to determine the location of the HMD components. With inside-out tracking, the camera or sensor is located on the HMD component or object being tracked, whereas in outside-out tracking, the camera or sensor is placed in a stationary position in the environment.
[0055] An HMD that uses inside-out tracking uses one or more sensors to "look out" to determine how its position changes relative to the environment. As the HMD moves, the sensors recalibrate its location in the room and the virtual environment responds accordingly in real time. This type of positional tracking can be achieved with or without markers placed in the environment. A camera placed on the HMD observes features of the surrounding environment. When using markers, the markers are designed and placed in a specific area so that they are easily detected by the tracking system. When using "markerless" inside-out tracking, the HMD system uses distinctive features that are inherently present in the environment (e.g., natural features) to determine position and orientation. The HMD system's algorithms identify specific images or shapes and use them to calculate the device's position in space. Data from the accelerometer and gyroscope can also be used to improve the accuracy of the positional tracking.
[0056] FIG. 3 illustrates information 300 showing a front view of an example HMD device 344 as worn on the head of a user 342. The HMD device 344 includes a front structure 343 supporting a front or forward camera 346 and one or more types of multiple angle-sensing detectors 348a-348f (collectively 348), or other types of optical detectors. As one example, some or all of the angle-sensing detectors 348, such as optical sensors that detect and use light information emitted from one or more external devices (not shown, e.g., base station 214, controller, FIG. 2), may help determine the location and orientation of the device 344 in space. The angle-sensing detectors 348 may be any type of detector that acts to detect the angle of arrival of light emitted from a light source. Non-limiting examples of angle-sensing detectors include photodiode detectors (e.g., bi-cell detectors, quad-cell detectors), position-sensing detectors using resistive sheets, and the like.
[0057] As shown, the forward camera 346 and the angle-sensing detector 348 are directed forward toward the actual scene or environment (not shown) in which the user 342 operates the HMD device 344. More generally, the angle-sensing detector 348 may be directed toward other areas (e.g., up, down, left, right, back) and detect light from various sources, such as a controller (e.g., held by the user 342) or objects mounted in various locations (e.g., walls, ceilings). The actual physical environment may include, for example, one or more objects (e.g., walls, ceilings, furniture, stairs, cars, trees, tracking markers, light sources, or any other type of object). The particular number of sensors 348 may be less (e.g., 2, 4) or more (e.g., 10, 20, 30, 40) than the number of sensors shown. The HMD device 344 may further comprise one or more additional components not mounted to the front structure (e.g., internal to the HMD device), such as an IMU (Inertial Measurement Unit) 347 electronic device that measures and reports specific forces, angular velocities, and / or magnetic fields surrounding the HMD device (e.g., using a combination of accelerometers and gyroscopes, and optionally magnetometers) of the HMD device 344. The HMD device 344 may further comprise additional components not shown, including one or more display panels and optical lens systems that are directed toward the user's eyes (not shown), optionally having one or more mounted internal motors for altering the alignment or other positioning of one or more of the optical lens systems and / or display panels within the HMD device.
[0058] The illustrated example of an HMD device 344 is supported on the head of a user 342 based at least in part on one or more straps 345 attached to a housing of the HMD device 344 and extending wholly or partially around the user's head. Although not shown here, the HMD device 344 may further include one or more external motors, such as those attached to one or more of the straps 345, and the automated corrective action may include using such motors to adjust such straps to correct the alignment or other positioning of the HMD device on the user's head. It will be understood that the HMD device may include other support structures not shown here (e.g., nosepieces, chin straps, etc.), whether in addition to or instead of the illustrated straps, and that some embodiments may include motors attached to one or more such other support structures to similarly adjust their shape and / or location to correct the alignment or other positioning of the HMD device on the user's head. Other display devices that are not fixed to a user's head may similarly be attached to or be part of one or more structures that affect the positioning of the display device, and in at least some embodiments may be equipped with motors or other mechanical actuators that similarly modify their shape and / or location to modify the alignment or other positioning of the display device relative to one or more pupils of one or more users of the display device.
[0059] FIG. 4 illustrates an example of a hand controller 400 in more detail. In practice, an HMD system may include two hand controllers similar or identical to the hand controller 400 of FIG. 4, which may be similar or identical to the controllers 182, 208, and 210 described above. As shown, the controller 400 has various surfaces on which angle-sensing detectors 402 are positioned. The angle-sensing detectors 402 are positioned to receive optical signals from various different directions. The controller 400 may have buttons, sensors, light controls, knobs, indicators, displays, etc., to allow for various manners of user interaction. Furthermore, as described above, in at least some implementations, one of the controller 400 and the HMD device 344 may include multiple light sources, and the other of the controller and the HMD device may include multiple angle-sensing detectors, or other types of detectors or sensors. The techniques described herein may be used for various types of position tracking, including but not limited to HMDs, controllers, and the like.
[0060] 5 shows a schematic block diagram of an HMD device 500 according to one or more implementations of the present disclosure. The HMD device 500 may be similar or identical to HMD devices described elsewhere herein. Thus, the above description of the HMD device may also apply to the HMD device 500. Furthermore, at least some of the components of the HMD device 500 may be present in other components of an HMD system, such as a controller, a base station, etc. Thus, at least some of the description below may be applicable to such other components.
[0061] The HMD device 500 includes a processor 502, a front or forward camera 504, multiple angle-sensing detectors 506 (e.g., quad-cell photodiodes, position-sensing detectors), and optionally an IMU 507 or multiple light sources 509. In some implementations, the HMD device 500 may include one of the angle-sensing detectors or light sources, and other components (e.g., controller, base station) may include the other of the angle-sensing detectors or light sources. As described below, in at least some implementations, the HMD device 500 may include one or more scattered light detection modules or scattered light detectors. This may be used to detect whether light received by one or more of the angle-sensing detectors is scattered or reflected, and therefore should be ignored. The HMD device 500 may include a display subsystem 508 (e.g., two displays and corresponding optical systems). The HMD device 500 may also include non-transitory data storage 510 that may store instructions or data for position tracking 512, instructions or data for display functions 514 (e.g., games), and / or other programs 516. The HMD system 500 may include or enable some of the functionality of the local computing system 120 or media content provider 190 shown in FIG. 1 and described above.
[0062] The HMD device 500 may also include various I / O components 518, which may include one or more user interfaces (e.g., buttons, a touchpad, a speaker, one or more wired or wireless communication interfaces, etc.). As an example, the I / O components 518 may include a communication interface that allows the HMD device 500 to communicate with an external device 520 via a wired or wireless communication link 522. As a non-limiting example, the external device 520 may include a host computer, a server, a mobile device (e.g., a smartphone, a wearable computer), a controller, etc. The various components of the HMD device 500 may be housed in a single housing, may be housed in separate housings (e.g., a host computer), or any combination thereof.
[0063] It will be understood that the computing systems and devices shown are merely exemplary and are not intended to limit the scope of the present disclosure. For example, the HMD 500 and / or external device 520 may be connected to other devices not shown, such as through one or more networks, such as the Internet, or via the Web. More generally, such computing systems or devices may comprise any combination of hardware capable of interacting and performing the types of functions described, such as, but not limited to, desktop computers, laptop computers, slate computers, tablet computers, or other computers, smartphone computing devices and other mobile phones, Internet appliances, PDAs and other electronic organizers, database servers, network storage devices and other network devices, wireless telephones, pagers, television-based systems (e.g., using set-top boxes and / or personal / digital video recorders and / or game consoles and / or media servers), and various other consumer products including appropriate intercommunication capabilities, when programmed or otherwise configured with appropriate software. For example, example systems 500 and 520 may include executable software instructions and / or data structures in at least some embodiments that, when loaded and / or executed by a particular computing system or device, may be used to program or otherwise configure that system or device to configure the processors of that system or device. Alternatively, in other embodiments, some or all of the software system may execute in memory on another device and communicate with the illustrated computing system / device via computer-to-computer communications.Additionally, while various items are shown as being stored in memory or storage at various times (e.g., in use), these items or portions thereof may be transferred between memory and storage and / or between storage devices (e.g., in different locations) for purposes of memory management and / or data integrity.
[0064] Thus, in at least some embodiments, the exemplary system is a software-based system that includes software instructions that, when executed by a processor and / or other processor means, program the processor to automatically perform the described operations for the system. Furthermore, in some embodiments, some or all of the system may be implemented or provided in other manners, such as at least partially firmware and / or hardware means, including, but not limited to, one or more application specific integrated circuits (ASICs), standard integrated circuits, controllers (e.g., by executing appropriate instructions and including microcontrollers and / or embedded controllers), field programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), etc. Some or all of the system or data structures may also be stored (e.g., as software instruction content or structured data content) on a non-transitory computer-readable storage medium, such as a hard disk or flash drive or other non-volatile storage device, volatile or non-volatile memory (e.g., RAM), network storage device, or portable media product (e.g., DVD disk, CD disk, optical disk, flash memory device, etc.) that is read by an appropriate drive or via an appropriate connection. The systems, modules, and data structures may also be transmitted as generated data signals (e.g., as part of a carrier wave or other analog or digital propagated signal) over a variety of computer-readable transmission media, which in some embodiments may take a variety of forms (e.g., as part of a single or multiplexed analog signal or as part of multiple individual digital packets or frames), including wireless-based and wired / cable-based media. Such computer program products may take other forms in other embodiments. Thus, the present disclosure may be implemented with other computer system configurations.
[0065] 6 is a schematic diagram of an environment 600 in which machine learning techniques may be used to implement a tracking subsystem for tracking an HMD device, one or more controllers, or other components, such as the tracking subsystems described herein, according to one non-limiting illustrated implementation. The environment 600 includes a model trainer 601 and an inferer 603. In the trainer 601, training data 602 is fed to a machine learning algorithm 604 to generate a trained machine learning model 606. The training data may include, for example, labeled data from angle-sensing detectors, labeled or unlabeled scattered light detector data (described below), or other types of data that specify the position and / or orientation of a particular object relative to one or more light sources (e.g., LEDs). As a non-limiting example, in an embodiment including a component (e.g., HMD, controller) having 30 angle-sensing detectors, each training sample may include information about the output from each or a subset of the angle-sensing detectors, the known or inferred position or orientation of the component, and the position or direction of one or more light sources. As described below, each angle sensitive detector may output a single data point (e.g., an angle) or may output multiple data points, such as two or four signals each indicating the power or intensity of light received at a particular active element (e.g., a sub-detector or cell, a resistive sheet, etc.) of the angle sensitive detector. The data may also include data from one or more scattered light detectors, such as the scattered light detectors described below. Such data may include polarization information (e.g., type or degree of polarization), information about whether the detected light is scattered, or other types of data.
[0066] The training data 602 may be obtained from multiple users of the HMD system and / or from a single user. The training data 602 may be obtained in a controlled environment and / or during actual use by a user ("field training"). Additionally, in at least some implementations, the model 606 may be updated or calibrated from time to time (e.g., periodically, continuously, after specific events) to provide accurate position tracking predictions.
[0067] In the reasoning unit 603, the runtime data 608 is provided as input to a trained machine learning model 606, which generates a position tracking prediction 610. Continuing with the above example, output data (e.g., intensity data, angle data) of the angle-sensing detector, optionally information about one or more light sources, and optionally information from one or more scattered light detectors may be provided as input to the trained machine learning model 606, which may process the data and predict the position of the component. The tracking prediction 610 may then be provided to one or more components associated with the HMD device, such as one or more VR or AR applications, one or more display or rendering modules, one or more mechanical controls, one or more additional position tracking subsystems, etc.
[0068] The machine learning techniques utilized to implement the features discussed herein may include any type of suitable structure or technique. As non-limiting examples, the machine learning model 606 may include one or more of a decision tree, a statistical hierarchical model, a support vector machine, an artificial neural network (ANN), such as a convolutional neural network (CNN) or a recurrent neural network (RNN) (e.g., a long short-term memory (LSTM) network), a mixture density network (MDN), a hidden Markov model, or others may be used. In at least some implementations, such as those utilizing RNNs, the machine learning model 606 may utilize past input (memory, feedback) information to predict the position of one or more HMD components. Such implementations may advantageously utilize motion information or sequential data to determine previous position predictions, which may provide more accurate real-time position predictions.
[0069] 7 is a flow diagram of an example method 700 of operating an HMD system to track the position of an HMD component during use. Method 700 may be performed, for example, by the position tracking system or module 512 of the HMD system 500 shown in FIG. As described above, method 700 may be used to track the position of any component, such as an HMD device, one or more controllers, etc.
[0070] The illustrated implementation of method 700 begins at operation 702, where a first HMD system component having a plurality of angle-sensing detectors is provided. The plurality of angle-sensing detectors may act to detect light emitted from one or more light sources that may be fixedly positioned (e.g., mounted on a wall or ceiling) or may be movable (e.g., coupled to an HMD or controller). During operation, each of the plurality of angle-sensing detectors captures sensor data in a respective field of view of the plurality of angle-sensing detectors at a frame rate. The sensor data may include any type of data that is usable by a control circuit (e.g., a processor) to detect the presence and orientation of the light source relative to the angle-sensing detector. In at least some implementations, each of the angle-sensing detectors may include one or more sensors (e.g., photodiodes) having image sensing circuitry and image processing circuitry. The angle-sensing detectors may output relatively raw data (e.g., light intensity or power data) or processed data (e.g., incident angle data).
[0071] A second HMD system component may be provided that includes a number of light sources (e.g., near-IR LEDs) at 704. The second HMD system component may include a controller, an HMD device, or a light source positioned, for example, in a fixed location (e.g., ceiling, wall).
[0072] At 706, at least one processor of the HMD system may cause the light sources to emit light. The light sources may be illuminated in a manner that allows each of the angle-sensing detectors to simultaneously detect light from a single light source, or more generally, in a manner that may enable the system to determine from which light source the light detected by the angle-sensing detectors was received and illuminated. This may be accomplished by modulating or multiplexing the illumination of the light sources using any suitable type of technique, such as time multiplexing, wavelength multiplexing, frequency multiplexing, polarization multiplexing, or other techniques that allow the system to know the source of the light received from each of the angle-sensing detectors during use.
[0073] As an example of time multiplexing, the at least one processor may illuminate only a subset of the light sources simultaneously (e.g., 1, 2, 4). For example, the at least one processor may sequentially illuminate the light sources and collect sensor data responsive to each of the light sources, one subset at a time.
[0074] As an example of wavelength multiplexing, different subsets of light sources may emit light of different wavelengths and different subsets of angle-sensitive detectors may serve to detect light of the different wavelengths. Thus, light sources having different wavelengths may be simultaneously illuminated and detected by corresponding wavelength-sensitive detectors.
[0075] As an example of frequency multiplexing, a subset of light sources may be illuminated in a determined pattern or frequency that is detectable by an angle-sensing detector to identify a particular source of light.
[0076] As an example of polarization multiplexing, a subset of the light sources may be polarized differently (e.g., linearly, circularly) and a corresponding subset of the angle-sensitive detectors may be configured to detect a particular polarized light (e.g., using a polarizer that passes light having the corresponding polarization) allowing multiple light sources to be illuminated simultaneously.
[0077] Other exemplary techniques for illuminating the light source may include one or more of frequency or wavelength division multiple access (FDMA or WDMA), time division multiple access (TDMA), code division multiple access (CDMA), and orthogonal frequency division multiple access (OFDMA). In at least some implementations, the illumination pattern or scheme may be configured to be orthogonal with respect to one or more of the time, wavelength, or frequency of the electrical system (e.g., 120 Hz, which is twice the 60 Hz frequency used in the U.S. electrical system, or 100 Hz, which is twice the 50 Hz frequency used in the European electrical system). Furthermore, modulation schemes may be applied to the light amplitude of each individual marker or LED, or to one or more groups of two or more markers or LEDs, or any combination thereof. In at least some implementations, two or more of the light emitting, light detecting, or processing components (e.g., the host system) may be synchronized with one another, thereby providing additional advantages, for example, during the use of CDMA techniques and the like.
[0078] At 708, at least one processor associated with the HMD system may receive sensor data from a plurality of angle-sensing detectors. As described above, for each angle-sensing detector, the sensor data may indicate an angle of arrival of light emitted from a known light source. At 710, at least one processor associated with the HMD system may optionally receive sensor data from an inertial tracking function or an inertial measurement unit (IMU) that serves to provide sensor data from one or more additional sensors.
[0079] At 712, at least one processor associated with the HMD system may process the received sensor data. For example, the at least one processor may fuse some or all of the sensor data together to track one or more features present in the environment in which the HMD system operates. The sensor data may include sensor data from multiple angle-sensing detectors, and optionally, sensor data from an IMU or camera. The at least one processor may process the sensor data using, for example, a machine learning model (e.g., model 606) or another solver. As described further below, at least some implementations of the at least one processor may ignore data from one or more sensors determined to be likely to have scattered or reflected received light.
[0080] At 714, at least one processor associated with the HMD system may track the positions (e.g., location, orientation, or movement) of components of the HMD system in real time while the HMD system is being used by a user in the environment. During operation of the HMD, method 700 may continue to continuously track the positions of the components of the HMD system, as described above.
[0081] FIG. 8 illustrates a perspective view of an exemplary angle-sensitive detector 800 that may be used in one or more of the implementations of the present disclosure. In this example, the angle-sensitive detector 800 includes an angle-sensitive photodiode structure 804. The angle-sensitive photodiode structure 804 includes a photodiode 806, a second linear polarizer 808, a spatially varying polarizer 810, and a first linear polarizer 812. The photodiode 806 may be any device that receives light, determines an intensity associated with the light, and outputs a signal (or data) representing the intensity. The first and second linear polarizers 812, 808 may each be any type of optical filter into which light is incident. The first and second linear polarizers 812, 808 may output linearly polarized components of the incident light (e.g., vertically polarized or horizontally polarized) and filter out (e.g., reflect or reject, absorb) other components of the incident light.
[0082] In at least some implementations, the spatially varying polarizer 810 can be formed from a multi-twist retarder (MTR), which is a waveplate-like retarder film that provides precise, customized levels of broadband, narrowband, or multiband retardation in a single thin film. More specifically, an MTR includes two or more twisted liquid crystal (LC) layers on a single substrate with a single alignment layer. Subsequent LC layers are directly aligned by previous layers, allowing for simple fabrication, achieving automatic interlayer alignment, and resulting in a monolithic film with a continuously varying optical axis.
[0083] The space varying polarizer 810 may include a retarder formed from a birefringent material. Birefringence is a property of a material that has a refractive index that depends on the polarization and propagation direction of the light. A retarder changes the polarization state or phase of light traveling through it. A retarder may have a slow axis (or special axis) and a fast axis (or normal axis). When polarized light travels through a retarder, light along the fast axis travels faster than light along the slow axis.
[0084] As shown in FIG. 8, the second linear polarizer 808, the spatially varying polarizer 810, and the first linear polarizer 812 may be stacked on the photodiode 806, forming successive layers on the photodiode 806. Note that although the polarizers 812, 808 are described herein as linear polarizers, in various embodiments, the polarizers 812, 808 may be non-linear polarizers, for example, elliptical or circular polarizers. The polarizers 812, 808 may have the same light filtering properties and may similarly or identically reject or pass light having a particular polarization. In this simplified example, the angle sensitive detector 800 includes a cover 814 having an aperture 816 that allows light 818 from a light source 820 to pass through. As shown, the light 818 passing through the aperture 816 forms a light spot 822 that may be electrically characterized to determine the angle of the light 818 and, therefore, the angle of the light source 820 relative to the angle sensitive detector 800. As described below, the systems and methods of the present disclosure may utilize multiple light sources and angle-sensing detectors to determine the position of components of an HMD system.
[0085] 9 illustrates the first linear polarizer 812, the spatially varying polarizer 810, and the second linear polarizer 808 of the angle-sensing photodiode structure 804 and the polarization of light 818 or light spot 822 passing through them to reach the photodiode 806. Initially, the light 818 is incident on the first linear polarizer 812. The light 818 may have any polarization and therefore, in at least some implementations, may be said to be unpolarized. In at least some implementations, the light may be linearly polarized, circularly polarized, or generally elliptically polarized.
[0086] The first linear polarizer 812 passes the linear polarization component 824 of the light 818 and rejects (absorbs or reflects) the remaining polarization components of the light 818. Although the first linear polarizer 812 is shown as a vertical polarizing filter, in various embodiments the first linear polarizer 812 can be a horizontal polarizing filter or a circular polarizing filter, among others.
[0087] The linearly polarized component 824 then enters the spatially varying polarizer 810, which is positioned below the first linear polarizer 812. The spatially varying polarizer 810 is adjusted so that the linearly polarized component 824 (or any incident light) has light polarization properties that vary according to the position on the spatially varying polarizer 810 at which it enters the spatially varying polarizer 810. In the example shown in Figure 9, the spatially varying polarizer 810 modifies the linearly polarized component 824 that is incident on it.
[0088] The manner in which the spatially varying polarizer 810 modifies the incident linearly polarized component 824 varies according to the position at which the incident linearly polarized component 824 is incident on the spatially varying polarizer 810. The position may be substantially the same as the position at which the light 818 is incident on the angle-sensing photodiode structure 804.
[0089] In this illustrative example, at a first end 826 of the spatially varying polarizer 810 (shown at the top right), the spatially varying polarizer 810 preserves the incoming linear polarization component 824 as a vertically polarized optical signal. The spatially varying polarizer 810 passes the vertically polarized light and blocks other polarization components. The linear polarization component 824 that is incident on the first end 826 is passed through unchanged.
[0090] The polarization filtering characteristics of the spatial variation polarizer 810 may vary gradually as a function of distance to the first end, as a non-limiting example. At the second end 828 of the spatial variation polarizer 810 (shown at the bottom left), the spatial variation polarizer 810 converts the incoming vertically polarized linear polarization component 824 approximately into a horizontally polarized optical signal. In particular, at the second end 828, the spatial variation polarizer 810 has a linear polarization orientation of 175°. Thus, at the second end 828, the spatial variation polarizer 810 outputs light with a horizontal polarization component that is larger than the vertical polarization component. Conversely, near the center of the spatial variation polarizer 810, the spatial variation polarizer 810 has a linear polarization orientation of about 135°, and thus the spatial variation polarizer 810 rotates the polarization of the incoming linear polarization component 824 (with vertical polarization) by an angle of about 45° toward horizontal polarization. Light exiting the spatially varying polarizer 810 near its center has a vertically polarized component that has the same magnitude as the horizontally polarized component.
[0091] The spatially varying properties of the space varying polarizer 810 allow for identification of the position or possible position at which the linearly polarized component 824 is incident. The space varying polarizer 810 passes filtered light 830 as shown in FIG. 9. The intensity of the filtered light 830, in either horizontal or vertical polarization, represents the position or possible position at which the linearly polarized component 824 is incident on the space varying polarizer 810. When the linearly polarized component 824 is incident on the first end 826, the filtered light 830 has the highest magnitude of vertical polarization. The magnitude of the vertical polarization may be inversely proportional to the distance from the first end 826.
[0092] The filtered light 830 then enters a second linear polarizer 808, which operates to remove any horizontal components and pass the vertical light components of the filtered light 830. The second linear polarizer 808 passes the filtered linearly polarized component 832. The second linear polarizer 808 may ensure that the light passed to the photodiode 806 contains exclusively vertically polarized light and excludes horizontally polarized light.
[0093] Photodiode 806 receives the filtered linearly polarized component 832 and detects the intensity of the filtered linearly polarized component 832. The intensity of the filtered linearly polarized component 832 represents the position or set of positions at which light 818 is incident on the spatially varying polarizer 810 and, consequently, the angle-sensitive photodiode structure 804.
[0094] It should be noted that the specific polarization described with reference to Figure 9 is made as an example for ease of explanation. In alternative embodiments, different polarizers, polarizations, or polarization patterns may be utilized. For example, instead of linear polarization, the first and second linear polarizers 812, 808 and the spatially varying polarizer 810 may utilize circular polarization, elliptical polarization, or any other type of polarization.
[0095] Referring again to FIG. 8, the size and position of the aperture 816 defines the size of the light spot 822 formed on the angle-sensitive photodiode structure 804. The intensity detected by the photodiode 806 represents the intensity of the light spot 822 that has passed through (or been filtered by) the first and second linear polarizers 812, 808 and the spatially varying polarizer 810. The intensity of the light spot 822 may be the sum of the intensities of the light rays that make up the light spot 822. The fact that the linearly polarized component 824 of the light spot 822 is incident on an area of the spatially varying polarizer 810, rather than on a single point, provides an additional degree of freedom in the design of the spatially varying polarizer 810 to allow for improved position detection. The spatially varying polarizer 810 may have characteristics that vary by area to allow for improved position detection of the light spot 822.
[0096] It should be noted that in some embodiments, one of the first and second linear polarizers 812, 808 may be omitted. In one embodiment, the first linear polarizer 812 may be omitted and only horizontally polarized light may be emitted for position or angle determination.
[0097] In one embodiment, improved position detection may be achieved by using a photodiode 806 having multiple local cells.
[0098] 10 illustrates the first linear polarizer 812, the spatially varying polarizer 810, and the second linear polarizer 808 of the angle-sensitive photodiode structure 804 and the polarization of the light 818 or light spot 822 passing therethrough to reach the photodiode 806. In FIG. 10, the photodiode 806 is a quad-cell photodiode that includes four separate photodiode active areas or elements 802a-802d separated by small gaps. It should be understood that other types of angle-sensitive detectors may also be used, such as photodiode detectors with fewer or more cells, position-sensitive detectors (PSDs), etc.
[0099] The active area (e.g., anode) of each element 802a-802d is individually accessible, so that a spot of light illuminating a single quadrant can be electrically characterized as being in that quadrant only. The energy of the spot of light is distributed between adjacent elements 802a-802d, and the difference in the electrical contribution to each element defines the relative position of the spot of light with respect to the center of the angle-sensitive detector. The relative intensity profiles of the elements 802a-802d can be used in combination with the relative intensity profile of the spatially varying polarizer 810 to determine the position of the spot of light.
[0100] In one embodiment, the spatial variation polarizer 810 may be switched off to identify the baseline intensity. The spatial variation polarizer 810 may be coupled to a controller. The controller described herein, which may be a microcontroller or microprocessor, or in particular one or more of the controllers 182 or the processor 502, may switch the spatial variation polarizer 810 on or off. When the spatial variation polarizer 810 is switched on, the spatial variation polarizer 810 filters the light as described herein. Conversely, when the spatial variation polarizer 810 is switched off, the spatial variation polarizer 810 may cease polarization filtering and instead pass the linear polarization component 824 intact.
[0101] When the spatially varying polarizer 810 is switched off, the photodiode 806 detects the intensity of the light 818 (or light spot 822) without the attenuation performed by the spatially varying polarizer 810 in combination with the first and second linear polarizers 812, 808. The detected intensity may be treated as a baseline intensity or a maximum detected intensity. The baseline intensity or the maximum detected intensity may correspond to the intensity of the light 818 incident on the first end 826.
[0102] When the spatially varying polarizer 810 is switched on, the photodiode 806 detects the intensity of the light 818 (or light spot 822) with appropriate position-dependent polarization filtering. The relationship between the detected intensity of the light 818 (or light spot 822) when the position-dependent polarization filtering is appropriate to the baseline intensity indicates the position or set of positions at which the light 818 is incident on the angle-sensing photodiode structure 804.
[0103] As described herein, the polarization conversion performed by the spatially varying polarizer 810 in combination with the filtering of the first and second linear polarizers 812, 808 results in a spatially varying amplitude (or intensity) attenuation of the light 818. The amplitude (or intensity) is then detected by the photodiode 806 and used for position determination.
[0104] 11A and 11B show top and perspective views, respectively, of an exemplary angle sensitive detector 1100 that may be used in one or more of the implementations of the present disclosure. In this example, the angle sensitive detector 1100 includes a quad-cell photodiode that includes four separate photodiode active areas or elements 1102A-1102D separated by small gaps on a common substrate 1104. It should be understood that other types of angle sensitive detectors may also be used, such as photodiode detectors having fewer or more cells, position sensitive detectors, etc.
[0105] In the non-limiting illustrated example, the active area (e.g., anode) of each element 1102A-1102D is individually accessible, so that a spot of light illuminating a single quadrant can be electrically characterized as being in that quadrant only. When a spot of light is converted in the angle-sensitive detector 1100, the energy of the spot of light is distributed among adjacent elements 1102A-1102D, and the difference in the electrical contribution to each element defines the relative position of the spot of light with respect to the center of the angle-sensitive detector. The relative intensity profiles of the elements 1102A-1102D can be used to determine the position of the spot of light.
[0106] In this simplified example, the angle sensitive detector 1100 includes a cover 1110 having an opening 1108 that allows light 1114 from a light source 1112 to pass through. As shown, the light 1114 that passes through the opening 1108 to form a light spot 1106 can be electrically characterized to determine the angle of the light 1114, and thus the angle of the light source 1112, relative to the angle sensitive detector 1100. As described below, systems and methods of the present disclosure can utilize multiple light sources and angle sensitive detectors to determine the position of components of an HMD system.
[0107] It should be understood that the angle sensitive detectors of the present disclosure may include one or more of any suitable type of detector, including a quad cell photodiode detector, a position sensitive detector (PSD) utilizing a resistive sheet, a photodiode detector having fewer (e.g., 2) or more (e.g., 16) independent sensing elements, or any other detector that allows for detecting the angle of arrival of light emitted from a light source. Additionally, as described below, in at least some implementations, the angle sensitive detectors or light sources of the present disclosure may utilize various optical components, such as filters, lenses, polarizers, etc., to improve the functionality of the systems and methods described herein.
[0108] 12 is a simplified diagram of an environment 1200 of an HMD system that uses light sources and angle-sensing detectors to determine the position of components of the HMD system according to one non-limiting illustrated implementation. In this example, a first component 1202, such as an HMD, includes multiple light sources 1206 (two are shown, 1206a and 1206b), and a second component 1204, such as a controller of the HMD system, includes multiple angle-sensing detectors 1208 (two are shown, 1208a and 1208b). The angle-sensing detectors 1208a and 1208b are separated from each other by a known distance d1 on the second component 1204, and the light sources 1206a and 1206b are separated from each other by a known distance d2 on the first component 1202. The first and second components can be any components of the HMD system, such as an HMD, a controller, a base station, a fixed or mobile light source, a fixed or mobile angle-sensing detector, etc.
[0109] In this example, the angle-sensing detector 1208a is operative to determine that light arrives from the light source 1206a at an angle 1210 and that light arrives from the light source 1206b at an angle 1212. Similarly, the angle-sensing detector 1208b is operative to determine that light arrives from the light source 1206b at an angle 1214 and that light arrives from the light source 1206a at an angle 1216. Given the detected angles of arrival 1210, 1212, 1214 and 1216, as well as the known geometric relationship (e.g., distances d1 and d2) between the light source 1206 and the detector 1208, a method (e.g., triangulation) may be used to determine and track the relative position, orientation or movement between the first component 1202 and the second component 1204. As described above, one or more solvers or machine learning methods may be used to determine the position of the components using sensor data from the angle-sensing detectors and / or light source data indicative of information about the light source of the HMD system.
[0110] 13 is an example 1300 of a light source 1302 and an angle-sensitive detector 1304 of one example of the present disclosure. The light source 1302 and the angle-sensitive detector 1304 may be similar or identical to any of the light sources and angle-sensitive detectors described herein and may be used in any of the implementations of the present disclosure. In the example shown, the light source 1302 may include an optical subsystem 1306 and the angle-sensitive detector 1304 may include an optical subsystem 1308. The optical subsystems 1306 and 1308 may be identical to each other or different and each may include one or more optical components. The optical subsystems 1306 and 1308 may be integrated into the light source 1302 and the angle-sensitive detector 1304 or may be separate components. Non-limiting examples of optical components include one or more lenses, one or more polarizers, one or more filters, one or more apertures, etc. In at least some implementations, a subset of the light sources may include one type of optical subsystem, while one or more other subsets of the light sources may include another type of optical subsystem. Similarly, a subset of the angle-sensing detectors may include one type of optical subsystem, while one or more other subsets of the angle-sensing detectors may include another type of optical subsystem. As an example, the optical subsystem may include a filter that filters out visible light or other types of light. As described further above, the optical subsystem may include components that facilitate one or more of the various types of multiplexing described above, allowing multiple light sources to be illuminated simultaneously without confusion as to the source of the emitted light.
[0111] FIG. 14 is an example 1400 of a scattered light detection module or scattered light detector 1402 of the present disclosure that may be used to determine whether light received by one or more optical detectors (e.g., angle-sensing or other type detectors) was reflected or scattered before being received by the one or more optical detectors. Using such information, at least one processor may act to ignore light data determined to be scattered or reflected light signals because such signals do not directly indicate the location of the light source from which the signal was emitted. In at least some implementations, the scattered light detector 1402 may be a separate component used in combination with one or more optical detectors used for position tracking. In other implementations, the scattered light detector 1402 may be integrated into one or more optical detectors (e.g., angle-sensing detectors) used for position tracking. One or more scattered light detectors 1402 may be used in any of the embodiments of the present disclosure. Additionally, various machine learning or artificial intelligence based methods may be used to process the scattered light detector data and improve the position tracking capabilities of the tracking system of the present disclosure. For example, machine learning or other AI methods may be used to train a tracking system to use polarization information to help improve tracking fidelity.
[0112] In the non-limiting illustrated example, a scattered light detector 1402 is shown, as are first and second light sources 1408 and 1410. In practice, there may be many scattered light detectors and many light sources. As a non-limiting example, the scattered light detector 1402 may be located on one of the HMD and controller, and the light sources 1408 and 1410 may be located on the other of the HMD and controller. In at least some implementations, one or more of the scattered light detector 1402 and light sources 1408 and 1410 may be located on or coupled to a fixed object (e.g., wall, ceiling, stand) or a movable object (e.g., HMD, controller). The scattered light detector 1402 and light sources 1408 and 1410 may be similar or identical to any of the light sources and scattered light detectors described herein and may be used in any of the implementations of the present disclosure.
[0113] In the example shown, the scattered light detector 1402 may include an optical detector 1404 and an optical subsystem 1406, which may optionally be an angle-sensing detector. The light source 1408 may include a light emitter 1412 (e.g., an LED) and an optical subsystem 1414 that emits light 1420, and the light source 1410 may include a light emitter 1416 and an optical subsystem 1414 that emits light 1422. Some or all of the optical subsystems 1406, 1414, and 1418 may be the same as or different from one another and each may include one or more optical components. The optical subsystems 1406, 1414, and 1418 may be integrated into the detector 1404 and the light sources 1408 and 1410, respectively, or may be separate components. Non-limiting examples of optical components include one or more lenses, one or more polarizers, one or more retarders, one or more filters, one or more apertures, etc. In at least some implementations, a subset of the light sources may include one type of optical subsystem, while one or more other subsets of light sources may include another type of optical subsystem. Similarly, a subset of the scattered light detectors 1402 may include one type of optical subsystem, while one or more other subsets of the scattered light detectors may include another type of optical subsystem. As an example, the optical subsystem may include a filter that filters out visible light or other types of light. As described further above, the optical subsystem may include components that facilitate one or more of the various types of multiplexing described above, allowing multiple light sources to be illuminated simultaneously without confusion as to the source of the emitted light.
[0114] The design of the optical subsystems 1406, 1414, and 1418 may be adjusted such that the scattered light detector 1402 acts to detect whether light from the light sources 1408 and 1410 is scattered or reflected, or whether the light reaches the scattered light detector directly without scattering or reflection. For example, the scattered light detector 1402 may act to detect a change in the type or degree of polarization of the light emitted by the light source due to scattering or reflection. In the example shown, light 1420 from the light source 1408 is received directly by the scattered light detector 1402, while light 1422 from the light source 1410 is reflected off the surface 1423 as light 1424 that is received by the scattered light detector 1402. In this example, the light 1420 indicates the relative position of the light source 1408 with respect to the scattered light detector 1402, while the light 1424 reflected off the surface 1423 does not indicate the relative position of the light source 1410 with respect to the scattered light detector 1402. Thus, by detecting that light 1424 is scattered or reflected, the tracking system can ignore or reject light signals from one or more sensors, such as sensors of similar position and orientation as the scattered light detector, when performing position tracking, thereby improving the position tracking capabilities of the system.
[0115] There may be a number of configurations that may enable the scattered light detector 1402 to be able to detect whether light from the light sources is scattered or reflected and therefore should be ignored by one or more detectors. In general, in at least some implementations, the light emitted by the light sources 1408 and 1410 may be polarized in a manner determined by the optical systems 1414 and 1418, respectively, and the scattered light detector 1402 may be configured to distinguish between light received directly from the light sources 1408 and 1410 and light from the light sources that has been scattered or reflected before being received by the scattered light detector. For example, the type or degree of polarization of the light from the light sources may be altered as a result of scattering or specular reflection, and the scattered light detector 1402 may be configured to detect such alteration. As one non-limiting example, the optical subsystem 1414 of the light source 1408 and the optical subsystem 1418 of the light source 1410 may include one of a right-handed or left-handed circular polarizer, and the optical subsystem 1406 of the scattered light detector 1402 may include the other of a right-handed or left-handed circular polarizer. For example, the optical subsystem 1414 of light source 1408 and the optical subsystem 1418 of light source 1410 may include right-handed circular polarizers, and the optical subsystem 1406 of scattered light detector 1402 may include a left-handed circular polarizer. In this configuration, the optical subsystem 1406 of scattered light detector 1402 may be used to detect light reflected off a depolarizing surface (e.g., having a random polarization) or light reflected off a non-depolarizing surface (e.g., glass, metal, acrylic, etc.) and left-circularly polarized after reflection. If such light is above a decision threshold, the tracking system may ignore signals from one or more detectors determined to likely also have received reflected or scattered light.
[0116] An example of this configuration is shown in example 1500 of Figure 15, which shows a scattered light detector 1502 and a light source 1504. The light source 1504 includes an optical subsystem that includes a light emitter 1506 (e.g., an LED) and a right-handed circular polarizer 1508. The circular polarizer 1508 in this implementation includes a linear polarizer 1510 and a quarter-wave retarder or waveplate 1512 to provide light 1522 having right-handed circular polarization.
[0117] The scattered light detector 1502 includes an optical subsystem including an optical detector 1514 (e.g., a quad cell detector, a single cell detector) and a left-handed circular polarizer 1516. The left-handed circular polarizer 1516 includes a quarter wave retarder or wave plate 1518 and a linear polarizer 1520. Because the scattered light detector 1502 includes a circular polarizer of opposite handedness to the light source circular polarizer 1508, the scattered light detector detects light reflected via specular reflection due to the handedness of the reflected circular polarization switching to the opposite handedness (i.e., from right to left in this example).
[0118] During operation, when the scattered light detector 1502 detects scattered or reflected light (e.g., above a determined threshold), the tracking system may reject or ignore light from one or more optical sensors (e.g., sensors in a similar position or orientation as the scattered light detector) that may likely have received the same light.
[0119] FIG. 16 illustrates information 1600 showing a front view of an example HMD device 1644 when worn on the head of a user 1642. The HMD device 1644 includes a front structure 1643 that supports a front or forward camera 1646 and one or more types of multiple angle-sensing detectors 1648a-1648f (collectively 1648). As an example, some or all of the angle-sensing detectors 1648 may help determine the location and orientation of the device 1644 in space, such as light sensors for detecting and using light information emitted from one or more external devices (e.g., base station 214, controller, not shown, FIG. 2). The angle-sensing detectors 1648 may be any type of detector that serves to detect the angle of arrival of light emitted from a light source. Non-limiting examples of angle-sensing detectors include photodiode detectors (e.g., bi-cell detectors, quad-cell detectors), position-sensing detectors using resistive sheets, and the like.
[0120] As shown, the forward camera 1646 and the angle-sensing detector 1648 are directed forward toward an actual scene or environment (not shown) in which the user 1642 operates the HMD device 1644. More generally, the angle-sensing detector 1648 may be directed toward other areas (e.g., above, below, left, right, behind) to detect light from various sources, such as a controller (e.g., held by the user 1642) or objects mounted in various locations (e.g., walls, ceilings). The actual physical environment may include, for example, one or more objects (e.g., walls, ceilings, furniture, stairs, cars, trees, tracking markers, light sources, or any other type of object). The particular number of sensors 1648 may be less (e.g., 2, 4) or more (e.g., 10, 20, 30, 40) than the number of sensors shown. The HMD device 1644 may further comprise one or more additional components not mounted to the front structure (e.g., internal to the HMD device), such as an IMU (Inertial Measurement Unit) 1647 electronic device that measures and reports specific forces, angular velocities, and / or magnetic fields surrounding the HMD device (e.g., using a combination of accelerometers and gyroscopes, and optionally magnetometers) of the HMD device 1644. The HMD device 1644 may further comprise additional components not shown, including one or more display panels and optical lens systems oriented toward the user's eyes (not shown), optionally having one or more mounted internal motors for changing the alignment or other positioning of one or more of the optical lens systems and / or display panels within the HMD device.
[0121] The illustrated example of an HMD device 1644 is supported on the head of a user 1642 based at least in part on one or more straps 1645 attached to a housing of the HMD device 1644 and extending wholly or partially around the user's head. Although not shown here, the HMD device 1644 may further include one or more external motors, such as those attached to one or more of the straps 1645, and the automated corrective action may include using such motors to adjust such straps to correct the alignment or other positioning of the HMD device on the user's head. It will be understood that the HMD device may include other support structures not shown here (e.g., nosepieces, chin straps, etc.), whether in addition to or instead of the illustrated straps, and that some embodiments may include motors attached to one or more such other support structures to similarly adjust their shape and / or location to correct the alignment or other positioning of the HMD device on the user's head. Other display devices that are not fixed to a user's head may similarly be attached to or be part of one or more structures that affect the positioning of the display device, and in at least some embodiments may be equipped with motors or other mechanical actuators that similarly modify their shape and / or location to modify the alignment or other positioning of the display device relative to one or more pupils of one or more users of the display device.
[0122] The HMD device 1644 also includes a number of scattered light detectors 1650, 1652, and 1666. The scattered light detectors 1650, 1652, and 1666 may be similar or identical to any of the scattered light detectors described herein and may act to detect whether light 1660, 1664, and 1672, respectively, from light sources 1658, 1662, and 1670 associated with the HMD device 1644 has been reflected or scattered off a surface before reaching the HMD device. As described above, when scattered light is detected, sensor data from one or more sensors determined to have likely received the same light may be ignored.
[0123] In at least some implementations, a single scattered light detector may be provided for all of the detectors 1648. In other implementations, a separate scattered light detector may be provided for each of the detectors 1648, or a scattered light detector may be included as part of one or more of the detectors 1648. In the simplified example shown, the scattered light detector 1650 located on the right side of the front structure 1643 corresponds to the detectors 1648a, 1648b, and 1648e used to detect light from a light source (e.g., light source 1658) in the region 1654 to the right side of the user 1642. That is, if the scattered light detector 1650 detects reflected or scattered light, the tracking system may ignore signals from one or more of the detectors 1648a, 1648b, and 1648e that are determined to have likely received the same light due to a similar orientation as the scattered light detector 1650. Similarly, scattered light detector 1652 located to the left of front structure 1643 corresponds to detectors 1648c, 1648d and 1648g used to detect light from a light source (e.g. light source 1662) in region 1656 to the left of user 1642. Scattered light detector 1666 in the upper region of front structure 1643 corresponds to detector 1648f used to detect light from a light source (e.g. light source 1670) in region 1668 above user 1642. As explained above, multiplexing (e.g. time, wavelength, pattern, code) can be used to enable the system to know which light sources or groups of light sources light is received by detectors 1648, 1650, 1652 and 1666.
[0124] 17 shows a perspective view of an angle-sensing detector or scattered light detector 1700 that may be used in one or more of the implementations of the present disclosure. In this non-limiting example, the scattered light detector 1700 includes a quad-cell photodiode, including four separate photodiode active areas or elements 1702A-1702D separated by small gaps on a common substrate 1704. It should be understood that other types of detectors may also be used, such as photodiode detectors having fewer or more cells, position-sensing detectors, etc.
[0125] In the non-limiting example shown, the active area (e.g., anode) of each element 1702A-1702D is individually accessible, so that a spot of light illuminating a single quadrant can be electrically characterized as being in that quadrant only. When a spot of light is converted in the detector 1700, the energy of the spot of light is distributed among adjacent elements 1702A-1702D, and the difference in the electrical contribution to each element defines the relative position of the spot of light with respect to the center of the detector. The relative intensity profiles of the elements 1702A-1702D can be used to determine the position of the spot of light.
[0126] In this simplified example, detector 1700 includes an opaque cover or mask 1710 having an aperture 1708 that allows light 1714 from a light source 1712 to pass through. As shown, light 1714 passing through aperture 1708 forms a light spot 1706 that can be electrically characterized to determine the angle of light 1714, and thus the angle of light source 1712, relative to detector 1700. As described below, systems and methods of the present disclosure may utilize multiple light sources and detectors to determine the position of components of an HMD system.
[0127] In the example shown, the first circular polarizer 1716 is located proximate (e.g., next to) the light source 1712, and the second polarizer 1718 is located proximate to the detector 1700. In at least some implementations, light emitted by the light source 1712 may be polarized in a determined manner by the first circular polarizer 1716 and the second circular polarizer 1718, and the scattered light detector 1700 may be configured to distinguish between light received directly from the light source 1712 and light from the light source that has been scattered or reflected before being received by the scattered light detector 1700. In one non-limiting example, one of the first and second circular polarizers 1716 and 1718 may each include one of a right- or left-handed circular polarizer, and the other of the first and second circular polarizers 1716 and 1718 may include the other of a right- or left-handed circular polarizer. For example, the first circular polarizer 1716 of the light source 1712 may include a right-handed circular polarizer and the second circular polarizer 1718 of the scattered light detector 1700 may include a left-handed circular polarizer. In this configuration, the second circular polarizer 1718 of the scattered light detector 1700 may be used to detect light reflected off a depolarizing surface (e.g., having a random polarization) or light reflected off a non-depolarizing surface (e.g., glass, metal, acrylic, etc.) and left-circularly polarized after reflection. If such light is above a decision threshold, the tracking system may ignore signals from one or more detectors determined to likely also have received reflected or scattered light.
[0128] 18 is a flow diagram of an example method 1800 of operating an HMD system to track the position of HMD components during use. Method 1800 may be performed, for example, by the position tracking system or module 512 of the HMD system 500 shown in FIG 5. As described above, method 1800 may be used to track the position of any component, such as an HMD device wearable on a user's head, one or more handheld controllers, etc.
[0129] The illustrated implementation of method 1800 begins at operation 1802, where a first HMD system component having a plurality of angle-sensing detectors is provided. The plurality of angle-sensing detectors may act to detect light emitted from one or more light sources that may be fixedly positioned (e.g., mounted on a wall or ceiling) or may be mobile (e.g., coupled to an HMD headset or controller). During operation, each of the plurality of angle-sensing detectors captures sensor data in a respective field of view of the plurality of angle-sensing detectors at a frame rate. The sensor data may include any type of data that is available to a control circuit (e.g., a processor) to detect the presence and orientation of the light source relative to the angle-sensing detector. In at least some implementations, each of the angle-sensing detectors may include one or more sensors (e.g., photodiodes) having image sensing circuitry and, optionally, image processing circuitry. The angle-sensing detectors may output relatively raw data (e.g., light intensity or power data) or processed data (e.g., incident angle data).
[0130] At 1804, a second HMD system component may be provided that includes a number of light sources (e.g., near-IR LEDs). The second HMD system component may include light sources located, for example, in a controller, an HMD headset, or in a fixed location (e.g., ceiling, wall).
[0131] At 1806, at least one processor of the HMD system may cause the light sources to emit light. The light sources may be illuminated in a manner that each of the angle-sensing detectors may simultaneously detect light from a single light source, or more generally in a manner that may enable the system to determine from which light source the light detected by the angle-sensing detectors was received and illuminated. This may be accomplished by multiplexing the illumination of the light sources using any suitable type of multiplexing, such as time multiplexing, wavelength multiplexing, frequency multiplexing, polarization multiplexing, or other techniques that allow the system to know the source of the light received from each of the angle-sensing detectors during use.
[0132] As an example of time multiplexing, the at least one processor may illuminate only a subset of the light sources simultaneously (e.g., 1, 2, 4). For example, the at least one processor may sequentially illuminate the light sources and collect sensor data responsive to each of the light sources, one subset at a time.
[0133] As an example of wavelength multiplexing, different subsets of light sources may emit light of different wavelengths and different subsets of angle-sensitive detectors may serve to detect light of the different wavelengths. Thus, light sources having different wavelengths may be simultaneously illuminated and detected by corresponding wavelength-sensitive detectors.
[0134] As an example of frequency multiplexing, a subset of light sources may be illuminated in a determined pattern or frequency that is detectable by an angle-sensing detector to identify a particular source of light.
[0135] As an example of polarization multiplexing, a subset of the light sources may be polarized differently (e.g., linearly, circularly) and a corresponding subset of the angle-sensitive detectors may be configured to detect a particular polarized light (e.g., using a polarizer that passes light having the corresponding polarization) allowing multiple light sources to be illuminated simultaneously.
[0136] Other non-limiting example techniques for illuminating the light source may include frequency or wavelength division multiple access (FDMA or WDMA), time division multiple access (TDMA), code division multiple access (CDMA), orthogonal frequency division multiple access (OFDMA), etc.
[0137] At 1808, at least one processor associated with the HMD system may receive sensor data from a plurality of angle-sensing detectors. As described above, for each angle-sensing detector, the sensor data may indicate an angle of arrival of light emitted from a known light source. At 1810, at least one processor associated with the HMD system may optionally receive sensor data from an inertial tracking function or an inertial measurement unit (IMU) that serves to provide sensor data from one or more additional sensors.
[0138] At 1812, at least one processor associated with the HMD system may process the received sensor data, including detecting corrupted data, as described further below. For example, the at least one processor may fuse some or all of the sensor data together to track one or more features present in the environment in which the HMD system operates. The sensor data may include sensor data from multiple angle-sensing detectors, and optionally sensor data from an IMU, camera, or other sensor data. The at least one processor may process the sensor data using, for example, a machine learning model (e.g., model 606) or another solver. As described further below, in at least some implementations, the at least one processor may ignore data from one or more sensors determined to be corrupted, such as data from light that is unlikely to have been received directly from the light source of the HMD system and that is scattered, reflected, or received from another light source.
[0139] At 1814, at least one processor associated with the HMD system may track the positions (e.g., location, orientation, or movement) of components of the HMD system in real time while the HMD system is being used by a user in the environment. During operation of the HMD, method 1800 may continue to continuously track the positions of the components of the HMD system, as described above.
[0140] In processing the received sensor data, the control circuitry may identify one or more corrupted sensor data samples, where each of the one or more corrupted sensor data samples includes a sensor data sample from one of the plurality of angle sensing detectors that is identified as likely not representing light received directly by one of the plurality of angle sensing detectors from the one or more light sources. In at least some implementations, the control circuitry is configured to ignore the corrupted sensor data sample during the tracking process, and may continue to ignore samples from that optical detector for a fixed or variable period of time.
[0141] The identification of corrupted sensor data samples may be based at least in part on a known geometry of at least one of the first and second head mounted display system components. For example, a projection model of at least one of the first or second head mounted display system components may be utilized to determine which of the plurality of angle-sensing detectors are likely not receiving light directly from one or more of the plurality of light sources, and data from such detectors may be ignored for a period of time. For example, the received sensor data samples may be compared to the at least one projection model, and received sensor data samples that do not match the at least one projection model within a defined threshold may be identified as corrupted sensor data samples to be ignored.
[0142] Additionally or alternatively, identification of the one or more corrupted sensor data samples may be based, at least in part, on one or more of a past position or orientation of at least one of the first and second head mounted display system components, a current position or orientation of at least one of the first and second head mounted display system components, or a predicted future position or orientation of at least one of the first and second head mounted display system components.
[0143] In at least some implementations, the number of samples or time period during which one or more detectors are disabled may be selectively varied based on various criteria, such as actual or predicted movement (e.g., direction, speed, rotation) of at least one of the first head mounted display system component or the second head mounted display system component. As an example, a comparison to the projection model may indicate that the detector is obstructed by an object (e.g., a wall, a person, another component) or faces away from the light sources of the HMD system and is therefore unlikely to receive light directly from one of the light sources of the HMD system for a period of time. The control circuitry may track the position or movement of the one or more components to determine a period of time after which the detector is expected to again receive light from at least one of the multiple light sources. At this time, the system may again use samples from the detector for tracking purposes.
[0144] The head mounted display system components may include a head mounted display device wearable on a user's head, a controller, a base station, or other HMD system components. As described elsewhere herein, to process the received sensor data, the control circuitry may provide the received sensor data as input to one or more trained machine learning models.
[0145] 19 is a flow diagram of a method for adaptively adjusting the brightness of multiple light sources of a position tracking system of an HMD system according to an example embodiment of the present disclosure. Method 1900 may be performed, for example, by the position tracking system or module 512 of the HMD system 500 shown in FIG. 5. As described above, method 1900 may be implemented during tracking of the position of any component of a user's head-wearable HMD device, one or more handheld controllers, etc., in combination with method 1800 of FIG. 18. Advantageously, the adaptive brightness features described herein may provide improved performance by taking advantage of the relatively large dynamic range of the detector, and may also increase battery life by reducing power consumption.
[0146] Method 1900 begins at 1902, where a control circuit of an HMD system receives optical detector data from an optical detector (e.g., photodiode, angle-sensing detector). At 1904, the control circuit may process the received optical detector data, and at 1906, the control circuit may adaptively adjust the brightness of at least one of the multiple light sources based at least in part on the processed optical detector data. In at least some implementations, the control circuit adaptively adjusts the brightness of at least one of the one or more light sources based on a dynamic range of the optical detector, e.g., to maximize the dynamic range of the optical detector. To adjust the brightness, a pulse width of a signal provided to the one or more light sources may be selectively adjusted.
[0147] In at least some implementations, the control circuitry may disable one or more light sources ("dark measurements") and receive optical data from the optical detector while the one or more light sources are disabled. Such a feature may enable the brightness of one or more light sensors to be adapted based on the ambient light levels in the environment in which the HMD system is operated.
[0148] An example method 2000 of this feature is shown in FIG. 20. At 2002, the control circuitry may disable one or more (e.g., all) light sources of the HMD system. At 2004, the control circuitry may capture sensor data from the optical detector while the one or more light sources are disabled. At 2006, the control circuitry may adjust the brightness setting of the one or more light sources based on the captured sensor data. At 2008, the control circuitry may optionally adjust the rate of sensor data capture for brightness adjustment based on changes in one or more parameters, such as movement of one or more components, elapsed time, number of samples, amount of ambient light, detected changes in ambient light, etc. To adaptively adjust the brightness of the one or more light sources, the received optical detector data may be provided as an input to one or more trained machine learning models, as described elsewhere herein. In at least some implementations, the control circuitry may perform light measurements periodically (e.g., every 5 samples, every 50 samples), and adjust the brightness of the light sources after each measurement based on the results of the measurements.
[0149] FIG. 21 is a flow diagram of a method for compensating for non-uniform brightness of a light source of a position tracking system of an HMD system, according to an example embodiment of the present disclosure. In practice, an angle-sensitive detector, such as a quad photodiode (QPD), may include a number of channels that are read sequentially in time (e.g., via multiplexing). Thus, since measurements of all of the detector's channels are not captured simultaneously, any non-uniformity in the brightness of the light source may cause inaccurate measurements. For example, when an LED is illuminated over an illumination period, its intensity may vary over the illumination period due to thermal and other effects (e.g., "droop"). As described below, method 2100 compensates for this effect, which advantageously provides a more accurate measurement used for position tracking.
[0150] Method 2100 may be performed, for example, by the position tracking system or module 512 of the HMD system 500 shown in Figure 5. As described above, method 2100 may be implemented, for example, in combination with method 1800 of Figure 18 during tracking of the position of any component of a user's head-wearable HMD device, one or more handheld controllers, etc.
[0151] Method 2100 begins at 2102, where a control circuit may cause one or more light sources to emit light during an illumination period. At 2104, the control circuit may receive sensor data from the angle-sensing detector, which may include sequentially capturing sensor cell samples from a plurality of sensor cells during an illumination period, as described above. For example, the control circuit may include an analog-to-digital converter (ADC) and a multiplexer may be used to sequentially read in sensor cell samples from each of a plurality (e.g., four) of sensor cells of the angle-sensing detector. Illumination data may be captured using other methods that are capable of providing an illumination profile for the light source with respect to time.
[0152] At 2106, the control circuitry may process the received sensor data, including determining a correction to account for non-uniform brightness of one or more light sources during sequential capture of sensor cell samples. At 2108, the control circuitry may use the determined correction to apply calibration data to the sensor cell samples and track the position of the first head mounted display system component using the calibrated sensor cell samples. The calibration data may represent, for example, a characteristic gradient of brightness of the one or more light sources during an illumination period.
[0153] In at least some implementations, the control circuitry may iteratively determine updated calibration data and may track a position of the first head mounted display system component using the updated calibration data. As an example, to determine the updated calibration data, the control circuitry may disable one or more light sources for a calibration period, sequentially capture sensor cell samples from a plurality of sensor cells during the calibration period, interpolate the captured sensor cell samples, and determine the updated calibration data based on the interpolation of the captured sensor cell samples.
[0154] The calibration data may additionally or alternatively be determined during the manufacturing or design process of the HMD system. For example, a characteristic slope or function of a light source (e.g., an LED) may be empirically determined using an angle-sensing detector or other type of optical detector, and such information may be provided to the HMD system to compensate for non-uniformity of the light source (or similar or identical light source) during operation of the HMD system. More generally, a method of calibrating a head mounted display system component may include causing one or more light sources to emit light over an illumination period, sequentially capturing sensor cell samples from a plurality of sensor cells of an angle-sensing detector, processing the received sensor cell samples to generate calibration data that accounts for non-uniform brightness of the one or more light sources during the illumination period, and storing the calibration data in a non-transitory processor-readable storage medium for subsequent use in tracking at least one component of the head mounted display system.
[0155] 22 is a flow diagram of a method for adaptively enabling and disabling components of a tracking subsystem of an HMD system, according to an example embodiment of the present disclosure. In the context of light sources (e.g., LEDs), an implementation of method 2200 may be referred to as "adaptive firing" of the LEDs, which may, for example, reduce power consumption and therefore extend battery life. As described above, method 2200 may be implemented, for example, in combination with method 1800 of FIG. 18, during tracking of the position of any component of a user's head-wearable HMD device, one or more handheld controllers, etc.
[0156] Method 2200 begins at 2202, where a control circuit causes one or more of a plurality of light sources to emit light. At 2204, the control circuit receives sensor data from one or more of a plurality of optical detectors and tracks a position of a first head mounted display system component based at least in part on the received sensor data, as described elsewhere herein.
[0157] At 2206, the control circuitry may process the received sensor data, including determining whether to disable any one of the optical detectors or light sources based on the determined disablement criteria. At 2208, the control circuitry may disable each of the optical detectors or light sources that meet the disablement criteria for a respective disablement period during tracking of the position of the first head mounted display system component.
[0158] In general, the invalidation criteria provide or facilitate a determination that light emitted by a light source is unlikely to be received by any of the optical detectors of the first head mounted display system component. For example, the invalidation criteria may determine that a particular light source faces away from the optical detectors of the HMD system or is obstructed by an object (e.g., a person, component, furniture, wall) in the environment in which the HMD system is operated. Similarly, the control circuitry may determine that an optical detector is unlikely to receive light from the light source and therefore may be disabled for a fixed or variable period of time.
[0159] The disablement criteria may be based at least in part on a determined relative position or movement between a first head mounted display system component and a second head mounted display system component, such as a relative position or movement between a controller and a headset, a relative position or movement between a controller and a base station, or a relative position or movement between a headset and a base station. As described above, one or more projection models may be used to evaluate whether light from a light source is expected to be directly received by an optical sensor of the HMD system. In at least some implementations, position tracking information may be used to predict when a particular component (e.g., light source, detector) may be disabled and when such a component should be re-enabled.
[0160] In at least some implementations, the disablement criteria provide or facilitate a determination that light emitted by each light source in a first subset of the plurality of light sources is likely to be received by at least one of the optical detectors of the first head mounted display system component, and the disablement criteria act to disable a second subset of light sources within the first subset of light sources for each disablement period. For example, the system may determine that a first subset of four light sources that are spaced apart are likely to be detected by one or more detectors, and may disable two light sources of the first subset (i.e., the second subset) such that only two light sources are enabled for a period of time. This feature may increase battery life while still providing light sources detectable by an optical sensor. In at least some implementations, the light sources in the first subset of light sources that are not disabled may be light sources that are relatively far apart from each other, thereby providing a relatively large angle of separation for the optical detectors that detect the light emitted by the light sources, thereby improving measurement accuracy.
[0161] 23 is a flow diagram for a method of operating a position tracking system of an HMD system to track the position, orientation and / or movement of a component of the HMD system in use by fusing inertial sensor data, optical sensor data, and image data, according to an example embodiment of the disclosure. As described above, method 2300 may be implemented in combination with method 1800 of FIG. 18, for example, during tracking of the position of any component of a user's head-wearable HMD device, one or more handheld controllers, etc.
[0162] The head mounted display system may include a first head mounted display system component, an inertial measurement unit (IMU) carried by the first head mounted display system component, a plurality of angle-sensing optical detectors (or other types of optical detectors) carried by the first head mounted display system component, and at least one camera carried by the first head mounted display system component. At 2302, a control circuit associated with the HMD system may receive inertial sensor data from the inertial measurement unit. At 2304, the control circuit may receive optical sensor data from one or more of the plurality of angle-sensing optical detectors or other types of optical detectors. At 2306, the control circuit may receive image sensor data from the camera. As an example, the camera may be a camera of a forward-facing HMD device that is wearable on the user's head.
[0163] At 2308, the control circuitry may process or fuse the received inertial, optical, and image sensor data. For example, the control circuitry may utilize one or more sensor fusion algorithms, including but not limited to a central limit theorem algorithm, a Kalman filter, a Bayesian network, a Dempster-Shafer algorithm, or a convolutional neural network. At 2310, the control circuitry may track a position of the first head mounted display system component based at least in part on the processing of the received inertial, optical, and image sensor data. In at least some implementations, the control circuitry may provide the inertial, optical, and image sensor data as inputs to one or more trained machine learning models to process the received inertial, optical, and image sensor data, as described elsewhere herein (e.g., see FIG. 6 ).
[0164] The foregoing detailed description has illustrated various implementations of devices and / or processes through the use of block diagrams, schematics, and examples. To the extent that such block diagrams, schematics, and examples include one or more functions and / or operations, those skilled in the art will appreciate that each function and / or operation in such block diagrams, flow diagrams, or examples may be individually and / or collectively implemented by a wide variety of hardware, software, firmware, or substantially any combination thereof. In one implementation, the subject matter may be implemented via an application specific integrated circuit (ASIC). However, those skilled in the art will recognize that the implementations disclosed herein can equivalently be implemented, in whole or in part, on standard integrated circuits, as one or more computer programs running on one or more computers (e.g., as one or more programs running on one or more computer systems), as one or more programs running on one or more controllers (e.g., microcontrollers), as one or more programs running on one or more processors (e.g., microprocessors), as firmware, or virtually any combination thereof where designing circuitry and / or writing software or firmware code is well within the skill of one of ordinary skill in the art in light of this disclosure.
[0165] Those skilled in the art will recognize that many of the methods or algorithm sets described herein may employ additional operations, omit certain operations, and / or perform operations in an order other than specified.
[0166] In addition, those skilled in the art will appreciate that the mechanisms taught herein can be distributed as a program product in a variety of formats, and the exemplary implementations apply equally regardless of the particular type of signal-bearing medium used to actually accomplish the distribution, including, but not limited to, recordable types of media such as floppy disks, hard disk drives, CD-ROMs, digital tape, and computer memory.
[0167] The various implementations described above can be combined to provide further implementations. Unless inconsistent with the specific teachings and definitions herein, all U.S. patents, U.S. patent application publications, U.S. patent applications, foreign patents, foreign patent applications, and non-patent publications referenced herein are hereby incorporated by reference in their entirety. If necessary, aspects of the implementations can be modified to employ systems, circuits, and concepts from various patents, applications, and publications to provide further implementations.
[0168] These and other changes can be made to the implementation in light of the above detailed description. Generally, in the following claims, the terms used should not be construed to limit the claims to the specific implementations disclosed in the specification and claims, but should be construed to include all possible implementations along with the full scope of equivalents to which such claims are subject. Thus, the claims are not limited by the disclosure.
Claims
1. A first head-mounted display system component; a plurality of angle-sensing detectors carried by the first head mounted display system component, wherein during operation, each of the plurality of angle-sensing detectors captures sensor data indicative of an angle of arrival of light emitted from one or more light sources; a second head mounted display system component including one or more light sources; and causing the one or more light sources to emit light; receiving sensor data from one or more of the plurality of angle-sensing detectors, the sensor data including a plurality of sensor data samples; processing the received sensor data including identifying one or more corrupted sensor data samples, each of the one or more corrupted sensor data samples comprising a sensor data sample from one of the plurality of angle sensitive detectors that is identified as likely not representing light received directly by one of the plurality of angle sensitive detectors from the one or more light sources; tracking a position of the second head mounted display system component based at least in part on the processing of the received sensor data. Control circuit acting for A head-mounted display system comprising:
2. The head mounted display system of claim 1 , wherein the control circuitry ignores the corrupted sensor data samples for purposes of tracking the position of the second head mounted display system component.
3. 2. The head-mounted display system of claim 1, wherein the identification of the one or more corrupted sensor data samples is based at least in part on known geometry of at least one of the first head-mounted display system component and the second head-mounted display system component.
4. The identification of the one or more corrupted sensor data samples includes: a past position or orientation of at least one of the first head mounted display system component and the second head mounted display system component; a current position or orientation of at least one of the first head mounted display system component and the second head mounted display system component; or a predicted future position or orientation of at least one of the first head mounted display system component and the second head mounted display system component; The head mounted display system of claim 1 based at least in part on one or more of:
5. 2. The head mounted display system of claim 1, wherein the identifying the one or more corrupted sensor data samples includes utilizing a projection model of at least one of the first head mounted display system component or the second head mounted display system component to determine which of the plurality of angle sensitive detectors are likely not receiving light directly from the one or more of the plurality of light sources.
6. 6. The head mounted display system of claim 5, wherein utilizing at least one projection model includes comparing the sensor data samples to the at least one projection model and identifying the sensor data samples that do not match the at least one projection model as corrupted sensor data samples.
7. 7. The head mounted display system of claim 6, wherein identifying the sensor data samples that do not match the at least one projection model as corrupted sensor data samples comprises identifying the sensor data samples that do not match the at least one projection model within a defined threshold as corrupted sensor data samples.
8. 10. The head mounted display system of claim 1, further comprising disabling one or more of the plurality of angle sensitive detectors associated with the corrupted sensor data sample for a number of samples or a period of time.
9. The head mounted display system of claim 8 , wherein the number of samples or the period of time is selectively varied based on movement of at least one of the first head mounted display system component or the second head mounted display system component.
10. The head-mounted display system of claim 1 , wherein the second head-mounted display system component comprises a head-mounted display device or a handheld controller wearable on a user's head.
11. The head mounted display system of claim 1 , wherein each of the plurality of angle sensitive detectors comprises one of a photodiode detector or a position sensitive detector.
12. The head mounted display system of claim 1 , wherein each of the plurality of angle sensitive detectors comprises a photodiode detector having at least four cells.
13. 2. The head-mounted display system of claim 1, wherein the first head-mounted display system component comprises one of a head-mounted display device, a controller, or a base station, and the second head-mounted display system component comprises another of a head-mounted display device, a controller, or a base station.
14. The head-mounted display system of claim 1 , wherein at least one of the first head-mounted display system component or the second head-mounted display system component includes a component that is fixed in a location proximate to an environment in which the head-mounted display system is operated.
15. 2. The head mounted display system of claim 1, further comprising a scattered light detector that captures scattered light detector data indicative of whether light received at one or more of the plurality of angle sensing detectors is reflected or scattered before reaching the one or more of the plurality of angle sensing detectors, wherein the scattered light detector data is used to identify the one or more corrupted sensor data samples.
16. 16. The head mounted display system of claim 15, wherein the control circuit processes the scattered light detector data to identify the one or more corrupted sensor data samples and ignores the corrupted sensor data samples during the tracking of the position of the second head mounted display system component.
17. 2. The head mounted display system of claim 1, further comprising: a plurality of scattered light detectors, each of said scattered light detectors capturing scattered light detector data indicative of whether light received at one or more of said plurality of angle sensing detectors is reflected or scattered before reaching said one or more of said plurality of angle sensing detectors, and wherein said scattered light detector data is used for the identification of said one or more corrupted sensor data samples.
18. 10. The head mounted display system of claim 1, wherein to process the received sensor data, the control circuitry provides the received sensor data as input to a trained machine learning model.
19. The head mounted display system of claim 1 , wherein, during operation, the control circuitry causes the one or more light sources to emit light using multiplexing.
20. 20. The head mounted display system of claim 19, wherein the multiplexing includes at least one of time multiplexing, wavelength multiplexing, frequency multiplexing, or polarization multiplexing.
21. 21. The head-mounted display system of claim 1, wherein, during operation, the control circuitry causes the one or more light sources to emit light using at least one of wavelength division multiple access (WDMA), time division multiple access (TDMA), code division multiple access (CDMA), or orthogonal frequency division multiple access (OFDMA).