Low power hand tracking system for wearable devices

By adopting a hand tracking system with a low-power architecture in AR devices, the problem of the 6DOF tracking system consumes a lot of power in the prior art is solved, achieving longer battery life and a more stable user experience.

CN119452326APending Publication Date: 2025-02-14SNAP INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380050069.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-06-28
Filing Date
2023-06-26
Publication Date
2025-02-14

AI Technical Summary

Technical Problem

The 6DOF tracking system in existing augmented reality (AR) devices consumes a lot of power, resulting in shorter battery life and limited user experience.

Method used

A hand tracking system with a low-power architecture uses a low-frequency polling system to detect hand proximity events and switch to high-power mode for posture recognition when necessary.

Benefits of technology

By reducing the power consumption of the device in idle state, extending battery life and quickly switching to high power mode when needed, providing a more stable user experience and longer usage time.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119452326A_ABST
    Figure CN119452326A_ABST
Patent Text Reader

Abstract

A method for a low power hand tracking system is described. In one aspect, a method includes polling a proximity sensor of a wearable device to detect a proximity event, the wearable device including a low-power processor and a high-power processor, in response to detecting the proximity event, operating a low-power hand tracking application on the low-power processor based on proximity data from the proximity sensor, and terminating operation of the low-power hand tracking application in response to at least one of detecting and recognizing a gesture based on the proximity data, detecting and not recognizing a gesture based on the proximity data, or detecting a lack of activity from the proximity sensor within a timeout period based on the proximity data.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Priority declaration

[0002] This application claims the benefit of priority to U.S. application serial number 17 / 851,465, filed on June 28, 2022, which is incorporated herein by reference in its entirety. Technical Field

[0003] The subject matter disclosed herein generally relates to hand tracking systems. In particular, the present disclosure proposes a low-power architecture hand tracking system for wearable devices. Background Art

[0004] Augmented reality (AR) allows a user to observe a scene while viewing related virtual content that can be aligned with items, images, objects, or environments in the field of view of the AR device. AR devices include 6DOF (six degrees of freedom) tracking systems that can require a lot of power. To save power, AR devices can be set to sleep mode and awakened in response to a user request to start an AR experience. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] In the drawings, which are not necessarily drawn to scale, similar reference numerals may describe similar components in different views. To easily identify the discussion of any particular element or action, the highest digit or digits in the reference numeral refer to the figure number in which the element is first introduced. Some non-limiting examples are shown in the figures of the accompanying drawings, in which:

[0006] Figure 1 is a block diagram illustrating an environment for operating an AR device according to one example embodiment.

[0007] Figure 2 is a block diagram illustrating an AR device according to an example embodiment.

[0008] Figure 3 is a block diagram illustrating a high power mode system according to an example implementation.

[0009] Figure 4 is a block diagram illustrating a low power mode system according to an example implementation.

[0010] Figure 5 A method for operating an AR device in a low power mode according to an example implementation is shown.

[0011] Figure 6 A method for operating an AR device in a low power mode according to an example implementation is shown.

[0012] Figure 7 A routine according to one example implementation is shown.

[0013] Figure 8 A head wearable device 800 is shown according to an example implementation.

[0014] Fig. 9 A network environment in which a head wearable device may be implemented according to an example embodiment is shown.

[0015] Fig.10 is a block diagram illustrating a software architecture within which the present disclosure may be implemented according to an example implementation.

[0016] Fig.11 is a diagrammatic representation of a machine in the form of a computer system within which a set of instructions may be executed, causing the machine to perform any one or more of the methodologies discussed herein, according to an example embodiment. DETAILED DESCRIPTION

[0017] The following description describes the system, method, technology, instruction sequence and computing machine program product of the example implementation of the present theme. In the following description, for the purpose of illustration, many specific details are set forth in order to provide an understanding of the various implementations of the present theme. However, it will be apparent to those skilled in the art that the implementation of the present theme can be put into practice without some or other details in these specific details. Examples represent possible variations only. Unless otherwise clearly stated, structures (e.g., structural components such as modules) are optional and can be combined or subdivided, and operations (e.g., in processes, algorithms or other functions) can be changed in order or combined or subdivided.

[0018] The term "augmented reality" (AR) is used herein to refer to an interactive experience of a real-world environment in which physical objects residing in the real world are "augmented" 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 the combination of the real and virtual worlds, real-time interaction, and 3D registration of virtual and real objects. Users of AR systems perceive virtual content that appears to be connected to or interacting with physical objects in the real world.

[0019] The term "virtual reality" (VR) is used herein to refer to a simulated experience of a virtual world environment that is completely different from the real world environment. Computer-generated digital content is displayed in a virtual world environment. VR also refers to a system that enables a user of a VR system to be fully immersed in a virtual world environment and interact with virtual objects presented in the virtual world environment.

[0020] The term "AR application" is used herein to refer to a computer-operated application that implements an AR experience. The term "VR application" is used herein to refer to a computer-operated application that implements a VR experience. The term "AR / VR application" refers to a computer-operated application that implements a combination of an AR experience or a VR experience.

[0021] The term "visual 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 visual tracking system. The visual tracking system builds a model of the real-world environment based on the tracked visual features. Non-limiting examples of visual tracking systems include: visual simultaneous localization and mapping systems (VSLAM) and visual inertial odometry (VIO) systems. VSLAM can be used to construct a target from an environment or scene based on one or more cameras of the visual tracking system. VIO (also known as visual inertial tracking system and visual odometry system) determines the latest posture (e.g., position and orientation) of a device based on data obtained from multiple sensors of the device (e.g., optical sensors, inertial sensors).

[0022] The term "inertial measurement unit" (IMU) is used herein to refer to a device that can report the inertial state of a mobile subject, including the acceleration, velocity, orientation, and location of the mobile subject. The IMU tracks the movement of the subject by integrating the acceleration and angular velocity measured by the IMU. The IMU may also refer to a combination of an accelerometer and a gyroscope, which can determine and quantify linear acceleration and angular velocity, respectively. The values ​​obtained from the IMU gyroscope can be processed to obtain the pitch, roll, and heading of the IMU, and thus obtain the pitch, roll, and heading of the subject associated with the IMU. The signal from the accelerometer of the IMU can also be processed to obtain the velocity and displacement of the IMU.

[0023] Both AR applications and VR applications allow a user to access information, for example, in the form of virtual content rendered in a display of an AR / VR display device (also referred to as an "AR device," "VR device," and display device). The rendering of the virtual content can be based on the positioning of the display device relative to physical objects or relative to a reference frame (external to the display device) so that the virtual content appears correctly in the display. For AR, the virtual content appears to be aligned with physical objects perceived by the user and the camera of the AR display device. The virtual content appears to be attached to the physical world (e.g., a physical object of interest).

[0024] Displaying and aligning virtual content within the physical world requires powerful device computing power. In some examples, the AR device detects physical objects and tracks the posture of the AR device relative to the physical object. The posture identifies the position and orientation of the display device relative to a reference frame or relative to another object. Therefore, the virtual content is refreshed based on the latest posture of the device. The display device is also referred to as an imaging device that operates a mixed reality system (e.g., AR / VR applications). The display device can be part of a wearable device (e.g., glasses).

[0025] In order to improve the user experience of the user of the display device, the wearable device can operate in one of two modes: a low-power mode using a low-power processor (e.g., MCU) and a high-power mode using a high-power processor (e.g., SoC). In one example, the wearable device operates in a low-power hand tracking application in low-power mode on the MCU by accessing proximity data from a proximity sensor or a distance imaging sensor (e.g., time-of-flight TOF sensor, structured light, interferometry). Traditional wearable devices are controlled via touch or buttons. The present application describes a wearable device that detects and recognizes gestures in low-power mode without using an SoC.

[0026] In one example, a wearable device is composed of a low-power microcontroller capable of performing DSP-accelerated operations and one or more multi-unit proximity sensors attached to the wearable device. The microcontroller is in turn connected to the main SoC. In an idle state, the wearable device runs a low-frequency, low-power poll on the proximity sensor to detect a hand approach event. A low-power hand tracking application determines whether the approach event corresponds to an actual gesture. For example, a user raising a hand to scratch his / her forehead is not a gesture event. In response to detecting a proximity event, the wearable device switches from an idle mode (e.g., proximity sensor polling) to an active mode. In active mode, a low-power hand tracking application tracks the hand and performs a gesture recognition routine. The loop of the low-power hand tracking application is completed when one of the following events is detected: (1) no gesture timeout, (2) no hand activity timeout, and (3) a gesture has been recognized. If a gesture has been recognized, the low-power hand tracking application identifies an operation corresponding to the recognized / recognized gesture. In one example, a low-power hand tracking application identifies a gesture related to the operation of a mixed reality application operating on the SoC. The low power hand tracking application communicates (and activates) the requested operation to the mixed reality application.

[0027] In one example, the estimated energy cost of operating proximity detection is approximately 1 mAH. The low power mode system includes a low power microcontroller (MCU) with digital signal processing (DSP) and an optional neural network (NN) accelerator. The proximity sensor includes, for example, a 4×4 or 8×8 unit proximity sensor connected to the low power microcontroller using a serial peripheral interface (SPI) interface. The wearable device may include more than one proximity sensor. The low power microcontroller includes a software library that is capable of (1) interpreting proximity data received from the proximity sensor, and (2) performing hand detection and tracking. The output of such a software library can be an index from a gesture dictionary or an indicator (e.g., -1) in the case of an unrecognized gesture, as well as a confidence level.

[0028] In one example implementation, the present application describes a method for hand tracking using a low-power system of a wearable device. In one aspect, the method includes: polling a proximity sensor of a wearable device to detect a proximity event, the wearable device including a low-power processor and a high-power processor, in response to detecting the proximity event, operating a low-power hand tracking application on the low-power processor based on proximity data from the proximity sensor, and terminating operation of the low-power hand tracking application in response to at least one of: detecting and recognizing a gesture based on the proximity data, detecting and not recognizing a gesture based on the proximity data, or detecting a lack of activity from the proximity sensor within a timeout period based on the proximity data.

[0029] Thus, one or more of the methods described herein help solve the technical problem of power resource management for wearable devices. The presently described methods provide improvements in the operation of functions of a computer by reducing the power consumption of the device when the wearable device is in an idle state (e.g., when the user is not enjoying an experience that requires 6DOF tracking). Substantial power savings result from using the techniques presented in this application. Limited experiences (e.g., gesture recognition) can be run on a microcontroller rather than a high-power processor.

[0030] Figure 1 1 is a network diagram illustrating an environment 100 suitable for operating a wearable device 108 according to some example embodiments. The environment 100 includes a user 104, a wearable device 108, and a physical object 106. The user 104 operates the wearable device 108. The user 104 can be a human user (e.g., a human), a machine user (e.g., a computer configured by a software program to interact with the wearable device 108), or any suitable combination thereof (e.g., a human assisted by a machine or a machine supervised by a human). The user 104 is associated with the wearable device 108.

[0031] Wearable device 108 can be a computing device with a display, such as a smartphone, a tablet computer, or a wearable computing device (e.g., a watch or glasses). The computing device can be handheld or can be removably mounted to the head of user 104. In one example, the display includes a screen that displays images captured using a camera of wearable device 108. In another example, the display of the device can be transparent, such as in the lens of wearable computing glasses. In other examples, the display can be opaque, partially transparent, partially opaque. In other examples, the display can be wearable by user 104 to cover the field of view of user 104.

[0032] The wearable device 108 includes an imaging system 114 that generates virtual content based on images detected using a camera of the wearable device 108. For example, the user 104 can aim the camera of the wearable device 108 to capture an image of the physical object 106. The imaging system 114 generates virtual content corresponding to the recognized object (e.g., the physical object 106) in the image and presents the virtual content in a display of the wearable device 108. In another example, the imaging system 114 generates the virtual content and presents the virtual content in the display of the wearable device 108 relative to a reference frame (external to the display device) so that the virtual content appears correctly in the display.

[0033] In one example implementation, the imaging system 114 includes a low-power hand tracking system 112 and a mixed reality system 110. The low-power hand tracking system 112 operates in a low-power mode using a low-power processor (e.g., an MCU). The mixed reality system 110 operates in a high-power mode using a high-power processor (e.g., an SoC). The terms "high power" and "low power" are used in relative terms: a low-power processor consumes less power than a high-power processor. Similarly, the imaging system 114 consumes more power when operating the mixed reality system 110 than when operating the low-power hand tracking system 112.

[0034] The low power hand tracking system 112 operates in a low power mode using a low power processor and a proximity sensor. In one example, the low power hand tracking system 112 operates by default when the wearable device 108 is turned on. The low power hand tracking system 112 uses the proximity sensor to detect proximity activity. Examples of proximity activity include gestures or movements of the user's 104 hand in front of the wearable device 108. The low power hand tracking system 112 is configured to recognize gestures based on the proximity data from the proximity sensor. The low power hand tracking system 112 recognizes an operation corresponding to the recognized gesture and can perform the operation locally (using the low power processor) or request that the operation be performed by the SoC. Figure 4The low power hand tracking system 112 is described in more detail.

[0035] Imaging system 114 operates mixed reality system 110 in high power mode using a high power processor by accessing sensor data (e.g., data from any sensor in wearable device 108). Non-limiting example applications operating in high power mode include 6DOF tracking systems, depth sensing systems, AR applications (described below with respect to Figure 3 described in more detail).

[0036] In one example, the imaging system 114 operates in a low power mode using the low power hand tracking system 112 by default. The imaging system 114 detects a gesture indicating a request to operate in a high power mode (e.g., a user launching an AR application on the wearable device 108), and in response switches to the high power mode (e.g., activating a six degree of freedom (6DOF) tracking system instead of the current zero DOF tracking). In another example, the low power hand tracking system 112 fails to recognize the gesture after a preset number of attempts (e.g., after 3 attempts), and activates the high power mode of the mixed reality system 110 in response to a predefined trigger event (e.g., failure to recognize the same or different gesture after 3 attempts).

[0037] In one example, the imaging system 114 utilizes the SoC to operate the mixed reality system 110 in a high power mode. In the high power mode, the imaging system 114 activates additional sensors of the wearable device 108 and uses, for example, optical sensors (e.g., depth-enabled 3D cameras, image cameras), inertial sensors (e.g., gyroscopes, accelerometers), wireless sensors (Bluetooth, Wi-Fi), GPS sensors, and audio sensors to track the pose of the wearable device 108 relative to the real world environment 102. In one example, the wearable device 108 displays virtual content based on the pose of the wearable device 108 relative to the real world environment 102 and / or the physical object 106.

[0038] Figure 1 Any of the machines, databases, or devices shown in the may be implemented in a general-purpose computer that is modified (e.g., configured or programmed) by software to be a special-purpose computer to perform one or more of the functions described herein for that machine, database, or device. As used herein, a "database" is a data storage resource and may store data structured as a text file, table, spreadsheet, relational database (e.g., object-relational database), triple store, hierarchical data store, or any suitable combination thereof. In addition, Figure 1Any two or more of the machines, databases, or devices shown in the may be combined into a single machine, and the functionality described herein for any single machine, database, or device may be subdivided among multiple machines, databases, or devices.

[0039] Wearable device 108 can operate via a computer network. A computer network can be any network that enables communication between or among machines, databases, and devices. Thus, a computer network can be a wired network, a wireless network (e.g., a mobile or cellular network), or any suitable combination thereof. A computer network can include one or more parts that constitute a private network, a public network (e.g., the Internet), or any suitable combination thereof.

[0040] Figure 2 is a block diagram illustrating modules (e.g., components) of a wearable device 108 according to some example implementations. The wearable device 108 includes a sensor 202, a display 204, a display controller 218, a graphics processing unit 216, a high-power processor 208, a low-power processor 220, and a storage device 206. Examples of the wearable device 108 include a wearable computing device, a mobile computing device, a navigation device, a portable media device, or a smartphone.

[0041] Sensors 202 include, for example, optical sensors 210 (e.g., cameras such as color cameras, thermal cameras, depth sensors, and one or more grayscale, global / rolling shutter tracking cameras), inertial sensors 212 (e.g., gyroscopes, accelerometers), and proximity sensors 224 (e.g., time-of-flight TOF sensors, structured light, interferometry, etc.). Other examples of sensors 202 include position sensors (e.g., near field communication, GPS, Bluetooth, Wifi), audio sensors (e.g., microphones), or any suitable combination thereof. Note that the sensors 202 described herein are for illustrative purposes, and thus the sensors 202 are not limited to the sensors described above.

[0042] In one example, the proximity sensor 224 operates with the low-power hand tracking system 112 (implemented using the low-power processor 220), while the remaining sensors (e.g., optical sensor 210, inertial sensor 212) operate with the mixed reality system 110 (implemented using the high-power processor 208). In another example, the high-power processor 208 can still operate the proximity sensor 224.

[0043] The low power processor 220 includes the low power hand tracking system 112. The low power hand tracking system 112 accesses proximity data from the proximity sensor 224. Figure 4An example of a low power hand tracking system 112 is described in more detail. The high power processor 208 includes the mixed reality system 110. The mixed reality system 110 accesses sensor data from the sensor 202. Figure 3 An example of a mixed reality system 110 is described in more detail. The mixed reality system 110 uses computer vision to detect and identify a physical environment or physical object 106. The mixed reality system 110 retrieves virtual content (e.g., a 3D object model) based on the identified physical object 106 or physical environment. The mixed reality system 110 renders the virtual object in the display 204. In an example embodiment, the mixed reality system 110 includes a local rendering engine that generates a visualization of virtual content superimposed on (e.g., superimposed on or otherwise displayed in conjunction with) an image of the physical object 106 captured by the optical sensor 210. The visualization of the virtual content can be manipulated by adjusting the positioning of the physical object 106 relative to the optical sensor 210 (e.g., its physical position, orientation, or both). Similarly, the visualization of the virtual content can be manipulated by adjusting the posture of the wearable device 108 relative to the physical object 106.

[0044] In one example, the low-power processor 220 accesses proximity data from the proximity sensor 224 to detect proximity events (e.g., hand movement) and recognize gestures. Instead of running the mixed reality system 110 continuously or instead of running the mixed reality system 110 only when requested by the AR application, the low-power hand tracking system 112 begins running when the wearable device 108 is powered on. The low-power hand tracking system 112 runs until a gesture corresponding to an operation performed by the mixed reality system 110 is recognized. The low-power hand tracking system 112 requests the mixed reality system 110 to start and perform the operation. Once the mixed reality system 110 is started, the wearable device 108 switches from operating using the low-power processor 220 to operating using the high-power processor 208.

[0045] In one example, the graphics processing unit 216 includes a rendering engine (not shown) configured to render a frame of a 3D model of a virtual object based on the virtual content provided by the AR application and the pose of the wearable device 108. In other words, the graphics processing unit 216 uses the three-dimensional pose of the wearable device 108 to generate a frame of virtual content to be presented on the display 304. For example, the graphics processing unit 216 uses the three-dimensional pose to render the frame of the virtual content so that the virtual content is presented in a certain orientation and position in the display 204 to appropriately enhance the realism of the user. As an example, the graphics processing unit 216 can use the three-dimensional pose data to render the frame of the virtual content so that when presented on the display 204, the virtual content overlaps with the physical objects in the user's real-world environment 102. The graphics processing unit 216 generates an updated frame of the virtual content based on the updated three-dimensional pose of the graphics processing unit 216, which reflects the change in the position and orientation of the user relative to the physical objects in the user's real-world environment 102.

[0046] The graphics processing unit 216 transmits the rendered frames to the display controller 218. The display controller 218 is positioned as an intermediary between the display controller 218 and the display 204, receiving image data (eg, rendered frames) from the graphics processing unit 216 and providing the rendered frames to the display 204.

[0047] The display 204 comprises a screen or monitor configured to display images generated by the high-power processor 208. In one example implementation, the display 204 may be transparent or semi-opaque so that the user 104 can see through the display 204 (in an AR use case). In another example implementation, the display 204 covers the eyes of the user 104 and blocks the entire field of view of the user 104 (in a VR use case). In another example, the display 204 comprises a touch screen display configured to receive user input via contact on the touch screen display.

[0048] Storage device 206 stores virtual content 214 and gesture content 222. Virtual content 214 includes, for example, a database of visual references (e.g., images of physical objects) and corresponding experiences (e.g., three-dimensional virtual object models). Other augmented data that may be stored in storage device 206 include augmented reality content items (e.g., corresponding to application lenses or augmented reality experiences). Augmented reality content items may be real-time special effects and sounds that can be added to images or videos. Gesture content 222 includes a gesture library that maps to corresponding operations of low-power processor 220 or high-power processor 208.

[0049] As described above, augmented data includes augmented reality content items, overlays, image transformations, AR images, and similar terms involving modifications that can be applied to image data (e.g., videos or images). This includes real-time modifications that modify images when they are captured using a device sensor (e.g., one or more cameras) of the wearable device 108 and then display the modified images on the screen of the wearable device 108. This also includes modifications to stored content (e.g., video clips in a gallery that can be modified). For example, in a wearable device 108 that accesses multiple augmented reality content items, a user can use a single video clip with multiple augmented reality content items to see how different augmented reality content items will modify the stored clips. For example, by selecting different augmented reality content items for the content, multiple augmented reality content items that apply different pseudo-random movement models can be applied to the same content. Similarly, real-time video capture can be used with the modifications shown to show how the video image currently being captured by the sensor of the wearable device 108 will modify the captured data. Such data may be displayed only on the screen and not stored in memory, or content captured by the device sensors may be recorded and stored in memory with or without modification (or both). In some systems, a preview function may show how different augmented reality content items will be displayed simultaneously in different windows of the display. This may, for example, enable viewing of multiple windows with different pseudo-random animations on the display simultaneously.

[0050] Thus, data and various systems using augmented reality content items or other such transformation systems using the data to modify content may involve: detection of objects (e.g., faces, hands, bodies, cats, dogs, surfaces, objects, etc.) in video frames, tracking of such objects as they leave, enter, and move around the field of view, and modification or transformation of such objects as they are tracked. In various examples, different methods for implementing such transformations may be used. Some examples may involve: generating a three-dimensional mesh model of one or more objects, and using transformations and animated textures of the models within a video to implement the transformations. In other examples, tracking of points on an object may be used to place an image or texture (which may be two-dimensional or three-dimensional) at the tracked location. In yet another example, neural network analysis of a video frame may be used to place an image, model, or texture in content (e.g., an image or video frame). Thus, augmented reality content items refer to both images, models, and textures used to create transformations in content, as well as additional modeling and analysis information required to implement such transformations using object detection, tracking, and placement.

[0051] Real-time video processing can be performed using any kind of video data (e.g., video streams, video files, etc.) stored in the memory of any kind of computerized system. For example, a user can load video files and store them in the memory of the device, or a sensor of the device can be used to generate a video stream. In addition, computer animation models can be used to process any object, such as a human face and parts of a human body, an animal, or an inanimate object (e.g., a chair, a car, or other object).

[0052] In some examples, when a specific modification is selected together with the content to be transformed, the element to be transformed is identified by the computing device, and then if the element to be transformed is present in the video frame, the element to be transformed is detected and tracked. The elements of the object are modified according to the request for modification, thereby transforming the frame of the video stream. The transformation of the frame of the video stream can be performed by different methods for different kinds of transformations. For example, for the transformation of the frame that mainly involves changing the form of the elements of the object, the feature points of each element of the object are calculated (for example, using active shape model (ASM) or other known methods). Then, a grid based on the feature points is generated for each element of at least one element of the object. The grid is used for the subsequent stage of tracking the elements of the object in the video stream. During the tracking process, the grid mentioned for each element is aligned with the positioning of each element. Then, additional points are generated on the grid. A first set of first points is generated for each element based on the request for modification, and a set of second points is generated for each element based on the set of first points and the request for modification. Then, the frame of the video stream can be transformed by modifying the elements of the object based on the set of first points and the set of second points and the grid. In such methods, the background of the modified object may also be changed or deformed by tracking and modifying the background.

[0053] In some examples, a transformation using elements of an object to change some areas of an object can be performed by calculating feature points of each element of the object and generating a grid based on the calculated feature points. Points are generated on the grid, and then various areas are generated based on the points. The elements of the object are then tracked by aligning the area of ​​each element with the location of each element of at least one element, and the properties of the area can be modified based on a request for modification, thereby transforming the frame of the video stream. Depending on the specific request for modification, the properties of the mentioned area can be transformed in different ways. Such modifications may involve: changing the color of the area; removing at least some parts of the area from the frame of the video stream; including one or more new objects in the area based on the request for modification; and modifying or deforming the elements of the area or object. In various examples, any combination of such modifications or other similar modifications may be used. For certain models to be animated, some feature points may be selected as control points for the entire state space to be used to determine options for model animation.

[0054] In some examples of computer animation models that use face detection to transform image data, faces are detected on an image using a specific face detection algorithm (e.g., Viola-Jones). An active shape model (ASM) algorithm is then applied to the face region of the image to detect facial feature reference points.

[0055] Other methods and algorithms suitable for face detection may be used. For example, in some examples, features are located using landmarks that represent distinguishable points that are present in most of the images considered. For example, for a landmark of a face, the location of the left pupil may be used. If the initial landmark is not recognizable (for example, if the person is wearing an eye patch), a secondary landmark may be used. Such a landmark identification procedure may be used for any such object. In some examples, a set of landmarks forms a shape. The shape may be represented as a vector using the coordinates of the points in the shape. One shape is aligned with another shape using a similarity transformation (allowing translation, scaling, and rotation) that minimizes the average Euclidean distance between the shape points. The average shape is the average of the aligned training shapes.

[0056] In some examples, a landmark search begins with an average shape that aligns with the location and size of the face determined by a global face detector. Such a search then repeats the steps of proposing tentative shapes by adjusting the positions of shape points by template matching of the image texture around each point, and then conforming the tentative shapes to a global shape model until convergence occurs. In some systems, individual template matches are unreliable, and the shape model aggregates the results of weak template matches to form a stronger overall classifier. The entire search is repeated at each level in the image pyramid from coarse resolution to fine resolution.

[0057] The transformation system can capture an image or video stream on a client device (e.g., wearable device 108) and perform complex image manipulations locally on the wearable device 108 while maintaining an appropriate user experience, computational time, and power consumption. Complex image manipulations can include size and shape changes, emotion transformations (e.g., changing a face from a frown to a smile), state transformations (e.g., aging a subject, reducing apparent age, changing gender), style transformations, application of graphical elements, and any other suitable image or video manipulations enabled by a convolutional neural network that has been configured to execute efficiently on the wearable device 108.

[0058] In some examples, a computer animation model for transforming image data can be used by a system in which a user can capture an image or video stream of the user (e.g., a selfie) using a wearable device 108 having a neural network operating as part of an AR application operating on the wearable device 108. The transformation system operating within the AR application determines the presence of a face within the image or video stream and provides a modification icon associated with the computer animation model to transform the image data, or the computer animation model can be presented as associated with an interface described herein. The modification icon includes the following changes, which can be the basis for modifying the face of the user within the image or video stream as part of the modification operation. Once the modification icon is selected, the transformation system initiates a process of transforming the image of the user to reflect the selected modification icon (e.g., generating a smiley face on the user). Once the image or video stream is captured and the specified modification is selected, the modified image or video stream can be presented in a graphical user interface displayed on the wearable device 108. The transformation system can implement a complex convolutional neural network on a portion of the image or video stream to generate and apply the selected modification. That is, once the modification icon has been selected, the user can capture the image or video stream and be presented with the modified result in real time or near real time. Furthermore, while the video stream is being captured, the modifications may be persistent and the selected modification icon remains toggled. A machine learning neural network may be used to implement such modifications.

[0059] The graphical user interface presenting the modifications performed by the transformation system may supply the user with additional interactive options. Such options may be based on an interface for initiating content capture and selection of a particular computer animation model (e.g., initiated from a content creator user interface). In various examples, the modifications may be persistent after the initial selection of the modification icon. The user may toggle the modifications on or off by tapping or otherwise selecting the face being modified by the transformation system, and store it for later viewing or browsing of other areas of the imaging application. In the case where multiple faces are modified by the transformation system, the user may globally toggle the modifications on or off by tapping or selecting a single face modified and displayed within the graphical user interface. In some examples, a single face in a plurality of face groups may be modified individually, or such modifications may be individually toggled by tapping or selecting a single face or a series of single faces displayed within the graphical user interface.

[0060] Any one or more modules in the modules described herein can be implemented using hardware (e.g., a processor of a machine) or a combination of hardware and software. For example, any module described herein can configure a processor to perform the operation described herein for the module. In addition, any two or more modules in these modules can be combined into a single module, and the function described herein for a single module can be subdivided among multiple modules. In addition, according to various example embodiments, the modules described herein as implemented in a single machine, database, or device can be distributed across multiple machines, databases, or devices.

[0061] Figure 3 Mixed reality system 110 is shown according to an example implementation. Mixed reality system 110 includes, for example, AR application 302, 6DOF tracker 304, 3DOF tracker 308, and depth system 306.

[0062] In one example, the mixed reality system 110 communicates with each of the sensors 202. In another example, the mixed reality system 110 communicates with a specific sensor mapped to the mixed reality system 110. The mixed reality system 110 accesses sensor data from the sensors 202.

[0063] The AR application 302 uses computer vision to detect and identify the physical environment or physical objects 106. The AR application 302 retrieves virtual content (e.g., a 3D object model) based on the identified physical object 106 or physical environment, and renders the virtual object in the display 204. In one example embodiment, the AR application 302 includes a local rendering engine that generates a visualization of the virtual content superimposed on (e.g., superimposed on or otherwise displayed in conjunction with) an image of the physical object 106 captured by the optical sensor 210. The visualization of the virtual content can be manipulated by adjusting the positioning of the physical object 106 relative to the optical sensor 210 (e.g., its physical position, orientation, or both). Similarly, the visualization of the virtual content can be manipulated by adjusting the posture of the wearable device 108 relative to the physical object 106.

[0064] The pose of the wearable device 108 can be determined based on the 6DOF tracker 304 / 3DOF tracker 308 and the depth system 306. The 3DOF tracker 308 allows the wearable device 108 to track rotational motion. For example, the 3DOF tracker 308 can track whether the user of the wearable device 108 is looking left or right, rotating their head up or down, and pivoting left or right. The wearable device 108 may not use the 3DOF tracking system to determine whether the user has moved around the scene by moving in the real world environment 102. The 3DOF tracker 308 uses sensor data from the wearable device 108, such as an inertial measurement unit (IMU) sensor. For example, the 3DOF tracker 308 system uses sensor data from sensors such as accelerometers, gyroscopes, and magnetometers.

[0065] The 6DOF tracker 304 allows the wearable device 108 to track rotational and translational motion. For example, the 6DOF tracker 304 can track whether the user has rotated their head and moved forward or backward, laterally or vertically, and up or down. The 6DOF tracker 304 includes a visual odometry system that relies on data acquired from multiple sensors (e.g., depth cameras, inertial sensors). The 6DOF tracker 304 analyzes the data from the sensors to accurately determine the pose of the wearable device 108.

[0066] In one example, the 6DOF tracker 304 determines the pose (e.g., location, position, orientation) of the wearable device 108 relative to a reference frame (e.g., the real-world environment 102). In one example implementation, the 6DOF tracker 304 includes a visual odometry system that estimates the pose of the wearable device 108 based on a 3D map of feature points from images captured using the depth system 306 and inertial sensor data captured using the inertial sensor 212. The AR application 302 accesses image data from the optical sensor 210.

[0067] In one example implementation, the 6DOF tracker 304 calculates the position and orientation of the wearable device 108. The wearable device 108 includes one or more optical sensors 210 and one or more inertial sensors 212 mounted on a rigid platform (frame of the wearable device 108). The optical sensors 210 can be mounted with non-overlapping (distributed aperture) or overlapping (stereoscopic or more) fields of view.

[0068] In some example embodiments, the 6DOF tracker 304 includes an algorithm that combines inertial information from the inertial sensor 212 and image information from the optical sensor 210, which are coupled to a rigid platform (e.g., the wearable device 108) or rig. In one embodiment, the rig may consist of a plurality of cameras and an inertial navigation unit (e.g., the inertial sensor 212) mounted on a rigid platform. Thus, the rig may have at least one inertial navigation unit and at least one camera.

[0069] Figure 4 4 is a block diagram illustrating a low power hand tracking system 112 according to an example implementation. The low power hand tracking system 112 includes a low power hand tracking application 402 and a high power mode switching module 404. One of ordinary skill in the art will recognize that the low power hand tracking system 112 may be used on the low power processor 220 to execute other applications. Figure 4 The applications described in are for illustrative purposes only and are not intended to be limiting.

[0070] When the wearable device 108 is started or operated after the mixed reality system 110 is idle, the low-power hand tracking application 402 operates by default. In one example, the low-power hand tracking system 112 uses the proximity sensor 224 to detect proximity activities. Examples of proximity activities include gestures or movements of the user's 104 hand in front of the wearable device 108. The low-power hand tracking system 112 operates a gesture recognition algorithm (not shown) that is configured to recognize gestures based on proximity data from the proximity sensor. The low-power hand tracking system 112 identifies an operation corresponding to the recognized gesture. For example, the low-power hand tracking system 112 identifies a circular gesture that is mapped to turn off the wearable device 108. In another example, the low-power hand tracking system 112 identifies a swipe that is mapped to a gesture that activates the mixed reality system 110. In one example, the mapped operation can be performed locally using a low-power processor 220 (e.g., MCU), or requesting the high-power processor 208 (SoC) to perform the operation (by providing a request to the high-power mode switching module 404).

[0071] The low power hand tracking application 402 operates on the low power processor 220 to detect and recognize the wake-up gesture by performing coarse gesture recognition using a very low resolution sensor (4×4) of the proximity sensor 224. In one example, the MCU is capable of processing higher resolution single camera data (using computer vision camera streaming) and running a lightweight version of neural network software such as TensorFlow lite to provide higher end recognition features. In another example implementation, the low power hand tracking application 402 recognizes a limited set of hand commands (e.g., yes, no, cancel, resume, forward, and back).

[0072] The high power mode switching module 404 receives a request from the low power hand tracking application 402 to perform an operation on the mixed reality system 110. The high power mode switching module 404 activates the other sensors 202 and the mixed reality system 110 to perform the operation on the mixed reality system 110.

[0073] The high-power mode switching module 404 communicates with the mixed reality system 110. In one example, the high-power mode switching module 404 detects that the user 104 has requested to operate the AR application 302 using a preset gesture. In response, the high-power mode switching module 404 signals the mixed reality system 110 to take over. In another example, the wearable device 108 detects a predefined trigger event (e.g., a gesture is not recognized after several attempts) and activates the mixed reality system 110 in response to the predefined trigger event. The mixed reality system 110 can be configured to recognize and identify a larger set of gestures than using the low-power hand tracking application 402.

[0074] In one example implementation, the wearable device 108 is programmed in low power mode to recognize a limited set of gestures (utilizing a much smaller NN model and using a TOF based sensor (which enables gesture recognition to work with varying positioning and depth) compared to recognizing fingers of a hand. For example, the wearable device 108 can detect (in low power mode) moving a hand from right to left or moving a hand in a circle.

[0075] Figure 5 5 is a flow chart illustrating a method 500 according to an example implementation. The operations of the method 500 may be performed by the low power hand tracking system 112. In one example, the method 500 may be operated by the low power processor 220.

[0076] At block 502, the low power hand tracking system 112 operates in an idle state. At block 504, the low power hand tracking system 112 polls the proximity sensor(s) 224 at a rate of, for example, once every 200 ms until the proximity sensor 224 detects a proximity event.

[0077] At decision block 506, the low power hand tracking system 112 determines whether a proximity event is detected based on the proximity data from the proximity sensor 224. When a proximity event is detected, at block 508, the low power hand tracking system 112 activates the low power hand tracking application 402 and attempts to recognize a gesture.

[0078] The low power hand tracking application 402 ceases operation when one of the following conditions is met: (1) a gesture has been detected with a certain minimum confidence level, (2) a gesture has been detected but not recognized, or (3) no proximity activity has been detected within a certain timeout period.

[0079] The low power hand tracking application 402 recognizes the gesture, the low power hand tracking application 402 will perform the configured action (e.g., wake up the main SoC) at block 516. If the low power hand tracking application 402 detects a gesture but does not recognize the gesture, the low power hand tracking application 402 returns to block 508 to continue detection. If the low power hand tracking application 402 does not detect any proximity activity at decision block 512, the low power hand tracking application 402 returns to the idle state at block 502 after the timeout period at decision block 514 has passed.

[0080] It should be noted that other embodiments can use different sorting, additional or less operations and different nomenclature or terminology to complete similar functions.In some embodiments, various operations can be performed in parallel with other operations in a synchronous or asynchronous manner.The operations described herein are selected to illustrate some operating principles in a simplified form.

[0081] Figure 6 6 is a flow chart illustrating a method 600 according to an example implementation. The operations of the method 600 may be performed by the low power hand tracking system 112. In one example, the method 600 may be operated by the high power processor 208, the low power processor 220, or any combination thereof.

[0082] In block 602, the low power hand tracking system 112 operates the wearable device 108 using the low power processor 220. In block 604, the low power hand tracking system 112 detects a gesture using the low power processor 220. In block 606, the low power hand tracking system 112 switches the wearable device 108 to operate using the high power processor 208. In block 608, the high power processor 208 operates the wearable device.

[0083] It should be noted that other embodiments can use different sorting, additional or less operations and different nomenclature or terminology to complete similar functions.In some embodiments, various operations can be performed in parallel with other operations in a synchronous or asynchronous manner.The operations described herein are selected to illustrate some operating principles in a simplified form.

[0084] Figure 7 A routine 700 is shown according to one embodiment. In block 702, the routine 700 polls a proximity sensor of a wearable device to detect a proximity event, the wearable device including a low-power processor and a high-power processor. In block 704, the routine 700 operates a low-power hand tracking application on the low-power processor based on proximity data from the proximity sensor in response to detecting the proximity event. In block 706, the routine 700 ends operation of the low-power hand tracking application in response to at least one of: detecting and recognizing a gesture based on the proximity data, detecting and not recognizing a gesture based on the proximity data, or detecting a lack of activity from the proximity sensor within a timeout period based on the proximity data.

[0085] Figure 8 A head wearable device 800 is shown according to an example implementation. Figure 8 A perspective view of a head wearable device 800 is shown according to an example implementation. In some examples, wearable device 108 can be head wearable device 800.

[0086] exist Figure 8 , the head wearable device 800 is a pair of glasses. In some embodiments, the head wearable device 800 can be sunglasses or goggles. Some embodiments may include one or more wearable devices, such as a pendant with an integrated camera that is integrated with, communicates with, or is coupled to the head wearable device 800 or wearable device 108. Any desired wearable device may be used in conjunction with embodiments of the present disclosure, such as a watch, headphones, wristbands, earbuds, clothing (e.g., a hat or jacket with integrated electronics), a clip-on electronic device, or any other wearable device. It should be understood that, although not shown, one or more portions of the system included in the head wearable device 800 may be included in a wearable device 108 that may be used in conjunction with the head wearable device 800.

[0087] exist Figure 8In the embodiment, the head wearable device 800 is a pair of glasses including a frame 810, which includes a frame (or frame) respectively coupled to two handles (or temples) via hinges and / or end pieces. The frame of the frame 810 carries or holds a pair of lenses (e.g., lens 812 and lens 814). The frame 810 includes a first (e.g., right) side coupled to the first handle and a second (e.g., left) side coupled to the second handle. The first side is opposite to the second side of the frame 810.

[0088] The head wearable device 800 also includes a camera lens (e.g., camera lens 806, camera lens 808) and one or more proximity sensors (proximity sensor 816, proximity sensor 818). The camera lens 806 and the camera lens 808 can be perspective camera lenses or non-perspective camera lenses. The non-perspective camera lens can be, for example, a fisheye lens, a wide-angle lens, an omnidirectional lens, etc. The image sensor captures digital video through the camera lens 806 and the camera lens 808. The image can also be a still image frame or a video including multiple still image frames. The camera module can be coupled to the frame 810. As shown in FIG. Figure 8 As shown in , frame 810 is coupled to camera lens 806 and camera lens 808 so that the camera lenses (e.g., camera lens 806, camera lens 808) face forward. Camera lens 806 and camera lens 808 can be perpendicular to lens 812 and lens 814. The camera module can include dual front cameras separated by the width of frame 810 or the width of the head of the user of head wearable device 800.

[0089] exist Figure 8 , two handles (or temples) are coupled to microphone housing 802 and microphone housing 804, respectively. The first handle and the second handle are coupled to opposite sides of the frame 810 of the head wearable device 800. The first handle is coupled to the first microphone housing 802, and the second handle is coupled to the second microphone housing 804. The microphone housing 802 and the microphone housing 804 can be coupled to the handles between the position of the frame 810 and the position of the temple tip. When the user wears the head wearable device 800, the microphone housing 802 and the microphone housing 804 can be located on either side of the user's temple.

[0090] like Figure 8 As shown in , microphone housing 802 and microphone housing 804 enclose multiple microphones (not shown). A microphone is an air interface sound pickup device that converts sound into an electrical signal. More specifically, a microphone is a transducer that converts sound pressure into an electrical signal (e.g., an acoustic signal). The microphone may be a digital or analog micro-electromechanical system (MEMS) microphone. The acoustic signal generated by the microphone may be a pulse density modulation (PDM) signal.

[0091] System with head wearable device

[0092] Fig. 9 Shown is a network environment 900 in which a head wearable device 902 may be implemented according to an example implementation. Fig. 9 is a high-level functional block diagram of an example head wearable device 902 that communicatively couples a mobile client device 938 and a server system 932 via various networks 940 .

[0093] The head wearable device 902 includes a camera, such as at least one of a visible light camera 912, an infrared emitter 914, and an infrared camera 916. The client device 938 may be able to connect to the head wearable device 902 using both communication 934 and communication 936. The client device 938 is connected to the server system 932 and the network 940. The network 940 may include any combination of wired connections and wireless connections.

[0094] The head wearable device 902 also includes two image displays in the optical assembly's image display 904. The two image displays include one image display associated with the left lateral side of the head wearable device 902 and one image display associated with the right lateral side of the head wearable device 902. The head wearable device 902 also includes an image display driver 908, an image processor 910, low power circuitry 926, and high speed circuitry 918. The optical assembly's image display 904 is used to present images and videos to a user of the head wearable device 902, including images that may include a graphical user interface.

[0095] The image display driver 908 commands and controls the image display in the image display 904 of the optical assembly. The image display driver 908 may deliver the image data directly to the image display in the image display 904 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 (e.g., H.264 (MPEG-4 Part 10), HEVC, Theora, Dirac, RealVideo RV40, VP8, VP9, ​​etc.), and still image data may be formatted according to a compression format (e.g., Portable Network Graphics Group (PNG), Joint Photographic Experts Group (JPEG), Tagged Image File Format (TIFF), or Exchangeable Image File Format (Exif), etc.).

[0096] As described above, the head wearable device 902 includes a frame and a handle (or temple) extending from a lateral side of the frame. The head wearable device 902 also includes a user input device 906 (e.g., a touch sensor or a push button), which includes an input surface on the head wearable device 902. The user input device 906 (e.g., a touch sensor or a push button) is used to receive input selections from the user for manipulating the graphical user interface of the presented image.

[0097] Fig. 9 The components for the head wearable device 902 shown in FIG. 1 are located on one or more circuit boards (e.g., PCBs or flexible PCBs) in the frame or temples. Alternatively or additionally, the depicted components can be located in a block, frame, hinge, or nose bridge of the head wearable device 902. The left and right sides can include digital camera elements, such as complementary metal oxide semiconductor (CMOS) image sensors, charge coupled devices, camera lenses, or any other corresponding visible or light capturing elements that can be used to capture data (including images of scenes with unknown objects).

[0098] The head wearable device 902 includes a memory 922 that stores instructions for performing a subset or all of the functions described herein. The memory 922 may also include a storage device.

[0099] like Fig. 9 As shown in , the high-speed circuit system 918 includes a high-speed processor 920, a memory 922, and a high-speed wireless circuit system 924. In the example, the image display driver 908 is coupled to the high-speed circuit system 918 and is operated by the high-speed processor 920 to drive the left image display and the right image display in the image display 904 of the optical assembly. The high-speed processor 920 can be any processor capable of managing the operation and high-speed communication of any general-purpose computing system required by the head wearable device 902. The high-speed processor 920 includes the processing resources required to manage the high-speed data transmission on the communication 936 to the wireless local area network (WLAN) using the high-speed wireless circuit system 924. In some examples, the high-speed processor 920 executes an operating system (e.g., a LINUX operating system or other such operating system of the head wearable device 902), and the operating system is stored in the memory 922 for execution. In addition to any other duties, the high-speed processor 920 that executes the software architecture of the head wearable device 902 is used to manage data transmission with the high-speed wireless circuit system 924. In some examples, high-speed wireless circuit system 924 is configured to implement the Institute of Electrical and Electronics Engineers (IEEE) 902.11 communication standard (also referred to herein as Wi-Fi). In other examples, other high-speed communication standards can be implemented by high-speed wireless circuit system 924.

[0100] The low power wireless circuitry 930 and high speed wireless circuitry 924 of the head wearable device 902 may include a short range transceiver (Bluetooth™) and a wireless wide area network, local area network, or wide area network transceiver (e.g., cellular or WiFi). A client device 938 including a transceiver for communicating via communication 934 and communication 936 may be implemented using details of the architecture of the head wearable device 902, as may other elements of the network 940.

[0101] The memory 922 includes any storage device capable of storing various data and applications, including camera data generated by the left and right, infrared cameras 916 and the image processor 910, and images generated by the image display driver 908 for display on the image display in the image display 904 of the optical assembly, etc. Although the memory 922 is shown as being integrated with the high-speed circuit system 918, in other examples, the memory 922 can be a separate independent element of the head wearable device 902. In some such examples, the circuit routing line can provide a connection from the image processor 910 or the low-power processor 928 to the memory 922 through a chip including the high-speed processor 920. In other examples, the high-speed processor 920 can manage the addressing of the memory 922 so that the low-power processor 928 will start the high-speed processor 920 at any time when a read or write operation involving the memory 922 is required.

[0102] like Fig. 9 As shown in , the low-power processor 928 or the high-speed processor 920 of the head wearable device 902 can be coupled to a camera device (a visible light camera device 912; an infrared emitter 914 or an infrared camera device 916), an image display driver 908, a user input device 906 (for example, a touch sensor or a push button), and a memory 922.

[0103] The head wearable device 902 is connected to a host computer. For example, the head wearable device 902 is paired with a client device 938 via communication 936, or is connected to a server system 932 via a network 940. For example, the server system 932 can be one or more computing devices as part of a service or network computing system, which includes a processor, a memory, and a network communication interface to communicate with the client device 938 and the head wearable device 902 through the network 940.

[0104] The client device 938 includes a processor and a network communication interface coupled to the processor. The network communication interface allows communication via network 940, communication 934, or communication 936. The client device 938 may also store at least a portion of the instructions for generating binaural audio content in a memory of the client device 938 to implement the functions described herein.

[0105] The output components of the head wearable device 902 include visual components, such as a display, such as, for example, 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 908. The output components of the head wearable device 902 also include acoustic components (e.g., speakers), tactile components (e.g., vibration motors), other signal generators, etc. The input components (e.g., user input devices 906) of the head wearable device 902, the client device 938, and the server system 932 may include alphanumeric input components (e.g., keyboards, touch screens configured to receive alphanumeric input, optical keyboards, or other alphanumeric input components), pointing-based input components (e.g., mice, touch pads, trackballs, joysticks, motion sensors, or other pointing instruments), tactile input components (e.g., physical buttons, touch screens that provide the location and force of touch or touch gestures, or other tactile input components), audio input components (e.g., microphones), etc.

[0106] The head wearable device 902 may optionally include additional peripheral device elements. Such peripheral device elements may include biometric sensors, additional sensors, or display elements integrated with the head wearable device 902. For example, the peripheral device element may include any I / O component, including an output component, a motion component, a positioning component, or any other such component described herein.

[0107] For example, the biometric recognition component includes a component for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biological signals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or electroencephalogram-based recognition), etc. The motion component includes an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, a rotation sensor component (e.g., a gyroscope), etc. The positioning component includes a position sensor component (e.g., a global positioning system (GPS) receiver component) that generates position coordinates, a WiFi or Bluetooth™ transceiver for generating positioning system coordinates, an altitude sensor component (e.g., an altimeter or barometer that detects air pressure, from which the altitude can be derived), an orientation sensor component (e.g., a magnetometer), etc. Such positioning system coordinates can also be received from the client device 938 via the low-power wireless circuit system 930 or the high-speed wireless circuit system 924 through communication 936.

[0108] Fig.101000 is a block diagram illustrating a software architecture 1004 that may be installed on any one or more of the devices described herein. The software architecture 1004 is supported by hardware such as a machine 1002, which includes a processor 1020, a memory 1026, and an I / O component 1038. In this example, the software architecture 1004 may be conceptualized as a stack of layers, where each layer provides specific functionality. The software architecture 1004 includes layers such as an operating system 1012, a library 1010, a framework 1008, and an application 1006. In operation, the application 1006 invokes an API call 1050 through the software stack and receives a message 1052 in response to the API call 1050.

[0109] The operating system 1012 manages hardware resources and provides public services. The operating system 1012 includes, for example, a kernel 1014, services 1016, and drivers 1022. The kernel 1014 serves as an abstraction layer between the hardware and other software layers. For example, the kernel 1014 provides memory management, processor management (e.g., scheduling), component management, networking and security settings, and other functions. Services 1016 can provide other public services to other software layers. Drivers 1022 are responsible for controlling or interfacing with the underlying hardware. For example, drivers 1022 may include display drivers, camera drivers, or Low-power drivers, Flash drivers, Serial communications drivers (e.g., Universal Serial Bus (USB) drivers), Drivers, audio drivers, power management drivers, etc.

[0110] The library 1010 provides a low-level common infrastructure used by the application 1006. The library 1010 may include a system library 1018 (e.g., a C standard library) that provides functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the library 1010 may include an API library 1024, such as a media library (e.g., a library for supporting the presentation and manipulation of various media formats, such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), a graphics library (e.g., an OpenGL framework for presenting in two dimensions (2D) and three dimensions (3D) in graphics content on a display), a database library (e.g., SQLite providing various relational database functions), a web library (e.g., WebKit providing web browsing functions), etc. The library 1010 may also include various other libraries 1028 to provide many other APIs to the application 1006 .

[0111] The framework 1008 provides a high-level common infrastructure used by the applications 1006. For example, the framework 1008 provides various graphical user interface (GUI) functions, advanced resource management, and advanced location services. The framework 1008 can provide a wide range of other APIs that can be used by the applications 1006, some of which can be specific to a particular operating system or platform.

[0112] In an example embodiment, the applications 1006 may include a home application 1036, a contact application 1030, a browser application 1032, a book reader application 1034, a location application 1042, a media application 1044, a messaging application 1046, a game application 1048, and a variety of other applications such as third-party applications 1040. Application 1006 is a program that executes the functions defined in the program. Various programming languages ​​can be used to create one or more of the applications 1006 constructed in various ways, 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 specific example, the third-party application 1040 (e.g., an application developed by an entity other than the vendor of a particular platform using an ANDROIDTM or IOSTM software development kit (SDK)) can be an application developed on a platform such as IOSTM, ANDROIDTM, Mobile software running on the mobile operating system of the phone or other mobile operating systems. In this example, third-party applications 1040 can activate API calls 1050 provided by the operating system 1012 to facilitate the functions described herein.

[0113] Fig.111100 within which instructions 1108 (e.g., software, programs, applications, applet, app, or other executable code) may be executed to cause the machine 1100 to perform any one or more of the methods discussed herein. For example, the instructions 1108 may cause the machine 1100 to perform any one or more of the methods described herein. The instructions 1108 transform a general purpose, unprogrammed machine 1100 into a specific machine 1100 that is programmed to perform the functions described and illustrated in the manner described. The machine 1100 may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1100 may operate in the capacity of a server machine or a client machine in a server-client network environment or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 1100 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 phone, 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 devices, a web device, a network router, a network switch, a network bridge, or any machine capable of executing instructions 1108 that specify actions to be taken by the machine 1100, either sequentially or otherwise. In addition, while only a single machine 1100 is shown, the term "machine" should also be taken to include a collection of machines that individually or jointly execute instructions 1108 to perform any one or more of the methodologies discussed herein.

[0114] The machine 1100 may include a processor 1102, a memory 1104, and an I / O component 1142 that may be configured to communicate with each other via a bus 1144. In an example embodiment, the processor 1102 (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), another processor, or any suitable combination thereof) may include, for example, a processor 1106 that executes instructions 1108 and a processor 1110. The term "processor" is intended to include multi-core processors, which may include two or more independent processors (sometimes referred to as "cores") that may execute instructions simultaneously. Although Fig.11 Multiple processors 1102 are shown, but the machine 1100 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.

[0115] The memory 1104 includes a main memory 1112, a static memory 1114, and a storage unit 1116, all of which are accessible by the processor 1102 via a bus 1144. The main memory 1104, the static memory 1114, and the storage unit 1116 store instructions 1108 that embody any one or more of the methods or functions described herein. The instructions 1108 may also reside, in whole or in part, within the main memory 1112, within the static memory 1114, within the machine-readable medium 1118 within the storage unit 1116, within at least one of the processors 1102 (e.g., within a cache memory of a processor), or within any suitable combination thereof during execution of the instructions 1108 by the machine 1100.

[0116] I / O components 1142 may include various components for receiving input, providing output, generating output, transmitting information, exchanging information, capturing measurements, etc. The specific I / O components 1142 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 may not include such a touch input device. It will be appreciated that I / O components 1142 may include Fig.11 1142 may include an output component 1128 and an input component 1130. The output component 1128 may include a visual component (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)), an acoustic component (e.g., a speaker), a tactile component (e.g., a vibration motor, a resistance mechanism), other signal generators, etc. The input component 1130 may include an alphanumeric input component (e.g., a keyboard, a touch screen configured to receive alphanumeric input, an optical keyboard, or other alphanumeric input component), a pointing-based input component (e.g., a mouse, a touch pad, a trackball, a joystick, a motion sensor, or other pointing instrument), a tactile input component (e.g., a physical button, a touch screen that provides the location and / or force of a touch or touch gesture, or other tactile input component), an audio input component (e.g., a microphone), etc.

[0117] In other example embodiments, the I / O component 1142 may include: a biometric component 1132, a motion component 1134, an environmental component 1136, or a positioning component 1138, as well as various other components. For example, the biometric component 1132 includes components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition), etc. The motion component 1134 includes an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, a rotation sensor component (e.g., a gyroscope), etc. For example, the environment component 1136 includes an illumination sensor component (e.g., a photometer), a temperature sensor component (e.g., one or more thermometers that detect ambient temperature), a humidity sensor component, a pressure sensor component (e.g., a barometer), an acoustic sensor component (e.g., one or more microphones that detect background noise), a proximity sensor component (e.g., an infrared sensor that detects nearby objects), a gas sensor (e.g., a gas detection sensor that detects the concentration of hazardous gases or measures pollutants in the atmosphere for safety), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment. The positioning component 1138 includes a position sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects air pressure, from which the altitude can be derived), an orientation sensor component (e.g., a magnetometer), etc.

[0118] Various technologies may be used to achieve communication. I / O components 1142 also include communication components 1140, which are operable to couple machine 1100 to network 1120 or device 1122 via coupling 1124 and coupling 1126, respectively. For example, communication components 1140 may include a network interface component or other suitable device to interface with network 1120. In other examples, communication components 1140 may include wired communication components, wireless communication components, cellular communication components, near field communication (NFC) components, Components (e.g. Low power consumption), Device 1122 may be another machine or any of a variety of peripheral devices (eg, a peripheral device coupled via USB).

[0119] In addition, the communication component 1140 can detect an identifier or include a component operable to detect an identifier. For example, the communication component 1140 can 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 the following: a one-dimensional barcode, such as a universal product code (UPC) barcode; a multi-dimensional barcode, such as a Quick Response (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode, PDF417, Supercode, UCC RSS-2D barcode and other optical codes), or an acoustic detection component (e.g., a microphone for identifying an audio signal of a tag). In addition, various information can be obtained via the communication component 1140, such as a location via Internet Protocol (IP) geolocation, a location via Internet Protocol (IP), ... The location of signal triangulation, the location of an NFC beacon signal via detection that can indicate a specific location, etc.

[0120] Various memories (e.g., memory 1104, main memory 1112, static memory 1114, and / or memory of processor 1102) and / or storage unit 1116 may store one or more sets of instructions and data structures (e.g., software) that embody or are used by any one or more of the methods or functions described herein. These instructions (e.g., instructions 1108) when executed by processor 1102 cause various operations to implement the disclosed embodiments.

[0121] Instructions 1108 may be sent or received over network 1120 via a network interface device (e.g., a network interface component included in communications component 1140) using a transmission medium and using any of a number of well-known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, instructions 1108 may be sent or received to device 1122 via coupling 1126 (e.g., a peer-to-peer coupling) using a transmission medium.

[0122] Where phrases are used that are 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,” it is intended that the phrase be interpreted to mean that A can exist alone in an embodiment, B can exist alone in an embodiment, C can exist alone in an embodiment, or any combination of elements A, B, and C can exist in a single embodiment; for example, A and B, A and C, B and C, or A and B and C.

[0123] 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 appended claims.

[0124] Although the embodiments have been described with reference to specific example embodiments, it will be apparent that various modifications and changes may be made to these embodiments without departing from the broader scope of the present disclosure. Therefore, the description and the accompanying drawings should be considered in an illustrative sense, rather than a restrictive sense. The accompanying drawings forming a part of the present disclosure show, by way of illustration and not limitation, specific embodiments in which the subject matter can 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 so that structural and logical substitutions and changes may be made without departing from the scope of the present disclosure. Therefore, this specific embodiment should not be understood in a restrictive sense, and the scope of the various embodiments is limited only by the appended claims and the full scope of equivalents given by such claims.

[0125] An abstract of the disclosure is provided to allow the reader to quickly determine the nature of the technical disclosure. The abstract is submitted with the understanding that the abstract will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing detailed description, it can be seen that various features are combined together in a single embodiment for the purpose of simplifying the disclosure. This method of the disclosure should not be interpreted as reflecting an intention that the claimed embodiment requires more features than those explicitly recited in each claim. On the contrary, as reflected in the attached claims, the inventive subject matter lies in less than all the features of a single disclosed embodiment. Therefore, the attached claims are hereby incorporated into the detailed description, with each claim existing independently as a separate embodiment.

[0126] Example

[0127] Example 1 is a method comprising: polling a proximity sensor of a wearable device to detect a proximity event, the wearable device comprising a low-power processor and a high-power processor; in response to detecting the proximity event, operating a low-power hand tracking application on the low-power processor based on proximity data from the proximity sensor; and ending operation of the low-power hand tracking application in response to at least one of: detecting and recognizing a gesture based on the proximity data, detecting but not recognizing the gesture based on the proximity data, or detecting a lack of activity from the proximity sensor within a timeout period based on the proximity data.

[0128] Example 2 includes the method of Example 1, further comprising: generating a confidence level for the gesture based on a gesture dictionary using a gesture recognition algorithm operating on the low-power processor; and recognizing the gesture in response to the confidence level exceeding a preset threshold.

[0129] Example 3 includes the method of Example 2, further comprising: identifying an operation corresponding to a gesture; and requesting one of the low-power processor or the high-power processor to perform the operation.

[0130] Example 4 includes the method of Example 2, further comprising: identifying an operation of a mixed reality application corresponding to the gesture; and requesting the high-power processor to execute the operation of the mixed reality application.

[0131] Example 5 includes the method of Example 1, further comprising: in response to ending operation of the low-power hand tracking application, returning the wearable device to an idle state that polls the proximity sensor at regular intervals.

[0132] Example 6 includes the method of Example 1, wherein the proximity sensor comprises a time-of-flight sensor.

[0133] Example 7 includes the method of Example 1, wherein the low-power processor comprises a microcontroller, and wherein the high-power processor comprises a system on a chip (SoC).

[0134] Example 8 includes the method of Example 1, wherein the low-power processor is configured to operate only the proximity sensor and the low-power hand tracking application, and wherein the high-power processor is configured to operate all sensors of the wearable device.

[0135] Example 9 includes the method of Example 1, wherein the low-power hand tracking application uses a neural network to detect and recognize gestures of a user of the wearable device based on proximity data, the neural network being configured to recognize a first set of gestures, and wherein the high-power processor includes a high-power hand tracking application configured to use camera data from a higher resolution camera of the wearable device to recognize a second set of gestures, the second set of gestures being larger than the first set of gestures.

[0136] Example 10 includes the method of Example 1, wherein the wearable device comprises a head wearable device.

[0137] Example 11 is a computing device comprising: a processor; and a memory storing instructions that, when executed by the processor, configure the device to: poll a proximity sensor of a wearable device to detect a proximity event, the wearable device comprising a low-power processor and a high-power processor; in response to detecting the proximity event, operate a low-power hand tracking application on the low-power processor based on proximity data from the proximity sensor; and terminate operation of the low-power hand tracking application in response to at least one of: detecting and recognizing a gesture based on the proximity data, detecting but not recognizing the gesture based on the proximity data, or detecting a lack of activity from the proximity sensor within a timeout period based on the proximity data.

[0138] Example 12 includes the computing device of Example 11, wherein the instructions further configure the device to: generate a confidence level for the gesture based on a gesture dictionary using a gesture recognition algorithm operating on the low-power processor; and recognize the gesture in response to the confidence level exceeding a preset threshold.

[0139] Example 13 includes the computing device of Example 12, wherein the instructions further configure the device to: identify an operation corresponding to the gesture; and request one of the low-power processor or the high-power processor to perform the operation.

[0140] Example 14 includes the computing device of Example 12, wherein the instructions further configure the device to: identify an operation of a mixed reality application corresponding to the gesture; and request the high-power processor to perform the operation of the mixed reality application.

[0141] Example 15 includes the computing device of Example 11, wherein the instructions further configure the device to: in response to ending operation of the low-power hand tracking application, return the wearable device to an idle state, the idle state polling the proximity sensor at regular intervals.

[0142] Example 16 includes the computing device of Example 11, wherein the proximity sensor comprises a time-of-flight sensor.

[0143] Example 17 includes the computing device of Example 11, wherein the low-power processor comprises a microcontroller, and wherein the high-power processor comprises a system on a chip (SoC).

[0144] Example 18 includes the computing device of Example 11, wherein the low-power processor is configured to operate only the proximity sensor and the low-power hand tracking application, and wherein the high-power processor is configured to operate all sensors of the wearable device.

[0145] Example 19 includes the computing device of Example 11, wherein the low-power hand tracking application uses a neural network to detect and recognize gestures of a user of the wearable device based on the proximity data, the neural network is configured to recognize a first set of gestures, and wherein the high-power processor includes a high-power hand tracking application configured to use camera data from a higher resolution camera of the wearable device to recognize a second set of gestures, the second set of gestures being larger than the first set of gestures.

[0146] Example 20 is a non-transitory computer-readable storage medium comprising instructions that, when executed by a computer, cause the computer to perform the following operations: poll a proximity sensor of a wearable device to detect a proximity event, the wearable device comprising a low-power processor and a high-power processor; in response to detecting the proximity event, operate a low-power hand tracking application on the low-power processor based on proximity data from the proximity sensor; and terminate operation of the low-power hand tracking application in response to at least one of the following: detecting and recognizing a gesture based on the proximity data, detecting but not recognizing the gesture based on the proximity data, or detecting a lack of activity from the proximity sensor within a timeout period based on the proximity data.

[0147] Glossary

[0148] "Carrier signal" refers to any intangible medium that can store, encode or carry instructions for execution by a machine and includes digital or analog communications signals or other intangible media to facilitate communication of such instructions. Instructions may be sent or received over a network using a transmission medium via a network interface device.

[0149] "Client Device" refers to any machine that interfaces with a communications network to obtain resources from one or more server systems or other client devices. A client device may be, but is not limited to, a mobile phone, a desktop computer, a laptop computer, a portable digital assistant (PDA), a smart phone, a tablet computer, an ultrabook, a netbook, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a game console, a set-top box, or any other communications device that a user may use to access a network.

[0150] "Communications network" means one or more parts of a network, which may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a part of the Internet, a part of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, A network, other type of network, or a combination of two or more such networks. For example, the network or a portion of the network may include a wireless network or a cellular network, and the coupling may be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or other type of cellular or wireless coupling. In this example, the coupling may implement any of various types of data transmission technologies, such as single carrier radio transmission technology (1xRTT), evolution data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rates for GSM evolution (EDGE) technology, the third generation partnership project (3GPP) including 3G, fourth generation wireless (4G) network, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other data transmission technologies defined by various standard setting organizations, other long distance protocols, or other data transmission technologies.

[0151] "Component" refers to a device, physical entity or logic with boundaries defined by function or subroutine calls, branch points, APIs or other technologies provided for partitioning or modularizing specific processing or control functions. Components can be combined with other components via their interfaces to perform machine processing. Components can be encapsulated functional hardware units designed for use with other components, and are usually part of a program that performs specific functions of related functions. Components can constitute software components (e.g., codes embodied on machine-readable media) or hardware components. "Hardware components" are tangible units that can perform certain operations and can be configured or arranged in certain physical ways. In various examples, one or more computer systems (e.g., independent computer systems, client computer systems, or server computer systems) or one or more hardware components (e.g., processors or processor groups) of a computer system can be configured by software (e.g., applications or application parts) to operate to perform certain operations as described herein. Hardware components can also be implemented mechanically, electronically, or in any suitable combination thereof. For example, a hardware component may include a dedicated circuit system or logic that is permanently configured to perform certain operations. The hardware component may be a dedicated processor, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). The hardware component may also include a programmable logic or circuit system that is temporarily configured to perform certain operations by software. For example, the hardware component may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a specific machine (or a specific component of a machine) that is specially customized to perform the configured function, and is no longer a general-purpose processor. It will be understood that the decision to mechanically implement the hardware component in a dedicated and permanently configured circuit system or in a temporarily configured (e.g., configured by software) circuit system can be driven by cost and time considerations. Accordingly, the phrase "hardware component" (or "hardware-implemented component") should be understood to include a tangible entity, that is, an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in some way or perform certain operations described herein. Considering an example in which a hardware component is temporarily configured (e.g., programmed), it is not necessary to configure or instantiate each of the hardware components at any one time. For example, in the case where a hardware component includes a general-purpose processor that is configured by software to become a special-purpose processor, the general-purpose processor can be respectively configured as different special-purpose processors (e.g., including different hardware components) at different times. Software accordingly configures one or more specific processors to, for example, constitute a specific hardware component at one time, and to constitute different hardware components at different times. Hardware components can provide information to other hardware components and receive information from other hardware components. Accordingly, the described hardware components can be considered to be coupled in communication.In the case of multiple hardware components being present at the same time, communication can be achieved by signal transmission (e.g., by appropriate circuits and buses) between or among two or more hardware components in the hardware components. In examples where multiple hardware components are configured or instantiated at different times, communication between such hardware components can be achieved, for example, by storing information in a memory structure accessible to multiple hardware components and retrieving information in the memory structure. For example, a hardware component can perform an operation, and the output of the operation is stored in a memory device coupled to it in communication. Then, another hardware component can access the memory device at a subsequent time to retrieve the stored output and process it. The hardware component can also initiate communication with an input device or an output device, and can operate on resources (e.g., a collection of information). The various operations of the example methods described herein can be performed at least in part by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform related operations. Whether it is temporarily configured or permanently configured, such a processor can constitute a processor-implemented component that operates to perform one or more operations or functions described herein. As used herein, "processor-implemented components" refer to hardware components implemented using one or more processors. Similarly, the method described herein can be implemented at least in part by a processor, wherein one or more specific processors are examples of hardware. For example, at least some of the operations in the operation of the method can be performed by one or more processors or the parts implemented by the processor. In addition, one or more processors can also operate to support the execution of related operations in a "cloud computing" environment or as a "software as a service" (SaaS) operation. For example, at least some of the operations in the operation can be performed by a group of computers (as an example of a machine including a processor), wherein these operations can be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., API). The execution of some operations in the operation can be distributed between processors, not only residing in a single machine, but deployed across multiple machines. In some examples, a processor or a part implemented by a processor can be located in a single geographical location (e.g., in a home environment, an office environment, or a server cluster). In other examples, a processor or a part implemented by a processor can be distributed across multiple geographical locations.

[0152] "Computer-readable storage media" refers to both machine storage media and transmission media. Therefore, these terms include both storage devices / media and carrier / modulated data signals. The terms "machine-readable medium", "computer-readable medium" and "device-readable medium" mean the same thing and can be used interchangeably in this disclosure.

[0153] "Transient message" refers to a message that is accessible for a time-limited duration. Transient messages can be text, images, videos, etc. The access time for transient messages can be set by the message sender. Alternatively, the access time can be a default setting or a setting specified by the recipient. Regardless of the setting technique, the message is transient.

[0154] "Machine storage media" refers to a single or multiple storage devices and media (e.g., centralized or distributed databases, and associated caches and servers) that store executable instructions, routines, and data. Thus, the term should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage media, computer storage media, and device storage media include: non-volatile memory, including, for example, semiconductor memory devices, such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGA, and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms "machine storage media", "device storage media", and "computer storage media" mean the same thing and may be used interchangeably in this disclosure. The terms "machine storage media", "computer storage media", and "device storage media" explicitly exclude carrier waves, modulated data signals, and other such media (at least some of which are covered by the term "signal media").

[0155] “Non-transitory computer-readable storage medium” refers to tangible media capable of storing, encoding, or carrying instructions to be executed by a machine.

[0156] "Signal media" refers to any intangible medium that is capable of storing, encoding or carrying instructions executed by a machine and includes digital or analog communication signals or other intangible media that facilitate the communication of software or data. The term "signal medium" should be deemed to include any form of modulated data signals, carrier waves, etc. The term "modulated data signal" means a signal that has one or more of its various characteristics set or changed in such a manner as to encode information in the signal. The terms "transmission medium" and "signal medium" mean the same thing and may be used interchangeably in this disclosure.

Claims

1. A method comprising: polling a proximity sensor of a wearable device to detect a proximity event, the wearable device comprising a low-power processor and a high-power processor; in response to detecting the proximity event, operating a low power hand tracking application on the low power processor based on proximity data from the proximity sensor; as well as Operation of the low-power hand tracking application is terminated in response to at least one of: detecting and recognizing a gesture based on the proximity data, detecting but not recognizing the gesture based on the proximity data, or detecting a lack of activity from the proximity sensor within a timeout period based on the proximity data.

2. The method according to claim 1, further comprising: generating, using a gesture recognition algorithm operating on the low-power processor, a confidence level for the gesture based on a gesture dictionary; as well as The gesture is recognized in response to the confidence level exceeding a preset threshold.

3. The method according to claim 2, further comprising: identifying an operation corresponding to the gesture; as well as One of the low-power processor or the high-power processor is requested to perform the operation.

4. The method according to claim 2, further comprising: identifying an operation of the mixed reality application corresponding to the gesture; as well as The high-power processor is requested to perform operations of the mixed reality application.

5. The method according to claim 1, further comprising: In response to ending operation of the low-power hand tracking application, returning the wearable device to an idle state that polls the proximity sensor at regular intervals.

6. The method according to claim 1, wherein: The proximity sensor includes a time-of-flight sensor.

7. The method according to claim 1, wherein: The low-power processor comprises a microcontroller, wherein the high-power processor comprises a system on a chip (SoC).

8. The method according to claim 1, wherein: The low power processor is configured to operate only the proximity sensor and the low power hand tracking application, wherein the high power processor is configured to operate all sensors of the wearable device.

9. The method according to claim 1, wherein: The low-power hand tracking application uses a neural network to detect and recognize gestures of a user of the wearable device based on the proximity data, the neural network being configured to recognize a first set of gestures, and Wherein the high-power processor includes a high-power hand tracking application, and the high-power hand tracking application is configured to use camera data from a higher resolution camera of the wearable device to recognize a second set of gestures, and the second set of gestures is larger than the first set of gestures.

10. The method according to claim 1, wherein: The wearable device includes a head wearable device.

11. A computing device comprising: processor; as well as a memory storing instructions that, when executed by the processor, configure the apparatus to: polling a proximity sensor of a wearable device to detect a proximity event, the wearable device comprising a low-power processor and a high-power processor; in response to detecting the proximity event, operating a low power hand tracking application on the low power processor based on proximity data from the proximity sensor; as well as Operation of the low-power hand tracking application is terminated in response to at least one of: detecting and recognizing a gesture based on the proximity data, detecting but not recognizing the gesture based on the proximity data, or detecting a lack of activity from the proximity sensor within a timeout period based on the proximity data.

12. The computing device according to claim 11, wherein: The instructions further configure the apparatus to: generating, using a gesture recognition algorithm operating on the low-power processor, a confidence level for the gesture based on a gesture dictionary; and The gesture is recognized in response to the confidence level exceeding a preset threshold.

13. The computing device of claim 12, wherein: The instructions further configure the apparatus to: identifying an operation corresponding to the gesture; and One of the low-power processor or the high-power processor is requested to perform the operation.

14. The computing device of claim 12, wherein: The instructions further configure the apparatus to: identifying an operation of the mixed reality application corresponding to the gesture; and The high-power processor is requested to perform operations of the mixed reality application.

15. The computing device of claim 11, wherein: The instructions further configure the apparatus to: In response to ending operation of the low-power hand tracking application, returning the wearable device to an idle state that polls the proximity sensor at regular intervals.

16. The computing device of claim 11, wherein: The proximity sensor includes a time-of-flight sensor.

17. The computing device of claim 11, wherein: The low-power processor comprises a microcontroller, wherein the high-power processor comprises a system on a chip (SoC).

18. The computing device of claim 11, wherein: The low power processor is configured to operate only the proximity sensor and the low power hand tracking application, wherein the high power processor is configured to operate all sensors of the wearable device.

19. The computing device of claim 11, wherein: The low-power hand tracking application uses a neural network to detect and recognize gestures of a user of the wearable device based on the proximity data, the neural network being configured to recognize a first set of gestures, and Wherein the high-power processor includes a high-power hand tracking application, and the high-power hand tracking application is configured to use camera data from a higher resolution camera of the wearable device to recognize a second set of gestures, and the second set of gestures is larger than the first set of gestures.

20. A non-transitory computer-readable storage medium comprising instructions that, when executed by a computer, cause the computer to: polling a proximity sensor of a wearable device to detect a proximity event, the wearable device comprising a low-power processor and a high-power processor; in response to detecting the proximity event, operating a low power hand tracking application on the low power processor based on proximity data from the proximity sensor; as well as Operation of the low-power hand tracking application is terminated in response to at least one of: detecting and recognizing a gesture based on the proximity data, detecting but not recognizing the gesture based on the proximity data, or detecting a lack of activity from the proximity sensor within a timeout period based on the proximity data.