Method and controller for performing continuous controller calibration - Patents.com

The handheld controller uses a capacitive proximity sensor to dynamically calibrate touch-sensitive controls, addressing grip and environmental variations for precise gesture detection, enhancing user interaction in gaming and VR.

JP7628498B2Active Publication Date: 2025-02-10VALVE CORPORATION
View PDF 18 Cites 0 Cited by

Patent Information

Application Number
JP2021549743
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-02-28
Filing Date
2020-01-28
Publication Date
2025-02-10
Estimated Expiration
2040-01-28

AI Technical Summary

Technical Problem

Current handheld controllers lack the ability to accurately and dynamically calibrate touch-sensitive controls to accommodate varying user grips and environmental conditions, leading to inconsistent performance in detecting hand gestures and interactions.

Method used

The handheld controller employs a proximity sensor with capacitive pads that continuously monitor capacitance values to calibrate and normalize input data, adjusting for changes in grip and environmental factors by attenuating maximum and minimum capacitance values to ensure precise detection of finger positions and gestures.

Benefits of technology

This approach enables accurate and adaptive detection of hand gestures, improving user interaction in gaming and VR environments by compensating for variations in grip and environmental conditions, ensuring reliable control inputs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007628498000001
    Figure 0007628498000001
  • Figure 0007628498000002
    Figure 0007628498000002
  • Figure 0007628498000003
    Figure 0007628498000003
Patent Text Reader

Abstract

The method includes determining a range of values ​​for a proximity sensor. The method includes receiving proximity data from the proximity sensor. The method includes attenuating a limit associated with a maximum value. The method includes attenuating a limit associated with a minimum value. The method includes determining a range of values ​​detected by the proximity sensor. Further, the method includes determining an updated scale factor for the proximity sensor.
Need to check novelty before this filing date? Find Prior Art

Description

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This patent application claims priority to U.S. Patent Application No. 16 / 289,259, filed February 28, 2019, which is hereby incorporated by reference in its entirety. [Technical field]

[0002] [Background technology] Handheld controllers are used in a range of architectures, for example, to provide input to computing devices. For example, handheld controllers are utilized in the gaming industry to allow players to interact with personal computing devices running game applications, game consoles, game servers, etc. In some instances, handheld controllers may find use in virtual reality (VR) environments and may mimic natural interactions such as grabbing, throwing, squeezing, etc. Current handheld controllers offer a range of functionality, but further technological improvements may enhance the user experience. [Brief description of the drawings]

[0003] [Figure 1] 1 illustrates a controller with a hand holder in an open position according to an exemplary embodiment of the present disclosure.

[0004] [Diagram 2] 2 illustrates the controller of FIG. 1 in a user's open, palm-up hand, in accordance with an exemplary embodiment of the present disclosure.

[0005] [Diagram 3] 2 illustrates the controller of FIG. 1 in a user's closed hands, according to an exemplary embodiment of the present disclosure.

[0006] [Figure 4] 2 illustrates the controller of FIG. 1 in a user's closed, palm-down hand, in accordance with an exemplary embodiment of the present disclosure.

[0007] [Diagram 5] 1 illustrates a pair of controllers with hand holders in an open position according to an exemplary embodiment of the present disclosure.

[0008] [Figure 6] 2 illustrates a proximity sensor of the controller of FIG. 1 in accordance with an exemplary embodiment of the present disclosure.

[0009] [Figure 7] 2 illustrates an example process for configuring a proximity sensor of the controller of FIG. 1 according to an example embodiment of the present disclosure.

[0010] [Figure 8] 2 illustrates an example process for configuring a proximity sensor of the controller of FIG. 1 according to an example embodiment of the present disclosure.

[0011] [Figure 9] 2 illustrates an example process for configuring a proximity sensor of the controller of FIG. 1 according to an example embodiment of the present disclosure.

[0012] [Figure 10] 2 illustrates an example process for configuring a proximity sensor of the controller of FIG. 1 according to an example embodiment of the present disclosure.

[0013] [Figure 11] 2 shows an example chart illustrating configuring a proximity sensor of the controller of FIG. 1 according to an example embodiment of the present disclosure.

[0014] [Figure 12] 2 illustrates example components of the controller of FIG. 1 in accordance with an example embodiment of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0015] Described herein are, among other things, handheld controllers having touch-sensitive controls and / or methods for continuously calibrating touch-sensitive controls. In some instances, the handheld controllers described herein may control devices involved in video game play and the like (e.g., televisions, audio systems, personal computing devices, game consoles, etc.). The handheld controllers may include one or more controls, such as a joystick, a trackpad, a trackball, a button, or other controls operable by a user of the handheld controller. Additionally, the handheld controllers may include sensors configured to detect a presence, proximity, location, and / or gestures of a user. For example, the handheld controllers may include a proximity sensor configured to detect the proximity of one or more objects, such as a user's finger or a portion of a finger, to the handheld controller. However, the handheld controllers may include infrared sensors, sensors utilizing acoustic sound waves, and / or any other type of sensor configured to detect touch input at the handheld controller and / or the proximity of one or more objects to the handheld controller.

[0016] In some instances, the proximity sensor may include an array of proximity sensors or capacitive pads arranged in rows, columns, grids, and / or group(s). The capacitive pads may generate proximity data (e.g., capacitance values) corresponding to the proximity of a finger to the handheld controller. The handheld controller may continuously monitor the capacitance values ​​detected by the individual capacitive pads to correlate the capacitance values ​​to the touch or relative hover of the finger over the handheld controller. For example, the proximity data may indicate that one or more fingers contact (e.g., physically touch) the handheld controller and / or that one or more fingers hover over the handheld controller. The proximity data may also be used to determine the distance at which the finger hovers over or relative to the handheld controller. In other words, if a finger hovers over the handheld controller, the proximity data may indicate how far or positioned the finger is on (or from) the handheld controller. Using the range of capacitance values, the relative position of the finger (i.e., between fully extended and touching the handheld controller) can be determined.

[0017] In some instances, the capacitive pads may be associated with a particular finger (e.g., middle finger, ring finger, pinky finger, etc.) or a particular portion of a finger (e.g., fingertip) of the user. By arranging the capacitive pads in groups or associating particular capacitive pads with fingers, the handheld controller may map the capacitance values ​​to a particular finger (or portion of a finger) of the user.

[0018] The handheld controller may include one or more processors communicatively coupled to the proximity sensors to receive and / or analyze the proximity data. In instances where the proximity sensors include capacitive pads, the one or more processors may receive the proximity data (e.g., capacitance values) from the individual capacitive pads. The one or more processors, or other logic (e.g., software, hardware, firmware, etc.), may analyze the proximity data to determine a detected capacitance value and associate the capacitance value with the relative proximity of the finger to the handheld controller. In other words, the handheld controller may utilize the proximity data to determine the presence of the finger(s) and / or the location (or "position") of the finger(s). Additionally, the handheld controller may receive the proximity data from the individual capacitive pads and associate or group the proximity data with a particular finger of the user. Associating the proximity data with a particular finger may enable a game console, remote system, head mounted display, virtual reality environment, or other computing device and / or handheld controller to generate image data representative of the user's hand gestures.

[0019] As an example, the proximity data may indicate that a user is gripping a handheld controller with their middle and ring fingers, but not with his or her pinky. The proximity data may also indicate the relative proximity of the pinky to the handheld controller (i.e., how far the pinky is positioned from the handheld controller). By utilizing the proximity data and associating the proximity data with a particular finger of the user, the handheld controller (or another communicatively coupled device) may generate a display (or other information) representative of the finger position. For example, a game console may utilize a display that generates image data corresponding to a hand gesture indicative of a user holding an object with their middle and ring fingers, but not the pinky.

[0020] The handheld controller (or another communicatively coupled device) may continuously calibrate the proximity sensor to accommodate changing grips (e.g., different hand sizes, different finger sizes, etc.) and / or changing environmental conditions (e.g., humidity, temperature, etc.). For example, the handheld controller may continuously monitor proximity data to correlate capacitance values ​​with a user's finger position. As an example, the detected proximity data (e.g., capacitance values) may vary depending on the user's grip, such as how the user holds the handheld controller, what game the user plays, and / or the physical characteristics of the user's hand (e.g., finger length, finger width, etc.). In some instances, continuously calibrating the proximity sensor may include determining a range of capacitance values ​​detected by each capacitive pad.

[0021] The range of capacitance values ​​may include capacitance values ​​associated with a finger touching the handheld controller and a finger fully extended from the handheld controller. In some cases, these capacitance values ​​may correspond to a maximum capacitance value and a minimum capacitance value, respectively. Knowing the range of capacitance values ​​of the individual capacitive pads may allow subsequent capacitance values ​​to be normalized and then used to determine finger position. Individual capacitive pads of a proximity sensor may include maximum and minimum capacitance values ​​such that subsequent capacitance values ​​received from the individual capacitive pads may be normalized. That is, using the range of capacitance values, the handheld controller, or another communicatively coupled device, may continuously determine a scale factor and / or bias associated with the capacitive pad. The scale factor and / or bias may be used to normalize (or calibrate) the capacitance values ​​received at the individual capacitive pads and / or to normalize the capacitance values ​​received across the capacitive pads of the proximity sensor. In some cases, the bias, scale factor, and / or range of capacitance values ​​for individual capacitive pads may vary because the capacitive pads may produce different responses and / or different capacitance values.

[0022] As an example, the capacitance value detected at a capacitive pad may depend on the size and / or manufacturing conditions of the capacitive pad. Calculating a scale factor and / or knowing the bias of an individual capacitive pad allows the capacitance value to be normalized with capacitance values ​​received from other capacitive pads of the proximity sensor. Normalization and / or calibration of the capacitive pads relative to each other may accurately determine hand gestures performed by a user.

[0023] The capacitance values ​​detected by the capacitive pad of the proximity sensor may change throughout the gameplay experience, such as when the user's hands become moist (e.g., sweat). For example, the proximity data measured or detected by the capacitive pad may change, for example, as the user's hands become moist, as humidity in the environment increases, and / or as the user adjusts his or her grip. Thus, the range of capacitance values ​​detected by a given capacitive pad may change. The bias and scale factors may change accordingly. To accurately depict the user's hand gestures, the handheld controller may attenuate the limits associated with the maximum capacitance value and / or the limits associated with the minimum capacitance value. In some instances, based at least in part on the received capacitance value, the handheld controller may continuously attenuate the maximum capacitance value and / or the minimum capacitance value towards the detected capacitance value. In doing so, the range of capacitance values ​​may continuously change such that the range of capacitance values ​​corresponds to the capacitance values ​​detected by the proximity sensor. In some instances, if the handheld controller does not detect a capacitance value within a predetermined range of the maximum capacitance value for a threshold amount of time, a number of frames, or a number of counts, the maximum capacitance value may be attenuated. For example, the predetermined range of the maximum capacitance value may be one-quarter of the range of capacitance values ​​detected by the handheld controller (i.e., between the maximum capacitance value and the minimum capacitance value), and if the handheld controller does not detect a capacitance value within the predetermined range of the maximum capacitance value, the maximum capacitance value may be attenuated toward the detected capacitance value. In other words, if the capacitance value is not within the predetermined range of the maximum capacitance value, the maximum capacitance value may be attenuated toward the minimum capacitance value. In other examples, if the average capacitance value determined over a predetermined amount of time, a number of frames, or a number of counts is not within the predetermined range of the maximum capacitance value, the maximum capacitance value may be attenuated. As an example, if a finger becomes wet, the handheld controller may observe a decrease in the detected capacitance value.The maximum capacitance value may be decayed toward the minimum capacitance value to update or determine a new maximum capacitance value. When the maximum capacitance value is associated with an object (e.g., a finger) touching the handheld controller, by decaying the maximum capacitance value, the handheld controller may accurately determine the finger position. The decaying of the maximum capacitance value may also be used to determine an updated capacitance value range, an updated bias, and / or an updated scale factor for each capacitive pad of the proximity sensor.

[0024] The minimum capacitance value may be damped as well. That is, based at least in part on the received capacitance value, the handheld controller may continuously damp the minimum capacitance value toward the detected capacitance value such that the range of capacitance values ​​changes to correspond to the capacitance values ​​detected at the proximity sensor. For example, the minimum capacitance value may be damped if the handheld controller does not detect a capacitance value within a predetermined range of the minimum capacitance value for a threshold amount of time, some frames, or some counts. In some cases, the predetermined range of the minimum capacitance value may be one-quarter of the range of capacitance values ​​detected by the handheld controller, and the minimum capacitance value may be damped if the handheld controller does not detect a capacitance value within the predetermined range of the minimum capacitance value. In other cases, the minimum capacitance value may be damped if the average of the detected capacitance values ​​over the previous amount of time, some frames, or some counts is not within the predetermined range of the minimum capacitance value. Because the minimum capacitance value is associated with an object (e.g., a finger) being fully extended from the handheld controller, by damping the minimum capacitance value, the handheld controller (or another communicatively coupled device) can accurately determine finger position. Damping the minimum capacitance value can also be used to determine updated capacitance value ranges, updated biases, and / or updated scale factors for individual capacitive pads of the proximity sensor.

[0025] In some cases, the attenuation of the amount of maximum capacitance value and / or the amount of minimum capacitance value may be based on one or more variable attenuation rates, the range of capacitance values ​​detected over a predetermined number of past frames, and / or the range of capacitance values ​​between the maximum and minimum capacitance values. For example, the amount of attenuation may be based on a percentage of the difference between the detected capacitance value and the range of capacitance values ​​detected over a predetermined number of past frames, or the percentage of the difference between the detected capacitance value and the range of capacitance values ​​between the maximum and minimum capacitance values. In other cases, the attenuation, or the variable attenuation rate, may be optimized to accurately associate finger proximity with the maximum and minimum capacitance values, respectively. In some cases, the attenuation of the maximum and minimum capacitance values ​​may be limited such that the minimum and maximum capacitance values ​​are separated by a threshold amount.

[0026] The frequency at which the maximum or minimum capacitance value decays may depend on the volatility and / or variability of the measured capacitance values. For example, if there is a large variation between the capacitance values ​​detected over a predetermined number of past frames, the maximum or minimum capacitance value may decay at a faster frequency compared to when there is a small variation between the capacitance values ​​detected over a predetermined number of past frames. For example, if a first user has a maximum capacitance value and a minimum capacitance value associated with his or her grip and a second user manipulates the handheld controller, there may be a large variation between the maximum and / or minimum capacitance values ​​of the first and second users. Now, due to this difference (or large variability), or if the difference is greater than a threshold, the decay rate may take this into account and cause the maximum and / or minimum capacitance values ​​to decay at a faster frequency. Additionally or alternatively, the frequency at which the maximum or minimum capacitance value decays may depend on some capacitance values ​​received by the handheld controller. For example, if a user rapidly taps their finger on the handheld controller, the handheld controller may cause the maximum capacitance value (or limit) and / or the minimum capacitance value (or limit) to decay or converge more frequently to the detected capacitance value if the user does not rapidly tap the handheld controller.

[0027] Thus, decaying and continuously calibrating the capacitive pad of the proximity sensor throughout the gameplay experience may adjust to the user's grip and adapt to environmental factors to accurately determine finger position. In other words, failing to decay a maximum capacitance value, or a limit associated with a maximum capacitance value, may result in a received capacitance value not being accurately associated with a finger touching the handheld controller. That is, the handheld controller may not compare the capacitance value to an updated maximum capacitance value associated with a finger touching the handheld controller. Similarly, failing to decay a minimum capacitance value, or a limit associated with a minimum capacitance value, may result in a received capacitance value not being accurately associated with a finger fully extended from the handheld controller. That is, the handheld controller may not compare the capacitance value to an updated minimum capacitance value associated with a finger fully extended from the handheld controller. Additionally, although the above discussion is with respect to a particular capacitive pad, the handheld controller may simultaneously determine the range of capacitance values, biases, scale factors, attenuation, and / or attenuation rates for each capacitive pad of the proximity sensor for each frame displayed in the VR environment.

[0028] As a result of the decaying of the maximum and / or minimum capacitance values, in some instances the handheld controller may detect capacitance values ​​that are greater or less than the maximum and / or minimum capacitance values, respectively. In other words, by continuously updating the maximum and / or minimum capacitance values, the handheld controller may receive capacitance values ​​that are greater than the determined maximum capacitance value and / or receive capacitance values ​​that are less than the determined minimum capacitance value. As an example, when the user's finger becomes less dry or when a different user operates the handheld controller, the handheld controller may detect an increased capacitance value, which may "overshoot" or exceed the maximum and / or minimum capacitance values. In such cases, the maximum and / or minimum capacitance values ​​may extend to make up for this difference, based at least in part on an average of the capacitance values ​​detected over the past several frames. Additionally, the frequency at which the maximum and / or minimum capacitance values ​​are updated may be based on a growth constant and the average capacitance value detected over the past several frames. In doing so, the handheld controller (or another communicatively coupled device) may determine updated maximum and / or minimum capacitance values, updated biases, updated scale factors, etc.

[0029] Additionally, in some cases, the handheld controller may also sense, detect, or measure an amount of force associated with a touch input on the handheld controller via a pressure sensor. For example, when a user's finger presses against the handheld controller, a portion of the controller, such as a cover disposed over the pressure sensor, may deflect to contact the pressure sensor. The pressure sensor may be coupled to one or more processors such that the touch input may cause force data to be provided to the one or more processors. In some cases, the pressure sensor may include a force-sensing resistive (FSR) sensor, a piezoelectric sensor, a load cell, a strain gauge, a capacitive force sensor that measures a capacitive force measurement, or any other type of pressure sensor. Additionally, in some cases, the proximity data and the force data may be interpreted together and associated with a predetermined command or hand gesture (e.g., squeezing).

[0030] In light of the above, the handheld controller may dynamically calibrate the proximity sensor to accommodate, for example, changes in a user's grip and / or environmental conditions. In doing so, the handheld controller may attenuate capacitance values ​​associated with a finger touching the handheld controller (e.g., a maximum capacitance value) and when the finger is fully extended from the handheld controller (e.g., a minimum capacitance value). Upon receiving subsequent proximity data, the handheld controller may determine the relative location and / or proximity of the finger to the handheld controller by determining a range of capacitance values, biases, scale factors, etc. In other words, to accurately depict a user's hand gestures in gameplay (e.g., a VR environment), the handheld controller (or a communicatively coupled device) may continuously calibrate the proximity sensor.

[0031] 1 illustrates a front view of an example controller 100 that may include one or more touch-sensitive controls. In some instances, the controller 100 may be utilized by an electronic system, such as a VR video game system, a robot, a weapon, or a medical device.

[0032] As shown, the controller 100 may include a controller body 110 having a handle 112 and a hand holder 120. The controller body 110 may include a head disposed between the handle 112 and a distal end 111 of the controller 100, which may include one or more thumb-operated controls 114, 115, 116. For example, the thumb-operated controls may include tilt buttons, and / or other buttons, knobs, wheels, joysticks, or trackballs that are conveniently operated by a user's thumb during normal operation when the controller 100 is held in the user's hand. In some instances, the handle 112 may include a substantially cylindrical tubular housing. In this context, however, a substantially cylindrical shape need not have a constant diameter or a circular cross-section.

[0033] The handle 112 may include a proximity sensor having a plurality of proximity sensors or capacitive pads spatially distributed at least partially or completely around an exterior surface of the handle 112. For example, the capacitive pads may be spatially distributed and / or embedded beneath the exterior surface of the handle 112. The capacitive pads may respond to a user touching, gripping, or grabbing the handle 112 to identify the presence, location, proximity, and / or gesture of one or more fingers of the user. For example, the capacitive pads may respond to one or more fingers hovering above the handle 112 and generate proximity data (e.g., capacitance values) indicative of the proximity of the fingers above the handle 112. In some instances, the proximity data may indicate the presence, location, and / or proximity of the fingers relative to the controller 100. The proximity data may be utilized by the controller 100 and / or other communicatively coupled devices to generate hand gestures. To detect the proximity of the fingers, the exterior surface of the handle 112 may include an electrically insulating material.

[0034] A hand retainer 120 may be coupled to the controller 100 to bias the palm of a user's hand against an outer surface of the handle 112. In FIG. 1, the hand retainer 120 is shown in an open position. The hand retainer 120 may be optionally biased in the open position by a curved elastic member 122 to facilitate insertion of a hand between the hand retainer 120 and the controller body 110. For example, the curved elastic member 122 may include a flexible metal strip or a plastic material, such as elastically deflecting nylon.

[0035] A fabric material 124 (e.g., a neoprene sheath) may partially or completely cover the curved elastic members 122 to cushion or increase the comfort of the user. Alternatively, the cushion or fabric material 124 may be attached only to the side of the curved elastic members 122 that faces the user's hand.

[0036] The hand retainer 120 may be length adjustable, for example, by including a drawcord 126 that is tightened by a spring-loaded chock 128. The drawcord 126 may optionally have extra length for use as a neck lanyard. In some examples, a cushion or fabric material 124 may be attached to the drawcord 126. Additionally, the curved elastic member 122 may be preloaded by the tension of the tightened drawcord 126, and in such an embodiment, the tension that the curved elastic member 122 imparts to the hand retainer 120 (to bias it to an open position) may cause the hand retainer 120 to automatically open when the drawcord 126 is not tightened. However, alternative conventional approaches for adjusting the length of the hand retainer 120 may be used, such as stops, elastic bands (which temporarily stretch when the hand is inserted to apply elastic tension against the back of the hand), hook and loop strap attachments that allow for length adjustment, etc.

[0037] The hand holder 120 may be disposed between the handle 112 and the tracking member 130 and may contact the back of the user's hand. The tracking member 130 may be secured to the controller body 110 and may optionally include two noses 132, 134, where each nose may protrude from a corresponding one of two opposing distal ends of the tracking member 130. In some cases, the tracking member 130 may include an arc having a substantially arc-like shape. In some cases, the tracking member 130 may include a tracking transducer disposed therein, for example, at least one tracking transducer disposed within each protruding nose 132, 134. The controller body 110 may include additional tracking transducers, such as a tracking transducer disposed adjacent the distal end 111.

[0038] The controller 100 may include a rechargeable battery disposed within the controller body 110. The hand holder 120 may include a conductive charging wire electrically coupled to the rechargeable battery. The controller 100 may also include a radio frequency (RF) transmitter for communicating with the rest of the electronic system (e.g., a game console). The rechargeable battery may power the RF transmitter, and the transmitted RF may respond to the thumb operated controls 114, 115, 116, proximity sensors (e.g., capacitive pads) in the handle 112, and / or tracking sensors in the tracking member 130.

[0039] In some cases, the controller body 110 may comprise a single piece of injection molded plastic or any other material that is rigid enough to transfer force from a user's finger to the proximity sensor and thin enough to allow capacitive coupling between the user's finger and the proximity sensor. Alternatively, the controller body 110 and the tracking member 130 may be manufactured separately and then assembled together.

[0040] FIG. 2 illustrates a front view of the controller 100, showing the controller 100 in operation with a user's left hand inserted therein but not gripping the controller body 110. In FIG. 2, the hand retainer 120 is clamped on the user's hand to physically bias the user's palm against the exterior surface of the handle 112. Here, the hand retainer 120, when closed, may hold the controller 100 in the user's hand even when the hand is not gripping the controller body 110. As shown, when the hand retainer 120 is tightly closed around the user's hand, the hand retainer 120 may prevent the controller 100 from falling out of the user's hand. Thus, in some embodiments, the hand retainer 120 may allow the user to "let go" of the controller 100 without the controller 100 actually being separated from the hand, thrown, and / or dropped. For example, if a user's release and return of gripping the handle 112 of the controller body 110 is sensed, such release or gripping may be incorporated within the game to display an object being thrown or gripped (e.g., in an in-VR environment). The hand grip 120 may allow such functions to be accomplished repeatedly and safely. Additionally, the hand grip 120 may also prevent the user's fingers from translating excessively against the proximity sensor to more reliably sense finger movement, proximity, and / or placement on the handle 112.

[0041] 3 and 4 illustrate controller 100 during operation when hand holder 120 is clamped while a user's hand grasps controller body 110 to hold controller 100 in the user's hand. As shown in FIGURES 3 and 4, the user's thumbs may operate one or more thumb operated controls 114, 115, 116.

[0042] 5 illustrates that in certain embodiments, controller 100 may be the left controller in a pair of controllers that includes a similar right controller 500. In certain embodiments, controllers 100 and 500 may track the movements and grips of a user's two hands (together), for example, to enhance the VR experience.

[0043] 6 illustrates a proximity sensor 600 having a number of capacitive pads 602 configured to detect the proximity of one or more objects (e.g., fingers) to the controller 100. However, in some instances, the proximity sensor 600 may additionally or alternatively include a different type of sensor other than the capacitive pads 602 to detect the proximity of one or more objects to the controller 100, such as an infrared or acoustic sensor.

[0044] The capacitive pads 602 may be mounted, attached, or otherwise coupled to a flexible printed circuit assembly (FPCA) 604. The FPCA 604 may include a connector 606 for connecting to a printed circuit board (PCB) of the controller 100, which includes one or more processors. The capacitive pads 602 may communicatively connect to the connector 606 via traces 608 disposed on the FPCA 604 to provide proximity data (e.g., capacitance values) to the one or more processors. The proximity data may be indicative of the proximity of a finger to the controller 100, such as the handle 112. Thus, the proximity sensor 600 may measure or receive the capacitance of individual capacitive pads 602, whose capacitance values ​​may be associated with the proximity of a finger to the controller 100.

[0045] In some cases, the proximity sensor 600 may be coupled to an inner surface within the controller body 110, such as a structure mounted within or beneath the handle 112 of the controller body 110. In doing so, the proximity sensor 600 may be positioned beneath the outer surface of the handle 112 to detect the proximity of a finger to the handle 112. When coupled to the controller 100, the proximity sensor 600 may angularly traverse around a circumference or portion of the handle 112. For example, the FPCA 604 may be coupled (e.g., glued) to an inner surface of the controller body 110. In some embodiments, the proximity sensor 600 may extend at least 100 degrees, but not more than 170 degrees, around the circumference of the handle 112. Additionally or alternatively, the proximity sensor 600 may be coupled to an outer surface of the controller 110, such as the outer surface of the handle 112.

[0046] The capacitive pads 602 may be spaced apart from one another to detect the proximity of different fingers or different portions of a finger (e.g., fingertips). The capacitive pads 602 may be arranged in rows, columns, grids, sets, subsets, or groups 610. For example, as shown in FIG. 6, the proximity sensor 600 may include six groups 610 of capacitive pads 602, where the groups 610 may extend horizontally throughout the FPCA 604. However, in some embodiments, the proximity sensor 600 may include more or less than six groups 610. Additionally, as shown in FIG. 6, the capacitive pads 602 may not necessarily be of equal size or have substantially equal spacing between them. However, in some embodiments, the capacitive pads 602 may be similarly shaped and / or include a substantially equally spaced grid between them.

[0047] Each group 610 of capacitive pads 602 may correspond to a particular finger of the user (e.g., index finger, middle finger, ring finger, pinky finger). Additionally or alternatively, multiple groups 610 of capacitive pads 602 or capacitive pads 602 from multiple groups 610 may correspond to a single finger of the user. For example, two or more groups 610 may correspond to a finger of the user (e.g., middle finger). By arranging the capacitive pads 602 into groups 610 or assigning a particular capacitive pad 602 to a particular group 610, the controller 100 (or another communicatively coupled device) may utilize proximity data to generate a user's hand gesture. For example, when a user grips the controller 100 with a particular finger and / or hovers a particular finger over the controller 100, a voltage resulting in an electrostatic field is applied to the capacitive pads 602. When a conductor such as a finger touches or approaches the capacitive pads 602, a change in capacitance may occur. Capacitance may be sensed by connecting an RC oscillator circuit to the proximity sensor 600 (via connector 606) and noting that the time constant (and therefore the period and frequency of oscillation) changes with capacitance. In this way, the controller 100 may detect changes in capacitance as a user releases a finger from the controller 100, grips the controller 100 with a particular finger, or moves closer to the controller 100. The capacitance values ​​of the capacitive pads 602 are used to determine the location of the conductor as well as the proximity of the conductor to the capacitive pads 602. When the fingers act as conductors, those capacitive pads 602 under the handle 112 may measure a capacitance value.

[0048] In some cases, the user's grip may change or other factors may affect the value of the proximity data. For example, throughout the gameplay experience, the user's hands may become sweaty and clammy. Additionally or alternatively, the humidity of the environment in which the game is being played may change. These and other factors may affect the amount of capacitance detected by the capacitive pad 602. To accurately sense the finger position, the controller 100 may continuously calibrate the proximity sensor 600 based on the detected capacitance values. For example, in a first case, the capacitive pad 602 may measure a first capacitance value when the finger is fully extended from the controller 100. In a second case, the capacitive pad 602 may measure a second capacitance value when the user's finger is fully extended from the controller 100 as the user plays the game. However, to accurately detect the proximity of a finger to the controller 100 (e.g., the handle 112), the controller 100 (or another communicatively coupled device) may calibrate the capacitive pads 602. In such cases, calibrating the capacitive pads 602 (or the proximity sensor 600) may include determining an updated range of capacitance values ​​detected at each capacitive pad 602, or attenuated capacitance values ​​associated with a touch on the controller 100 and / or a finger being fully extended from the controller 100. Therein, by knowing the updated range, the detected capacitance values ​​may be normalized.

[0049] In some cases, the capacitive pads 602 may be remapped to correspond to different fingers. For example, depending on the user's grip or the size of the user's hand, a particular row or rows of the proximity sensor 600 may correspond to a particular finger of the user (e.g., middle finger), while in other cases, it may correspond to a different finger of the user (e.g., ring finger). Through receiving the proximity data, the capacitive pads 602 may be remapped to correspond to different fingers of the user. In other words, the capacitive pads 602 may be designated to correspond to different fingers of the user, depending on the particular user's grip on the handle 112, in some cases. Thus, the controller 100 may include different controller configurations (i.e., a first controller configuration, a second controller configuration, and / or a third controller configuration) to associate different capacitive pads 602 with different fingers. This dynamic adaptation of the capacitive pads 602 to particular fingers may enable precise gestures to be generated in a VR environment. Additionally, although FIG. 6 illustrates a proximity sensor 600 including certain capacitive pads 602 and / or certain groups 610, in some instances, the proximity sensor 600 may include more or fewer capacitive pads 602 than are illustrated in FIG. 6.

[0050] Further, in some instances, one or more processors of the controller 100 may include algorithms and / or machine learning techniques that embody anatomically possible finger movements to better use the proximity data to detect opening, pointing, or other movements of the user's fingers relative to the controller 100 or relative to each other. In this manner, the controller 100 and / or the user's finger movements may help control a VR gaming system, a defense system, a medical system, an industrial robot or machine, or another device. Thus, in a VR application (e.g., gaming, training, etc.), the proximity data may be utilized to render the release of an object based on a sensed release of the user's fingers from the exterior surface of the handle 112. Additionally or alternatively, one or more processors of a communicatively coupled computing device (e.g., a host computing device, a game console, etc.) with which the controller 100 is interacting may use the proximity data to detect the gesture(s).

[0051] 7-10 illustrate various processes as a collection of blocks in a logical flow graph, which represent a sequence of operations that can be implemented in hardware, software, or a combination thereof. In the context of software, the blocks represent computer-executable instructions that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform particular functions or implement particular abstract data types. The order in which the operations are described is not intended to be construed as a limitation, and any some of the described blocks may be combined in any order and / or in parallel to implement a process.

[0052] 7 illustrates a process 700 for calibrating the proximity sensor 600. In some instances, the process 700 may be performed by the controller 100.

[0053] At 702, logic of the controller 100 may receive proximity data from the proximity sensor 600. For example, an object (e.g., a finger, thumb, etc.) may touch the controller 100 or come within proximity of the controller 100 (e.g., hovering adjacent to the handle 112 of the controller 100). The proximity data may indicate a capacitance detected or measured by the capacitive pad 602 of the proximity sensor 600. For example, if a finger is touching the controller 100, the capacitance value may be large compared to a finger hovering above the controller 100. In this sense, the detected capacitance value may indicate or represent the proximity of the finger to the controller 100.

[0054] In some instances, logic in the controller 100 may convert the capacitance values ​​to digitized values. Additionally, the proximity data received at 702 may represent raw data that has not been calibrated and / or normalized with the proximity data received across the capacitive pads 602 of the proximity sensor 600. That is, the proximity data received at 702 may represent raw data in the sense that, for a particular capacitive pad 602, the capacitive pad 602 may detect capacitance values ​​over a range of capacitance values.

[0055] At 704, logic of the controller 100 may normalize the proximity data. For example, each capacitive pad 602 may generate unique capacitance values ​​depending on manufacturing conditions of the capacitive pad 602, size of the capacitive pad 602, etc. Normalizing the proximity data may help standardize the proximity data received at the capacitive pad 602. In some cases, normalizing the proximity data may include utilizing a trained model to determine maximum and minimum capacitance values ​​measured at the capacitive pad 602. For example, the range of capacitance values ​​detected at the capacitive pad 602 may be arbitrary when compared to the range of capacitance values ​​detected at different capacitive pads 602. The trained model may include a representative sample of capacitance values, or a range of capacitance values, detected historically across the capacitive pads 602 of the proximity sensor 600. As an example, capacitance values ​​received from similar capacitive pads 602 of different controllers (e.g., controller 100) may be used to normalize the capacitance values.

[0056] At 706, logic of the controller 100 may calibrate the proximity sensor 600. In some instances, calibrating the proximity sensor 600 may include calculating a bias, a range of capacitance values, and / or a scale factor for capacitance values ​​detected at the capacitive pads 602. In other words, calibrating the proximity sensor 600 may involve determining a range, a bias, and / or a scale factor for detected capacitance values ​​for each capacitive pad 602. Thus, calibrating the proximity sensor may allow subsequent capacitance values ​​received to be normalized. As illustrated by the sub-blocks of FIG. 7, the process 700 may include more detailed operations for calibrating the proximity sensor 600. For example, calibrating the proximity sensor 600 may include sub-blocks 708 and 710.

[0057] As indicated by subblock 708, calibrating the proximity sensor 600 may include distinct gesture recognition that may represent (or correspond to) distinct gestures performed by a user. For example, if all, a portion, or a threshold percentage of the capacitive pads 602 sense a sudden drop in capacitance value, the controller 100 may associate this drop with the user releasing their hand or a particular finger from the controller 100. That is, because a particular capacitive pad 602 may be associated with a particular finger of a user, the controller 100 may detect a decrease in capacitance and associate this decrease in capacitance value with the user releasing their hand from the controller 100.

[0058] The capacitance value received when the user suddenly releases their finger from the controller 100 may correspond to a minimum capacitance value in a range of capacitance values ​​detected for the particular capacitive pad 602 (e.g., the capacitance value represents when the finger is fully extended from the controller 100). This minimum capacitance value may then be used in future instances to determine when the finger is fully extended from the controller 100. In some instances, the capacitance value received prior to this sudden decrease in capacitance value may correspond to a maximum capacitance value in a range of capacitance values ​​detected for the particular capacitive pad 602 (e.g., the capacitance value represents when the finger is touching the controller 100). This maximum capacitance value may then be used in future instances to determine when the finger is touching the controller 100.

[0059] Utilizing the minimum and maximum capacitance values, logic in the controller 100 can determine a range of capacitance values ​​detected at the capacitive pad 602. This process can occur for each capacitive pad 602 of the proximity sensor 600. Thus, as the controller 100 receives subsequent proximity data, the controller 100 can determine the relative position of the user's finger by comparing the detected capacitance value to the range of capacitance values ​​for the particular capacitive pad 602.

[0060] As indicated by subblock 710, calibrating the proximity sensor 600 may also include continuous minimum and / or maximum capacitance value detection. For example, the controller 100 may continuously receive proximity data from the proximity sensor 600, so that the controller 100 may monitor the proximity data (e.g., capacitance values) to recalibrate (e.g., dampen) the minimum and / or maximum capacitance values. As discussed herein, through repeatedly receiving proximity data from the proximity sensor 600 (e.g., as a user interacts with the controller 100), the proximity data may indicate a capacitance value measured by the capacitive pads 602. Over time, the capacitance values ​​may be utilized to update and / or modify the range of capacitance values ​​detected by the individual capacitive pads 602. As an example, the capacitance values ​​detected by the capacitive pads 602 may change based on the user's skin characteristics and / or the environmental conditions in which the controller 100 resides. Thus, at 710, for each capacitive pad 602 of the proximity sensor 600, the controller 100 may analyze the proximity data to potentially update a minimum capacitance value, a maximum capacitance value, and / or a range of capacitance values ​​for the capacitive pad 602.

[0061] For example, when the controller 100 receives a capacitance value from the capacitive pad 602, it may compare the capacitance value to the maximum capacitance value and / or the minimum capacitance value to determine if the capacitance value is greater than or less than the maximum capacitance value and / or the minimum capacitance value, respectively. If so, the controller 100 may update the maximum capacitance value and / or the minimum capacitance value, respectively. Additionally, the controller 100 may utilize the capacitance value to attenuate the maximum capacitance value and / or the minimum capacitance value toward the received capacitance value.

[0062] From 706, process 700 may loop to 702 where process 700 may receive additional proximity data from proximity sensor 600. Through repeatedly receiving proximity data, process 700 may continually determine and / or update the range of capacitance values ​​detected by capacitive pad 602. Additional details of utilizing proximity data to continually calibrate proximity sensor 600 are discussed herein with respect to FIG.

[0063] At 712, logic of the controller 100 may generate calibrated proximity data based at least in part on calibrating the proximity sensor 600 and / or individual capacitive pads 602. For example, utilizing the range, bias, and / or scale factor of capacitance values ​​detected at the capacitive pads 602, the controller 100 may calculate a calibrated (or normalized) capacitance value. The calibrated proximity data may normalize the proximity data received at a particular capacitive pad 602 and / or across capacitive pads 602 of the proximity sensor 600.

[0064] At 714, logic of the controller 100 may sum the proximity data for a group of capacitive pads 602. As described above, the capacitive pads 602 may be arranged into groups 610 associated with respective fingers of a user. In some cases, a group 610 may include more than one capacitive pad 602, and capacitance values ​​for the capacitive pads 602 of a group of capacitive pads 602 may be summed to indicate a user's finger position, where the summed capacitance value may indicate the finger's proximity to the controller 100. In some cases, the summed capacitance value for a particular group 610 may include a finger value on a scale of [0,1], where the finger value may indicate the finger's proximity to the controller 100. In this sense, using the detected capacitance values ​​from the individual capacitive pads 602, the process 700 may determine the user's finger position relative to the controller 100.

[0065] Additionally, the capacitance values ​​may be summed using a set of weights applied to individual capacitive pads 602 within a group of capacitive pads 602. For example, if four capacitive pads 602 are associated with a user's middle finger, equal weights may be assigned to the four capacitive pads 602. The capacitance values ​​received from these capacitive pads 602 may have a weight of one-fourth that is used when determining the finger position. However, in some cases, if the capacitance value of a capacitive pad 602 is unreliable (e.g., contains a large amount of noise), the particular capacitance value from the capacitive pad 602 may be ignored in the weighted sum. The weight of the capacitive pad 602 may be ignored such that the remaining capacitive pads have a weight of one-third. Therein, the capacitance values ​​are summed and divided by the sum of the weights of the capacitive pads 602 being used.

[0066] At 716, logic of the controller 100 may transmit the proximity data and / or the finger value. For example, after determining calibrated proximity data for a particular finger or group of capacitive pads 602, the controller 100 may transmit an indication of the proximity data and / or finger value (position) to one or more computing devices. In some instances, the one or more computing devices may utilize the proximity data and / or finger value to generate image data corresponding to a user's hand gesture on the controller 100.

[0067] In some cases, the process 700 may be performed for each capacitive pad 602, with the proximity sensor 600 generating proximity data each time (e.g., count, frame). For example, the controller 100 may control or operate the VR environment, so the proximity sensor 600 may generate proximity data for each frame displayed within the VR environment. The proximity data may represent respective capacitance values ​​detected at the capacitive pads 602, and the process 700 may be performed for capacitance values ​​measured at the individual capacitive pads 602. For example, the process 700 may be performed for a first capacitance value detected at a first capacitive pad 602 and a second capacitance value detected at a second capacitive pad 602. In some cases, the process 700 for the first capacitive pad 602 and the second capacitive pad 602 may be performed in parallel and for any number of capacitive pads 602. Additionally, although some or all of process 700 is described as being performed by controller 100, in some cases one or more communicatively coupled devices may perform all or a portion of the blocks of process 700. For example, a computing device may include increased processing capabilities for calibrating proximity sensor 600. In such a case, the computing device may transmit instructions to calibrate proximity sensor 600.

[0068] 8 illustrates an example process 800 for analyzing proximity data received from the proximity sensor 600 to calibrate the proximity sensor 600. In some instances, the process 800 may be performed by the controller 100, however, one or more communicatively coupled devices may perform all or a portion of the process 800.

[0069] At 802, logic of the controller 100 may receive capacitance values ​​(e.g., proximity data) from the proximity sensor 600. In some instances, the controller 100 may receive capacitance values ​​from individual capacitive pads 602 of the proximity sensor 600 and with each frame displayed within the VR environment. For example, the capacitive pads 602 of the proximity sensor 600 may generate a capacitance value based at least in part on detecting an object (e.g., a finger) in proximity to the controller 100. As indicated above, as the distance between the object and the capacitive pads 602 decreases, the measured capacitance value may increase.

[0070] At 804, the logic of the controller 100 may normalize the capacitance value using the range of capacitance values ​​for the capacitive pad 602, the scale factor associated with the capacitive pad 602, and the bias associated with the capacitive pad 602.

[0071] At 806, the controller 100 may dampen the limit or level associated with the maximum capacitance value to gradually assign or adjust the maximum capacitance value. Damping the maximum capacitance value may adjust to changing environmental conditions and / or characteristics of the user's finger(s). For example, during the course of a gameplay experience, the user's hands may become moist (e.g., sweat), the user may adjust his or her grip on the controller 100, and / or environmental conditions may change (e.g., humidity, temperature, etc.). In some instances, these factors may affect the capacitance value detected by the proximity sensor 600, and the range of capacitance values ​​may be updated and / or the capacitance value associated with a finger touching the controller 100 may be updated. In other words, the capacitance value associated with a finger touching the controller 100 may change because the range of capacitance values ​​detected by the controller 100 may change. Thus, to accurately depict a user's finger position (or hand gesture) (i.e., when a finger is touching the controller 100), the maximum capacitance value may be attenuated. To illustrate, at a first instance in time, a first capacitance value may represent or correspond to a finger touching the controller 100, and at a second instance in time, a second capacitance value may represent or correspond to a finger touching the controller 100. In some instances, the second capacitance value may be less than the first capacitance value. However, to accurately depict a user's hand gesture at a second instance, a capacitance value associated with a finger touching the controller 100 may be updated. That is, the second capacitance value represents a user touching the controller 100, but if the maximum capacitance value is not attenuated, the second capacitance value is not associated with the maximum capacitance value representing when a finger is touching the controller 100. In doing so, the image data would not represent a user holding an object. Through damping the maximum capacitance value, the controller 100 may dynamically adjust the capacitance value associated with a finger gripping the controller 100 .

[0072] In some cases, the damping of the maximum capacitance value may be based at least in part on receiving a threshold of some capacitance value that is not within a predetermined range of the maximum capacitance value. Additionally or alternatively, the damping of the maximum capacitance value may occur if a threshold amount of time, some frames, or some counts pass without receiving a capacitance value within a predetermined range of the maximum capacitance value and / or a capacitance value that varies (e.g., variability) by a threshold amount. In other cases, the maximum capacitance value may be damped if an average of the detected capacitance values ​​over a previous amount of time, some frames, or some counts is not within a predetermined range of the maximum capacitance value. Additionally, although the damping of the maximum capacitance value has been described with respect to the capacitance value not being within a predetermined range of the maximum capacitance value, in some cases the predetermined range may be with respect to the minimum capacitance value.

[0073] Thus, the maximum capacitance value may be continuously decayed such that the range of capacitance values ​​is continuously updated. The amount of decay, or the amount by which the maximum capacitance value decays, may be based on the range of capacitance values ​​detected over the previous several frames (e.g., 20 frames, 50 frames, 100 frames, etc.), the range of capacitance values ​​between the maximum capacitance value and the minimum capacitance value, the difference between the maximum capacitance value and the average capacitance value detected over the previous several counts or frames (e.g., 20 frames, 50 frames, 100 frames, etc.), and / or a percentage of the difference between the maximum capacitance value and the average capacitance value. In some instances, the decay may be determined by calculating (1) the range of capacitance values ​​detected over the previous several frames, (2) the range of capacitance values ​​between the maximum capacitance value, the minimum capacitance value, and (3) a decay variable.

[0074] The decay variable for the maximum capacitance value may be a percentage of the variation of the capacitance value between the maximum capacitance value and the minimum capacitance value detected over the previous several frames. As an example, the decay variable for the maximum capacitance value may be 10 percent of the range of capacitance values ​​between the maximum capacitance value and the minimum capacitance value for each frame. In other words, for every frame, the decay variable may be calculated by multiplying the range of capacitance values ​​between the maximum capacitance value and the minimum capacitance value by 10 percent. This decay variable may then be used to determine an updated maximum capacitance value. In some cases, the maximum capacitance value may decay approximately or substantially about 13 percent of the range between the maximum capacitance value and the minimum capacitance value.

[0075] In some cases, the amount by which the maximum capacitance value decays may be limited so that the maximum capacitance value does not decay by more than 50% of the range of capacitance values ​​between the maximum capacitance value and the minimum capacitance value. In this sense, the maximum capacitance value may be limited to decaying by more than half of the range of capacitance values ​​between the maximum capacitance value and the minimum capacitance value.

[0076] In some cases, the amount that the maximum capacitance value decays may be proportional to the range of capacitance values ​​between the maximum capacitance value and the minimum capacitance value. Additionally, the maximum capacitance value may be limited to decaying within a certain threshold of the minimum capacitance value. For example, to reduce the impact of noise in the capacitance value, the maximum capacitance value may not decay within a threshold amount of the minimum capacitance value. In other words, the maximum capacitance value and the minimum capacitance value may be separated by a threshold range to reduce the impact of noise.

[0077] In some cases, the frequency at which the maximum capacitance value decays may depend on the variability of the measured capacitance values. For example, if there is a large variation between the detected capacitance values ​​over the past few frames, the maximum capacitance value may decay more frequently compared to if there is a small variation between the detected capacitance values ​​over the past few frames. Additionally or alternatively, the frequency at which the maximum capacitance value decays may depend on the number of capacitance values ​​received. For example, if a user rapidly taps his or her finger on the controller 100 and the controller 100 receives several capacitance values, the controller 100 may decay the maximum capacitance value more frequently.

[0078] The damping of the maximum capacitance value may be used to determine an updated maximum capacitance value for the capacitive pad 602. Additionally, the updated maximum capacitance value may also be used to determine an updated capacitance value range, an updated bias, and / or an updated scale factor for each capacitive pad 602 of the proximity sensor 600.

[0079] At 808, the logic of the controller 100 may decay the limit or level associated with the minimum capacitance value to gradually assign or adjust the minimum capacitance value. In some instances, the minimum capacitance value may be decayed continuously such that the range of capacitance values ​​is continuously updated. That is, as discussed above with respect to decaying the maximum capacitance value, during the course of a gameplay experience, certain conditions may affect the capacitance value detected by the proximity sensor 600. For example, the capacitance value associated with a finger being fully extended from the controller 100 may change. As an example, at a first instance in time, the first capacitance value may represent or correspond to a finger being fully extended from the controller 100, and at a second instance in time, the second capacitance value may represent or correspond to a finger being fully extended from the controller 100. In some instances, the second capacitance value may be less than the first capacitance value. However, to accurately depict the user's hand gesture at the second instance, the capacitance value associated with the finger being fully extended from the controller 100 may be updated. That is, a second capacitance value may represent a user fully extending their finger from the controller 100, but the second capacitance value may not be associated with a minimum capacitance value representing the finger being fully extended. Through damping the minimum capacitance value, the controller 100 may dynamically adjust the capacitance value associated with the finger being fully extended.

[0080] The decaying of the minimum capacitance value may be based at least in part on receiving a threshold amount of capacitance values ​​that are not within a predetermined range of the minimum capacitance value. Additionally or alternatively, the decaying of the minimum capacitance value may be based at least in part on a threshold amount of time, number of frames, or number of counts passing since the received capacitance value within a predetermined range of the minimum capacitance value, and / or over a predetermined number of past capacitance values ​​that vary by a threshold amount.

[0081] The amount of attenuation, or the amount by which the minimum capacitance value decays, may be based on the range of capacitance values ​​detected over a number of previous frames (e.g., 20 frames, 50 frames, 100 frames, etc.), the range of capacitance values ​​between the minimum and maximum capacitance values, the difference between the minimum and average capacitance values ​​detected over a predetermined number of past frames, and / or a percentage of the difference between the minimum and average capacitance values. In other cases, the minimum capacitance value may decay if the average of the capacitance values ​​detected over the previous number of frames is not within a predetermined range of the minimum capacitance value. In some cases, the decay may be determined by calculating (1) the range of capacitance values ​​detected over a number of previous counts or frames, (2) the range of capacitance values ​​between the minimum and maximum capacitance values, and (3) a decay variable.

[0082] In some cases, the damping variable for the minimum capacitance value may be a percentage of the variation of the capacitance value between the minimum capacitance value and the maximum capacitance value detected over several previous frames. For example, the damping variable for the minimum capacitance value may be 20 percent of the range of capacitance values ​​between the minimum capacitance value and the maximum capacitance value for each frame. In other words, for every frame, the damping variable may be calculated by multiplying the range of capacitance values ​​between the minimum capacitance value and the maximum capacitance value by 20 percent.

[0083] In some cases, the minimum capacitance value may be permitted to decay twice as frequently as the maximum capacitance value. That is, the minimum capacitance value, i.e., capacitance values ​​in the lower range of capacitance values, may decay twice as fast as the maximum capacitance value, because the minimum capacitance value, i.e., capacitance values ​​in the lower range of capacitance values, are more susceptible to noise. However, in some cases, the amount by which the minimum capacitance value decays may be limited so that the minimum capacitance value does not decay more than 50% of the range of capacitance values ​​between the maximum capacitance value and the minimum capacitance value. In this sense, the minimum capacitance value may be limited to decaying to more than half of the range of capacitance values ​​between the maximum capacitance value and the minimum capacitance value. Thus, the amount by which the minimum capacitance value decays may be proportional to the range of capacitance values ​​between the maximum capacitance value and the minimum capacitance value. Additionally, the minimum capacitance value may be limited to decaying within a certain threshold of the maximum capacitance value to reduce noise.

[0084] The damping of the minimum capacitance value may be used to determine an updated minimum capacitance value for the capacitive pad 602. Additionally, in combination with damping the maximum capacitance value, the updated minimum capacitance value may also be used to determine an updated capacitance value range, an updated bias, and / or an updated scale factor for each capacitive pad 602 of the proximity sensor 600.

[0085] In some cases, the frequency at which the minimum capacitance value decays may depend on the variability of the measured capacitance values. For example, if there is a large variation between the detected capacitance values ​​over the past few frames, the minimum capacitance value may decay more frequently than if there is a small variation between the detected capacitance values ​​over the past few frames.

[0086] At 810, the controller 100 may determine an average capacitance value detected by the capacitive pads 602 over a number of previous counts or frames. For example, the controller 100 may determine an average capacitance value detected by each capacitive pad 602 over 20 previous samples. However, as described above, the damping of the maximum and / or minimum capacitance values ​​may be based on the average capacitance value determined over a number of previous frames. Thus, the average capacitance value may be known.

[0087] At 812, the logic of the controller 100 may determine whether the average capacitance value determined at 810 is greater than the updated maximum capacitance value determined at 806. That is, based at least in part on determining the average capacitance value, the controller 100 may compare the average capacitance value to the maximum capacitance value to determine whether the average capacitance value is greater than the maximum capacitance value detected at the capacitive pad 602. In other words, each capacitive pad 602 may be associated with a maximum capacitance value, and the controller 100 may determine whether the average capacitance value is greater than the maximum capacitance value. Upon determining that the average capacitance value exceeds the maximum capacitance value, the process 800 may follow a "yes" path to 814, where the logic of the controller 100 may determine a new maximum capacitance value. In other words, as a result of a "yes" at 812, the logic of the controller 100 may determine that the maximum capacitance value is too low and that the average capacitance value exceeds the maximum capacitance value.

[0088] At 814, the logic of the controller 100 may determine a new maximum capacitance value for the capacitive pad 602 based at least in part on a percentage, or weight, of the average capacitance value received over a given number of frames. For example, the new maximum capacitance value may extend toward the average capacitance value determined from the previous number of samples instead of decaying. In some cases, the amount by which the maximum capacitance value "grows" may be determined by multiplying the average capacitance value from the previous number of frames by a variable, such as 0.2. However, the variable may be optimized such that the maximum capacitance value "grows" toward the average capacitance value determined over the previous number of frames to accurately determine the user's hand gesture. In some cases, the amount by which the maximum capacitance value grows may also be based at least in part on the amount by which the average capacitance value exceeds the maximum capacitance value.

[0089] Alternatively, if the average capacitance value is not greater than the maximum capacitance value detected at the capacitive pad 602, the process 800 may follow a "no" path to 816 where the logic of the controller 100 may determine whether the average capacitance value is below the minimum capacitance value determined at 808. That is, based at least in part on determining the average capacitance value, the controller 100 may compare the average capacitance value to the minimum capacitance value to determine whether the average capacitance value is less than the minimum capacitance value detected at the capacitive pad 602. In other words, each capacitive pad 602 may be associated with a minimum capacitance value, and the logic of the controller 100 may determine whether the average capacitance value is less than the minimum capacitance value. Upon determining that the average capacitance value is less than the minimum capacitance value, the process 800 may follow a "yes" path to 818 where the logic of the controller 100 may determine a new minimum capacitance value. In other words, as a result of "yes" at 816, the logic of the controller 100 may determine that the minimum capacitance value is too high and that the average capacitance value exceeds the minimum capacitance value.

[0090] At 818, the controller 100 may determine a new minimum capacitance value for the capacitive pad 602 based at least in part on a percentage, or weight, of the average capacitance value over the previous few frames. For example, the new minimum capacitance value may extend toward the average capacitance value of the previous few frames instead of decaying. In some cases, the amount by which the minimum capacitance value "grows" may be determined by multiplying the average capacitance value of a given few previous capacitance values ​​by a variable, such as 0.4. However, the variable may be optimized such that the minimum capacitance value "grows" toward the average capacitance value determined over the previous few frames to accurately determine the user's hand gesture. In some cases, the amount by which the minimum capacitance value grows may also be based at least in part on the amount by which the average capacitance value exceeds the minimum capacitance value.

[0091] If, at 816 , the average capacitance value is less than the minimum capacitance value, the process 800 may follow the “No” path to 820 , where the controller 100 may calibrate the proximity sensor 600 .

[0092] Calibrating the proximity sensor 600 (or capacitive pad 602) may also follow from determining a new maximum capacitance value (e.g., 814) and / or determining a new minimum capacitance value (e.g., 818). As described above, calibrating the proximity sensor 600 may include calculating bias and scale factors for the capacitive pads 602. In other words, calibrating the proximity sensor 600 may include determining, for each capacitive pad 602, a range of detected capacitance values, a bias, and / or a scale factor. Thus, to calibrate the proximity sensor 600, the controller 100 may utilize the new maximum and / or minimum capacitance values.

[0093] From 820, the process 800 may loop to 802, where the controller 100 may receive subsequent capacitance values. That is, through the repeated received capacitance values, the process 800 may successively attenuate the maximum capacitance value, the minimum capacitance value, determine and / or update the range of capacitance values ​​detected by the capacitive pad 602, and / or normalize the capacitance values.

[0094] FIG. 9 illustrates a process 900 for receiving capacitance values ​​associated with a hand gesture at the controller 100, calibrating the proximity sensor 600, and transmitting the capacitance values ​​and / or an indication of the proximity of a finger to the controller 100.

[0095] At 902, the process 900 may receive a first capacitance value. For example, one or more processors of the controller 100 may receive a first capacitance value from the proximity sensor 600. The first capacitance value may represent a capacitance value detected by an individual capacitive pad 602 of the proximity sensor 600, where the first capacitance value represents the proximity of an individual finger of a user to the controller 100. For example, the first capacitance value may correspond to a first hand gesture 904, where the first capacitance value may indicate the proximity of the user's finger(s) to the capacitive pad 602.

[0096] At 906, the process 900 may normalize the first capacitance values. For example, one or more processors of the controller 100 may utilize operations of processes 700 and / or 800 discussed and described above to normalize the first capacitance values ​​received from the individual capacitive pads 602.

[0097] At 908, process 900 may calibrate proximity sensor 600 based at least in part on the first capacitance value. For example, one or more processors of controller 100 may calibrate proximity sensor 600 through determining a range of capacitance values ​​detected at capacitive pad 602, a bias associated with capacitive pad 602, and / or a scale factor associated with capacitive pad 602, as discussed above with respect to process(es) 700 and / or 800 discussed and described above.

[0098] At 910, the process 900 may transmit an indication of the first capacitance value and / or finger position(s). For example, one or more processors of the controller 100 may utilize one or more interfaces of the controller 100 to transmit an indication of the first capacitance value and / or finger position(s) to a computing device. In some instances, the computing device may utilize the indication of the first capacitance value and / or finger position(s) to generate image data representing the first hand gesture 904. The indication of the finger position(s) may indicate a numerical value on a [0,1] scale corresponding to a relative position of the finger(s) with respect to the controller 100. A value of 1 on the [0,1] scale may indicate that the finger is touching the controller 100, whereas a value of 0 on the [0,1] scale may indicate that the finger is fully extended from the controller 100. Turning to the first hand gesture 904, after receiving the first capacitance value, normalizing the first capacitance value, and / or calibrating the proximity sensor 600, the controller 100 may transmit an indication including a finger value on a scale of [0,1] corresponding to the position of the finger relative to the controller 100. The finger value may be used therein to generate image data corresponding to the first hand gesture 904.

[0099] At 912, the process 900 may receive a second capacitance value. For example, one or more processors of the controller 100 may receive a second capacitance value from the proximity sensor 600. The second capacitance value may represent a capacitance value detected by an individual capacitive pad 602 of the proximity sensor 600, where the second capacitance value represents the proximity of an individual finger of a user to the controller 100. For example, the second capacitance value may correspond to a second hand gesture 914, where the second capacitance value may indicate the proximity of the finger to the capacitive pad 602.

[0100] At 916, the process 900 may normalize the second capacitance value, and at 918, the process 900 may calibrate the proximity sensor 600 (e.g., determine a range, bias, and / or scale factor associated with the capacitive pad 602).

[0101] At 920, the process 900 may transmit the second capacitance value and / or an indication of the finger position(s). For example, one or more processors of the controller 100 may utilize one or more interfaces of the controller 100 to transmit the indication of the second capacitance value and / or the finger position(s) to a computing device. In some instances, the computing device may utilize the second capacitance value and / or the indication of the finger position(s) to generate image data representing the second hand gesture 914. For example, the indication of the finger position(s) may indicate a numerical value on a [0,1] scale of the relative position of the finger(s) with respect to the controller 100.

[0102] FIG. 10 illustrates a process 1000 for calibrating the proximity sensor 600 of the controller 100, reducing noise in the proximity data, and utilizing the proximity data to generate image data representative of hand gestures performed by a user.

[0103] At 1002, the process 1000 may receive proximity data from the proximity sensor 600, where the proximity data represents or indicates raw capacitance values ​​detected by the capacitive pads 602 of the proximity sensor 600. As illustrated in FIG. 10, in some instances, the process 1000 may receive a i , and a N As illustrated by, the process 1000 may receive capacitance values ​​from individual capacitive pads 602. In some instances, the process 1000 may receive raw capacitance values ​​from the proximity sensor 600 for each frame displayed in the VR environment.

[0104] At 1004, the process 1000 may perform factory normalization to normalize the raw capacitance values. For example, the capacitive pads 602 may have different biases, scale factors, and offsets depending on manufacturing conditions, size of the capacitive pads 602, etc. In some instances, the factory normalization may involve a first order calibration to remove bias in the capacitance values ​​and normalization of the capacitance values.

[0105] At 1006, process 1000 may perform grip calibration. As shown, grip calibration may include sub-blocks 1008, 1010, and 1012, which are discussed in detail next.

[0106] In sub-block 1008, the process 1000 may perform statistical analysis to observe the range of capacitance values, maximum capacitance values ​​received, minimum capacitance values ​​received, average capacitance values, and / or median capacitance values ​​for each capacitive pad 602.

[0107] At 1010, the process 1000 may perform a distinct gesture detection. Here, the process 1000 may analyze the proximity data (i.e., capacitance values) after normalization according to factory normalization to detect distinct gestures on the controller 100. For example, if the proximity data indicates that the capacitance value of the capacitive pad 602 or a portion thereof suddenly drops, the process 1000 may associate this drop in capacitance value with a user releasing his or her hand from the controller 100 or releasing a particular finger from the controller 100. The capacitance value received when the user suddenly releases his or her finger from the controller 100 may correspond to a minimum capacitance value for a range of capacitance values ​​detected by the particular capacitive pad 602 (e.g., when the finger is not touching the controller 100). The capacitance value received before the sudden drop may correspond to a maximum capacitance value for a range of capacitance values ​​detected by the particular capacitive pad 602 (e.g., the capacitance value represents when the finger is touching the controller 100). With a range of capacitance values, the process 1000 may determine bias and scale factors for the capacitance values ​​of the capacitive pads 602 to normalize the capacitance values ​​received at each capacitive pad 602 of the proximity sensor 600.

[0108] At 1012, process 1000 may perform continuous calibration updates and decay. Because process 1000 may continuously receive proximity data from the proximity sensor 600, process 1000 may continuously monitor the proximity data to recalibrate or reset the minimum and / or maximum capacitance values ​​for the range of capacitance values ​​of a given capacitive pad 602. In other words, through continuously receiving proximity data from an individual capacitive pad 602, process 1000 may determine whether the capacitance value is lower or higher than a previously determined minimum capacitance value of the range and / or maximum capacitance value of the range.

[0109] For example, as capacitance may change throughout the gameplay experience (e.g., hands get sweaty or dry, humidity, temperature, etc.), process 1000 may determine or set a new minimum capacitance value or a new maximum capacitance value, thereby adjusting the range of capacitance values ​​detected by capacitive pad 602. Additionally, in some instances, continuous calibration may reduce reliance on process 1000 to determine distinct gesture detections at 1010.

[0110] In some cases, the process 1000 may assign a weight or percentage to a newly detected minimum capacitance value or a newly detected maximum capacitance value to update the minimum capacitance value or the maximum capacitance value, respectively. For example, if the process 1000 detects a capacitance value below a previously detected minimum capacitance value for a certain amount of time, or for a certain number of frames, the process 1000 may weight the capacitance value to update the minimum capacitance value. Additionally, the minimum capacitance value and / or the maximum capacitance value may decay over time depending on how the user grips the controller 100, environmental conditions (e.g., humidity), or other characteristics (e.g., skin wetness). The amount by which the minimum capacitance value and the maximum capacitance value may decay may be limited such that the minimum capacitance value and the maximum capacitance value are separated by a threshold value to reduce sensor noise. In some cases, the decay may depend on the time and / or frequency of changes in the capacitance value detected by the proximity sensor 600. For example, if a user taps their finger on the controller 100 so that the controller 100 detects a threshold amount of capacitance values ​​within a particular period or frame, or if the controller 100 switches users, thereby potentially causing a large change (or fluctuation) in the received capacitance values, the damping frequency may be increased to decrease the amount of time required to update the minimum and / or maximum capacitance values.

[0111] As a result of the grip calibration at 1006 and sub-blocks 1008-1012, the capacitance values ​​sensed from each capacitive pad 602 may be normalized on a [0,1] scale. The [0,1] scale may represent high and low levels for the capacitance values ​​sensed from the proximity sensor 600 for a particular grip of a user and for each individual capacitive pad 602.

[0112] At 1014, the process 1000 may perform a weighted sum of the capacitance values. Because the capacitance values ​​are normalized on a scale of [0,1], the process 1010 may assign weights to the capacitance values ​​from the capacitive pads 602 depending on the controller configuration. That is, the capacitance values ​​are normalized between [0,1] and weights are assigned to individual capacitance values ​​received by individual capacitive pads 602. For example, if a particular controller configuration includes five capacitive pads 602 assigned to a particular finger, the capacitance values ​​may include equal weights (e.g., one-fifth). In other words, when the capacitive pads 602 detect the maximum capacitance value, the output of the weighted sum may be equal to one.

[0113] As shown, determining the weighted sum may encompass sub-blocks 1016, 1018, 1020, and 1022. Sub-block 1016 may include a controller configuration model for the controller 100. As described above, the controller configuration specifies a mapping of the capacitive pads 602 of the proximity sensor 600 to associate a particular capacitive pad 602 with a particular finger of a user.

[0114] At subblock 1018, process 1000 may perform dynamic controller configuration selection, where process 1000 inputs the capacitance values ​​into a controller configuration model(s) to determine a best matching, or most consistent, controller configuration according to the user's grip. Selecting a controller configuration may involve determining a ratio between (1) the variance of capacitance values ​​of a group of capacitive pads 602 assigned to a particular finger and (2) the variance of capacitance values ​​between groups of capacitive pads 602. The ratio is calculated for each controller configuration to determine the most likely match for the user's grip.

[0115] In sub-block 1020, the process 1000 may filter noise contained within the capacitance value. For example, when a finger is not touching the controller 100, such as when the finger is fully extended, those capacitive pads 602 associated with the finger not touching the controller 100 (e.g., the finger is fully extended) may be susceptible to noise. Here, detecting a small amount of capacitance may generate a large amount of noise in the received capacitance value. In cases where the capacitance value from the proximity sensor 600 for an individual capacitive pad 602 is below a certain threshold or if the capacitance value is within a certain limit of a low-level capacitance value for the capacitive pad 602, the process 1000 may suppress the detected capacitance. In other cases, in such scenarios, the process 1000 may assign a low weight to the capacitance value.

[0116] At subblock 1022, the process 1000 may reject certain capacitance values ​​from the capacitive pads 602 of the proximity sensor 600 and / or fingers associated with each capacitive pad 602. For example, at 1020, the process 1000 may identify capacitive pads 602 that have a small range between a minimum or maximum capacitance value. In these scenarios, the capacitance values ​​received by the capacitive pads 602 may introduce noise, and ignoring a particular capacitive pad 602, or a group of capacitive pads 602, may increase confidence that the proximity data corresponds to a user's hand gesture. That is, if the range of capacitance values ​​detected by a capacitive pad 602 is small, the capacitive pad 602 may be subject to a large amount of noise.

[0117] Capacitive pad and finger rejection may include identifying capacitive pads 602 whose minimum or maximum capacitance values ​​are within a threshold range of each other in sub-block 816. For example, if the minimum and maximum capacitance values ​​are separated by a small range, the capacitive pads 602 may not be able to accurately sense and detect the user's finger position in sufficient detail. Here, the measured capacitance value may not accurately correspond to the finger position because the capacitive pads 602 may detect capacitance values ​​within the threshold range. Additionally or alternatively, a particular finger may be associated with several capacitive pads 602 that reduce the reliability of the detected capacitance value. In these scenarios, the capacitance values ​​received by the capacitive pads 602 may introduce noise, and ignoring a particular capacitive pad 602, or a group of capacitive pads 602, may increase the reliability that the capacitance value corresponds to a user's hand gesture. Additionally or alternatively, a particular finger may be associated with several capacitive pads 602 that have low reliability. Rejecting certain fingers or groups of capacitive pads 602 introduces unexpected behavior for controller configurations for small hands. In these scenarios, each finger may be associated with an adjacent finger (e.g., the pinky finger is associated with the ring finger).

[0118] At 1024, the process 1000 may perform a final normalization. For example, in some cases, the capacitive pad 602 assigned to a particular finger may not detect a capacitance value or the capacitance value may be unreliable. Here, the user may not touch a particular capacitive pad 602 of the proximity sensor 600 due to hand size or in cases where the user has readjusted his or her grip. Additionally, in some cases where the minimum and maximum capacitance values ​​are separated by a narrow or small range, the capacitance value may be unreliable and noise may significantly affect the finger movement. To eliminate or reduce noise from these capacitive pad(s) 602, the final normalization 1024 may determine the reliability of the capacitance value and, if unreliable, the weight of the capacitance value from the capacitive pad 602 is removed from the weighted sum. In it, the capacitance values ​​are summed and divided by the sum of the weights of the capacitive pads 602 being used.

[0119] At 1026, the process 1000 may filter and curve fit the proximity data to represent the user's hand gesture. The filtering and curve fitting may involve linearizing the final normalization of the proximity data on a [0,1] scale to achieve a linear relationship (e.g., curled, extended, intermediate extended, etc.) between the proximity data and the finger position. For example, the final normalized value determined at 1024 may follow an exponential curve such that the final normalized value exponentially increases as the user's hand approaches or grasps the controller 100. In other words, the summed capacitance value may be exponentially related to the proximity of a finger placed on / around the controller 100. Linearizing the values ​​on a [0,1] scale such that the capacitance value is correlated with the finger position may reduce sensitivity and reduce the effects of noise when the finger is extended from the controller 100 as well as when the finger touches or is in proximity to the controller 100.

[0120] As shown, filtering and curve fitting may include various sub-blocks to achieve a final value utilized to generate a hand gesture. In the filtering and curve fitting stage 1026, the process 1000 may apply filtering before or after curve fitting. For example, a sub-block may include filtering capacitance values ​​within a low level range of capacitance values ​​when the capacitive pad 602 is susceptible to noise. In other words, within a high level capacitance range, such as when a finger is gripping or in close proximity to the controller 100, the capacitive pad 602 is less susceptible to noise.

[0121] The process 1000 may apply adaptive filtering at 1028 to adjust the amount of filtering performed on the capacitance values. The adaptive filtering may adaptively filter capacitance values ​​in a lower range of capacitance values ​​more aggressively compared to capacitance values ​​in a higher range of capacitance values. As shown, the adaptive filtering may include sub-blocks 1030, 1032, and 1034. In general, the adaptive filtering at 1026 may utilize the results of sub-blocks 1030, 1032, and 1034 to determine how much noise is present in the normalized values ​​and to determine the amount of filtering applied to the normalized capacitance values. Determining the amount of noise present in the capacitance values ​​may include determining which capacitive pads 602 are being used to generate the capacitance values, as well as minimum and maximum capacitance values ​​for each capacitive pad 602. For example, the capacitive pad 602 may have a baseline noise, and if the range between the minimum and maximum capacitance values ​​for the capacitive pad 602 is low, the baseline noise of the capacitive pad 602 may correspond to a large amount of finger movement (i.e., the baseline noise is a large portion of the range of capacitance values ​​that the capacitive pad 602 can sense). Here, the signal-to-noise ratio may be high. Comparatively, if the range between the minimum and maximum capacitance values ​​of the capacitive pad 602 is large, the baseline noise of the capacitive pad 602 may not introduce a large amount of finger movement. In these scenarios, to reduce the noise in the capacitance values, when the range of capacitance values ​​is small, the process 1000 may filter the capacitance values ​​more heavily than when the range of capacitance values ​​is large. The filtering and curve fitting 1026 may be repeated for each capacitive pad 602, as each capacitive pad 602 may include respective high and low level capacitance values. Additionally, the amount of filtering applied at 1026 may depend on which capacitive pads 602 and / or which capacitive pads 602 were rejected (eg, pad and finger rejection 1022).

[0122] The total noise prediction at 1030 may filter the capacitance values ​​based on which capacitive pads 602 are being used, the weights assigned to the capacitive pads 602, as well as the baseline noise of each of the capacitive pads 602. For example, the process 1000 may include a default capacitive pad noise at 1028, which may represent an estimated baseline noise for each individual capacitive pad 602. Thus, the total noise prediction step at 1030 may determine, for those capacitive pads 602 that are being used, their respective baseline noise values. The total noise prediction step may also determine an expected or predicted noise for the capacitive pads 602. For example, if the capacitive pads 602 being used sense capacitance values ​​over a large range (i.e., between a minimum capacitance value and a maximum capacitance value), the capacitance values ​​may include a low amount of noise and less filtering may be applied. However, if the range of capacitance values ​​of the capacitive pad 602 is narrow (i.e., between a minimum and a maximum capacitance value), then the capacitance values ​​may contain a large amount of noise and the process 1000 may apply a greater amount of filtering.

[0123] The dNorm / dt at 1032 may take into account changes in capacitance values ​​over time. For example, if the capacitance values ​​received from the capacitive pad 602 change significantly over a short period of time (e.g., one frame), the potential noise introduced into the capacitance values ​​may be ignored or weighted accordingly. That is, instead of filtering the capacitance values ​​and introducing latency, less filtering may be applied to the capacitance values ​​if they have changed over a threshold amount of time. In this sense, less filtering may be applied when larger finger movements are detected and more filtering may be applied when smaller finger movements are detected.

[0124] dCurl / dNorm at 1034 may filter the normalized capacitance values ​​based on the amount of capacitance detected. For example, in the high range of capacitance values, where the finger grips the controller, less filtering may be applied since noise may have less effect on the finger position. However, in the low range of capacitance values, where the finger is displaced from or in close proximity to the controller, more filtering may be applied since small changes in capacitance value may have a significant effect on the finger position. Here, small changes in capacitance value may result in large changes in the finger gesture.

[0125] In sub-block 1038, the low pass filter may represent an adjustable low pass averaging filter that adjusts the amount of filtering on the detected capacitance values. In some instances, the amount of filtering may be on a scale of [0,1] and may be based on the result of the amount of filtering determined in the adaptive filter 1028. That is, the low pass filter may filter the capacitance values ​​as determined from the adaptive filtering.

[0126] In subblock 1040, process 1000 may curve fit the [0,1] scale capacitance values ​​to relate the capacitance values ​​to finger position or hand animation. For each finger, the output of the curve fit may include a numerical value for each finger, where the numerical value indicates the finger position of each finger on the hand.

[0127] In subblock 1042, process 1000 may apply a backlash filter after the curve to filter changes in capacitance values ​​that fall below a threshold. For example, if the capacitance value does not change by a threshold amount on the [0,1] scale, the capacitance value may be filtered. Such filtering may reduce perceived finger twitching and movement by the user.

[0128] The joint model may correspond to a hand animation (e.g., a hand skeleton) at sub-block 1044. For example, the joint model may generate a hand animation at 1040 from the curve fit that corresponds to the numbers assigned to each finger on the hand.

[0129] FIG. 11 illustrates an example chart 1100 for updating a minimum capacitance value associated with the proximity sensor 600. The example chart 1100 is shown illustrating capacitance values ​​1102 received from the capacitive pad 602 of the proximity sensor 600. In some instances, the controller 100 may receive the capacitance values ​​1102 in every frame displayed within the VR environment. The capacitive pad 602 may measure a capacitance value 1102 associated with an object (e.g., a finger) proximate to the capacitive pad 602. In some instances, as the distance between the object and the capacitive pad 602 decreases, the capacitance value detected by the capacitive pad 602 may increase. Through repeatedly receiving the capacitance values ​​1102, the controller 100 may determine a maximum capacitance value 1104, a minimum capacitance value 1106, and / or a range 1108 between the maximum capacitance value 1104 and the minimum capacitance value 1106.

[0130] In some instances, the maximum capacitance value 1104 may correspond to a capacitance value received when an object (e.g., a finger) is touching the controller 100. For example, the controller 100 may associate this capacitance value with the maximum capacitance value 1104 and a touch on the controller 100. This association may be utilized by one or more computing devices to generate image data of a user holding an object (e.g., a weapon, a ball, etc.). The minimum capacitance value 1106 may correspond to a capacitance value received when an object (e.g., a finger) is not touching the controller 100 and is fully extended from the controller 100. For example, upon receiving the capacitance value 1102, the controller 100 may associate this capacitance value with the minimum capacitance value 1106 and the user fully extends the finger from the controller 100. This association may be utilized by one or more computing devices to generate image data of a user fully extending the finger (e.g., dropping a ball).

[0131] Additionally, upon receiving the capacitance value 1102, the controller 100 may determine an average capacitance value 1110. In some instances, the average capacitance value 1110 may be determined from capacitance values ​​from a given number of past samples. For example, the average capacitance value 1110 may be determined using the last 20 capacitance values ​​received.

[0132] Using the range 1108, the controller 100 may determine a bias and / or scale factor for the capacitive pad 602 to determine the relative finger position of the user between being fully extended and touching the controller 100. However, throughout the gameplay experience, one or more factors may affect the detected capacitance value 1102. For example, the temperature of the environment in which the controller 100 resides may decrease and / or the wetness of the user's hands / fingers may increase. In some instances, these factors may result in a lower capacitance value 1102. To accurately detect the proximity of an object to the controller 100, the maximum capacitance value 1104 (or a level / limit associated therewith) may be attenuated. In other words, the maximum capacitance value 1104 may be attenuated (e.g., using a bias, scale factor, etc.) to a new capacitance value to accurately detect and / or associate the capacitance value 1102(A) with the user's finger position.

[0133] For example, FIG. 11 illustrates that the maximum capacitance value 1104 may decay. In some cases, the decay may occur as a result of the controller 100 not receiving a capacitance value 1102 within a certain threshold of the maximum capacitance value 1104. In some cases, the maximum capacitance value 1104 may decay if the capacitance value 1102 is not within a certain threshold of the maximum capacitance value 1104 for a given number of frames. Additionally, the maximum capacitance value 1104 may decay if the average capacitance value 1110 over a past number of N samples 1112 is not within a certain threshold of the maximum capacitance value 1104. In still other cases, the maximum capacitance 1106 value may decay continuously to converge towards the capacitance value 1102 and / or the average capacitance value 1110.

[0134] In some cases, the amount of decay may be based at least in part on a variable decay frequency, range 1108, and / or range 1114 determined over the past N samples 1112. In some cases, the variable decay frequency may be substantially 10 percent of the range 1108. As a result, the maximum capacitance value 1104 may decay gradually over a period of time to converge toward the detected capacitance value 1102 and / or the average capacitance value 1110. Additionally, the amount by which the maximum capacitance value 1104 decays may be limited such that the maximum capacitance value 1104 and the minimum capacitance value 1106 are separated by a threshold amount.

[0135] Additionally, the frequency at which the maximum capacitance value 1104 decays may be based at least in part on a number of frames where the controller 100 has not received a capacitance value 1102 within a threshold of the maximum capacitance value 1104. The frequency at which the maximum capacitance value 1104 decays may also depend on the variability of the capacitance values ​​1102 measured over the past N samples 1112. For example, if there is a large variability between the capacitance values ​​1102 detected over the past N samples 1112, the maximum capacitance value 1104 may decay more frequently compared to if there is a small variability between the capacitance values ​​1102 detected over the past N samples 1112.

[0136] Thus, the maximum capacitance value 1104 may be attenuated to a new value and a new bias, scale factor, and / or range 1116 may be determined.

[0137] As a result of damping the maximum capacitance value 1104, in some cases the controller 100 may detect capacitance values ​​1102 that are greater than the maximum capacitance value. That is, through continuously updating the maximum capacitance value 1104, the controller 100 may receive capacitance values ​​1102 that are greater than the determined maximum capacitance value. These capacitance values ​​1102 may “overshoot” the maximum capacitance value 1104. In such cases, if the capacitance value 1102 overshoots the maximum capacitance value 1104 or if the average capacitance value 1110 overshoots the maximum capacitance value 1104, the maximum capacitance value 1104 may “grow” or extend toward the capacitance value 1102 or the average capacitance value 1110. In such cases, the maximum capacitance value 1104 may make up for the difference. The amount and / or frequency at which the maximum capacitance value 1104 is updated may be based on a growth variable (e.g., 0.2) and the average capacitance value 1110 detected over the past several frames. In doing so, the handheld controller may update the maximum capacitance value 1104, determine an updated bias, an updated scale factor, etc. The maximum capacitance value 1104 may continue to grow until it catches up with the capacitance value 1102 and / or the average capacitance value 1110.

[0138] Although not shown, the minimum capacitance value 1106 may similarly decay based on the capacitance value 1102 and / or the average capacitance value 1110. For example, the minimum capacitance value 1106 may decay as a result of the controller 100 not receiving a capacitance value 1102 above a minimum capacitance value 1106 threshold for a threshold number of frames. In doing so, the minimum capacitance value 1106 may decay (e.g., using a bias, a scale factor, etc.) to a new capacitance value to accurately detect and / or associate the capacitance value 1102 with the user's finger position. The amount or frequency at which the minimum capacitance value 1106 decays may be based at least in part on the period during which the controller 100 has not received a capacitance value 1102 within the minimum capacitance value 1106 threshold. The amount by which the minimum capacitance value 1106 decays may be limited such that the minimum capacitance value 1106 and the maximum capacitance value 1104 are separated by a threshold amount or range. In some cases, a large amount of noise may be present in the capacitance values ​​1102 in the lower range 1108 (i.e., when the finger is extended from the controller 100), so in some cases the minimum capacitance value 1106 may decay twice as frequently as the maximum capacitance value 1104.

[0139] Additionally, although the maximum capacitance value 1104 and the minimum capacitance value 1106 are discussed separately, the maximum capacitance value 1104 and the minimum capacitance value 1106 may be simultaneously decayed based on the controller 100 receiving the capacitance values ​​1102. An updated range, an updated bias, and / or an updated scale factor may then be determined for use in calibrating the capacitive pad 602 and / or normalizing the capacitance values ​​1102 received from the capacitive pad 602.

[0140] FIG. 12 illustrates example components of a controller 1200, such as the controller 100. As illustrated, the controller 100 includes one or more input / output (I / O) devices 1202, such as the controls described above (e.g., joystick, trackpad, trigger, etc.), a proximity sensor 600, and / or potentially any other type of input or output device. For example, the I / O device 1202 may include one or more microphones for receiving audio input, such as user voice input. In some implementations, one or more cameras or other types of sensors (e.g., inertial measurement units (IMUs)) may function as input devices for receiving gestural input, such as movements of the handheld controller 100. In some embodiments, additional input devices may be provided in the form of a keyboard, keypad, mouse, touch screen, joystick, control buttons, etc. The input device(s) may further include control mechanisms, such as basic volume control buttons for increasing / decreasing the volume, as well as power and reset buttons. Output devices, on the other hand, may include a display, light elements (e.g., LEDs), a vibrator that provides haptics, speaker(s) (e.g., headphones), etc. There may also be a simple light element (e.g., LED) to indicate the state of the controller 100 (e.g., powered on).

[0141] In some cases, the output by the I / O device may be based on input received by one or more input devices. For example, a touch sensed via the proximity sensor 600 of the controller 100 may result in the output of a haptic response by a vibrator disposed adjacent to (e.g., below) the proximity sensor 600. In some cases, the output may vary based at least in part on characteristics of the proximity of one or more objects to the proximity sensor 600, such as a capacitive pad 602 disposed on / in the handle 112 of the controller 100. For example, a touch input (or proximity of an object) at a first location on the handle 112 may result in a first haptic output, while a touch input (or proximity of an object) at a second location on the handle 112 may result in a second haptic output. Additionally, a particular gesture on the handle 112 may result in a particular haptic output (or other type of output). For example, a tap and hold gesture on the handle 112 (detected by the proximity sensor 600) may result in a first type of haptic output, a tap and release gesture on the handle 112 may result in a second type of haptic output, and a hard tap on the handle 112 may result in a third type of haptic output. However, while a few examples are provided, the controller 100 may additionally or alternatively be other types of I / O devices.

[0142] In addition, the controller 100 may include one or more communication interfaces 1204 to facilitate wireless connection to a network and / or one or more remote systems (e.g., a host computing device executing an application, a game console, etc.). The communication interface 1204 may be a Wi-Fi TM , Bluetooth TM , radio frequency (RF), etc. Additionally or alternatively, the controller 100 may include a physical port that facilitates a wired connection to a plug-in network device that communicates with the network, connected peripheral devices, or other wireless networks.

[0143] In the illustrated implementation, the controller 100 further includes one or more processors 1206 and a computer-readable medium 1208. In some implementations, the processor(s) 1206 may include a central processing unit (CPU), a graphics processing unit (GPU), both a CPU and a GPU, a microprocessor, a digital signal processor, or other known processing units or components. Additionally or alternatively, the functions described herein may be performed, at least in part, by one or more hardware logic components. For example, without limitation, exemplary types of hardware logic components that may be used include field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on chips (SOCs), complex programmable logic devices (CPLDs), and the like. Additionally, each of the processor(s) 1206 may have its own local memory, which may also store program modules, program data, and / or one or more operating systems.

[0144] The computer readable medium 1208 may include removable and non-removable media implemented in any method or technology for storing information, such as volatile and non-volatile memory, computer readable instructions, data structures, program modules, or other data. Such memory may include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, RAID storage systems, or any other medium that may be used to store the desired information and that may be accessed by a computing device. The computer readable medium 1208 may be implemented as a computer readable storage medium ("CRSM"), which may be any available physical medium accessible by the processor(s) 1206 to execute instructions stored on the computer readable medium 1208. In one implementation, the CRSM may include random access memory ("RAM") and flash memory. In other implementations, the CRSM may include, but is not limited to, read-only memory ("ROM"), electrically erasable programmable read-only memory ("EEPROM"), or any other tangible medium that can be used to store desired information and that can be accessed by the processor(s) 1206.

[0145] Several modules, such as instructions, data stores, and the like, may be stored in the computer-readable medium 1208 and configured to execute on the processor(s) 1206. Although several example functional modules are shown as stored in the computer-readable medium 1208 and executed on the processor(s) 1206, the same functions may alternatively be implemented in hardware, firmware, or as a system on a chip (SOC). An operating system module 1210 may be configured to manage the hardware within the controller 100 and be coupled to the controller 100 for the benefit of the other modules. In addition, the computer-readable medium 1208 may store a network communication module 1212 that enables the controller 100 to communicate with one or more other devices, such as personal computing devices running applications (e.g., gaming applications), game consoles, remote servers, other controllers, computing devices, and the like, via one or more communication interfaces 1204. The computer-readable medium 1208 may further include a game session database 1214 for storing data associated with games (or other applications) executing on the controller 100 or on a computing device coupled to the controller 100.

[0146] The computer readable medium 1208 may also include a device records database 1216 that stores data associated with devices coupled to the controller 100, such as personal computing devices, game consoles, remote servers, and the like.

[0147] The computer-readable medium 1208 may further store game control instructions 1218 for configuring the controller 100 to function as a game controller, and general purpose control instructions 1220 for configuring the controller 100 to function as a controller for other non-gaming devices.

[0148] The computer-readable medium 1208 may additionally store controller configuration(s) 1222. The controller configuration 1222 may represent or include data associated with an assignment of the capacitive pads 602 of the proximity sensor 600, such as to associate a particular capacitive pad 602 with a respective finger of a user manipulating the controller 100.

[0149] The computer readable medium 1208 may additionally store data associated with a range of capacitance values ​​1224. The range of capacitance values ​​1224 may indicate a range of capacitance values ​​that have been or can be detected at an individual capacitive pad 602 of the proximity sensor 600. For example, through continuously receiving proximity data from the proximity sensor 600, as described above, the controller 100 may calculate and / or determine a range of capacitance values ​​received at the capacitive pad 602. Within a range of capacitance values, the computer readable medium 1208 may also store a minimum capacitance value 1226 and / or a maximum capacitance value 1228.

[0150] The computer-readable medium 1208 may also store a scale factor and bias 1230. The scale factor and bias 1230 may be associated with each capacitive pad 602 and may be determined utilizing the range of capacitance values ​​1224. Thus, utilizing the range of capacitance values ​​1226 and / or the scale factor and bias 1230, the controller 1200 may normalize and / or calibrate the proximity data received from the proximity sensor 600.

[0151] (Conclusion) Although the above invention has been described with respect to specific embodiments, it should be understood that the scope of the invention is not limited to these specific embodiments. Since other modifications and variations adapted to suit specific operating requirements and environments will be apparent to those skilled in the art, the invention should not be considered as limited to the embodiments selected for purposes of disclosure, but should extend to all variations and variations that do not depart from the true concept and scope of the invention.

[0152] Although the present application describes embodiments having particular structural features and / or methodological acts, it should be understood that the claims are not necessarily limited to the particular features or acts described. Rather, the particular features and acts are merely illustrative of some embodiments that are within the scope of the present application's claims. [Terms] Embodiments of the present disclosure can be described in view of the following clauses. 1. A handheld controller, comprising: a proximity sensor configured to detect a capacitance value based on an object proximate to the proximity sensor; one or more processors; One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to: receiving a first capacitance value detected by the proximity sensor; based at least in part on the first capacitance value; A maximum capacitance value; A minimum capacitance value; determining a range of capacitance values; determining a bias for the proximity sensor; determining a scale factor for the capacitance value detected by the proximity sensor; calibrating the proximity sensor based at least in part on the bias and the scale factor; receiving a second capacitance value detected by the proximity sensor; based at least in part on the second capacitance value; Updated maximum capacitance value, The updated minimum capacitance value, or an updated range of capacitance values; and determining at least one of an updated bias of the proximity sensor or an updated scale factor for the capacitance value detected by the proximity sensor; and calibrating a capacitive sensor based at least in part on at least one of the updated bias or the updated scale factor. 2. The one or more non-transitory computer-readable media storing computer-executable instructions, when executed by the one or more processors, cause the one or more processors to: determining a proximity of the object relative to the handheld controller based at least in part on the second capacitance value; generating a representation of the nearby object; The handheld controller of clause 1, further comprising: transmitting the representation to a computing device. 3. The proximity sensor includes a plurality of capacitive pads; 2. The handheld controller of claim 1, wherein each capacitive pad of the plurality of capacitive pads is configured to generate a capacitance value associated with the proximity of the object to the handheld controller. 4. The one or more non-transitory computer-readable media storing computer-executable instructions, when executed by the one or more processors, cause the one or more processors to: the maximum capacitance value relative to the updated maximum capacitance value, or attenuating at least one of the minimum capacitance value relative to the updated minimum capacitance value. 5. A method comprising: determining a range of proximity values ​​detected by the proximity sensor, the proximity range of values ​​including a maximum value and a minimum value; receiving a proximity value from the proximity sensor; attenuating the limit associated with the maximum value; and attenuating a limit associated with the minimum value; and determining an updated range of proximity values ​​detected by the proximity sensor based at least in part on the limit associated with the maximum value and the limit associated with the minimum value; determining a scale factor for the proximity value detected by the proximity sensor based at least in part on the updated range of proximity values. 6. The method of claim 5, wherein the damping of the limit associated with the maximum value and the damping of the limit associated with the minimum value are based at least in part on a range of the proximity values ​​detected by the proximity sensor. 7. The method of claim 6, wherein the proximity values ​​are received during a previous number of frames, the method further comprising determining an average value based on the proximity values ​​received during the previous number of frames, and wherein the decaying of the limit associated with the maximum value and the decaying of the limit associated with the minimum value are further based at least in part on the average value. 8. determining a first frequency for decaying the limit associated with the maximum value, the first frequency being based at least in part on a variability of the proximity values ​​received during a predetermined number of previous frames; determining a second frequency for decaying the limit associated with the minimum value, the second frequency being based at least in part on the variability of the proximity values ​​received during the predetermined number of previous frames; attenuating the limit associated with the maximum value is based at least in part on the first frequency; 9. The method of claim 5, wherein the decaying of the limit associated with the minimum value is based at least in part on the second frequency. generating an indication corresponding to a proximity of the object to the controller; 6. The method of claim 5, further comprising transmitting the representation to one or more computing devices. 10. The proximity value includes a first proximity value, and the method further comprises: Receiving a second proximity value; and attenuating the limit associated with the maximum value and the limit associated with the minimum value based at least in part on the second proximity value; determining an average value detected by the proximity sensor; the average value exceeds the limit associated with the maximum capacitance value; or and determining at least one of: the average value is less than the limit associated with the minimum capacitance value. 11. determining an updated limit associated with the maximum value based at least in part on the average value exceeding the limit associated with the maximum capacitance value; or determining an updated limit associated with the minimum value based at least in part on the average value being less than the limit associated with the minimum capacitance value. 12. The average value is determined over a predetermined number of previous frames; the updated limit associated with the maximum value is based at least in part on the average value determined over the predetermined number of previous frames; 12. The method of claim 11, wherein the updated limit associated with the minimum value is based at least in part on the average value determined over the predetermined number of previous frames. 13. The proximity sensor includes a plurality of capacitive pads; 6. The method of claim 5, wherein individual capacitive pads are configured to generate the proximity value, the proximity value being associated with an object in proximity to the controller. 14. A controller, A sensor, one or more processors; One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to: receiving first data from the sensor; determining a range of proximity values ​​based at least in part on the first data, the range of proximity values ​​including a first maximum proximity value and a first minimum proximity value; Determining a first scale factor; receiving second data from the sensor; attenuating at least one of the first maximum proximity value or the first minimum proximity value; determining an updated range of proximity values, the updated range of proximity values ​​including at least one of a second maximum proximity value or a second minimum proximity value; Determining a second scale factor; and determining proximity based at least in part on the second scale factor. 15. The first maximum proximity value is associated with a first proximity of an object to the sensor, and the first minimum proximity value is associated with a second proximity of the object to the sensor; The controller of clause 14, wherein the second maximum proximity value is associated with the first proximity of the object to the sensor, and the second minimum proximity value is associated with the second proximity of the object to the sensor. 16. The controller of clause 14, wherein the computer-executable instructions stored on the one or more non-transitory computer-readable media, when executed by the one or more processors, cause the one or more processors to perform acts further including: transmitting the indication of the proximity to a computing device. 17. One or more non-transitory computer-readable media store computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to: determining an average proximity value; the average proximity value exceeds the second maximum proximity value; or the average proximity value is less than the second minimum proximity value; and 15. The controller of claim 14, further comprising: determining at least one of a third maximum proximity value or a third minimum proximity value. 18. The controller of clause 17, wherein the third maximum proximity value or the third minimum proximity value is based at least in part on a percentage of the average proximity value. 19. The second data includes a proximity value; attenuating the first maximum proximity value is based at least in part on determining that one or more of the proximity values ​​are outside a first threshold range of the first maximum proximity value for a threshold time period; The controller of claim 14, wherein damping the first minimum proximity value is based at least in part on determining that one or more of the proximity values ​​are outside a second threshold range of the first minimum proximity value for a threshold period of time. 20. Attenuating the first maximum proximity value is based at least in part on the range of proximity values ​​and a range of proximity values ​​from the subset of proximity values; 15. The controller of claim 14, wherein attenuating the first minimum proximity value is based at least in part on the range of proximity values ​​and the range of proximity values ​​from the subset of proximity values. [1] 1. A method comprising: determining a range of proximity values ​​detected by a proximity sensor, the range of proximity values ​​including a maximum value and a minimum value; receiving a proximity value from the proximity sensor; attenuating the limit associated with the maximum value; and attenuating a limit associated with the minimum value; and determining an updated range of proximity values ​​detected by the proximity sensor based at least in part on the limit associated with the maximum value and the limit associated with the minimum value; determining a scale factor for the proximity value detected by the proximity sensor based at least in part on the updated range of proximity values. [2] 2. The method of claim 1, wherein the attenuation of the limit associated with the maximum value and the attenuation of the limit associated with the minimum value are based at least in part on the range of proximity values ​​detected by the proximity sensor. [3] The method of any one of claims 1 to 2, wherein the proximity values ​​are received during a number of previous frames, the method further comprising determining an average value based on the proximity values ​​received during the number of previous frames, and wherein the decaying of the limit associated with the maximum value and the decaying of the limit associated with the minimum value are further based at least in part on the average value. [4] determining a first frequency for decaying the limit associated with the maximum value, the first frequency being based at least in part on a variability of the proximity values ​​received during a predetermined number of previous frames; determining a second frequency for decaying the limit associated with the minimum value, the second frequency being based at least in part on the variability of the proximity values ​​received during the predetermined number of previous frames; the attenuating of the limit associated with the maximum value is based at least in part on the first frequency; The method of any one of [1] to [3], wherein the attenuation of the limit associated with the minimum value is based at least in part on the second frequency. [5] the proximity value detected by the proximity sensor corresponds to an object proximate to a controller, the method comprising: generating an indication corresponding to a proximity of the object to the controller; The method of any one of [1] to [4], further comprising transmitting the representation to one or more computing devices. [6] the proximity value comprises a first proximity value, and the method further comprises: Receiving a second proximity value; and attenuating the limit associated with the maximum value and the limit associated with the minimum value based at least in part on the second proximity value; determining an average value detected by the proximity sensor; the average value exceeds a limit associated with a maximum capacitance value; or [5]. The method of any one of [1] to [5], further comprising determining at least one of: the average value is less than a limit associated with a minimum capacitance value. [7] determining an updated limit associated with the maximum value based at least in part on the average value exceeding the limit associated with the maximum capacitance value; or and determining an updated limit associated with the minimum value based at least in part on the average value being less than the limit associated with the minimum capacitance value. [8] The average value is determined over a predetermined number of previous frames; the updated limit associated with the maximum value is based at least in part on the average value determined over the predetermined number of previous frames; [7]. The method of any one of [1] to [7], wherein the updated limit associated with the minimum value is based at least in part on the average value determined over the predetermined number of previous frames. [9] the proximity sensor includes a capacitive pad; A method according to any one of [1] to [8], wherein each capacitive pad is configured to generate the proximity value, the proximity value being associated with an object in proximity to the controller.

[10] A controller, A sensor, one or more processors; One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to: receiving first data from the sensor; determining a range of proximity values ​​based at least in part on the first data, the range of proximity values ​​including a first maximum proximity value and a first minimum proximity value; Determining a first scale factor; receiving second data from the sensor; attenuating at least one of the first maximum proximity value or the first minimum proximity value; determining an updated range of proximity values, the updated range of proximity values ​​including at least one of a second maximum proximity value or a second minimum proximity value; Determining a second scale factor; and determining proximity based at least in part on the second scale factor.

[11] the first maximum proximity value being associated with a first proximity of an object to the sensor, and the first minimum proximity value being associated with a second proximity of the object to the sensor; The controller of

[10] , wherein the second maximum proximity value is associated with the first proximity of the object to the sensor, and the second minimum proximity value is associated with the second proximity of the object to the sensor.

[12] The controller of [1] or

[11] , wherein the one or more non-transitory computer-readable media storing computer-executable instructions, when executed by the one or more processors, cause the one or more processors to perform actions further including transmitting an indication of the proximity to a computing device.

[13] The one or more non-transitory computer-readable media storing computer-executable instructions, when executed by the one or more processors, cause the one or more processors to: determining an average proximity value; the average proximity value exceeds the second maximum proximity value; or the average proximity value is less than the second minimum proximity value; and The controller of any one of

[10] to

[12] , further comprising: determining at least one of a third maximum proximity value or a third minimum proximity value.

[14] The controller of any one of

[10] to

[13] , wherein the third maximum proximity value or the third minimum proximity value is based at least in part on a percentage of the average proximity value.

[15] the second data includes a proximity value; attenuating the first maximum proximity value is based at least in part on determining that the one or more proximity values ​​are outside a first threshold range of the first maximum proximity value for a threshold time period; The controller of any one of claims

[10] to

[14] , wherein the attenuating of the first minimum proximity value is based at least in part on determining that the one or more proximity values ​​are outside a second threshold range of the first minimum proximity value for the threshold period.

Claims

1. 1. A method comprising: determining a range of proximity values ​​detected by a proximity sensor, the range including a maximum proximity value corresponding to a finger touching a controller having the proximity sensor and a minimum proximity value corresponding to the finger being extended from the controller, wherein the proximity sensor is adapted to detect an object proximate to but not touching the controller; receiving a proximity value from the proximity sensor; based, at least in part, on determining that one or more of the proximity values ​​received from the proximity sensor are outside a threshold range of at least one of the maximum proximity value or the minimum proximity value for a threshold period of time; continuously decaying said maximum proximity value; and continuously decaying said minimum proximity value; determining an updated range of proximity values ​​detected by the proximity sensor based at least in part on the continuously decaying of the maximum proximity value and the continuously decaying of the minimum proximity value; determining a scale factor for the proximity value detected by the proximity sensor based at least in part on the updated range of proximity values.

2. The method of claim 1 , wherein the successively decaying of the maximum proximity value and the successively decaying of the minimum proximity value are based at least in part on the range of proximity values ​​detected by the proximity sensor.

3. 3. The method of claim 1, wherein the proximity values ​​are received during a previous number of frames, the method further comprising determining an average value based on the proximity values ​​received during the previous number of frames, and wherein the successive decaying of the maximum proximity value and the successive decaying of the minimum proximity value are further based at least in part on the average value.

4. determining a first frequency at which to successively decay the maximum proximity value, the first frequency being based at least in part on a variability of the proximity values ​​received during a predetermined number of previous frames; determining a second frequency at which to successively decay the minimum proximity value, the second frequency being based at least in part on the variability of the proximity values ​​received during the predetermined number of previous frames; the successively decaying of the maximum proximity value is based at least in part on the first frequency; The method of claim 1 , wherein the successive decaying of the minimum proximity value is based at least in part on the second frequency.

5. the proximity value received from the proximity sensor corresponds to the object being in proximity to the controller, and the method further comprises: generating an indication corresponding to a proximity of the object to the controller; The method of claim 1 , further comprising transmitting the representation to one or more computing devices.

6. The proximity values ​​received from the proximity sensor include a first proximity value, and the method further comprises: Receiving a second proximity value; and successively attenuating the maximum proximity value and the minimum proximity value based at least in part on the second proximity value; determining an average value detected by the proximity sensor; the average value exceeds the maximum proximity value; or and determining at least one of: the average value being less than the minimum proximity value.

7. determining an updated maximum proximity value based at least in part on the average value exceeding the maximum proximity value; or and determining an updated minimum proximity value based at least in part on the average value being less than the minimum proximity value.

8. The average value is determined over a predetermined number of previous frames; the updated maximum proximity value is based at least in part on the average value determined over the predetermined number of previous frames; The method of claim 7 , wherein the updated minimum proximity value is based at least in part on the average value determined over the predetermined number of previous frames.

9. the proximity sensor includes a capacitive pad; Each capacitive pad is configured to generate the proximity value; A method according to any preceding claim, wherein the proximity value is associated with an object being in proximity to the controller.

10. A controller, a sensor adapted to detect an object proximate to, but not in contact with, the controller; one or more processors; One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to: receiving first data from the sensor; determining a range of proximity values ​​based at least in part on the first data, the range including a first maximum proximity value corresponding to a finger touching the controller and a first minimum proximity value corresponding to the finger being extended from the controller; Determining a first scale factor; receiving second data from the sensor comprising a proximity value; continuously decaying at least one of the first maximum proximity value or the first minimum proximity value based at least in part on determining from the second data that one or more of the proximity values ​​are outside a threshold range of at least one of the first maximum proximity value or the first minimum proximity value for a threshold time period; determining an updated range of proximity values ​​based at least in part on the continuously decaying, the updated range of proximity values ​​including at least one of a second maximum proximity value or a second minimum proximity value; Determining a second scale factor; and determining a proximity of an object to the sensor based at least in part on the second scale factor.

11. the first maximum proximity value being associated with a first proximity of the object to the sensor, and the first minimum proximity value being associated with a second proximity of the object to the sensor; The controller of claim 10 , wherein the second maximum proximity value is associated with the first proximity of the object to the sensor, and the second minimum proximity value is associated with the second proximity of the object to the sensor.

12. 12. The controller of claim 11, wherein the one or more non-transitory computer-readable media storing computer-executable instructions, when executed by the one or more processors, cause the one or more processors to perform acts further including: transmitting an indication of the proximity of the object to a computing device.

13. The one or more non-transitory computer-readable media storing computer-executable instructions, when executed by the one or more processors, cause the one or more processors to: determining an average proximity value; the average proximity value exceeds the second maximum proximity value; or the average proximity value being less than the second minimum proximity value; and The controller of claim 10 , further comprising: determining at least one of a third maximum proximity value or a third minimum proximity value.

14. The controller of claim 13 , wherein the third maximum proximity value or the third minimum proximity value is based at least in part on a percentage of the average proximity value.

15. The method of claim 1, wherein the continuously decaying of the first maximum proximity value is based at least in part on determining that the one or more proximity values ​​are outside a first threshold range of the first maximum proximity value for the threshold time period; 15. The controller of claim 10, wherein the continuously decaying of the first minimum proximity value is based at least in part on determining that the one or more proximity values ​​are outside a second threshold range of the first minimum proximity value for the threshold period.

Citation Information

Patent Citations

  • Method and device for dynamically adjusting sensitivity of touch screen

    CN104881174A

  • Musetsutenhijoyotentosochi

    JP1976057969A

  • Information processing equipment

    JP1982010846A

  • Cooling mechanism of lubricating fluid in gear device

    JP1984001870A

  • Method for preventing aging of food

    JP1985062949A