CN117337422A - Dynamic initialization of three-degree-of-freedom augmented reality tracking system - Google Patents

Dynamic initialization of three-degree-of-freedom augmented reality tracking system Download PDF

Info

Publication number
CN117337422A
CN117337422A CN202280035625.4A CN202280035625A CN117337422A CN 117337422 A CN117337422 A CN 117337422A CN 202280035625 A CN202280035625 A CN 202280035625A CN 117337422 A CN117337422 A CN 117337422A
Authority
CN
China
Prior art keywords
signal
tracking device
positioning
accelerometer
orientation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280035625.4A
Other languages
Chinese (zh)
Inventor
耶伦·迪德里克·奥尔
马蒂亚斯·卡尔格鲁伯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snap Inc
Original Assignee
Snap Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/524,423 external-priority patent/US11941184B2/en
Application filed by Snap Inc filed Critical Snap Inc
Priority claimed from PCT/US2022/029621 external-priority patent/WO2022245815A1/en
Publication of CN117337422A publication Critical patent/CN117337422A/en
Pending legal-status Critical Current

Links

Landscapes

  • User Interface Of Digital Computer (AREA)

Abstract

A method for dynamically initializing a three degree of freedom (3 DOF) tracking device is described. In one aspect, the method comprises: accessing a gyroscope signal from a gyroscope of the 3DOF tracking device; accessing accelerometer signals from an accelerometer of the 3DOF tracking device; determining an initial state comprising a combination of an initial orientation, an initial positioning, and an initial velocity of the 3DOF tracking device, the initial state indicating a starting condition of the 3DOF tracking device; integrating the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state; and refining the tilt signal of the orientation signal using the positioning signal.

Description

Dynamic initialization of three-degree-of-freedom augmented reality tracking system
Cross Reference to Related Applications
The present application claims priority from U.S. patent application Ser. No. 17/524,423, filed 11/2021, and U.S. provisional patent application Ser. No. 63/189,845, filed 5/2021, each of which are incorporated herein by reference in their entirety.
Technical Field
The subject matter disclosed herein relates generally to vision tracking systems. In particular, the present disclosure proposes systems and methods for calibrating a visual inertial tracking system.
Background
Augmented Reality (AR) devices enable a user to view a scene while seeing related virtual content that may be aligned with items, images, objects, or environments in the field of view of the device. Virtual Reality (VR) devices provide a more immersive experience than AR devices. The VR device obscures the user's view with virtual content that is displayed based on the location and orientation of the VR device.
Both AR devices and VR devices rely on motion tracking systems that track the pose (e.g., orientation, position, location) of the device. Motion tracking systems are typically factory calibrated (based on predefined relative positioning between the camera and other sensors) to accurately display virtual content at a desired location relative to their environment.
Drawings
For ease of identifying a discussion of any particular element or act, the highest digit or digits in a reference number refer to the figure number in which that element is first introduced.
FIG. 1 is a block diagram illustrating an environment for operating an AR/VR display device in accordance with one example embodiment.
Fig. 2 is a block diagram illustrating an AR/VR display according to an example embodiment.
Fig. 3 is a block diagram illustrating a 3DOF tracking system according to an example embodiment.
Fig. 4 is a flowchart illustrating a method for adjusting tilt according to an example embodiment.
Fig. 5 is a flowchart illustrating a method for refining a tilt signal according to an example embodiment.
FIG. 6 illustrates a routine 600 in accordance with one implementation.
FIG. 7 is a block diagram illustrating an example algorithm for initialization according to one example embodiment.
Fig. 8 illustrates a network environment in which a headset may be implemented according to an example embodiment.
Fig. 9 is a block diagram illustrating a software architecture in which the present disclosure may be implemented, according to an example embodiment.
FIG. 10 is a diagrammatic representation of machine in the form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed according to an example embodiment.
Detailed Description
The following description describes systems, methods, techniques, sequences of instructions, and computer program products that illustrate example embodiments of the present subject matter. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the present subject matter. It will be apparent, however, to one skilled in the art that embodiments of the present subject matter may be practiced without some or other of these specific details. Examples merely typify possible variations. Structures (e.g., structural components, such as modules) are optional and may be combined or sub-divided, and operations (e.g., in a process, algorithm, or other function) may be varied in sequence or combined or sub-divided, unless explicitly stated otherwise.
The term "augmented reality" (AR) is used herein to refer to an interactive experience in which a real-world environment of physical objects present in the real world is "enhanced" or enhanced by computer-generated digital content (also referred to as virtual content or synthetic content). AR may also refer to a system that enables a combination of real world and virtual world, real-time interaction, and 3D registration of virtual objects and real objects. The user perceived virtual content of the AR system appears to be attached to or interact with physical objects of the real world.
The term "virtual reality" (VR) is used herein to refer to a simulated experience of a virtual world environment that is quite different from a real world environment. The computer-generated digital content is displayed in a virtual world environment. VR also refers to a system that enables users of a VR system to be fully immersed in a virtual world environment and interact with virtual objects presented in the virtual world environment.
The term "AR application" is used herein to refer to a computer-operated application that enables an AR experience. The term "VR application" is used herein to refer to an application that enables computer operation of a VR experience. The term "AR/VR application" refers to a computer-operated application that enables a combination of AR experience or VR experience.
The term "vision tracking system" is used herein to refer to a computer-operated application or system that enables the system to track visual features identified in images captured by one or more cameras of the vision tracking system. The vision tracking system models the real world environment based on the tracked vision features. Non-limiting examples of vision tracking systems include: a visual simultaneous localization and mapping system (VSLAM) and a Visual Inertial Odometer (VIO) system. The VSLAM may be used to construct a target from an environment or scene based on one or more cameras of the visual tracking system. The VIO system (also referred to as a visual inertial tracking system) determines the latest pose (e.g., position and orientation) of the device based on data acquired from a plurality of sensors (e.g., optical sensors, inertial sensors) of the device.
The term "inertial measurement unit" (IMU) is used herein to refer to a device capable of reporting an inertial state of a moving body, including acceleration, speed, orientation, and positioning of the moving body. By integrating the acceleration and angular velocity measured by the IMU, the IMU enables tracking of the movement of the body. IMU may also refer to a combination of accelerometers and gyroscopes, which may determine and quantify linear and angular acceleration, respectively. Values obtained from the IMU gyroscope may be processed to obtain the pitch, roll, and heading of the IMU, and thus the pitch, roll, and heading of the body associated with the IMU. Signals from the IMU accelerometers may also be processed to obtain the speed and displacement of the IMU.
The term "three degree of freedom tracking system" (3 DOF tracking system) is used herein to refer to a device that tracks rotational movement. For example, a 3DOF tracking system may track whether a user of a headset looks left or right, rotates his head up or down, and rotates left or right. However, the head-mounted device cannot use a 3DOF tracking system to determine whether the user is moving around the scene by moving in the physical world. Thus, a 3DOF tracking system may not be accurate enough to be used for locating signals. The 3DOF tracking system may be part of an AR/VR display device that includes IMU sensors. For example, 3DOF tracking systems use sensor data from sensors (such as accelerometers, gyroscopes, and magnetometers).
The term "six degree of freedom tracking system" (6 DOF tracking system) is used herein to refer to a device that tracks rotational and translational motion. For example, a 6DOF tracking system may track whether a user has rotated his head and moved forward or backward, laterally or vertically, and up or down. The 6DOF tracking system may include a visual odometer system that relies on data acquired from multiple sensors (e.g., depth cameras, inertial sensors). The 6DOF tracking system analyzes the data from the sensors to accurately determine the pose of the display device.
Both AR and VR applications allow users to access information, for example, in the form of virtual content presented in the display of an AR/VR display device (also referred to as a display device). The presentation of the virtual content may be based on the positioning of the display device with respect to the physical object or with respect to a frame of reference (external to the display device) such that the virtual content appears correctly in the display. To the AR, the virtual content appears to be aligned with the physical object perceived by the user and the camera of the AR display device. Virtual content appears to be affiliated with the physical world (e.g., physical objects of interest). To do this, the AR display device detects the physical object and tracks the pose of the AR display device relative to the location of the physical object. The pose identifies the positioning and orientation of the display device relative to the frame of reference or relative to another object. For VR, the virtual object appears at a location based on the pose of the VR display device. Thus, the virtual content is refreshed based on the latest pose of the device. A vision tracking system at the display device determines a pose of the display device. Examples of visual tracking systems include visual inertial tracking systems (also known as VIO systems) that rely on data acquired from multiple sensors (e.g., optical sensors, inertial sensors).
Initialization of a 3DOF tracking system typically requires that the tracking system be stationary in order to calibrate the sensors in the 3DOF tracking system. For example, the 3DOF tracking system detects that the AR/VR display device is turned on/off. In response, the AR/VR display device requests the user to place the AR/VR display device on a fixed support (e.g., table, chair). Such initialization process causes friction to the user to effectively operate the AR/VR display device. Furthermore, such an initialization process requires additional time to initialize under quiescent conditions.
The present application describes a method for dynamically initializing a 3DOF tracking system for an AR/VR display device that enables the AR/VR display device to instantly initialize and begin a 3DOF (gravity alignment) tracking experience under dynamic and non-stationary conditions. In one example, the method relies on the following assumptions: people stay at approximately the same place and are effective for most use cases (sitting and walking). Thus, this eliminates the need for the user to remain stationary.
In one example embodiment, the method includes: collecting accelerometer signals and gyroscope signals; integrating into an orientation signal and a positioning signal; the positioning signal is limited to maintaining a "near" (zero) start positioning (this enables gravity aligned content to be displayed in the head mounted AR system and does not require the user to be stationary at initialization).
In another example embodiment, a method for dynamically initializing a three degree of freedom (3 DOF) tracking device is described. In one aspect, the method comprises: accessing a gyroscope signal from a gyroscope of the 3DOF tracking device; accessing accelerometer signals from an accelerometer of the 3DOF tracking device; determining an initial state comprising a combination of an initial orientation, an initial positioning and an initial velocity of the 3DOF tracking device, the initial state being indicative of a starting condition of the 3DOF tracking device; integrating the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state; and refining the tilt signal of the orientation signal using the positioning signal.
Accordingly, one or more of the methods described herein help solve the technical problem of performing efficient initialization without the need for stationary conditions. The presently described method provides improvements to the operation of computer functions through faster calibration calculations. Thus, one or more of the methods described herein may avoid the need for certain efforts or computing resources. Examples of such computing resources include processor cycles, network traffic, memory usage, data storage capacity, power consumption, network bandwidth, and cooling capacity.
Fig. 1 is a network diagram illustrating an environment 100 suitable for operating an AR/VR display device 106 in accordance with some example embodiments. The environment 100 includes a user 102, an AR/VR display 106, and a physical object 104. The user 102 operates the AR/VR display device 106. The user 102 may be a human user (e.g., a human), a machine user (e.g., a computer configured by a software program to interact with the AR/VR display device 106), or any suitable combination thereof (e.g., a machine-assisted human or a machine supervised by a human). The user 102 is associated with an AR/VR display 106.
The AR/VR display device 106 may be a computing device with a display such as a smart phone, a tablet, or a wearable computing device (e.g., a watch or glasses). The computing device may be handheld or may be removably mounted to the head of the user 102. In one example, the display includes a screen that displays images captured with the camera device of the AR/VR display device 106. In another example, the display of the device may be transparent, such as in the lenses of wearable computing eyewear. In other examples, the display may be opaque, partially transparent, partially opaque. In other examples, the display may be worn by the user 102 to cover the field of view of the user 102.
The AR/VR display 106 includes an AR application that generates virtual content based on images detected with an imaging device of the AR/VR display 106. For example, the user 102 may direct the camera device of the AR/VR display device 106 to capture an image of the physical object 104. The AR application generates virtual content corresponding to the identified object (e.g., physical object 104) in the image and presents the virtual content in a display of the AR/VR display device 106.
The AR/VR display device 106 includes a 3DOF tracking system 108. The 3DOF tracking system 108 tracks rotational pose (e.g., orientation) of the AR/VR display device 106 relative to the real world environment 110 using, for example, optical sensors (e.g., depth-enabled 3D camera, image camera), inertial sensors (e.g., gyroscopes, accelerometers), wireless sensors (bluetooth, wi-Fi), GPS sensors, and audio sensors. In one example, the AR/VR display 106 displays virtual content based on the pose of the AR/VR display 106 with respect to the real world environment 110 and/or the physical object 104.
Any of the machines, databases, or devices illustrated in fig. 1 may be implemented in a general-purpose computer modified (e.g., configured or programmed) by software to be a special-purpose computer to perform one or more of the functions described herein with respect to the machine, database, or device. For example, a computer system capable of implementing any one or more of the methods described herein is discussed below with reference to fig. 4-5. As used herein, a "database" is a data storage resource and may store data structured as text files, tables, spreadsheets, relational databases (e.g., object-relational databases), triad stores, hierarchical data stores, or any suitable combination thereof. Furthermore, any two or more of the machines, databases, or devices illustrated in fig. 1 may be combined into a single machine, and the functionality described herein with respect to any single machine, database, or device may be subdivided among multiple machines, databases, or devices.
The AR/VR display 106 may operate over a computer network. The computer network may be any network that enables communication between or among machines, databases, and devices. Thus, the computer network may be a wired network, a wireless network (e.g., a mobile or cellular network), or any suitable combination thereof. The computer network may include one or more portions that constitute a private network, a public network (e.g., the internet), or any suitable combination thereof.
Fig. 2 is a block diagram illustrating modules (e.g., components) of the AR/VR display 106 in accordance with some example embodiments. The AR/VR display 106 includes a sensor 202, a display 204, a processor 206, and a storage 208. Examples of AR/VR display device 106 include a wearable computing device, a mobile computing device, a navigation device, a portable media device, or a smart phone.
The sensors 202 include, for example, optical sensors 212 (e.g., imaging devices such as color imaging devices, thermal imaging devices, depth sensors, and one or more gray scale, global/rolling shutter tracking imaging devices) and inertial sensors 210 (e.g., gyroscopes 218, accelerometers 220, magnetometers 222). Other examples of sensors 202 include proximity sensors or location sensors (e.g., near field communication, GPS, bluetooth, wifi, radio-based sensors 312), audio sensors (e.g., microphones), thermal sensors, pressure sensors (e.g., barometers), or any suitable combination thereof. Note that the sensor 202 described herein is for illustration purposes, and thus the sensor 202 is not limited to the above-described sensors.
The display 204 includes a screen or monitor configured to display images generated by the processor 206. In one example embodiment, the display 204 may be transparent or semi-opaque such that the user 102 may view through the display 204 (in the AR use case). In another example embodiment, the display 204 covers the eyes of the user 102 and obscures the entire field of view of the user 102 (in the VR use case). In another example, the display 204 includes a touch screen display configured to receive user input via contacts on the touch screen display.
The processor 206 includes an AR/VR application 214 and a 3DOF tracking system 108. The AR/VR application 214 retrieves virtual content (e.g., a 3D object model) based on the detection of the physical object 104 or physical environment. The AR/VR application 214 presents the virtual object in the display 204. In one example implementation, the AR/VR application 214 includes a local rendering engine that generates a visualization of virtual content overlaid (e.g., superimposed thereon or otherwise displayed in series therewith) on an image of the physical object 104 captured by the optical sensor 212. The visualization of virtual content may be manipulated by adjusting the positioning of the physical object 104 (e.g., its physical position, orientation, or both) relative to the AR/VR display device 106. Similarly, the visualization of virtual content may be manipulated by adjusting the pose of the AR/VR display 106 relative to the physical object 104. For VR applications, AR/VR application 214 displays virtual content in display 204 at a location (in display 204) determined based on the pose of AR/VR display device 106.
The 3DOF tracking system 108 estimates the rotational pose of the AR/VR display device 106. For example, the 3DOF tracking system 108 uses sensor signals from the inertial sensor 210 to track the position of the AR/VR display device 106 relative to a frame of reference (e.g., the real world environment 110). Thus, the 3DOF tracking system 108 tracks whether the user 102 of the AR/VR display 106 looks left or right, rotates his head up or down, and rotates/tilts left or right.
In one example embodiment, the 3DOF tracking system 108 is initialized under dynamic and non-static conditions. In other words, the 3DOF tracking system 108 initializes and begins a 3DOF (gravity alignment) tracking experience instantaneously in dynamic and non-stationary conditions. In one example, the method relies on the following assumptions: people stay at approximately the same place and are effective for most use cases (sitting and walking). Example components of the 3DOF tracking system 108 are described in more detail below with reference to fig. 3.
The storage 208 stores virtual content 216. Virtual content 216 includes, for example, a database of visual references (e.g., images of physical objects) and corresponding experiences (e.g., three-dimensional virtual object models).
Any one or more of the modules described herein may be implemented using hardware (e.g., a processor of a machine) or a combination of hardware and software. For example, any of the modules described herein may configure a processor to perform the operations described herein for that module. Furthermore, any two or more of these modules may be combined into a single module, and the functionality described herein for a single module may be subdivided among multiple modules. Furthermore, according to various example embodiments, modules described herein as being implemented within a single machine, database, or apparatus may be distributed across multiple machines, databases, or apparatuses.
Fig. 3 is a block diagram illustrating a 3DOF tracking system 108 according to an example embodiment. The 3DOF tracking system 108 includes a gyroscope module 302, an accelerometer module 304, a tilt and position module 306.
The gyroscope module 302 retrieves a gyroscope signal from the gyroscope 218. The accelerometer module 304 retrieves accelerometer signals from the accelerometer 220.
The tilt and position module 306 performs dynamic initialization by accessing accelerometer signals and gyroscope signals from the accelerometer module 304 and gyroscope module 302, respectively. The tilt and position module 306 integrates the orientation signal and the position signal, limiting the position signal to remain "near" to the (zero) home position.
In one example embodiment, the tilt and position module 306 includes an instant initialization module 308, an integration module 314, and a continuous update module 310. The instant initialization module 308 determines an initial state indicating a start location. The initial state includes a combination of an initial orientation, an initial position, and an initial velocity of the 3DOF tracking system 108.
The integration module 314 integrates the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state. In one example, the integration module 314 integrates the gyroscope signal to determine an orientation signal starting from an initial orientation, rotates an additional accelerometer signal from the accelerometer using the orientation signal, subtracts gravity, and performs double integration starting from an initial positioning to determine a positioning signal.
The continuous update module 310 uses the positioning signal to refine the tilt signal of the orientation signal. In one example, the continuous update module 310 uses the bias to correct the gyroscope and accelerometer signals and uses the positioning signal to refine the tilt and bias signals. In another example, the continuous update module 310 accesses magnetometer signals from the magnetometers 222 of the inertial sensor 210. The continuous update module 310 uses the magnetometer signals to refine the orientation signal. In yet another example, the continuous update module 310 accesses a location signal from the radio-based sensor 312 of the AR/VR display device 106. The continuous update module 310 uses the position signal to refine the positioning signal.
Fig. 4 is a flowchart illustrating a method for adjusting tilt according to an example embodiment. The operations in method 400 may be performed by 3DOF tracking system 108 using components (e.g., modules, engines) described above with respect to fig. 3. Thus, the method 400 is described by way of example with reference to the tilt and position module 306. However, it should be understood that at least some of the operations of method 400 may be deployed on various other hardware configurations or performed by similar components residing elsewhere.
In block 402, the tilt and position module 306 determines an initial state (initial tilt, position, speed). In one example, the initial state includes an initial position and an initial velocity. In block 404, the tilt and position module 306 integrates the gyroscope signal and the accelerometer signal to obtain an orientation and position at the next time using the initial state. In block 406, the tilt and position module 306 adjusts the tilt or state by limiting the position to remain near the starting position.
It is noted that other embodiments may use different ordering, additional or fewer operations, and different nomenclature or terminology to accomplish similar functions. In some implementations, various operations may be performed in parallel with other operations in a synchronous or asynchronous manner. The operations described herein were chosen to illustrate some principles of operation in a simplified form.
Fig. 5 is a flowchart illustrating a method for refining a tilt signal according to an example embodiment. The operations in method 500 may be performed by 3DOF tracking system 108 using components (e.g., modules, engines) described above with respect to fig. 3. Thus, the method 500 is described by way of example with reference to the tilt and position module 306. However, it should be understood that at least some of the operations of method 500 may be deployed on various other hardware configurations or performed by similar components residing elsewhere.
In block 502, the AR/VR display device 106 activates the 3DOF tracking system 108. In block 504, the gyroscope module 302 accesses the gyroscope signal from the gyroscope 218. In block 506, the accelerometer module 304 accesses the acceleration signal from the accelerometer 220. In block 508, the immediate initialization module 308 uses the acceleration signal to determine an initial tilt without a stationary initialization. In block 510, the immediate initialization module 308 accesses the additional gyroscope signal and the additional acceleration signal. In block 512, the immediate initialization module 308 integrates the additional gyroscope signals to determine an orientation signal starting from an initial tilt and zero heading. In block 514, the immediate initialization module 308 rotates the additional accelerometer signal using the orientation signal, subtracts gravity, and performs a double integration (from zero) to determine a positioning signal. In block 516, the continuous update module 310 refines the tilt based on the positioning signal.
FIG. 6 illustrates a routine 600 in accordance with one implementation. In block 602, the routine 600 accesses a gyroscope signal from a gyroscope of a 3DOF tracking device. In block 604, the routine 600 accesses accelerometer signals from an accelerometer of a 3DOF tracking device. In block 606, the routine 600 determines an initial state that indicates an initial orientation of the 3DOF tracking device. In block 608, the routine 600 integrates the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state, the orientation signal indicative of the starting positioning, and the positioning signal. In block 610, the routine 600 refines the tilt signal of the orientation signal using the positioning signal.
FIG. 7 is a block diagram illustrating an example algorithm for initialization according to one example embodiment.
System with head-mounted device
Fig. 8 illustrates a network environment 800 in which a head-mounted device 802 may be implemented, according to an example embodiment. Fig. 8 is a high-level functional block diagram of an example headset 802 that communicatively couples a mobile client device 838 and a server system 832 via various networks 840.
The head-mounted device 802 includes an imaging device, such as at least one of a visible light imaging device 812, an infrared emitter 814, and an infrared imaging device 816. The client device 838 may be able to connect with the headset 802 using communication 834 and communication 836. Client device 838 is connected to server system 832 and network 840. Network 840 may include any combination of wired and wireless connections.
The head mounted device 802 also includes two image displays 804 for image display of the optical components. The two image displays include one image display associated with the left lateral side and one image display associated with the right lateral side of the head-mounted device 802. The head mounted device 802 also includes an image display driver 808, an image processor 810, low power circuitry 826, and high speed circuitry 818. The image display 804 of the optical assembly is used to present images and video, including images that may include a graphical user interface, to a user of the head-mounted device 802.
The image display driver 808 commands and controls the image display 804 of the optical assembly for image display. The image display driver 808 may deliver the image data directly to the image display 804 of the image display of the optical assembly for presentation, or may have to convert the image data into a signal or data format suitable for delivery to the image display device. For example, the image data may be video data formatted according to a compression format such as h.264 (MPEG-4 part 10), HEVC, theora, dirac, realVideo RV40, VP8, VP9, etc., and the still image data may be formatted according to a compression format such as Portable Network Group (PNG), joint Photographic Experts Group (JPEG), tagged Image File Format (TIFF), or exchangeable image file format (Exif), etc.
As described above, the head-mounted device 802 includes a frame and a handle (or temple) extending from a lateral side of the frame. The head-mounted device 802 also includes a user input means 806 (e.g., a touch sensor or button), the user input means 806 including an input surface on the head-mounted device 802. The user input device 806 (e.g., a touch sensor or button) is a graphical user interface for receiving input selections from a user to manipulate the presented image.
The components shown in fig. 8 for the head mounted device 802 are located on one or more circuit boards, such as a PCB or flex PCB, in a bezel or temple. Alternatively or additionally, the depicted components may be located in a block, frame, hinge, or beam of the head mounted device 802. The left and right may include digital camera elements including, for example, complementary Metal Oxide Semiconductor (CMOS) image sensors, charge coupled devices, camera lenses, or any other corresponding visible or light capturing element that may be used to capture data, including images of a scene with unknown objects.
The head mounted device 802 includes a memory 822, which memory 822 stores instructions that perform a subset or all of the functions described herein. Memory 822 may also include storage.
As shown in fig. 8, high-speed circuitry 818 includes a high-speed processor 820, memory 822, and high-speed radio circuitry 824. In an example, the image display driver 808 is coupled to the high speed circuitry 818 and operated by the high speed processor 820 to drive the left and right image displays of the image display 804 of the optical assembly. High-speed processor 820 may be any processor capable of managing high-speed communications and the operation of any general-purpose computing system required by head-mounted device 802. High-speed processor 820 includes processing resources required to manage high-speed data transfer of communications 836 onto a Wireless Local Area Network (WLAN) using high-speed wireless circuitry 824. In some examples, high-speed processor 820 executes an operating system (such as a LINUX operating system or other such operating system of head-mounted device 802) and the operating system is stored in memory 822 for execution. The high-speed processor 820 executing the software architecture of the headset 802 is used to manage data transfer with the high-speed wireless circuitry 824, among any other responsibilities. In some examples, the high-speed wireless circuitry 824 is configured to implement an Institute of Electrical and Electronics Engineers (IEEE) 802.11 communication standard, also referred to herein as Wi-Fi. In other examples, other high-speed communication standards may be implemented by the high-speed wireless circuitry 824.
The low power wireless circuitry 830 and the high speed wireless circuitry 824 of the head-mounted device 802 may include a short range transceiver (bluetooth TM ) And a wireless wide area network, local area network, or wide area network transceiver (e.g., cellular or WiFi). The details of the architecture of the head-mounted device 802, which may be as other elements of the network 840, may be used to implement a client device 838 that includes a transceiver that communicates via communication 834 and communication 836.
The memory 822 includes any storage device capable of storing various data and applications including, among other things, camera data generated by left and right cameras, infrared camera 816, and image processor 810, and images generated by image display driver 808 for display on image display 804 of the image display of the optical assembly. Although memory 822 is shown as being integrated with high-speed circuitry 818, in other examples memory 822 may be a separate, stand-alone element of head-mounted device 802. In some such examples, the circuit by wires may provide a connection from the image processor 810 or the low power processor 828 to the memory 822 through a chip including the high speed processor 820. In other examples, high-speed processor 820 may manage addressing of memory 822 such that low-power processor 828 will boot high-speed processor 820 at any time when a read or write operation involving memory 822 is desired.
As shown in fig. 8, a low power processor 828 or a high speed processor 820 of the headset 802 may be coupled to the camera (visible light camera 812; infrared emitter 814 or infrared camera 816), the image display driver 808, the user input device 806 (e.g., touch sensor or button), and the memory 822.
The head-mounted device 802 is connected to a host. For example, the headset 802 is paired with a client device 838 via communication 836, or connected to a server system 832 via a network 840. Server system 832 may be one or more computing devices that are part of a service or network computing system, e.g., including a processor, memory, and a network communication interface to communicate with client devices 838 and head-mounted 802 over network 840.
The client device 838 includes a processor and a network communication interface coupled to the processor. The network communication interface allows communication through network 840, communication 834, or communication 836. The client device 838 may also store at least some of the instructions for generating the binaural audio content in a memory of the client device 838 to implement the functionality described herein.
The output components of the head mounted device 802 include visual components such as a display (e.g., a Liquid Crystal Display (LCD), a Plasma Display Panel (PDP), a Light Emitting Diode (LED) display, a projector, or a waveguide). The image display of the optical assembly is driven by an image display driver 808. The output components of the head mounted device 802 also include acoustic components (e.g., speakers), haptic components (e.g., vibration motors), other signal generators, and the like. Input components (e.g., user input devices 806) of the headset 802, client devices 838, and server system 832 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, an optoelectronic keyboard, or other alphanumeric input components), point-based input components (e.g., a mouse, touchpad, trackball, joystick, motion sensor, or other pointing instrument), tactile input components (e.g., physical buttons, a touch screen providing the location and force of a touch or touch gesture, or other tactile input components), audio input components (e.g., a microphone), and the like.
The headset 802 may optionally include additional peripheral elements. Such peripheral elements may include biometric sensors, additional sensors, or display elements integrated with the head-mounted device 802. For example, the peripheral device elements may include any I/O components including output components, motion components, positioning components, or any other such elements described herein.
For example, the biometric means includes means for detecting an expression (e.g., hand expression, face expression, voice expression, body posture, or eye tracking), measuring a biometric signal (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identifying a person (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or electroencephalogram-based recognition), and the like. The motion components include acceleration sensor components (e.g., accelerometers), gravity sensor components, rotation sensor components (e.g., gyroscopes), and the like. The positioning means comprises a position sensor means (e.g. a Global Positioning System (GPS) receiver means) for generating position coordinates, wiFi or bluetooth for generating positioning system coordinates TM Transceivers, altitude sensor components (e.g., altimeters or barometers that detect barometric pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and so forth. Such location system coordinates may also be received from client device 838 via communication 836 via low-power wireless circuitry 830 or high-speed wireless circuitry 824.
Where a phrase similar to "at least one of A, B or C", "at least one of A, B and C", "one or more A, B or C" or "one or more of A, B and C" is used, the phrase is intended to be construed to mean that a may be present alone in an embodiment, B may be present alone in an embodiment, C may be present alone in an embodiment, or any combination of elements A, B and C may be present in a single embodiment; for example, A and B, A and C, B and C, or A and B and C.
Changes and modifications may be made to the disclosed embodiments without departing from the scope of the present disclosure. These and other changes or modifications are intended to be included within the scope of the present disclosure as expressed in the following claims.
Fig. 9 is a block diagram 900 illustrating a software architecture 904 that may be installed on any one or more of the devices described herein. The software architecture 904 is supported by hardware, such as a machine 902, the machine 902 including a processor 920, memory 926 and an I/O component 938. In this example, the software architecture 904 may be conceptualized as a stack of layers in which each layer provides a particular function. The software architecture 904 includes layers such as an operating system 912, libraries 910, frameworks 908, and applications 906. In operation, application 906 activates an API call 950 through the software stack and receives message 952 in response to API call 950.
Operating system 912 manages hardware resources and provides common services. Operating system 912 includes, for example, a kernel 914, services 916, and drivers 922. Core 914 acts as an abstraction layer between the hardware and other software layers. For example, core 914 provides memory management, processor management (e.g., scheduling), component management, networking, and security settings, among other functions. The service 916 may provide other common services for other software layers. The driver 922 is responsible for controlling or interfacing with the underlying hardware. For example, the driver 922 may include a display driver, an imaging device driver, Or->Low power consumption drive, flash memory drive, serial communication drive (e.g., universal Serial Bus (USB) drive)>Drivers, audio drivers, power management drivers, etc.
Library 910 provides the low-level public infrastructure used by application 906. Library 910 may include a system library 918 (e.g., a C-standard library), which system library 918 provides functions such as memory allocation functions, string manipulation functions, mathematical functions, and the like. In addition, libraries 910 may include API libraries 924, such as media libraries (e.g., libraries for supporting presentation and manipulation of various media formats, such as moving Picture experts group-4 (MPEG 4), advanced video coding (H.264 or AVC), moving Picture experts group layer-3 (MP 3), advanced Audio Coding (AAC), adaptive Multi-Rate (AMR) audio codec, joint Picture experts group (JPEG or JPG) or Portable Network Graphics (PNG)), graphics libraries (e.g., openGL framework for presentation in two-dimensional (2D) and three-dimensional (3D) in graphical content on a display), database libraries (e.g., SQLite providing various relational database functions), web libraries (e.g., webKit providing web browsing functions), and the like. Library 910 may also include various other libraries 928 to provide many other APIs to application 906.
Framework 908 provides a high-level public infrastructure used by applications 906. For example, framework 908 provides various Graphical User Interface (GUI) functions, high-level resource management, and high-level location services. Framework 908 can provide a wide variety of other APIs that can be used by applications 906, some of which can be specific to a particular operating system or platform.
In an example implementation, the applications 906 may include a home application 936, a contacts application 930, a browser application 932, a book-viewer application 934, a location application 942, a media application 944, a messaging application 946, a gaming application 948, and other applications that are broadly classified, such as a third party application 940. The application 906 is a program that performs the functions defined in the program. One or more of the applications 906 that are variously structured may be created using a variety of programming languages, such as an object oriented programming language (e.g., objective-C, java or C++) or a procedural programming language (e.g., C-language or assembly language). In a particular example, third party application 940 (e.g., using ANDROID by an entity other than the vendor of the particular platform) TM Or IOS TM Applications developed in Software Development Kits (SDKs) may be, for example, in IOS TM 、ANDROID TMThe mobile operating system of Phone or another mobile operating system. In this example, third party application 940 may activate an API call provided by operating system 912950 to facilitate the functionality described herein.
Fig. 10 is a diagrammatic representation of a machine 1000 within which instructions 1008 (e.g., software, programs, applications, applets, apps, or other executable code) for causing the machine 1000 to perform any one or more of the methods discussed herein may be executed. For example, the instructions 1008 may cause the machine 1000 to perform any one or more of the methods described herein. The instructions 1008 transform the generic, un-programmed machine 1000 into a particular machine 1000 that is programmed to perform the described and illustrated functions in the manner described. The machine 1000 may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1000 may operate in the capacity of a server machine or a client machine in server-client network environments, or as a peer machine in peer-to-peer (or distributed) network environments. Machine 1000 may include, but is not limited to: a server computer, a client computer, a Personal Computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a PDA, an entertainment media system, a cellular telephone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart device, a web device, a network router, a network switch, a network bridge, or any machine capable of executing instructions 1008 that specify actions to be taken by machine 1000, sequentially or otherwise. Furthermore, while only a single machine 1000 is illustrated, the term "machine" shall also be taken to include a collection of machines that individually or jointly execute instructions 1008 to perform any one or more of the methodologies discussed herein.
The machine 1000 may include a processor 1002, a memory 1004, and an I/O component 1042, the processor 1002, memory 1004, and I/O component 1042 being configured to communicate with each other via a bus 1044. In example implementations, the processor 1002 (e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an ASIC, a Radio Frequency Integrated Circuit (RFIC), other processors, or any suitable combination thereof) may include, for example, a processor 1006 and a processor 1010 that execute instructions 1008. The term "processor" is intended to include a multi-core processor, which may include two or more separate processors (sometimes referred to as "cores") that may execute instructions simultaneously. Although fig. 10 shows multiple processors 1002, machine 1000 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.
Memory 1004 includes main memory 1012, static memory 1014, and storage unit 1016, all accessible by processor 1002 via bus 1044. Main memory 1004, static memory 1014, and storage unit 1016 store instructions 1008 embodying any one or more of the methodologies or functions described herein. The instructions 1008 may also reside, completely or partially, within the main memory 1012, within the static memory 1014, within the machine-readable medium 1018 within the storage unit 1016, within at least one processor of the processors 1002 (e.g., within a cache memory of a processor), or within any suitable combination thereof, during execution thereof by the machine 1000.
The I/O components 1042 may include a variety of components that receive input, provide output, generate output, transmit information, exchange information, capture measurements, and the like. The particular I/O components 1042 included in a particular machine will depend on the type of machine. For example, a portable machine such as a mobile phone may include a touch input device or other such input mechanism, while a headless server machine would be unlikely to include such a touch input device. It should be appreciated that the I/O component 1042 can include many other components not shown in FIG. 10. In various example embodiments, the I/O components 1042 may include an output component 1028 and an input component 1030. The output component 1028 can include visual components (e.g., a display such as a Plasma Display Panel (PDP), a Light Emitting Diode (LED) display, a Liquid Crystal Display (LCD), a projector, or a Cathode Ray Tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., vibration motor, resistive mechanism), other signal generators, and so forth. Input components 1030 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, an optoelectronic keyboard, or other alphanumeric input components), point-based input components (e.g., a mouse, touchpad, trackball, joystick, motion sensor, or other pointing instrument), tactile input components (e.g., physical buttons, a touch screen providing location and/or force of a touch or touch gesture, or other tactile input components), audio input components (e.g., a microphone), and the like.
In other example embodiments, the I/O components 1042 may include a biometric component 1032, a motion component 1034, an environmental component 1036, or a positioning component 1038, among various other components. For example, the biometric component 1032 includes components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body gestures, or eye tracking), measuring biological signals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identifying a person (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or electroencephalogram-based recognition), and the like. The motion component 1034 includes an acceleration sensor component (e.g., accelerometer), a gravity sensor component, a rotation sensor component (e.g., gyroscope), and so forth. The environmental components 1036 include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), auditory sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors that detect hazardous gas concentrations or measure pollutants in the atmosphere for safety), or other components that may provide an indication, measurement, or signal corresponding to the surrounding physical environment. The positioning component 1038 includes a position sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects barometric pressure from which altitude may be derived), an orientation sensor component (e.g., a magnetometer), and so forth.
Can enableCommunication is accomplished using a variety of techniques. The I/O component 1042 also includes a communication component 1040, which communication component 1040 is operable to couple the machine 1000 to the network 1020 or devices 1022 via the coupling 1024 and the coupling 1026, respectively. For example, communication component 1040 may include a network interface component or another suitable device that interfaces with network 1020. In further examples, communication components 1040 may include wired communication components, wireless communication components, cellular communication components, near Field Communication (NFC) components,Parts (e.g.)>Low energy consumption),>means and other communication means for providing communication via other modalities. Device 1022 may be another machine or any of a variety of peripheral devices (e.g., a peripheral device coupled via USB).
Further, communication component 1040 may detect an identifier or include a component operable to detect an identifier. For example, the communication component 1040 may include a Radio Frequency Identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional barcodes such as Universal Product Code (UPC) barcodes, multi-dimensional barcodes such as Quick Response (QR) codes, aztec codes, data matrices, data symbols (Dataglyph), maximum codes (MaxiCode), PDF417, ultra codes (UCC Code), UCC RSS-2D barcodes, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying marked audio signals). In addition, various information may be derived via the communication component 1040, such as location via Internet Protocol (IP) geolocation, via Signal triangulated location, via detection of NFC beacon signals that may indicate a particular locationAnd the like.
Various memories (e.g., memory 1004, main memory 1012, static memory 1014, and/or memory of processor 1002) and/or storage unit 1016 may store one or more sets of instructions and data structures (e.g., software) implemented or used by any one or more of the methods or functions described herein. These instructions (e.g., instructions 1008), when executed by the processor 1002, cause various operations to implement the disclosed embodiments.
The instructions 1008 may be transmitted or received over the network 1020 via a network interface device, such as a network interface component included in the communication component 1040, using a transmission medium and using any of a number of well-known transmission protocols, such as the hypertext transfer protocol (HTTP). Similarly, instructions 1008 may be transmitted or received to device 1022 via coupling 1026 (e.g., a peer-to-peer coupling) using a transmission medium.
As used herein, the terms "machine storage medium," "device storage medium," and "computer storage medium" mean the same and may be used interchangeably in this disclosure. The term refers to a single or multiple storage devices and/or media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the executable instructions and/or data. Thus, the term should be taken to include, but is not limited to, solid-state memory, as well as optical and magnetic media, including memory internal or external to the processor. Specific examples of machine, computer, and/or device storage media include: nonvolatile memory includes, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), field Programmable Gate Array (FPGA), and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disk; CD-ROM and DVD-ROM discs. The terms "machine storage medium," "computer storage medium," and "device storage medium" expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are contained within the term "signal medium" as described below.
The terms "transmission medium" and "signal medium" mean the same thing and may be used interchangeably in this disclosure. The terms "transmission medium" and "signal medium" should be taken to include any intangible medium capable of storing, encoding or carrying instructions 1416 for execution by the machine 1400, and include digital or analog communications signals or other intangible medium to facilitate communication of such software. Accordingly, the terms "transmission medium" and "signal medium" should be construed to include any form of modulated data signal, carrier wave, or the like. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
The terms "machine-readable medium," "computer-readable medium," and "device-readable medium" mean the same thing and may be used interchangeably in this disclosure. The term is defined to include both machine storage media and transmission media. Thus, the term includes both storage devices/media and carrier wave/modulated data signals.
Although embodiments have been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader scope of the disclosure. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. The accompanying drawings that form a part hereof show by way of illustration, and not of limitation, specific embodiments in which the subject matter may be practiced. The embodiments shown are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments may be utilized and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. The detailed description is, therefore, not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.
These embodiments of the inventive subject matter may be referred to, individually and/or collectively, herein by the term "invention" merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed. Thus, although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the above description.
The Abstract of the disclosure is provided to allow the reader to quickly ascertain the nature of the technical disclosure. The abstract is submitted with such understanding: this abstract is not intended to be used to interpret or limit the scope or meaning of the claims. Furthermore, in the foregoing detailed description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the claims are hereby incorporated into the detailed description, with each claim standing on its own as a separate embodiment.
Example
Example 1 is a method for dynamically initializing a three degree of freedom (3 DOF) tracking device, the method comprising: accessing a gyroscope signal from a gyroscope of the 3DOF tracking device; accessing accelerometer signals from an accelerometer of the 3DOF tracking device; determining an initial state comprising a combination of an initial orientation, an initial positioning, and an initial velocity of the 3DOF tracking device, the initial state indicating a starting condition of the 3DOF tracking device; integrating the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state; and refining a tilt signal of the orientation signal using the positioning signal.
Example 2 includes example 1, wherein refining the tilt signal comprises: the positioning signal is limited to remain substantially close to the initial positioning.
Example 3 includes example 1, wherein determining the initial state comprises: the initial state is determined based on the accelerometer signal without requiring the 3DOF tracking device to remain in a stationary condition.
Example 4 includes example 1, wherein determining the initial state comprises: the orientation signal and the positioning signal of the 3DOF tracking device are used as previously estimated.
Example 5 includes example 1, wherein integrating the gyroscope signal and the accelerometer signal comprises: integrating the gyroscope signal to determine the orientation signal starting from the initial orientation; rotating the accelerometer signal from the accelerometer using the orientation signal; subtracting the gravity; and performing a double integration from the initial positioning to determine the positioning signal.
Example 6 includes example 1, further comprising: correcting the gyroscope signal and the accelerometer signal using the bias; and refining the tilt signal and the offset using the positioning signal.
Example 7 includes example 1, further comprising: accessing magnetometer signals from a magnetometer of the 3DOF tracking device; and refining the orientation signal using the magnetometer signals.
Example 8 includes example 1, further comprising: accessing a position signal from a radio-based sensor of the 3DOF tracking device; and refining the positioning signal using the position signal.
Example 9 includes example 1, further comprising: detecting that the 3DOF tracking device is turned on; and in response to detecting that the 3DOF tracking device is turned on, initializing the 3DOF tracking device without waiting for a quiescent condition of the 3DOF tracking device.
Example 10 includes example 9, further comprising: the tilt is continuously determined after detecting that the 3DOF tracking device is turned on.
Example 11 is a computing device, comprising: a processor; and a memory storing instructions that, when executed by the processor, configure the device to perform operations comprising: accessing a gyroscope signal from a gyroscope of the 3DOF tracking device; accessing accelerometer signals from an accelerometer of the 3DOF tracking device; determining an initial state comprising a combination of an initial orientation, an initial positioning, and an initial velocity of the 3DOF tracking device, the initial state indicating a starting condition of the 3DOF tracking device; integrating the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state; and refining a tilt signal of the orientation signal using the positioning signal.
Example 12 includes example 11, wherein refining the tilt signal comprises: the positioning signal is limited to remain substantially close to the initial positioning.
Example 13 includes example 11, wherein determining the initial state comprises: the initial state is determined based on the accelerometer signal without requiring the 3DOF tracking device to remain in a stationary condition.
Example 14 includes example 11, wherein determining the initial state comprises: the orientation signal and the positioning signal of the 3DOF tracking device are used as previously estimated.
Example 15 includes example 11, wherein integrating the gyroscope signal and the accelerometer signal comprises: integrating the gyroscope signal to determine the orientation signal starting from the initial orientation; rotating the accelerometer signal from the accelerometer using the orientation signal; subtracting the gravity; and performing a double integration from the initial positioning to determine the positioning signal.
Example 16 includes example 11, wherein the instructions further configure the device to: correcting the gyroscope signal and the accelerometer signal using the bias; and refining the tilt signal and the offset using the positioning signal.
Example 17 includes example 11, wherein the instructions further configure the device to: accessing magnetometer signals from a magnetometer of the 3DOF tracking device; and refining the orientation signal using the magnetometer signals.
Example 18 includes example 11, wherein the instructions further configure the device to: accessing a position signal from a radio-based sensor of the 3DOF tracking device; and refining the positioning signal using the position signal.
Example 19 includes example 11, wherein the instructions further configure the device to: detecting that the 3DOF tracking device is turned on; and in response to detecting that the 3DOF tracking device is turned on, initializing the 3DOF tracking device without waiting for a quiescent condition of the 3DOF tracking device; and continuously determining a tilt after detecting that the 3DOF tracking device is turned on.
Example 20 is a non-transitory computer-readable storage medium comprising instructions that, when executed by a computer, cause the computer to perform operations comprising: accessing a gyroscope signal from a gyroscope of the 3DOF tracking device; accessing accelerometer signals from an accelerometer of the 3DOF tracking device; determining an initial state comprising a combination of an initial orientation, an initial positioning, and an initial velocity of the 3DOF tracking device, the initial state indicating a starting condition of the 3DOF tracking device; integrating the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state; and refining a tilt signal of the orientation signal using the positioning signal.

Claims (20)

1. A method for dynamically initializing a three degree of freedom (3 DOF) tracking device, the method comprising:
accessing a gyroscope signal from a gyroscope of the 3DOF tracking device;
accessing accelerometer signals from an accelerometer of the 3DOF tracking device;
determining an initial state comprising a combination of an initial orientation, an initial positioning, and an initial velocity of the 3DOF tracking device, the initial state indicating a starting condition of the 3DOF tracking device;
integrating the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state; and
the positioning signal is used to refine the tilt signal of the orientation signal.
2. The method of claim 1, wherein refining the tilt signal comprises:
the positioning signal is limited to remain substantially close to the initial positioning.
3. The method of claim 1, wherein determining the initial state comprises:
the initial state is determined based on the accelerometer signal without requiring the 3DOF tracking device to remain in a stationary condition.
4. The method of claim 1, wherein determining the initial state comprises:
The orientation signal and the positioning signal of the 3DOF tracking device are used as previously estimated.
5. The method of claim 1, wherein integrating the gyroscope signal and the accelerometer signal comprises:
integrating the gyroscope signal to determine the orientation signal starting from the initial orientation;
rotating the accelerometer signal from the accelerometer using the orientation signal;
subtracting the gravity; and
performing a double integration from the initial positioning to determine the positioning signal.
6. The method of claim 1, further comprising:
correcting the gyroscope signal and the accelerometer signal using the bias; and
the tilt signal and the bias are refined using the positioning signal.
7. The method of claim 1, further comprising:
accessing magnetometer signals from a magnetometer of the 3DOF tracking device; and
the orientation signal is refined using the magnetometer signals.
8. The method of claim 1, further comprising:
accessing a position signal from a radio-based sensor of the 3DOF tracking device; and
the position signal is used to refine the positioning signal.
9. The method of claim 1, further comprising:
detecting that the 3DOF tracking device is turned on; and
in response to detecting that the 3DOF tracking device is turned on, the 3DOF tracking device is initialized without waiting for a quiescent condition of the 3DOF tracking device.
10. The method of claim 9, further comprising:
the tilt is continuously determined after detecting that the 3DOF tracking device is turned on.
11. A computing device, comprising:
a processor; and
a memory storing instructions that, when executed by the processor, configure the device to perform operations comprising:
accessing a gyroscope signal from a gyroscope of the 3DOF tracking device;
accessing accelerometer signals from an accelerometer of the 3DOF tracking device;
determining an initial state comprising a combination of an initial orientation, an initial positioning, and an initial velocity of the 3DOF tracking device, the initial state indicating a starting condition of the 3DOF tracking device;
integrating the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state; and
The positioning signal is used to refine the tilt signal of the orientation signal.
12. The computing device of claim 11, wherein refining the tilt signal comprises:
the positioning signal is limited to remain substantially close to the initial positioning.
13. The computing device of claim 11, wherein to determine the initial state comprises to:
the initial state is determined based on the accelerometer signal without requiring the 3DOF tracking device to remain in a stationary condition.
14. The computing device of claim 11, wherein to determine the initial state comprises to:
the orientation signal and the positioning signal of the 3DOF tracking device are used as previously estimated.
15. The computing device of claim 11, wherein integrating the gyroscope signal and the accelerometer signal comprises:
integrating the gyroscope signal to determine the orientation signal starting from the initial orientation;
rotating the accelerometer signal from the accelerometer using the orientation signal;
subtracting the gravity; and
performing a double integration from the initial positioning to determine the positioning signal.
16. The computing device of claim 11, wherein the instructions further configure the device to:
Correcting the gyroscope signal and the accelerometer signal using the bias; and
the tilt signal and the bias are refined using the positioning signal.
17. The computing device of claim 11, wherein the instructions further configure the device to:
accessing magnetometer signals from a magnetometer of the 3DOF tracking device; and
the orientation signal is refined using the magnetometer signals.
18. The computing device of claim 11, wherein the instructions further configure the device to:
accessing a position signal from a radio-based sensor of the 3DOF tracking device; and
the position signal is used to refine the positioning signal.
19. The computing device of claim 11, wherein the instructions further configure the device to:
detecting that the 3DOF tracking device is turned on;
in response to detecting that the 3DOF tracking device is turned on, initializing the 3DOF tracking device without waiting for a quiescent condition of the 3DOF tracking device; and
the tilt is continuously determined after detecting that the 3DOF tracking device is turned on.
20. A non-transitory computer-readable storage medium comprising instructions that, when executed by a computer, cause the computer to perform operations comprising:
Accessing a gyroscope signal from a gyroscope of the 3DOF tracking device;
accessing accelerometer signals from an accelerometer of the 3DOF tracking device;
determining an initial state comprising a combination of an initial orientation, an initial positioning, and an initial velocity of the 3DOF tracking device, the initial state indicating a starting condition of the 3DOF tracking device;
integrating the gyroscope signal and the accelerometer signal to obtain an orientation signal and a positioning signal using the initial state; and
the positioning signal is used to refine the tilt signal of the orientation signal.
CN202280035625.4A 2021-05-18 2022-05-17 Dynamic initialization of three-degree-of-freedom augmented reality tracking system Pending CN117337422A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/189,845 2021-05-18
US17/524,423 2021-11-11
US17/524,423 US11941184B2 (en) 2021-05-18 2021-11-11 Dynamic initialization of 3DOF AR tracking system
PCT/US2022/029621 WO2022245815A1 (en) 2021-05-18 2022-05-17 Dynamic initialization of 3dof ar tracking system

Publications (1)

Publication Number Publication Date
CN117337422A true CN117337422A (en) 2024-01-02

Family

ID=89290623

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280035625.4A Pending CN117337422A (en) 2021-05-18 2022-05-17 Dynamic initialization of three-degree-of-freedom augmented reality tracking system

Country Status (1)

Country Link
CN (1) CN117337422A (en)

Similar Documents

Publication Publication Date Title
US20230388632A1 (en) Dynamic adjustment of exposure and iso to limit motion blur
US20230300464A1 (en) Direct scale level selection for multilevel feature tracking under motion blur
US11615506B2 (en) Dynamic over-rendering in late-warping
US11765457B2 (en) Dynamic adjustment of exposure and iso to limit motion blur
WO2022245815A1 (en) Dynamic initialization of 3dof ar tracking system
US11683585B2 (en) Direct scale level selection for multilevel feature tracking under motion blur
US20220375110A1 (en) Augmented reality guided depth estimation
WO2022246388A1 (en) Intrinsic parameters estimation in visual tracking systems
EP4341780A1 (en) Dynamic over-rendering in late-warping
US11941184B2 (en) Dynamic initialization of 3DOF AR tracking system
US20240176428A1 (en) Dynamic initialization of 3dof ar tracking system
CN117337422A (en) Dynamic initialization of three-degree-of-freedom augmented reality tracking system
US11983897B2 (en) Camera intrinsic re-calibration in mono visual tracking system
US11688101B2 (en) Intrinsic parameters estimation in visual tracking systems
US20220374505A1 (en) Bending estimation as a biometric signal
US20240127006A1 (en) Sign language interpretation with collaborative agents
CN117441343A (en) Related applications of dynamic adjustment of exposure and ISO
CN117321546A (en) Depth estimation for augmented reality guidance
CN117425869A (en) Dynamic over-rendering in post-distortion
WO2022246382A1 (en) Bending estimation as a biometric signal
CN117321472A (en) Post-warping to minimize delays in moving objects
CN117337575A (en) Selective image pyramid computation for motion blur mitigation
CN117501208A (en) AR data simulation using gait imprinting simulation
KR20240008370A (en) Late warping to minimize latency for moving objects
CN117321635A (en) Direct scale level selection for multi-level feature tracking

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination