Controller apparatus and system for human-machine interactions

WO2025000121A1PCT designated stage expired Publication Date: 2025-01-02QUALCOMM INC +3
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2023/102055
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-06-25
Publication Date
2025-01-02

Smart Images

  • Figure CN2023102055_02012025_PF_FP_ABST
    Figure CN2023102055_02012025_PF_FP_ABST
Patent Text Reader

Abstract

Systems and techniques are described herein for enabling tracking of an object. For instance, an apparatus for enabling tracking of an object is provided. The apparatus may include a body comprising a handle to be held in a hand of a user; a plurality of light sources arranged on the body; and at least one processor configured to adaptively adjust a pattern of the plurality of light sources to enable an object-tracking system to track the body based on images of the plurality of light sources. Additionally, systems and techniques are described herein for tracking an object. For instance, an apparatus for tracking an object is provided. The apparatus may include a camera configured to capture a plurality of images of a tracked object; a communication unit configured to communicate with the tracked object; and at least one processor configured to determine a pose of the tracked object based on the plurality of images of the tracked object.
Need to check novelty before this filing date? Find Prior Art

Description

CONTROLLER APPARATUS AND SYSTEM FOR HUMAN-MACHINE INTERACTIONSTECHNICAL FIELD

[0001] The present disclosure generally relates to controller apparatus and system for human-machine interactions. More particularly, it relates to a controller apparatus and system for improving tracking of a human-machine-interface (HMI) device. For example, aspects of the present disclosure include systems and techniques for controlling illumination of a number of light sources (e.g., light-emitting diodes (LEDs) ) on the HMI device. A number of images of the HMI device may be captured and a pose of the HMI device may be determined (e.g., by a tracking system) based on the positions of the number of light sources in the number of images. By controlling the illumination of the number of light sources, the systems and techniques may improve the ability of the tracking system to track the HMI device.BACKGROUND

[0002] A handheld controller is an example of a human-machine-interface (HMI) device. Such a handheld controller may allow a user to interact with a machine by pressing buttons on the handheld controller and / or through a position and / or motion of the handheld controller. Handheld controllers can be used with extended-reality (XR) systems.SUMMARY

[0003] The following presents a simplified summary relating to one or more aspects disclosed herein. Thus, the following summary should not be considered an extensive overview relating to all contemplated aspects, nor should the following summary be considered to identify key or critical elements relating to all contemplated aspects or to delineate the scope associated with any particular aspect. Accordingly, the following summary presents certain concepts relating to one or more aspects relating to the mechanisms disclosed herein in a simplified form to precede the detailed description presented below.

[0004] Systems and techniques are described for enabling tracking of an object. According to at least one example, a method is provided for enabling tracking of an object. The method includes: adaptively adjusting a pattern of a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources. Another example method includes: controlling a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources. Another example method includes: controlling a plurality of light sources to enable an object-tracking system to determine a pose of a body on which the plurality of light sources are arranged based on images of the plurality of light sources.

[0005] In another example, an apparatus for enabling tracking of an object is provided. The apparatus includes: at least one memory and at least one processor (e.g., configured in circuitry) coupled to the at least one memory. The at least one processor configured to: adaptively adjust a pattern of a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources. Another example apparatus includes at least one memory and at least one processor (e.g., configured in circuitry) coupled to the at least one memory. The at least one processor configured to: control a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources. Another example apparatus includes at least one memory and at least one processor (e.g., configured in circuitry) coupled to the at least one memory. The at least one processor configured to: control a plurality of light sources to enable an object-tracking system to determine a pose of a body on which the plurality of light sources are arranged based on images of the plurality of light sources.

[0006] Another example apparatus includes a body comprising a handle to be held in a hand of a user; a plurality of light sources arranged on the body; and at least one processor configured to adaptively adjust a pattern of the plurality of light sources to enable an object-tracking system to track the body based on images of the plurality of light sources. Another example apparatus includes a body comprising a handle to be held in a hand of a user; a plurality of light sources arranged on the body; and at least one processor configured to control the plurality of light sources to enable an object-tracking system to track the body based on images of the plurality of light sources. Another example apparatus includes a body comprising a handle to be held in a hand of a user; a plurality of light sources arranged on the body; and at least one processor configured to control the plurality of light sources to enable an object-tracking system to determine a pose of the body based on images of the plurality of light sources.

[0007] In another example, a non-transitory computer-readable medium is provided that has stored thereon instructions that, when executed by one or more processors, cause the one or more processors to: adaptively adjust a pattern of a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources. Another example non-transitory computer-readable medium is provided that has stored thereon instructions that, when executed by one or more processors, cause the one or more processors to: control a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources. Another example non-transitory computer-readable medium is provided that has stored thereon instructions that, when executed by one or more processors, cause the one or more processors to: control a plurality of light sources to enable an object-tracking system to determine a pose of a body on which the plurality of light sources are arranged based on images of the plurality of light sources.

[0008] In another example, an apparatus for enabling tracking of an object is provided. The apparatus includes: means for adaptively adjusting a pattern of a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources. Another example apparatus includes means for controlling a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources. Another example apparatus includes means for controlling a plurality of light sources to enable an object-tracking system to determine a pose of a body on which the plurality of light sources are arranged based on images of the plurality of light sources.

[0009] Systems and techniques are described for tracking an object. According to at least one example, a method is provided for tracking an object. The method includes: capturing a plurality of images of a tracked object; communicating with the tracked object; and tracking the tracked object based on the plurality of images of the tracked object. Another example method includes:  capturing a plurality of images of a tracked object; communicating with the tracked object; and tracking the tracked object based on the plurality of images of the tracked object.

[0010] In another example, an apparatus for tracking an object is provided. The apparatus includes: at least one memory and at least one processor (e.g., configured in circuitry) coupled to the at least one memory. The at least one processor configured to: capture a plurality of images of a tracked object; communicate with the tracked object; and determine a pose of the tracked object based on the plurality of images of the tracked object. Another example apparatus includes at least one memory and at least one processor (e.g., configured in circuitry) coupled to the at least one memory. The at least one processor configured to: capture a plurality of images of a tracked object; communicate with the tracked object; and track the tracked object based on the plurality of images of the tracked object.

[0011] Another example apparatus includes a camera configured to capture a plurality of images of a tracked object; a communication unit configured to communicate with the tracked object; and at least one processor configured to track the tracked object based on the plurality of images of the tracked object. Another example apparatus includes a camera configured to capture a plurality of images of a tracked object; a communication unit configured to communicate with the tracked object; and at least one processor configured to determine a pose of the tracked object based on the plurality of images of the tracked object.

[0012] In another example, a non-transitory computer-readable medium is provided that has stored thereon instructions that, when executed by one or more processors, cause the one or more processors to: capture a plurality of images of a tracked object; communicate with the tracked object; and determine a pose of the tracked object based on the plurality of images of the tracked object. Another example non-transitory computer-readable medium is provided that has stored thereon instructions that, when executed by one or more processors, cause the one or more processors to: capture a plurality of images of a tracked object; communicate with the tracked object; and track the tracked object based on the plurality of images of the tracked object.

[0013] In another example, an apparatus for tracking an object is provided. The apparatus includes: means for capturing a plurality of images of a tracked object; means for communicating with the tracked object; and means for tracking the tracked object based on the plurality of images of the tracked object. Another example apparatus includes means for capturing a plurality of images of a tracked object; means for communicating with the tracked object; and means for tracking the tracked object based on the plurality of images of the tracked object.

[0014] In some aspects, one or more of the apparatuses described herein is, can be part of, or can include an extended reality (XR) device (e.g., a virtual reality (VR) device, an augmented reality (AR) device, or a mixed reality (MR) device) , a mobile device (e.g., a mobile telephone or so-called “smart phone” , a tablet computer, or other type of mobile device) , a smart or connected device (e.g., an Internet-of-Things (IoT) device) , a wearable device, a personal computer, a laptop computer, a video server, a television (e.g., a network-connected television) , a robotics device or system, a vehicle (or a computing device or system of a vehicle) , or other device. In some aspects, each apparatus can include an image sensor (e.g., a camera) or multiple image sensors (e.g., multiple cameras) for capturing one or more images. In some aspects, each apparatus can include one or more displays for displaying one or more images, notifications, and / or other displayable data. In some aspects, each apparatus can include one or more speakers, one or more light-emitting devices, and / or one or more microphones. In some aspects, each apparatus can include one or more sensors. In some cases, the one or more sensors can be used for determining a location of the apparatuses, a state of the apparatuses (e.g., a tracking state, an operating state, a temperature, a humidity level, and / or other state) , and / or for other purposes.

[0015] This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in isolation to determine the scope of the claimed subject matter. The subject matter should be understood by reference to appropriate portions of the entire specification of this patent, any or all drawings, and each claim.

[0016] The foregoing, together with other features and aspects, will become more apparent upon referring to the following specification, claims, and accompanying drawings.BRIEF DESCRIPTION OF THE DRAWINGS

[0017] Illustrative examples of the present application are described in detail below with reference to the following figures:

[0018] FIG. 1 is a diagram illustrating a conventional hand-held controller including a number of light emitting diodes arranged on a tracking ring protruding from a handle of handheld controller.

[0019] FIG. 2A is a diagram illustrating an example handheld controller including a number of light sources arranged on a body of handheld controller, according to various aspects of the present disclosure.

[0020] FIG. 2B is a diagram illustrating handheld controller being held by a hand of a user, according to various aspects of the present disclosure.

[0021] FIG. 3A is a diagram illustrating an example system including a handheld controller and a tracking system, according to various aspects of the present disclosure.

[0022] FIG. 3B is a block diagram illustrating example elements of handheld controller and tracking system of system, according to various aspects of the present disclosure.

[0023] FIG. 4 is a diagram illustrating a conventional design paradigm and a design paradigm according to various aspects of the present disclosure.

[0024] FIG. 5 is a diagram illustrating two groups of illuminated LEDs and a representation of how those groups of LEDs may be observed in an image captured from a distant camera, according to various aspects of the present disclosure.

[0025] FIG. 6 is a diagram illustrating two groups of illuminated LEDs and a representation of how those groups of LEDs may be observed in an image captured by a camera, according to various aspects of the present disclosure.

[0026] FIG. 7 is a flow diagram illustrating operations of a handheld controller and a tracking system, according to various aspects of the present disclosure.

[0027] FIG. 8 is a block diagram illustrating various operations of processing images data to track a handheld controller, according to various aspects of the present disclosure.

[0028] FIG. 9 is a block diagram illustrating various operations of processing images data to track a handheld controller, according to various aspects of the present disclosure.

[0029] FIG. 10 is a block diagram illustrating various operations of processing images data to track a handheld controller, according to various aspects of the present disclosure.

[0030] FIG. 11 illustrates an example keypoint, according to various aspects of the present disclosure.

[0031] FIG. 12 is a diagram illustrating a process for determining keypoints, according to various aspects of the present disclosure.

[0032] FIG. 13 is a diagram illustrating the training stage of training the encoder and decoder of FIG. 12, according to various aspects of the present disclosure.

[0033] FIG. 14A is a flow diagram illustrating an example process for improving tracking of a human-machine-interface (HMI) device, in accordance with aspects of the present disclosure.

[0034] FIG. 14B is a flow diagram illustrating another example process for improving tracking of a human-machine-interface (HMI) device, in accordance with aspects of the present disclosure.

[0035] FIG. 15 is a diagram illustrating an example of a deep learning neural network that can be used to implement a perception module and / or one or more validation modules, according to some aspects of the disclosed technology.

[0036] FIG. 16 is a diagram illustrating an example of a convolutional neural network (CNN) , according to various aspects of the present disclosure.

[0037] FIG. 17 is a diagram illustrating an example computing-device architecture of an example computing device which can implement the various techniques described herein.DETAILED DESCRIPTION

[0038] Certain aspects of this disclosure are provided below. Some of these aspects may be applied independently and some of them may be applied in combination as would be apparent to those of skill in the art. In the following description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of aspects of the application. However, it will be apparent that various aspects may be practiced without these specific details. The figures and description are not intended to be restrictive.

[0039] The ensuing description provides example aspects only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the ensuing description of the exemplary aspects will provide those skilled in the art with an enabling description for implementing an exemplary aspect. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the application as set forth in the appended claims.

[0040] The terms “exemplary” and / or “example” are used herein to mean “serving as an example, instance, or illustration. ” Any aspect described herein as “exemplary” and / or “example” is not necessarily to be construed as preferred or advantageous over other aspects. Likewise, the term “aspects of the disclosure” does not require that all aspects of the disclosure include the discussed feature, advantage, or mode of operation.

[0041] Object detection and tracking can be used to identify an object and track the object over time. For example, an image of an object can be obtained and object detection can be performed on the image to detect the object in the image. In some cases, the detected object can be classified into a category of object. Further, a bounding box can be generated to identify a position of the object in the image. Various types of systems can be used for object detection, including neural network-based object detectors. The position of the object in images can be tracked through a series of images. In some cases, tracking the object can include determining a pose of the object relative to a camera which captured the image of the object and / or relative to prior positions of the object. In the present disclosure, the term “pose” may refer to a position and orientation. Poses may be determined according to six degrees of freedom including three translational degrees of freedom (e.g, . x, y, and z dimensions) and three rotational degrees of freedom (e.g., roll, pitch, and yaw) .

[0042] A handheld controller can be used as a human-machine-interface (HMI) device. For example, an object-tracking system may detect and track the handheld controller and a user can interface with a machine by moving and / or rotating the handheld controller. For example, the machine may receive inputs based on how the user moves and / or rotates the handheld controller.

[0043] One example of a system that may be interacted with by a handheld controller is an extended reality (XR) device (e.g., a virtual reality (VR) device, an augmented reality (AR) device, or a mixed reality (MR) device) . An example of an XR device is a head-mounted display (HMD) device (e.g., in the form of a headset, glasses, etc. ) that can be worn by the user. The XR device may include one or more cameras that may capture images of a handheld controller. The user may move and / or rotate the handheld controller. The XR device may include a tracking system that can, using the cameras, track the handheld controller and interpret inputs based on how the user moves and / or rotates the handheld controller. Another example includes a gaming system with a camera mounted above a display.

[0044] FIG. 1 is a diagram illustrating a conventional hand-held controller 100 including a number of light emitting diodes 106 (LEDs 106) arranged on a tracking ring 104 protruding from a handle 102 of handheld controller 100. Handheld controller 100 includes a button 108 as an example of buttons that may be present on handle 102 of handheld controller 100. A conventional tracking system may rely on images of LEDs 106 on tracking ring 104 to localize and track handheld controller 100. Tracking ring 104 may be bulky, not easy to carry, and inconvenient to use.

[0045] To improve the performance of conventional tracking systems, tracking ring 104 protrudes from the outside of handheld controller 100. Because of the requirements of the tracking algorithm, LED tracking rings (e.g., tracking ring 104) must be large enough for the tracking algorithm to accurately track. A large tracking ring affects portability, such as the controller cannot be put in the pocket and carried around.

[0046] Further, in order to avoid tracking failure caused by the LED tracking light ring being blocked by the hand (e.g., a hand holding handle 102) , the structural design of the LED tracking ring is usually protruding outside where a hand would hold the handle. But such a protruding structure is inconvenient to use, and LED tracking ring can easily hit other objects when in use. For example, when both hands are holding the controller, the hands cannot touch each other due to the obstruction of the protruding part of the LED tracking ring.

[0047] Systems, apparatuses, methods (also referred to as processes) , and computer-readable media (collectively referred to herein as “systems and techniques” ) are described herein for improving tracking of an HMI device. For example, the systems and techniques described herein may include an HMI device including a number of light sources. The systems and techniques may control the light sources to improve the ability of a tracking system to track the HMI device. The systems and techniques may control which light sources of the number of light sources are illuminated, a timing of illuminating the number of light sources, an intensity of illuminating the number of light sources, and / or wavelengths of light produced by the number of light sources.

[0048] By controlling the light sources, the systems and techniques may improve the ability of a tracking system to track the HMI device. For example, the tracking system may be more quickly and / or accurately able to determine a position of the HMI device based on the systems and techniques control of the illumination. The systems and techniques may adaptively adjust LED patterns to improve tracking performance in a variety of usage scenarios. For example, the systems and techniques may improve tracking of controllers that are distant from cameras of the tracking system (e.g., using a sparse illumination mode) . As another example, systems and techniques may decrease false positive rate of controller detection (e.g., using a verification mode) . As another example, the systems and techniques may decrease controller power consumption (e.g., using a energy-saving mode) . Further, based on the improved ability of tracking systems to track the HMI device, some HMI devices according to various aspects of the application may exclude a tracking ring and include light sources on a body of the HMI device (e.g., not protruding radially from the handle of the HMI device) . Additionally or alternatively, the systems and techniques may be more stable (e.g., allowing the controller to be tracked more consistently) in corner cases (e.g., in which few of the light sources of the controller are visible to the camera of the tracking system) because the systems and techniques may use both a long frame and a short frame to track the controller.

[0049] Various aspects of the application will be described with respect to the figures below.

[0050] FIG. 2A is a diagram illustrating an example handheld controller 200 including a number of light sources 202 arranged on a body 204 of handheld controller 200, according to various aspects of the present disclosure. In contrast to handheld controller 100 of FIG. 1, light sources 202 are not arranged on a tracking ring 104 protruding from a handle 102. Rather, light sources 202 are arranged on body 204 (e.g., not radially protruding from handle 206 of body 204) . Handheld controller 200 includes a button 208 as an example of buttons that may be present on body 204 of handheld controller 200. FIG. 2B is a diagram illustrating handheld controller 200 being held by a hand 210 of a user, according to various aspects of the present disclosure. Handheld controller 200 may be sized such that at least some of light sources 202 are visible when body 204 is held by hand 210.

[0051] FIG. 3A is a diagram illustrating an example system 300 including a handheld controller 302 and a tracking system 320, according to various aspects of the present disclosure. FIG. 3B is a block diagram illustrating example elements of handheld controller 302 and tracking system 320 of system 300, according to various aspects of the present disclosure. In some cases, the tracking system 320 can be part of or include an XR device (e.g., an HMD) .

[0052] Handheld controller 302 includes light-emitting diodes (LEDs) 306 on body 304 of handheld controller 302. LEDs 306 may emit visible light (of any color) , near infrared light, and / or infrared light. LEDs 306 may include groups of LEDs (e.g., each group including a red LED, a green LED and a blue LED such that each group of LEDs may vary wavelengths of light emitted) . LEDs 306 may be included on handheld controller 302 to enable tracking system 320 to track handheld controller 302. Additionally, handheld controller 302 includes at least one processor (e.g., processor 312) and a communication unit 314.

[0053] Tracking system 320 includes a camera 322 which may capture images of handheld controller 302 (particularly of LEDs 306 of handheld controller 302) . Tracking system 320 includes at least one processor (e.g., processor 326) . Tracking system 320, using the processor 326, may track handheld controller 302 based on the images of LEDs 306 captured by camera 322. Tracking system 320 may further include a communication unit 324, with which tracking system 320 may communicate with handheld controller 302 (via a communication unit 314 of handheld controller 302) . For example, handheld controller 302 may communicate status message and / or movement data (e.g., based on measurements from an inertial measurement unit (IMU 308) to tracking system 320. Tracking system 320 may communicate control messages (e.g., instructing handheld controller 302 which LEDs 306 to illuminate or instructing handheld controller 302 to illuminate LEDs 306 according to a mode of operation, such as verification mode, sparse mode, energy-saving mode, or default mode) .

[0054] According to various aspects of the present disclosure, handheld controller 302 (or at least one processor of handheld controller 302 (e.g., processor 312) ) may control LEDs 306 to enable handheld controller 302 to track handheld controller 302. Handheld controller 302 may independently control each of LEDs 306. For example, handheld controller 302 may control each of LEDs 306 separately (e.g., using separate control or power signals) . For example, FIG. 4 is a diagram illustrating a conventional design paradigm 402 in which all LEDs 406 are commonly controlled by a controller 404 (or driver) (e.g., based on all of LEDs 406 being part of the same circuit and / or connected to a common bus) . FIG. 4 also illustrates a design paradigm 412, according to various aspects of the present disclosure. According to design paradigm 412, each of LEDs 416 are independently controllable. For example, each of LEDs 416 is independently connected to controller 414 (or driver) . In this way, controller 414 is capable of causing each of LEDs 416 to illuminate independent of the others of LEDs 416.

[0055] Returning to FIG. 3A and FIG. 3B, handheld controller 302 (or processor 312) may control which LEDs 306 are illuminated, a timing of illuminating LEDs 306, an intensity of illuminating LEDs 306, and / or wavelengths of light produced by LEDs 306.

[0056] For example, handheld controller 302 may cause a group of LEDs 306 to be illuminated. The group may include fewer than all of LEDs 306. In some cases, the group may form a pattern, e.g., a pattern of illuminated LEDs 306 that may be detectable by tracking system 320.

[0057] In some case, which of illuminated LEDs 306 are illuminated may be based on a distance between handheld controller 302 and tracking system 320. For example, handheld controller 302 may operate in a “sparse mode. ” For example, if controller 302 is distant from tracking system 320 (e.g., 5 meters or more) , it may be difficult for tracking system 320 to distinguish LEDs 306. To address this, handheld controller 302 may determine to illuminate LEDs 306 based on a distance between handheld controller 302 and tracking system 320. For example, if handheld controller 302 is less than a threshold distance from tracking system 320, handheld controller 302 may illuminate a first group of LEDs 306. If handheld controller 302 is greater than the threshold distance from tracking system 320, handheld controller 302 may illuminate a second group of LEDs 306. The second group of LEDs 306 may include fewer LEDs 306 than the first group. Additionally or alternatively, the second group of LEDs 306 may be more sparsely arranged than the first group. In this way, different LED spots can be distinguished easily at a long distance.

[0058] FIG. 5 is a diagram illustrating two groups of illuminated LEDs and a representation of how those groups of LEDs may be observed in an image captured from a distant camera, according to various aspects of the present disclosure. In particular, group 502 includes seven LEDs, all illuminated. Representation 504 is a representation of how the seven illuminated LEDs of group 502 may appear in an image captured by a camera that is a distance (e.g., 5 meters or more) away from the LEDs. Group 512 includes seven LEDs, three illuminated and four not illuminated. Representation 514 is a representation of how the seven illuminated LEDs of group 512 may appear in an image captured by a camera that is a distance (e.g., 5 meters or more) away from the LEDs. It may be easier to distinguish LEDs, or the pattern of the LEDS, of group 512 than to distinguish the LEDS, or the pattern of the LEDs of group 502.

[0059] A handheld controller 302 without a tracking ring may have a denser arrangement of LEDs 306 than a controller with a tracking ring, so the distance between LEDs 306 may be smaller. At a long distance, it may be difficult to distinguish a single LED because the distance between multiple LED lights may too close. Handheld controller 302 may not illuminate all the LEDs 306, but illuminate LEDs 306 spaced at a suitable distance. In this way, different LED spots can be distinguished easily at a long distance. In sparse mode, as shown in FIG. 5, the sparse illumination pattern may be detected and tracked. Handheld controller 302 may switch to sparse mode when handheld controller 302 is farther than a predefined distance threshold from tracking system 320. In some cases, tracking system 320 may instruct handheld controller 302 to switch to sparse mode.

[0060] Returning to FIG. 3A and FIG. 3B, tracking system 320, based on determining a pose of handheld controller 302 may determine a distance between handheld controller 302 and handheld controller 302. Tracking system 320 may communicate a distance between handheld controller 302 and tracking system 320 to handheld controller 302. Additionally or alternatively, handheld controller 302 may determine a distance between handheld controller 302 and tracking system 320 (e.g., based on a signal strength of communications between tracking system 320 and handheld controller 302) .

[0061] As another example of controlling which LEDs 306 are illuminated in some case, the group of illuminated LEDs 306 may be based on a pose of handheld controller 302 (e.g., based on which of LEDs 306 are visible to camera 322) . For example, handheld controller 302 may communicate a pose of handheld controller 302 relative to camera 322 to handheld controller 302. Additionally or alternatively, handheld controller 302 may determine (or estimate) a pose of handheld controller 302 relative to camera 322 based on a signal from tracking system 320. For example, handheld controller 302 may include a directional antenna (e.g, . in communication unit 314) and may determine a direction between handheld controller 302 and tracking system 320 based on a signal received at the direction antenna. In any case, handheld controller 302 may determine which of LEDs 306 to illuminate based on the pose (e.g., based on which of LEDs 306 are visible to camera 322) . By not illuminating LEDs 306 that are not visible to camera 322, handheld controller 302 may conserve power. Additionally or alternatively, the group of illuminated LEDs 306 may be based on a pose of handheld controller 302 relative to hand 310. For example, tracking system 320 may detect hand 310 in images captured by camera 322. Tracking system 320 may provide handheld controller 302 with information regarding a position of hand 310 or a position of handheld controller 302 (or LEDs 306) relative to hand 310. Handheld controller 302 may determine to illuminate the group of LEDs 306 based on the pose of handheld controller 302 relative to hand 310 (e.g., based on which of LEDs 306 are visible to camera 322 despite hand 310) .

[0062] As another example of controlling which LEDs 306 are illuminated, handheld controller 302 may control which of LEDs 306 are illuminated to allow tracking system 320 to verify handheld controller 302. For example, handheld controller 302 and / or tracking system 320 may operate in a verification mode. In some cases, false detections may be an issue (e.g., tracking system 320 may misinterpret other light sources in the images as LEDs 306) . For example, light spots in the background that are similar to the controller may be falsely detected as a controller. To verify handheld controller 302, and / or to decrease false detections, handheld controller 302 may vary which of LEDs 306 are illuminated to allow tracking system 320 to verify that LEDs 306 are LEDs 306 of handheld controller 302.

[0063] For example, controller may detect LEDs 306 in a first image. The LEDs 306 illuminated in the first image may be a first group and may be according to a first pattern. FIG. 6 is a diagram illustrating two groups of illuminated LEDs and a representation of how those groups of LEDs may be observed in an image captured by a camera, according to various aspects of the present disclosure. In particular, group 602 includes seven LEDs, all illuminated. Representation 604 is a representation of how the seven illuminated LEDs of group 602 may appear in an image captured by a camera.

[0064] Returning to FIG. 3A and FIG. 3B, tracking system 320 may communicate to handheld controller 302 that tracking system 320 is verifying handheld controller 302. In response, handheld controller 302 may change which of LEDs 306 are illuminated such that a second group of LEDs 306 is illuminated. The second group may be different than the first group and may be according to a second pattern that may be different from the first pattern. Returning to FIG. 6, group 612 includes seven LEDs, six illuminated and one not illuminated. Representation 614 is a representation of how the seven illuminated LEDs of group 612 may appear in an image captured by a camera. Representation 604 may be visually distinct from representation 614 such that tracking system 320 may differentiate between representation 604 and representation 614.

[0065] Returning to FIG. 3A and FIG. 3B, tracking system 320 may capture a second images and may determine if a group of LEDs 306 detected in the first image changed after tracking system 320 communicated to handheld controller 302 that tracking system 320 is verifying handheld controller 302. If the pattern of LEDs 306 changed after tracking system 320 communicated that it was verifying handheld controller 302, tracking system 320 may verify handheld controller 302 (e.g., by determining that handheld controller 302 is a valid handheld controller 302) . If the pattern did not change, tracking system 320 may determine that the detected LEDs were a false detection. In some cases, the first and / or second patterns may be agreed upon between handheld controller 302 and tracking system 320. For example, the first and / or second patterns may be pre-determined. In other cases, one of handheld controller 302 or tracking system 320 may communicate the pattern to the other.

[0066] In some cases, handheld controller 302 may have a default pattern (which may be referred to as a “normal pattern” ) for illuminating LEDs 306. The default pattern may include illuminating all of LEDs 306. Handheld controller 302 may, by default illuminate LEDs 306 according to the default pattern. In some cases, to be detectable, handheld controller 302 may illuminate LEDs 306 according to the default pattern. In some cases, when handheld controller 302 is not distant from tracking system 320 (e.g., as determined based on the threshold) , handheld controller 302 may illuminate LEDs 306 according to the default pattern. In some cases, after tracking system 320 verifies handheld controller 302, handheld controller 302 may illuminate LEDs 306 according to the default pattern.

[0067] FIG. 7 is a flow diagram illustrating operations of a handheld controller and a tracking system, according to various aspects of the present disclosure. The operations of FIG. 7 will be described with relation to system 300 for descriptive purposes.

[0068] Initially, handheld controller 302 may be illuminating LEDs 306 according to a default (or “normal” ) pattern. Starting from the top of the flow diagram of FIG. 7, tracking system 320 may detect the normal pattern of LEDs 306. Initially, this may be the first time LEDs 306 have been detected. So, moving to the right of the top decision block, tracking system 320 may communicate to handheld controller 302 that tracking system 320 is verifying handheld controller 302. In response handheld controller 302 may switch from the default pattern of illuminating LEDs 306 to a verification pattern (e.g., as illustrated by group 602 of FIG. 6) (which may be a pre-determined pattern, or a communicated pattern, or a different pattern) .

[0069] Next, at the bottom of FIG. 7, tracking system 320 may detect the verification pattern and return to the top decision block. At the top decision block, this is not the first time the LEDs have been detected so tracking system 320 may proceed to the left of the first decision block.

[0070] Next, tracking system 320 (or handheld controller 302) may check whether handheld controller 302 is distant from tracking system 320 (e.g., based on one or more distance thresholds) . If handheld controller 302 is distant from tracking system 320, tracking system 320 may notify handheld controller 302 or handheld controller 302 may determine that handheld controller 302 is distant from tracking system 320. In either case, handheld controller 302 may illuminate LEDs 306 according to a sparse LED pattern (e.g., as illustrated by group 502 of FIG. 5) .

[0071] If handheld controller 302 is not distant from tracking system 320, handheld controller 302 may continue illuminating LEDs 306 according to the default pattern. Further, tracking system 320, or handheld controller 302, may check the pose of handheld controller 302 (relative to camera 322 and / or relative to hand 310) . For example, tracking system 320 (or handheld controller 302) may determine which of LEDs 306 are visible to camera 322. If some of LEDs 306 are not visible to camera 322 (e.g., based on the pose of handheld controller 302 relative to camera 322 and / or based on the pose of handheld controller 302 relative to hand 310) handheld controller 302 may not illuminate those LEDs 306. Fewer than all of LEDs 306 can be illuminated when the handheld controller 302 is successfully being tracked by tracking system 320. For example, LEDs 306 located on the back of tracking system 320 may not be captured by camera 322. Tracking system 320 may determine which of LEDs 306 can be turned off according to the real-time pose of the controller handheld controller 302 and instruct handheld controller 302 to turn them off. Turning off such LEDs 306 may not affect the tracking performance, but it may reduce power consumption and increase battery life of handheld controller 302. Handheld controller 302 may switch to energy-saving mode (e.g., illuminating fewer than all of LEDs 306) when handheld controller 302 is tracked in a predefined comfortable area. However, if handheld controller 302 is not being successfully tracked, handheld controller 302 may continue to illuminate LEDs 306 according to the default pattern.

[0072] The above examples are all described with regard to determining which of LEDs 306 are illuminated and which are not. However, as described above, handheld controller 302 may control which of LEDs 306 are illuminated, a timing of illuminating LEDs 306, an intensity of illuminating LEDs 306, and / or wavelengths of light produced by LEDs 306. Accordingly, handheld controller 302 may change a timing of illuminating one or more of LEDs 306 (e.g., to form a verification pattern, a sparse pattern, or an energy-saving pattern) . For example, handheld controller 302 may cause one (or several) of LEDs 306 to blink at a particular rate (e.g., on for 2 millisecond then off for 1 millisecond) to form a verification pattern or a sparse pattern or to conserve power.

[0073] Additionally or alternatively, Accordingly, handheld controller 302 may change an intensity of illuminating one or more of LEDs 306 (e.g., to form a verification pattern, a sparse pattern, or an energy-saving pattern) . For example, handheld controller 302 may cause one (or several) of LEDs 306 to be illuminated at 25%intensity and one or more others of LEDs 306 to be illuminated at 75%intensity to form a verification pattern or a sparse pattern or to conserve power. As another example, in verification mode, the verification pattern can be in other styles or other brightness, as long as there is a clear difference between the verification pattern and the normal pattern, and the verification pattern can be tracked. Additionally or alternatively, the systems and techniques may control the brightness of the LED by controlling the duration of the LED's lighting. The longer the duration, the higher the brightness. Additionally or alternatively, the brightness of the LED can also be controlled by controlling the lighting frequency of the LED light, the higher the frequency, the higher the brightness.

[0074] Additionally or alternatively, handheld controller 302 may change wavelengths of illumination generated by one or more of LEDs 306 (e.g., to form a verification pattern, a sparse pattern, or an energy-saving pattern) . For example, handheld controller 302 may cause one (or several) of LEDs 306 to illuminate at a different wavelength (e.g., having a different color) . to form a verification pattern or a sparse pattern or to conserve power.

[0075] Additionally or alternatively, handheld controller 302 may cause LEDs 306 to illuminate according to a refresh rate of camera 322. For example, tracking system 320 may communicate a refresh rate of camera 322 to handheld controller 302 (e.g., using processor 326) . Handheld controller 302 may control LEDs 306 to illuminate according to (e.g., to match) a refresh rate of camera 322.

[0076] In some cases, camera 322 may include an array of cameras. The array of cameras may be collocated or distributed through an environment (e.g., surrounding handheld controller 302) . In such cases, handheld controller 302 may determine which of LEDs 306 to illuminate based on a pose of handheld controller 302 relative to all of the cameras.

[0077] In some cases, handheld controller 302 may include an inertial measurement units 308 (IMU 308) . IMU 308 may measure movement and / or rotation of handheld controller 302. In such cases, handheld controller 302 may also include a communication unit 314, which handheld controller 302 may use to communicate movement information (e.g., information indicative of the measured movements and / or rotations of handheld controller 302) to tracking system 320. In such cases, handheld controller 302 may include at least one processor (e.g., processor 312) to generate the movement information based on the measurements of IMU 308. Tracking system 320 may use the movement information (in addition to the images) to track handheld controller 302.

[0078] FIG. 8 is a block diagram illustrating various operations of processing images data to track a handheld controller, according to various aspects of the present disclosure. Tracking system 320 of FIG. 3A and FIG. 3B may implement one or more of the operations of FIG. 8. Accordingly, elements of system 300 are referred to when describing FIG. 8.

[0079] Starting at the top of FIG. 8, a camera 322 may capture image data of a handheld controller 302. In some cases, camera 322 may cause handheld controller 302 to synchronize a timing of illuminating LEDs 306 with a frame-capture rate of camera 322.

[0080] At blob extraction, tracking system 320 may identify blobs (e.g., groups of LEDs 306) . Blobs may appear as representation 504, representation 514, representation 604 or representation 614.

[0081] At ID matching, LED blobs are extracted. Then the blobs are sorted to get the matching identifier (ID) of LEDs. That means tracking system 320 will know which blobs in the image correspond to which LEDs 306 of handheld controller 302.

[0082] At PnP, a point-n-point algorithm is used to determine poses of LEDs 306. The poses may be determined according to six degrees of freedom (6DoF) including three dimensional degrees of freedom (e.g., x, y, and z dimensions) and three rotational degrees of freedom (e.g., roll, pitch, and yaw) .

[0083] In some cases, handheld controller 302 may provide movement information (e.g., based on an inertial measurement unit (IMU) of handheld controller 302) to tracking system 320. In such cases, at fusion, tracking system 320 may fuse the 6DoF pose information determined based on the images may with the movement information. For example, tracking system 320 may update or revise a pose of handheld controller 302 based on acceleration and / or rotation of handheld controller 302, as indicated by the movement information.

[0084] FIG. 9 is a block diagram illustrating various operations of processing images data to track a handheld controller, according to various aspects of the present disclosure. Tracking system 320 of FIG. 3A and FIG. 3B may implement one or more of the operations of FIG. 9. Accordingly, elements of system 300 are referred to when describing FIG. 9.

[0085] Starting at the top of FIG. 9, a camera 322 may capture image data of a handheld controller 302. In some cases, camera 322 may cause handheld controller 302 to synchronize a timing of illuminating LEDs 306 with a frame-capture rate of camera 322.

[0086] At blob extraction, tracking system 320 may identify blobs (e.g., groups of LEDs 306) . Blobs may appear as representation 504, representation 514, representation 604 or representation 614.

[0087] At ID matching, LED blobs are extracted. Then the blobs are sorted to get the matching identifier (ID) of LEDs. That means tracking system 320 will know which blobs in the image correspond to which LEDs 306 of handheld controller 302.

[0088] If the blobs are successfully identified, at PnP, a point-n-point algorithm is used to determine poses of LEDs 306. The poses may be determined according to six degrees of freedom (6DoF) . If the blobs are not successfully identified, the operations of FIG. 9 may move to Delta 6DoF, which is described below.

[0089] If tracking system 320 is able to determine the pose of handheld controller 302 by solving the PnP problem based on the images, and if handheld controller 302 provided movement information (e.g., based on an inertial measurement unit (IMU) of handheld controller 302) to tracking system 320, then at fusion, tracking system 320 may fuse the 6DoF pose information determined based on the images may with the movement information. If the tracking system 320 is unable to determine the pose, the operations of FIG. 9 may move to Delta 6DoF, which is described below.

[0090] Returning to the top of FIG. 9, tracking system 320 may determine (or receive) a hand pose (e.g., information regarding a pose of a hand 310 of the user that is holding handheld controller 302) .

[0091] At Hand 6DoF history info, tracking system 320 may store (or receive) and / or retrieve historical information regarding a pose of hand 310. The historical information may include prior poses of hand 310.

[0092] At Controller 6DoF history info, historical information regarding a pose of handheld controller 302 may be stored and / or retrieved.

[0093] At Delta 6DoF, historical controller pose information and / or historical hand pose information may be used to determine a pose of handheld controller 302.

[0094] For example, if few (or none of) LEDs 306 are visible in the images, the result may be that PnP fails to determine the pose of handheld controller 302 and / or Id matching fails to match the blobs with IDs. In any case, if either Id matching or PnP fails (for whatever reason) Delta 6DoF uses hand pose history info and controller 6Dof history info to determine a delta pose (e.g., a difference between the current pose and a prior pose) . Delta 6DoF may solve the energy function below to get the Delta 6DoF, T_delta: E = F (T_delta *T_hand_history, T_controller_history) ) T_delta = argmin (E)

[0095] F can be l2 or l1 loss function.

[0096] In the case that the LEDs are not seen but the hand pose T_hand is got, the controller pose can be got from the equation below: T_controller_history = T_delta *T_hand

[0097] FIG. 10 is a block diagram illustrating various operations of processing images data to track a handheld controller, according to various aspects of the present disclosure. Tracking system 320 of FIG. 3A and FIG. 3B may implement one or more of the operations of FIG. 10. Accordingly, elements of system 300 are referred to when describing FIG. 10.

[0098] Starting at the top of FIG. 10, a camera 322 may capture image data of a handheld controller 302. In some cases, camera 322 may cause handheld controller 302 to synchronize a timing of illuminating LEDs 306 with a frame-capture rate of camera 322.

[0099] At key point, key points of the images may be extracted. The key points may be points in a three-dimensional space. The keypoints may be points of a bounding box determined by tracking system 320 in tracking handheld controller 302. Additionally or alternatively, the key points may be distinct three-dimensional points in the service. Additionally or alternatively, the key points may correspond to LEDs. FIG. 11 illustrates an example keypoint, according to various aspects of the present disclosure.

[0100] FIG. 12 is a diagram illustrating a process for determining keypoints, according to various aspects of the present disclosure. Tracking system 320 may use deep learning to determine the key points. For example, tracking system 320 may use an Encoder and a decoder to extract features. In the training stage, regression loss may be used. FIG. 13 is a diagram illustrating the training stage of training the encoder and decoder used in FIG. 12, including determining a regression loss, according to various aspects of the present disclosure. In the inference stage (e.g., illustrated by FIG. 12) the key points can be determined directly.

[0101] Returning to FIG. 10, in cases in which LEDs 306 are located inside handheld controller 302, few LEDs may be visible to camera 322. So, at key point, a long exposure frame may be used to help determine pose of handheld controller 302. Key point may precede ID matching. Key point may ensure the blobs get the correct LED id at ID matching. If the ID matching is successful. 6Dof can be determined by PnP with blob. If the ID matching fails. The pose from key point may be used to fused with movement information from IMU data from handheld controller 302. Additionally, a short-exposure frame may be used to help determine pose of handheld controller 302.

[0102] At blob extraction, tracking system 320 may identify blobs (e.g., groups of LEDs 306) . Blobs may appear as representation 504, representation 514, representation 604 or representation 614.

[0103] At ID matching, LED blobs are extracted. Then the blobs are sorted to get the matching identifier (ID) of LEDs. That means tracking system 320 will know which blobs in the image correspond to which LEDs 306 of handheld controller 302.

[0104] If ID matching is successful, at PnP with blob, a point-n-point algorithm is used to determine poses of blobs of LEDs 306. The poses may be determined according to six degrees of freedom (6DoF) including three dimensional degrees of freedom (e.g., x, y, and z dimensions) and three rotational degrees of freedom (e.g., roll, pitch, and yaw) . If ID matching was unsuccessful, the operations of FIG. 10 may proceed to fusion, which is described below.

[0105] In some cases, handheld controller 302 may provide movement information (e.g., based on an inertial measurement unit (IMU) of handheld controller 302) to tracking system 320. In such cases, at fusion, tracking system 320 may fuse the 6DoF pose information determined based on the images may with the movement information. For example, tracking system 320 may update or revise a pose of handheld controller 302 based on acceleration and / or rotation of handheld controller 302, as indicated by the movement information.

[0106] FIG. 14A is a flow diagram illustrating a process 1400A for improving tracking of a human-machine-interface (HMI) device, in accordance with aspects of the present disclosure. One or more operations of process 1400A may be performed by a computing device (or apparatus) or a component (e.g., a chipset, codec, etc. ) of the computing device. The computing device may be a vehicle or component or system of a vehicle, a mobile device (e.g., a mobile phone) , a network-connected wearable such as a watch, an extended reality (XR) device such as a virtual reality (VR) device or augmented reality (AR) device, a desktop computing device, a tablet computing device, a server computer, a robotic device, , and / or any other computing device with the resource capabilities to perform the process 1400A. The one or more operations of process 1400A may be implemented as software components that are executed and run on one or more processors.

[0107] At block 1401, a computing device (or one or more components thereof) may adaptively adjust a pattern of a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources. In some aspects, the computing device (or one or more components thereof) may control the plurality of light sources to enable an object-tracking system to track the body based on images of the plurality of light sources. In some aspects, the computing device (or one or more components thereof) may control the plurality of light sources to enable an object-tracking system to determine a pose of the body based on images of the plurality of light sources. For example, processor 312 of handheld controller 302 may adaptively adjust, or control, LEDs 306. The adaptive adjustments, or control, of LEDs 306 may enable tracking system 320 to detect, track, and / or determine a pose of handheld controller 302.

[0108] In some aspects, the computing device (or one or more components thereof) may independently control (or adjust) each light source of the plurality of light sources. For example, processor 312 may independently control (or adjust) each of LEDs 306 (e.g., processor 312 may be coupled to LEDs 306 according to design paradigm 412) .

[0109] In some aspects, the computing device (or one or more components thereof) may control (or adjust) which light sources of the plurality of light sources that are illuminated; a timing of illuminating the plurality of light sources; an intensity of illuminating the plurality of light sources; and / or wavelengths of light produced by the plurality of light sources. For example, processor 312 may control, or adjust, an on / off status of each of LEDs 306, an intensity of each of LEDs 306, a timing of illuminating each of LEDs 306, and / or wavelengths of light produced by LEDs 306.

[0110] In some aspects, the light sources of block 1401 may be, or may include, light-emitting diodes (LEDs) . In some aspects, the light sources of block 1401 may emit at least one of visible light, near infrared light, or infrared light.

[0111] In some aspects, the computing device (or one or more components thereof) may control the plurality of light sources based on a distance between the body and a camera of the object-tracking system. For example, processor 312 may control LEDs 306 based on a distance between handheld controller 302 and tracking system 320. In some aspects, the computing device (or one or more components thereof) may control which light sources of the plurality of light sources are illuminated based on the distance between the body and the camera.

[0112] In some aspects, the computing device (or one or more components thereof) may determine whether the body is greater than a threshold distance from the camera of the object-tracking system; and control the plurality of light sources based on whether the body is greater than the threshold distance from the camera. For example, processor 312 may control which of LEDs 306 are illuminated based on whether handheld controller 302 is greater than a threshold distance from tracking system 320. In some aspects, the computing device (or one or more components thereof) may illuminate a first group of the plurality of light sources responsive to the body being less than the threshold distance from the camera; and illuminate a second group of the plurality of light sources responsive to the body being greater than the threshold distance from the camera. For example, processor 312 may illuminate a first group of LEDs 306 (e.g., group 502) based on handheld controller 302 being with a threshold distance from tracking system 320. Further, processor 312 may illuminate a second group of LEDs 306 (e.g., according to group 512) based on handheld controller 302 being greater than the threshold distance from tracking system 320. In some aspects, the second group may include fewer light sources than the first group.

[0113] In some aspects, the computing device (or one or more components thereof) may determine a distance between the computing device (or one or more components thereof) and a camera of an object-tracking system. In some aspects, the computing device (or one or more components thereof) may receive a signal from the object-tracking system and determine the distance based on the signal. For example, handheld processor 312 may, using communication unit 314, receive a signal from tracking system 320. In some aspects, the computing device (or one or more components thereof) may determine the distance between the body and the camera based on a strength of the signal. In some aspects, the computing device (or one or more components thereof) may determine the distance between the body and the camera based on a message encoded by the signal.

[0114] In some aspects, the computing device (or one or more components thereof) may control the plurality of light sources based on a pose of the body. For example, handheld controller 302 may determine which of LEDs 306 to illuminate based on a pose of tracking system 320. In some aspects, the computing device (or one or more components thereof) may control which light sources of the plurality of light sources are illuminated based on a pose of the body relative to the hand of the user. For example, processor 312 may determine which of LEDs 306 to illuminate based on a pose of hand 310 relative to handheld controller 302. In some aspects, the computing device (or one or more components thereof) may control which light sources of the plurality of light sources are illuminated based on a pose of the body relative to a camera of the object-tracking system. For example, processor 312 may determine which of LEDs 306 to illuminate based on a pose of handheld controller 302 relative to camera 322.

[0115] In some aspects, the computing device (or one or more components thereof) may determine a pose of the body relative to a camera of the object-tracking system. In some aspects, the computing device (or one or more components thereof) may receive a signal from the object-tracking system and determine a pose of the body relative to a camera of the object-tracking system based on the signal. In some aspects, the computing device (or one or more components thereof) may determine the pose of the body relative to the camera based on a direction from which the signal is received. For example, processor 312 may determine the relative pose (or a direction) based on the signal (e.g., using a directional antenna) . In some aspects, the computing device (or one or more components thereof) may determine the pose of the body relative to the camera based on a message encoded by the signal. For example, processor 312 may determine a pose of handheld controller 302 relative to camera 322 based on a message of the signal (e.g., tracking system 320 may send a message indicating the pose) .

[0116] In some aspects, the computing device (or one or more components thereof) may control the plurality of light sources based on a signal from the object-tracking system. For example, tracking system 320 may send a message to handheld controller 302 regarding control of LEDs 306. In some aspects, the signal may be indicative of that the object-tracking system is verifying the apparatus. For example, tracking system 320 may inform handheld controller 302 that 320 is verifying handheld controller 302 and processor 312 may control LEDs 306 according to a verification mode. In some aspects, the computing device (or one or more components thereof) may illuminate a first group of the plurality of light sources; and illuminate a second group of the plurality of light sources responsive to the signal from the object-tracking system. For example, handheld controller 302 may illuminate group 602 of LEDs 306, then responsive to a signal from tracking system 320 (e.g., indicative that tracking system 320 is verifying handheld controller 302) , handheld controller 302 may illuminate group 612. In some aspects, the signal may be indicative of a frame-capture rate of a camera of the object-tracking system. In some aspects, the computing device (or one or more components thereof) may control a timing of illuminating the plurality of light sources based on the frame-capture rate of the camera. For example, tracking system 320 may inform handheld controller 302 of a frame-capture rate of camera 322 and processor 312 may adjust a timing of LEDs 306 based on the frame-capture rate. In some aspects, the tracking system 320 may transmit a message indicative of a distance between handheld controller 302 and tracking system 320 and processor 312 may control LEDs 306 based on the message. In some aspects, tracking system 320 may transmit a message indicative of a pose of handheld controller 302 (e.g., relative to camera 322 and / or relative to hand 310) and processor 312 may control LEDs 306 based on the message.

[0117] In some aspects, the computing device (or one or more components thereof) may measure acceleration and / or rotation of the body and to generate movement information and transmit the movement information to the object-tracking system to enable the object-tracking system to track the body further based on the acceleration and / or rotation of the body. For example, handheld controller 302 may include an IMU 308 and may determine and transmit movement information to tracking system 320.

[0118] The components of the computing device can be implemented in circuitry. For example, the components can include and / or can be implemented using electronic circuits or other electronic hardware, which can include one or more programmable electronic circuits (e.g., microprocessors, graphics processing units (GPUs) , digital signal processors (DSPs) , central processing units (CPUs) , and / or other suitable electronic circuits) , and / or can include and / or be implemented using computer software, firmware, or any combination thereof, to perform the various operations described herein.

[0119] FIG. 14B is a flow diagram illustrating a process 1400B for improving tracking of a human-machine-interface (HMI) device, in accordance with aspects of the present disclosure. One or more operations of process 1400B may be performed by a computing device (or apparatus) or a component (e.g., a chipset, codec, etc. ) of the computing device. The computing device may be a vehicle or component or system of a vehicle, a mobile device (e.g., a mobile phone) , a network-connected wearable such as a watch, an extended reality (XR) device such as a virtual reality (VR) device or augmented reality (AR) device, a desktop computing device, a tablet computing device, a server computer, a robotic device, , and / or any other computing device with the resource capabilities to perform the process 1400B. The one or more operations of process 1400B may be implemented as software components that are executed and run on one or more processors.

[0120] At block 1402, a computing device (or one or more components thereof) may capture a plurality of images of a tracked object. For example, camera 322 may capture images of handheld controller 302.

[0121] At block 1404, the computing device (or one or more components thereof) may communicate with the tracked object. For example, tracking system 320, using communication unit 324, may communicate with handheld controller 302.

[0122] In some aspects, the computing device (or one or more components thereof) may detect the tracked object in a first image of the plurality of images; and transmit, to the tracked object a signal indicative that the apparatus is verifying the tracked object. For example, tracking system 320 may detect handheld controller 302, begin a verification process, and send a signal indicative of the verification process to handheld controller 302. In some aspects, the computing device (or one or more components thereof) may detect the tracked object in a second image of the plurality of images. In some aspects, in the first image, a first group of light sources of the tracked object may be illuminated; in the second image a second group of light sources of the tracked object may be illuminated; and the computing device (or one or more components thereof) may verify the tracked object based on the second group of light sources being illuminated in the second image. For example, tracking system 320 may verify handheld controller 302 based on capturing a first image including an illuminated group 602 and a second images including an illuminated group 612.

[0123] In some aspects, the computing device (or one or more components thereof) may receive movement information from the tracked object via the communication unit; and determine a pose of the tracked object further based on the movement information. For example, tracking system 320 may receive movement information generated by handheld controller 302 using IMU 308. In some aspects, the movement information may be, or may include, data regarding acceleration and / or rotation of the tracked object.

[0124] In some aspects, the computing device (or one or more components thereof) may store a historical pose of the tracked object and wherein the at least one processor is configured to determine a pose of the tracked object based on the historical pose. For example, tracking system 320 may operate as described with regard to historical pose data in FIG. 9.

[0125] In some aspects, the computing device (or one or more components thereof) may obtain a hand pose and wherein the at least one processor is configured to determine a pose of the tracked object further based on the hand pose. For example, tracking system 320 may obtain (or determine) a pose of hand 310 and determine a pose of handheld controller 302 based on the pose of hand 310. In some aspects, the computing device (or one or more components thereof) may determine the hand pose based on the plurality of images. In some aspects, the computing device (or one or more components thereof) may store a historical hand pose and wherein, to determine pose of the tracked object, the at least one processor is configured to determine the pose of the tracked object further based on the historical hand pose. For example, tracking system 320 may operate as described with regard to historical hand pose data in FIG. 9.

[0126] In some aspects, the computing device (or one or more components thereof) may send a signal indicative of a frame-capture rate of the camera to the tracked object. For example, tracking system 320 may send an indication of a frame-capture rate of camera 322 to handheld controller 302.

[0127] In some aspects, the computing device (or one or more components thereof) may transmit a signal indicative of a distance between the apparatus and the camera and the tracked object. For example, tracking system 320 may transmit an indication of the distance between handheld controller 302 and camera 322. In some aspects, the computing device (or one or more components thereof) may transmit a signal indicative of a pose of the tracked object (e.g., relative to a camera of the computing device (or one or more components thereof) or relative to a hand) . For example, tracking system 320 may transmit an indication of the pose of handheld controller 302 (e.g., relative to camera 322 and / or relative to hand 310) .

[0128] At block 1406, the computing device (or one or more components thereof) may track the tracked object based on the plurality of images of the tracked object. In some aspects, the computing device (or one or more components thereof) may determine a pose of the object based on the plurality of images of the tracked object.

[0129] The components of the computing device can be implemented in circuitry. For example, the components can include and / or can be implemented using electronic circuits or other electronic hardware, which can include one or more programmable electronic circuits (e.g., microprocessors, graphics processing units (GPUs) , digital signal processors (DSPs) , central processing units (CPUs) , and / or other suitable electronic circuits) , and / or can include and / or be implemented using computer software, firmware, or any combination thereof, to perform the various operations described herein.

[0130] Process 1400A, process 1400B, and / or other process described herein are illustrated as logical flow diagrams, the operation of which represents a sequence of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, the operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be combined in any order and / or in parallel to implement the processes.

[0131] Additionally, process 1400A, process 1400B, and / or other process described herein can be performed under the control of one or more computer systems configured with executable instructions and can be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) executing collectively on one or more processors, by hardware, or combinations thereof. As noted above, the code can be stored on a computer-readable or machine-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors. The computer-readable or machine-readable storage medium can be non-transitory.

[0132] As noted above, various aspects of the present disclosure can use machine-learning models or systems.

[0133] FIG. 15 is a diagram illustrating an example of a neural network 1500 (e.g., a deep-learning neural network) that can be used to implement the machine-learning based object detection, object tracking, vehicle tracking, vehicle detection, lane detection, lane tracking, feature segmentation, implicit-neural-representation generation, rendering, and / or classification described above.

[0134] An input layer 1502 includes input data. In one illustrative example, input layer 1502 can include data representing images captured by the tracking vehicle. Neural network 1500 includes multiple hidden layers hidden layers 1506a, 1506b, through 1506n. The hidden layers 1506a, 1506b, through hidden layer 1506n include “n” number of hidden layers, where “n” is an integer greater than or equal to one. The number of hidden layers can be made to include as many layers as needed for the given application. Neural network 1500 further includes an output layer 1504 that provides an output resulting from the processing performed by the hidden layers 1506a, 1506b, through 1506n. In one illustrative example, output layer 1504 can provide positions of target vehicles (e.g., bounding boxes) and / or positions of lane boundaries.

[0135] Neural network 1500 can be, or can include, a multi-layer neural network of interconnected nodes. Each node can represent a piece of information. Information associated with the nodes is shared among the different layers and each layer retains information as information is processed. In some cases, neural network 1500 can include a feed-forward network, in which case there are no feedback connections where outputs of the network are fed back into itself. In some cases, neural network 1500 can include a recurrent neural network, which can have loops that allow information to be carried across nodes while reading in input.

[0136] Information can be exchanged between nodes through node-to-node interconnections between the various layers. Nodes of input layer 1502 can activate a set of nodes in the first hidden layer 1506a. For example, as shown, each of the input nodes of input layer 1502 is connected to each of the nodes of the first hidden layer 1506a. The nodes of first hidden layer 1506a can transform the information of each input node by applying activation functions to the input node information. The information derived from the transformation can then be passed to and can activate the nodes of the next hidden layer 1506b, which can perform their own designated functions. Example functions include convolutional, up-sampling, data transformation, and / or any other suitable functions. The output of the hidden layer 1506b can then activate nodes of the next hidden layer, and so on. The output of the last hidden layer 1506n can activate one or more nodes of the output layer 1504, at which an output is provided. In some cases, while nodes (e.g., node 1508) in neural network 1500 are shown as having multiple output lines, a node has a single output and all lines shown as being output from a node represent the same output value.

[0137] In some cases, each node or interconnection between nodes can have a weight that is a set of parameters derived from the training of neural network 1500. Once neural network 1500 is trained, it can be referred to as a trained neural network, which can be used to perform one or more operations. For example, an interconnection between nodes can represent a piece of information learned about the interconnected nodes. The interconnection can have a tunable numeric weight that can be tuned (e.g., based on a training dataset) , allowing neural network 1500 to be adaptive to inputs and able to learn as more and more data is processed.

[0138] Neural network 1500 may be pre-trained to process the features from the data in the input layer 1502 using the different hidden layers 1506a, 1506b, through 1506n in order to provide the output through the output layer 1504. In an example in which neural network 1500 is used to identify features in images, neural network 1500 can be trained using training data that includes both images and labels, as described above. For instance, training images can be input into the network, with each training image having a label indicating the features in the images (for the feature-segmentation machine-learning system) or a label indicating classes of an activity in each image. In one example using object classification for illustrative purposes, a training image can include an image of a number 2, in which case the label for the image can be [0 0 1 0 0 0 0 0 0 0] .

[0139] In some cases, neural network 1500 can adjust the weights of the nodes using a training process called backpropagation. As noted above, a backpropagation process can include a forward pass, a loss function, a backward pass, and a weight update. The forward pass, loss function, backward pass, and parameter update is performed for one training iteration. The process can be repeated for a certain number of iterations for each set of training images until neural network 1500 is trained well enough so that the weights of the layers are accurately tuned.

[0140] For the example of identifying objects in images, the forward pass can include passing a training image through neural network 1500. The weights are initially randomized before neural network 1500 is trained. As an illustrative example, an image can include an array of numbers representing the pixels of the image. Each number in the array can include a value from 0 to 255 describing the pixel intensity at that position in the array. In one example, the array can include a 28 x 28 x 3 array of numbers with 28 rows and 28 columns of pixels and 3 color components (such as red, green, and blue, or luma and two chroma components, or the like) .

[0141] As noted above, for a first training iteration for neural network 1500, the output will likely include values that do not give preference to any particular class due to the weights being randomly selected at initialization. For example, if the output is a vector with probabilities that the object includes different classes, the probability value for each of the different classes can be equal or at least very similar (e.g., for ten possible classes, each class can have a probability value of 0.1) . With the initial weights, neural network 1500 is unable to determine low-level features and thus cannot make an accurate determination of what the classification of the object might be. A loss function can be used to analyze error in the output. Any suitable loss function definition can be used, such as a cross-entropy loss. Another example of a loss function includes the mean squared error (MSE) , defined as The loss can be set to be equal to the value of Etotal.

[0142] The loss (or error) will be high for the first training images since the actual values will be much different than the predicted output. The goal of training is to minimize the amount of loss so that the predicted output is the same as the training label. Neural network 1500 can perform a backward pass by determining which inputs (weights) most contributed to the loss of the network and can adjust the weights so that the loss decreases and is eventually minimized. A derivative of the loss with respect to the weights (denoted as dL / dW, where W are the weights at a particular layer) can be computed to determine the weights that contributed most to the loss of the network. After the derivative is computed, a weight update can be performed by updating all the weights of the filters. For example, the weights can be updated so that they change in the opposite direction of the gradient. The weight update can be denoted as where w denotes a weight, wi denotes the initial weight, and η denotes a learning rate. The learning rate can be set to any suitable value, with a high learning rate including larger weight updates and a lower value indicating smaller weight updates.

[0143] Neural network 1500 can include any suitable deep network. One example includes a convolutional neural network (CNN) , which includes an input layer and an output layer, with multiple hidden layers between the input and out layers. The hidden layers of a CNN include a series of convolutional, nonlinear, pooling (for downsampling) , and fully connected layers. Neural network 1500 can include any other deep network other than a CNN, such as an autoencoder, a deep belief nets (DBNs) , a Recurrent Neural Networks (RNNs) , among others.

[0144] FIG. 16 is a diagram illustrating an example of a convolutional neural network (CNN) 1600. The input layer 1602 of the CNN 1600 includes data representing an image or frame. For example, the data can include an array of numbers representing the pixels of the image, with each number in the array including a value from 0 to 255 describing the pixel intensity at that position in the array. Using the previous example from above, the array can include a 28 x 28 x 3 array of numbers with 28 rows and 28 columns of pixels and 3 color components (e.g., red, green, and blue, or luma and two chroma components, or the like) . The image can be passed through a convolutional hidden layer 1604, an optional non-linear activation layer, a pooling hidden layer 1606, and fully connected layer 1608 (which fully connected layer 1608 can be hidden) to get an output at the output layer 1610. While only one of each hidden layer is shown in FIG. 16, one of ordinary skill will appreciate that multiple convolutional hidden layers, non-linear layers, pooling hidden layers, and / or fully connected layers can be included in the CNN 1600. As previously described, the output can indicate a single class of an object or can include a probability of classes that best describe the object in the image.

[0145] The first layer of the CNN 1600 can be the convolutional hidden layer 1604. The convolutional hidden layer 1604 can analyze image data of the input layer 1602. Each node of the convolutional hidden layer 1604 is connected to a region of nodes (pixels) of the input image called a receptive field. The convolutional hidden layer 1604 can be considered as one or more filters (each filter corresponding to a different activation or feature map) , with each convolutional iteration of a filter being a node or neuron of the convolutional hidden layer 1604. For example, the region of the input image that a filter covers at each convolutional iteration would be the receptive field for the filter. In one illustrative example, if the input image includes a 28×28 array, and each filter (and corresponding receptive field) is a 5×5 array, then there will be 24×24 nodes in the convolutional hidden layer 1604. Each connection between a node and a receptive field for that node learns a weight and, in some cases, an overall bias such that each node learns to analyze its particular local receptive field in the input image. Each node of the convolutional hidden layer 1604 will have the same weights and bias (called a shared weight and a shared bias) . For example, the filter has an array of weights (numbers) and the same depth as the input. A filter will have a depth of 3 for an image frame example (according to three color components of the input image) . An illustrative example size of the filter array is 5 x 5 x 3, corresponding to a size of the receptive field of a node.

[0146] The convolutional nature of the convolutional hidden layer 1604 is due to each node of the convolutional layer being applied to its corresponding receptive field. For example, a filter of the convolutional hidden layer 1604 can begin in the top-left corner of the input image array and can convolve around the input image. As noted above, each convolutional iteration of the filter can be considered a node or neuron of the convolutional hidden layer 1604. At each convolutional iteration, the values of the filter are multiplied with a corresponding number of the original pixel values of the image (e.g., the 5x5 filter array is multiplied by a 5x5 array of input pixel values at the top-left corner of the input image array) . The multiplications from each convolutional iteration can be summed together to obtain a total sum for that iteration or node. The process is next continued at a next location in the input image according to the receptive field of a next node in the convolutional hidden layer 1604. For example, a filter can be moved by a step amount (referred to as a stride) to the next receptive field. The stride can be set to 1 or any other suitable amount. For example, if the stride is set to 1, the filter will be moved to the right by 1 pixel at each convolutional iteration. Processing the filter at each unique location of the input volume produces a number representing the filter results for that location, resulting in a total sum value being determined for each node of the convolutional hidden layer 1604.

[0147] The mapping from the input layer to the convolutional hidden layer 1604 is referred to as an activation map (or feature map) . The activation map includes a value for each node representing the filter results at each location of the input volume. The activation map can include an array that includes the various total sum values resulting from each iteration of the filter on the input volume. For example, the activation map will include a 24 x 24 array if a 5 x 5 filter is applied to each pixel (astride of 1) of a 28 x 28 input image. The convolutional hidden layer 1604 can include several activation maps in order to identify multiple features in an image. The example shown in FIG. 16 includes three activation maps. Using three activation maps, the convolutional hidden layer 1604 can detect three different kinds of features, with each feature being detectable across the entire image.

[0148] In some examples, a non-linear hidden layer can be applied after the convolutional hidden layer 1604. The non-linear layer can be used to introduce non-linearity to a system that has been computing linear operations. One illustrative example of a non-linear layer is a rectified linear unit (ReLU) layer. A ReLU layer can apply the function f (x) = max (0, x) to all of the values in the input volume, which changes all the negative activations to 0. The ReLU can thus increase the non-linear properties of the CNN 1600 without affecting the receptive fields of the convolutional hidden layer 1604.

[0149] The pooling hidden layer 1606 can be applied after the convolutional hidden layer 1604 (and after the non-linear hidden layer when used) . The pooling hidden layer 1606 is used to simplify the information in the output from the convolutional hidden layer 1604. For example, the pooling hidden layer 1606 can take each activation map output from the convolutional hidden layer 1604 and generates a condensed activation map (or feature map) using a pooling function. Max-pooling is one example of a function performed by a pooling hidden layer. Other forms of pooling functions be used by the pooling hidden layer 1606, such as average pooling, L2-norm pooling, or other suitable pooling functions. A pooling function (e.g., a max-pooling filter, an L2-norm filter, or other suitable pooling filter) is applied to each activation map included in the convolutional hidden layer 1604. In the example shown in FIG. 16, three pooling filters are used for the three activation maps in the convolutional hidden layer 1604.

[0150] In some examples, max-pooling can be used by applying a max-pooling filter (e.g., having a size of 2x2) with a stride (e.g., equal to a dimension of the filter, such as a stride of 2) to an activation map output from the convolutional hidden layer 1604. The output from a max-pooling filter includes the maximum number in every sub-region that the filter convolves around. Using a 2x2 filter as an example, each unit in the pooling layer can summarize a region of 2×2 nodes in the previous layer (with each node being a value in the activation map) . For example, four values (nodes) in an activation map will be analyzed by a 2x2 max-pooling filter at each iteration of the filter, with the maximum value from the four values being output as the “max” value. If such a max-pooling filter is applied to an activation filter from the convolutional hidden layer 1604 having a dimension of 24x24 nodes, the output from the pooling hidden layer 1606 will be an array of 12x12 nodes.

[0151] In some examples, an L2-norm pooling filter could also be used. The L2-norm pooling filter includes computing the square root of the sum of the squares of the values in the 2×2 region (or other suitable region) of an activation map (instead of computing the maximum values as is done in max-pooling) and using the computed values as an output.

[0152] The pooling function (e.g., max-pooling, L2-norm pooling, or other pooling function) determines whether a given feature is found anywhere in a region of the image and discards the exact positional information. This can be done without affecting results of the feature detection because, once a feature has been found, the exact location of the feature is not as important as its approximate location relative to other features. Max-pooling (as well as other pooling methods) offer the benefit that there are many fewer pooled features, thus reducing the number of parameters needed in later layers of the CNN 1600.

[0153] The final layer of connections in the network is a fully-connected layer that connects every node from the pooling hidden layer 1606 to every one of the output nodes in the output layer 1610. Using the example above, the input layer includes 28 x 28 nodes encoding the pixel intensities of the input image, the convolutional hidden layer 1604 includes 3×24×24 hidden feature nodes based on application of a 5×5 local receptive field (for the filters) to three activation maps, and the pooling hidden layer 1606 includes a layer of 3×12×12 hidden feature nodes based on application of max-pooling filter to 2×2 regions across each of the three feature maps. Extending this example, the output layer 1610 can include ten output nodes. In such an example, every node of the 3x12x12 pooling hidden layer 1606 is connected to every node of the output layer 1610.

[0154] The fully connected layer 1608 can obtain the output of the previous pooling hidden layer 1606 (which should represent the activation maps of high-level features) and determines the features that most correlate to a particular class. For example, the fully connected layer 1608 can determine the high-level features that most strongly correlate to a particular class and can include weights (nodes) for the high-level features. A product can be computed between the weights of the fully connected layer 1608 and the pooling hidden layer 1606 to obtain probabilities for the different classes. For example, if the CNN 1600 is being used to predict that an object in an image is a person, high values will be present in the activation maps that represent high-level features of people (e.g., two legs are present, a face is present at the top of the object, two eyes are present at the top left and top right of the face, a nose is present in the middle of the face, a mouth is present at the bottom of the face, and / or other features common for a person) .

[0155] In some examples, the output from the output layer 1610 can include an M-dimensional vector (in the prior example, M=10) . M indicates the number of classes that the CNN 1600 has to choose from when classifying the object in the image. Other example outputs can also be provided. Each number in the M-dimensional vector can represent the probability the object is of a certain class. In one illustrative example, if a 10-dimensional output vector represents ten different classes of objects is [0 0 0.05 0.8 0 0.15 0 0 0 0] , the vector indicates that there is a 5%probability that the image is the third class of object (e.g., a dog) , an 80%probability that the image is the fourth class of object (e.g., a human) , and a 15%probability that the image is the sixth class of object (e.g., a kangaroo) . The probability for a class can be considered a confidence level that the object is part of that class.

[0156] FIG. 17 is a diagram illustrating an example computing-device architecture 1700 of an example computing device which can implement the various techniques described herein. In some examples, the computing device can include a mobile device, a wearable device, an extended reality device (e.g., a virtual reality (VR) device, an augmented reality (AR) device, or a mixed reality (MR) device) , a personal computer, a laptop computer, a video server, a vehicle (or computing device of a vehicle) , or other device. For example, the computing-device architecture 1700 may include, implement, or be included in any or all of ___.

[0157] The components of computing-device architecture 1700 are shown in electrical communication with each other using connection 1712, such as a bus. The example computing-device architecture 1700 includes a processing unit (CPU or processor) 1702 and computing device connection 1712 that couples various computing device components including computing device memory 1710, such as read only memory (ROM) 1708 and random-access memory (RAM) 1706, to processor 1702.

[0158] Computing-device architecture 1700 can include a cache of high-speed memory connected directly with, in close proximity to, or integrated as part of processor 1702. Computing-device architecture 1700 can copy data from memory 1710 and / or the storage device 1714 to cache 1704 for quick access by processor 1702. In this way, the cache can provide a performance boost that avoids processor 1702 delays while waiting for data. These and other modules can control or be configured to control processor 1702 to perform various actions. Other computing device memory 1710 may be available for use as well. Memory 1710 can include multiple different types of memory with different performance characteristics. Processor 1702 can include any general-purpose processor and a hardware or software service, such as service 1 1716, service 2 1718, and service 3 1720 stored in storage device 1714, configured to control processor 1702 as well as a special-purpose processor where software instructions are incorporated into the processor design. Processor 1702 may be a self-contained system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.

[0159] To enable user interaction with the computing-device architecture 1700, input device 1722 can represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. Output device 1724 can also be one or more of a number of output mechanisms known to those of skill in the art, such as a display, projector, television, speaker device, etc. In some instances, multimodal computing devices can enable a user to provide multiple types of input to communicate with computing-device architecture 1700. Communication interface 1726 can generally govern and manage the user input and computing device output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.

[0160] Storage device 1714 is a non-volatile memory and can be a hard disk or other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, solid state memory devices, digital versatile disks, cartridges, random-access memories (RAMs) 1706, read only memory (ROM) 1708, and hybrids thereof. Storage device 1714 can include services 1716, 1718, and 1720 for controlling processor 1702. Other hardware or software modules are contemplated. Storage device 1714 can be connected to the computing device connection 1712. In one aspect, a hardware module that performs a particular function can include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as processor 1702, connection 1712, output device 1724, and so forth, to carry out the function.

[0161] The term “substantially, ” in reference to a given parameter, property, or condition, may refer to a degree that one of ordinary skill in the art would understand that the given parameter, property, or condition is met with a small degree of variance, such as, for example, within acceptable manufacturing tolerances. By way of example, depending on the particular parameter, property, or condition that is substantially met, the parameter, property, or condition may be at least 90%met, at least 95%met, or even at least 99%met.

[0162] Aspects of the present disclosure are applicable to any suitable electronic device (such as security systems, smartphones, tablets, laptop computers, vehicles, drones, or other devices) including or coupled to one or more active depth sensing systems. While described below with respect to a device having or coupled to one light projector, aspects of the present disclosure are applicable to devices having any number of light projectors and are therefore not limited to specific devices.

[0163] The term “device” is not limited to one or a specific number of physical objects (such as one smartphone, one controller, one processing system and so on) . As used herein, a device may be any electronic device with one or more parts that may implement at least some portions of this disclosure. While the below description and examples use the term “device” to describe various aspects of this disclosure, the term “device” is not limited to a specific configuration, type, or number of objects. Additionally, the term “system” is not limited to multiple components or specific aspects. For example, a system may be implemented on one or more printed circuit boards or other substrates and may have movable or static components. While the below description and examples use the term “system” to describe various aspects of this disclosure, the term “system” is not limited to a specific configuration, type, or number of objects.

[0164] Specific details are provided in the description above to provide a thorough understanding of the aspects and examples provided herein. However, it will be understood by one of ordinary skill in the art that the aspects may be practiced without these specific details. For clarity of explanation, in some instances the present technology may be presented as including individual functional blocks including functional blocks including devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software. Additional components may be used other than those shown in the figures and / or described herein. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form in order not to obscure the aspects in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the aspects.

[0165] Individual aspects may be described above as a process or method which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed but could have additional steps not included in a figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination can correspond to a return of the function to the calling function or the main function.

[0166] Processes and methods according to the above-described examples can be implemented using computer-executable instructions that are stored or otherwise available from computer-readable media. Such instructions can include, for example, instructions and data which cause or otherwise configure a general-purpose computer, special purpose computer, or a processing device to perform a certain function or group of functions. Portions of computer resources used can be accessible over a network. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, source code, etc.

[0167] The term “computer-readable medium” includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other mediums capable of storing, containing, or carrying instruction (s) and / or data. A computer-readable medium may include a non-transitory medium in which data can be stored and that does not include carrier waves and / or transitory electronic signals propagating wirelessly or over wired connections. Examples of a non-transitory medium may include, but are not limited to, a magnetic disk or tape, optical storage media such as compact disk (CD) or digital versatile disk (DVD) , flash memory, magnetic or optical disks, USB devices provided with non-volatile memory, networked storage devices, any suitable combination thereof, among others. A computer-readable medium may have stored thereon code and / or machine-executable instructions that may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, or the like.

[0168] In some aspects the computer-readable storage devices, mediums, and memories can include a cable or wireless signal containing a bit stream and the like. However, when mentioned, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.

[0169] Devices implementing processes and methods according to these disclosures can include hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof, and can take any of a variety of form factors. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks (e.g., a computer-program product) may be stored in a computer-readable or machine-readable medium. A processor (s) may perform the necessary tasks. Typical examples of form factors include laptops, smart phones, mobile phones, tablet devices or other small form factor personal computers, personal digital assistants, rackmount devices, standalone devices, and so on. Functionality described herein also can be embodied in peripherals or add-in cards. Such functionality can also be implemented on a circuit board among different chips or different processes executing in a single device, by way of further example.

[0170] The instructions, media for conveying such instructions, computing resources for executing them, and other structures for supporting such computing resources are example means for providing the functions described in the disclosure.

[0171] In the foregoing description, aspects of the application are described with reference to specific aspects thereof, but those skilled in the art will recognize that the application is not limited thereto. Thus, while illustrative aspects of the application have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied and employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art. Various features and aspects of the above-described application may be used individually or jointly. Further, aspects can be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive. For the purposes of illustration, methods were described in a particular order. It should be appreciated that in alternate aspects, the methods may be performed in a different order than that described.

[0172] One of ordinary skill will appreciate that the less than ( “<” ) and greater than ( “>” ) symbols or terminology used herein can be replaced with less than or equal to ( “≤” ) and greater than or equal to ( “≥” ) symbols, respectively, without departing from the scope of this description.

[0173] Where components are described as being “configured to” perform certain operations, such configuration can be accomplished, for example, by designing electronic circuits or other hardware to perform the operation, by programming programmable electronic circuits (e.g., microprocessors, or other suitable electronic circuits) to perform the operation, or any combination thereof.

[0174] The phrase “coupled to” refers to any component that is physically connected to another component either directly or indirectly, and / or any component that is in communication with another component (e.g., connected to the other component over a wired or wireless connection, and / or other suitable communication interface) either directly or indirectly.

[0175] Claim language or other language reciting “at least one of” a set and / or “one or more” of a set indicates that one member of the set or multiple members of the set (in any combination) satisfy the claim. For example, claim language reciting “at least one of A and B” or “at least one of A or B” means A, B, or A and B. In another example, claim language reciting “at least one of A, B, and C” or “at least one of A, B, or C” means A, B, C, or A and B, or A and C, or B and C, or A and B and C. The language “at least one of” a set and / or “one or more” of a set does not limit the set to the items listed in the set. For example, claim language reciting “at least one of A and B” or “at least one of A or B” can mean A, B, or A and B, and can additionally include items not listed in the set of A and B.

[0176] The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein may be implemented as electronic hardware, computer software, firmware, or combinations thereof. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present application.

[0177] The techniques described herein may also be implemented in electronic hardware, computer software, firmware, or any combination thereof. Such techniques may be implemented in any of a variety of devices such as general-purposes computers, wireless communication device handsets, or integrated circuit devices having multiple uses including application in wireless communication device handsets and other devices. Any features described as modules or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a computer-readable data storage medium including program code including instructions that, when executed, performs one or more of the methods described above. The computer-readable data storage medium may form part of a computer program product, which may include packaging materials. The computer-readable medium may include memory or data storage media, such as random-access memory (RAM) such as synchronous dynamic random-access memory (SDRAM) , read-only memory (ROM) , non-volatile random-access memory (NVRAM) , electrically erasable programmable read-only memory (EEPROM) , FLASH memory, magnetic or optical data storage media, and the like. The techniques additionally, or alternatively, may be realized at least in part by a computer-readable communication medium that carries or communicates program code in the form of instructions or data structures and that can be accessed, read, and / or executed by a computer, such as propagated signals or waves.

[0178] The program code may be executed by a processor, which may include one or more processors, such as one or more digital signal processors (DSPs) , general-purpose microprocessors, an application specific integrated circuits (ASICs) , field programmable logic arrays (FPGAs) , or other equivalent integrated or discrete logic circuitry. Such a processor may be configured to perform any of the techniques described in this disclosure. A general-purpose processor may be a microprocessor; but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration) . Accordingly, the term “processor, ” as used herein may refer to any of the foregoing structure, any combination of the foregoing structure, or any other structure or apparatus suitable for implementation of the techniques described herein.

[0179] Claim language or other language reciting “at least one processor configured to, ” “at least one processor being configured to, ” or the like indicates that one processor or multiple processors (in any combination) can perform the associated operation (s) . For example, claim language reciting “at least one processor configured to: X, Y, and Z” means a single processor can be used to perform operations X, Y, and Z; or that multiple processors are each tasked with a certain subset of operations X, Y, and Z such that together the multiple processors perform X, Y, and Z; or that a group of multiple processors work together to perform operations X, Y, and Z. In another example, claim language reciting “at least one processor configured to: X, Y, and Z” can mean that any single processor may only perform at least a subset of operations X, Y, and Z.

[0180] Illustrative aspects of the disclosure include:

[0181] Aspect 1. An apparatus enabling tracking of an object, the apparatus comprising: a body comprising a handle to be held in a hand of a user; a plurality of light sources arranged on the body; and at least one processor configured to adaptively adjust a pattern of the plurality of light sources to enable an object-tracking system to track the body based on images of the plurality of light sources.

[0182] Aspect 2. An apparatus enabling tracking of an object, the apparatus comprising: a body comprising a handle to be held in a hand of a user; a plurality of light sources arranged on the body; and at least one processor configured to control the plurality of light sources to enable an object-tracking system to track the body based on images of the plurality of light sources.

[0183] Aspect 3. The apparatus of aspect 2, wherein, to control the plurality of light sources, the at least one processor is configured to independently control each light source of the plurality of light sources.

[0184] Aspect 4. The apparatus of any one of aspect 2 or 3, wherein, to control the plurality of light sources, the at least one processor is configured to control at least one of: light sources of the plurality of light sources that are illuminated; a timing of illuminating the plurality of light sources; an intensity of illuminating the plurality of light sources; or wavelengths of light produced by the plurality of light sources.

[0185] Aspect 5. The apparatus of any one of aspect 2 to 4, wherein each light source of the plurality of light sources comprises one or more respective light-emitting diodes (LEDs) .

[0186] Aspect 6. The apparatus of any one of aspect 2 to 5, wherein each light source of the plurality of light sources is configured to emit at least one of visible light, near infrared light, or infrared light.

[0187] Aspect 7. The apparatus of any one of aspect 2 to 6, wherein the at least one processor is further configured to control the plurality of light sources based on a distance between the body and a camera of the object-tracking system.

[0188] Aspect 8. The apparatus of aspect 7, wherein the at least one processor is further configured to control which light sources of the plurality of light sources are illuminated based on the distance between the body and the camera.

[0189] Aspect 9. The apparatus of any one of aspect 7 or 8, wherein the at least one processor is further configured to: determine whether the body is greater than a threshold distance from the camera of the object-tracking system; and control the plurality of light sources based on whether the body is greater than the threshold distance from the camera.

[0190] Aspect 10. The apparatus of aspect 9, wherein the at least one processor is further configured to: illuminate a first group of the plurality of light sources responsive to the body being less than the threshold distance from the camera; and illuminate a second group of the plurality of light sources responsive to the body being greater than the threshold distance from the camera.

[0191] Aspect 11. The apparatus of aspect 10, wherein the second group comprises fewer light sources than the first group.

[0192] Aspect 12. The apparatus of any one of aspect 7 to 11, further comprising a communication unit configured to receive a signal from the object-tracking system, wherein the at least one processor is further configured to determine the distance between the body and the camera based on the signal.

[0193] Aspect 13. The apparatus of aspect 12, wherein the at least one processor is further configured to determine the distance between the body and the camera based on a strength of the signal.

[0194] Aspect 14. The apparatus of any one of aspect 12 or 13, wherein the at least one processor is further configured to determine the distance between the body and the camera based on a message encoded by the signal.

[0195] Aspect 15. The apparatus of any one of aspect 7 to 14, wherein, to control the plurality of light sources based on the distance between the body and a camera of the object-tracking system, the at least one processor is configured to control at least one of: which light sources of the plurality of light sources are illuminated; a timing of illuminating the plurality of light sources; an intensity of illuminating the plurality of light sources; or wavelengths of light produced by the plurality of light sources.

[0196] Aspect 16. The apparatus of any one of aspect 2 to 15, wherein the at least one processor is further configured to control the plurality of light sources based on a pose of the body.

[0197] Aspect 17. The apparatus of aspect 16, wherein the at least one processor is further configured to control which light sources of the plurality of light sources are illuminated based on a pose of the body relative to the hand of the user.

[0198] Aspect 18. The apparatus of any one of aspect 16 or 17, wherein the at least one processor is further configured to control which light sources of the plurality of light sources are illuminated based on a pose of the body relative to a camera of the object-tracking system.

[0199] Aspect 19. The apparatus of any one of aspect 16 to 18, further comprising a communication unit configured to receive a signal from the object-tracking system, wherein the at least one processor is further configured to determine a pose of the body relative to a camera of the object-tracking system based on the signal.

[0200] Aspect 20. The apparatus of aspect 19, wherein the at least one processor is further configured to determine the pose of the body relative to the camera based on a direction from which the signal is received.

[0201] Aspect 21. The apparatus of any one of aspect 19 or 20, wherein the at least one processor is further configured to determine the pose of the body relative to the camera based on a message encoded by the signal.

[0202] Aspect 22. The apparatus of any one of aspect 2 to 21, wherein the at least one processor is further configured to control the plurality of light sources based on a signal from the object-tracking system.

[0203] Aspect 23. The apparatus of aspect 22, wherein the signal is indicative of that the object-tracking system is verifying the apparatus.

[0204] Aspect 24. The apparatus of any one of aspect 22 or 23, wherein the at least one processor is further configured to: illuminate a first group of the plurality of light sources; and illuminate a second group of the plurality of light sources responsive to the signal from the object-tracking system.

[0205] Aspect 25. The apparatus of any one of aspect 22 to 24, wherein, to control the plurality of light sources based on a signal from the object-tracking system, the at least one processor is configured to control at least one of: which light sources of the plurality of light sources are illuminated; a timing of illuminating the plurality of light sources; an intensity of illuminating the plurality of light sources; or wavelengths of light produced by the plurality of light sources.

[0206] Aspect 26. The apparatus of any one of aspect 22 to 25, wherein the signal is indicative of a frame-capture rate of a camera of the object-tracking system.

[0207] Aspect 27. The apparatus of aspect 26, wherein the at least one processor is further configured to control a timing of illuminating the plurality of light sources based on the frame-capture rate of the camera.

[0208] Aspect 28. The apparatus of any one of aspect 2 to 27, further comprising: an inertial measurement unit (IMU) configured to measure acceleration and / or rotation of the body and to generate movement information; and a communication unit configured to transmit the movement information to the object-tracking system to enable the object-tracking system to track the body further based on the acceleration and / or rotation of the body.

[0209] Aspect 29. An apparatus for tracking an object, the apparatus comprising: a camera configured to capture a plurality of images of a tracked object; a communication unit configured to communicate with the tracked object; and at least one processor configured to track the tracked object based on the plurality of images of the tracked object.

[0210] Aspect 30. The apparatus of aspect 29, wherein the at least one processor is configured to: detect the tracked object in a first image of the plurality of images; and transmit, to the tracked object, via the communication unit, a signal indicative that the apparatus is verifying the tracked object.

[0211] Aspect 31. The apparatus of aspect 30, wherein the at least one processor is configured to detect the tracked object in a second image of the plurality of images.

[0212] Aspect 32. The apparatus of aspect 31, wherein: in the first image, a first group of light sources of the tracked object is illuminated; in the second image a second group of light sources of the tracked object is illuminated; and the at least one processor is further configured to verify the tracked object based on the second group of light sources being illuminated in the second image.

[0213] Aspect 33. The apparatus of any one of aspect 29 to 32, wherein the at least one processor is further configured to: receive movement information from the tracked object via the communication unit; and determine a pose of the tracked object further based on the movement information.

[0214] Aspect 34. The apparatus of aspect 33, wherein the movement information comprises data regarding acceleration and / or rotation of the tracked object.

[0215] Aspect 35. The apparatus of any one of aspect 29 to 34, wherein the at least one processor is configured to store a historical pose of the tracked object and wherein the at least one processor is configured to determine a pose of the tracked object based on the historical pose.

[0216] Aspect 36. The apparatus of any one of aspect 29 to 35, wherein the at least one processor is further configured to obtain a hand pose and wherein the at least one processor is configured to determine a pose of the tracked object further based on the hand pose.

[0217] Aspect 37. The apparatus of aspect 36, wherein the at least one processor is further configured to determine the hand pose based on the plurality of images.

[0218] Aspect 38. The apparatus of any one of aspect 35 to 37, wherein the at least one processor is configured to store a historical hand pose and wherein, to determine pose of the tracked object, the at least one processor is configured to determine the pose of the tracked object further based on the historical hand pose.

[0219] Aspect 39. The apparatus of any one of aspect 29 to 38, wherein the communication unit is configured send a signal indicative of a frame-capture rate of the camera to the tracked object.

[0220] Aspect 40. The apparatus of any one of aspect 29 to 39, further comprising an array of cameras including the camera.

[0221] Aspect 41. The apparatus of any one of aspect 29 to 40, wherein the at least one processor is configured to transmit, to the tracked object, via the communication unit, a signal indicative of a distance between the apparatus and the camera and the tracked object.

[0222] Aspect 42. The apparatus of any one of aspect 29 to 41, wherein the at least one processor is configured to transmit, to the tracked object, via the communication unit, a signal indicative of a pose of the tracked object.

[0223] Aspect 43. The apparatus of any one of aspect 29 to 42, wherein the apparatus comprise a head-mounted device.

[0224] Aspect 44. A system comprising the apparatus of aspect 2 and the apparatus of claim 28.

[0225] Aspect 45. An apparatus enabling tracking of an object, the apparatus comprising: a body comprising a handle to be held in a hand of a user; a plurality of light sources arranged on the body; and at least one processor configured to control the plurality of light sources to enable an object-tracking system to determine a pose of the body based on images of the plurality of light sources.

[0226] Aspect 46. An apparatus for tracking an object, the apparatus comprising: a camera configured to capture a plurality of images of a tracked object; a communication unit configured to communicate with the tracked object; and at least one processor configured to determine a pose of the tracked object based on the plurality of images of the tracked object.

[0227] Aspect 47. A method for enabling tracking of an object, the method comprising: controlling a plurality of light sources to enable an object-tracking system to determine a pose of a body on which the plurality of light sources are arranged based on images of the plurality of light sources.

[0228] Aspect 48. A method for enabling tracking of an object, the method comprising: adaptively adjusting a pattern of a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources.

[0229] Aspect 49. A method for tracking an object, the method comprising: capturing a plurality of images of a tracked object; communicating with the tracked object; and determining a pose of the tracked object based on the plurality of images of the tracked object.

[0230] Aspect 50. A method for tracking an object, the method comprising: capturing a plurality of images of a tracked object; communicating with the tracked object; and tracking the tracked object based on the plurality of images of the tracked object.

[0231] Aspect 51. A method for enabling tracking of an object, the method comprising: controlling a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources

[0232] Aspect 52. A method comprising operations according to any of aspect 1 to 46.

[0233] Aspect 53. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed by at least one processor, cause the at least one processor to perform operations according to any of aspect 1 to 46.

[0234] Aspect 54. An apparatus for enabling tracking of an object, the apparatus including one or more means for performing operations described herein.

[0235] Aspect 55. An apparatus for tracking an object, the apparatus including one or more means for performing operations described herein.

Claims

1.An apparatus enabling tracking of an object, the apparatus comprising:a body comprising a handle to be held in a hand of a user;a plurality of light sources arranged on the body; andat least one processor configured to adaptively adjust a pattern of the plurality of light sources to enable an object-tracking system to track the body based on images of the plurality of light sources.2.An apparatus enabling tracking of an object, the apparatus comprising:a body comprising a handle to be held in a hand of a user;a plurality of light sources arranged on the body; andat least one processor configured to control the plurality of light sources to enable an object-tracking system to track the body based on images of the plurality of light sources.3.The apparatus of claim 2, wherein, to control the plurality of light sources, the at least one processor is configured to independently control each light source of the plurality of light sources.4.The apparatus of claim 2, wherein, to control the plurality of light sources, the at least one processor is configured to control at least one of:light sources of the plurality of light sources that are illuminated;a timing of illuminating the plurality of light sources;an intensity of illuminating the plurality of light sources; orwavelengths of light produced by the plurality of light sources.5.The apparatus of claim 2, wherein each light source of the plurality of light sources comprises one or more respective light-emitting diodes (LEDs) .6.The apparatus of claim 2, wherein each light source of the plurality of light sources is configured to emit at least one of visible light, near infrared light, or infrared light.7.The apparatus of claim 2, wherein the at least one processor is further configured to control the plurality of light sources based on a distance between the body and a camera of the object-tracking system.8.The apparatus of claim 7, wherein the at least one processor is further configured to control which light sources of the plurality of light sources are illuminated based on the distance between the body and the camera.9.The apparatus of claim 7, wherein the at least one processor is further configured to:determine whether the body is greater than a threshold distance from the camera of the object-tracking system; andcontrol the plurality of light sources based on whether the body is greater than the threshold distance from the camera.10.The apparatus of claim 9, wherein the at least one processor is further configured to:illuminate a first group of the plurality of light sources responsive to the body being less than the threshold distance from the camera; andilluminate a second group of the plurality of light sources responsive to the body being greater than the threshold distance from the camera.11.The apparatus of claim 10, wherein the second group comprises fewer light sources than the first group.12.The apparatus of claim 7, further comprising a communication unit configured to receive a signal from the object-tracking system, wherein the at least one processor is further configured to determine the distance between the body and the camera based on the signal.13.The apparatus of claim 12, wherein the at least one processor is further configured to determine the distance between the body and the camera based on a strength of the signal.14.The apparatus of claim 12, wherein the at least one processor is further configured to determine the distance between the body and the camera based on a message encoded by the signal.15.The apparatus of claim 7, wherein, to control the plurality of light sources based on the distance between the body and a camera of the object-tracking system, the at least one processor is configured to control at least one of:which light sources of the plurality of light sources are illuminated;a timing of illuminating the plurality of light sources;an intensity of illuminating the plurality of light sources; orwavelengths of light produced by the plurality of light sources.16.The apparatus of claim 2, wherein the at least one processor is further configured to control the plurality of light sources based on a pose of the body.17.The apparatus of claim 16, wherein the at least one processor is further configured to control which light sources of the plurality of light sources are illuminated based on a pose of the body relative to the hand of the user.18.The apparatus of claim 16, wherein the at least one processor is further configured to control which light sources of the plurality of light sources are illuminated based on a pose of the body relative to a camera of the object-tracking system.19.The apparatus of claim 16, further comprising a communication unit configured to receive a signal from the object-tracking system, wherein the at least one processor is further configured to determine a pose of the body relative to a camera of the object-tracking system based on the signal.20.The apparatus of claim 19, wherein the at least one processor is further configured to determine the pose of the body relative to the camera based on a direction from which the signal is received.21.The apparatus of claim 19, wherein the at least one processor is further configured to determine the pose of the body relative to the camera based on a message encoded by the signal.22.The apparatus of claim 2, wherein the at least one processor is further configured to control the plurality of light sources based on a signal from the object-tracking system.23.The apparatus of claim 22, wherein the signal is indicative of that the object-tracking system is verifying the apparatus.24.The apparatus of claim 22, wherein the at least one processor is further configured to:illuminate a first group of the plurality of light sources; andilluminate a second group of the plurality of light sources responsive to the signal from the object-tracking system.25.The apparatus of claim 22, wherein, to control the plurality of light sources based on a signal from the object-tracking system, the at least one processor is configured to control at least one of:which light sources of the plurality of light sources are illuminated;a timing of illuminating the plurality of light sources;an intensity of illuminating the plurality of light sources; orwavelengths of light produced by the plurality of light sources.26.The apparatus of claim 22, wherein the signal is indicative of a frame-capture rate of a camera of the object-tracking system.27.The apparatus of claim 26, wherein the at least one processor is further configured to control a timing of illuminating the plurality of light sources based on the frame-capture rate of the camera.28.The apparatus of claim 2, further comprising:an inertial measurement unit (IMU) configured to measure acceleration and / or rotation of the body and to generate movement information; anda communication unit configured to transmit the movement information to the object-tracking system to enable the object-tracking system to track the body further based on the acceleration and / or rotation of the body.29.An apparatus for tracking an object, the apparatus comprising:a camera configured to capture a plurality of images of a tracked object;a communication unit configured to communicate with the tracked object; andat least one processor configured to track the tracked object based on the plurality of images of the tracked object.30.The apparatus of claim 29, wherein the at least one processor is configured to:detect the tracked object in a first image of the plurality of images; andtransmit, to the tracked object, via the communication unit, a signal indicative that the apparatus is verifying the tracked object.31.The apparatus of claim 30, wherein the at least one processor is configured to detect the tracked object in a second image of the plurality of images.32.The apparatus of claim 31, wherein:in the first image, a first group of light sources of the tracked object is illuminated;in the second image a second group of light sources of the tracked object is illuminated; andthe at least one processor is further configured to verify the tracked object based on the second group of light sources being illuminated in the second image.33.The apparatus of claim 29, wherein the at least one processor is further configured to:receive movement information from the tracked object via the communication unit; anddetermine a pose of the tracked object further based on the movement information.34.The apparatus of claim 33, wherein the movement information comprises data regarding acceleration and / or rotation of the tracked object.35.The apparatus of claim 29, wherein the at least one processor is configured to store a historical pose of the tracked object and wherein the at least one processor is configured to determine a pose of the tracked object based on the historical pose.36.The apparatus of claim 29, wherein the at least one processor is further configured to obtain a hand pose and wherein the at least one processor is configured to determine a pose of the tracked object further based on the hand pose.37.The apparatus of claim 36, wherein the at least one processor is further configured to determine the hand pose based on the plurality of images.38.The apparatus of claim 35, wherein the at least one processor is configured to store a historical hand pose and wherein, to determine pose of the tracked object, the at least one processor is configured to determine the pose of the tracked object further based on the historical hand pose.39.The apparatus of claim 29, wherein the communication unit is configured send a signal indicative of a frame-capture rate of the camera to the tracked object.40.The apparatus of claim 29, further comprising an array of cameras including the camera.41.The apparatus of claim 29, wherein the at least one processor is configured to transmit, to the tracked object, via the communication unit, a signal indicative of a distance between the apparatus and the camera and the tracked object.42.The apparatus of claim 29, wherein the at least one processor is configured to transmit, to the tracked object, via the communication unit, a signal indicative of a pose of the tracked object.43.The apparatus of claim 29, wherein the apparatus comprise a head-mounted device.44.A system comprising the apparatus of claim 2 and the apparatus of claim 28.45.An apparatus enabling tracking of an object, the apparatus comprising:a body comprising a handle to be held in a hand of a user;a plurality of light sources arranged on the body; andat least one processor configured to control the plurality of light sources to enable an object-tracking system to determine a pose of the body based on images of the plurality of light sources.46.An apparatus for tracking an object, the apparatus comprising:a camera configured to capture a plurality of images of a tracked object;a communication unit configured to communicate with the tracked object; andat least one processor configured to determine a pose of the tracked object based on the plurality of images of the tracked object.47.A method for enabling tracking of an object, the method comprising: controlling a plurality of light sources to enable an object-tracking system to determine a pose of a body on which the plurality of light sources are arranged based on images of the plurality of light sources.48.A method for enabling tracking of an object, the method comprising: adaptively adjusting a pattern of a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources.49.A method for tracking an object, the method comprising:capturing a plurality of images of a tracked object;communicating with the tracked object; anddetermining a pose of the tracked object based on the plurality of images of the tracked object.50.A method for tracking an object, the method comprising:capturing a plurality of images of a tracked object;communicating with the tracked object; andtracking the tracked object based on the plurality of images of the tracked object.51.[Corrected under Rule 26, 07.07.2023]A method for enabling tracking of an object, the method comprising: controlling a plurality of light sources to enable an object-tracking system to track a body on which the plurality of light sources are arranged based on images of the plurality of light sources.52.A method comprising operations according to any of claim 1 to 46.53.A non-transitory computer-readable storage medium having stored thereon instructions that, when executed by at least one processor, cause the at least one processor to perform operations according to any of claim 1 to 46.54.An apparatus for enabling tracking of an object, the apparatus including one or more means for performing operations described herein.55.An apparatus for tracking an object, the apparatus including one or more means for performing operations described herein.

Citation Information

Patent Citations

  • Visual, depth and micro-vibration data extraction using unified imaging device

    CN110892450A

  • Systems and methods for object tracking using fused data

    CN116261706A

  • Identifying And Tracking Objects Via Lighting Patterns

    US20160307332A1