Detecting positions of a device based on magnetic fields generated by magnetic field generators at different positions of the device

A wearable device (such as a glove or other control adapted to be worn on a portion of a body) includes multiple magnetic field generators at various locations on the wearable device and a magnetic flux sensor at a predetermined position relative to the wearable device. A position determines spatial positions of locations of the wearable device based on magnetic fields generated by various magnetic field generators and detected by the magnetic flux sensor. In some embodiments, the magnetic field generators have known positions relative to each other. Additionally, each magnetic field generator may generate a magnetic field in response to an input signal having a particular attribute, allowing the magnetic flux sensor to identify magnetic fields generated by different magnetic field generators.

BACKGROUND

Use of wearable devices as well as virtual reality (VR) or augmented reality (AR) devices has become more commonplace. Conventional wearable, VR, or AR devices commonly receive voice inputs, gestures, inputs from interaction with one or more of a limited number of buttons on a wearable, VR, or AR device, or inputs from interaction with a limited touch area on the a wearable, VR, or AR device. However, many of these input mechanisms are inconvenient or awkward for users to implement in various contexts.

When used in conjunction with a head mounted display device, such as those used in virtual reality systems, conventional input mechanisms have additional complications. For example, interactions by a user with a virtual reality system generally expect continuous tracking of gesture input, rather than identification of discrete gestures, to simulate interaction with objects. Accordingly, conventional virtual reality systems use computer vision techniques for tracking movements of a user's body. However, computer vision techniques are limited to identifying gestures within a field of view of an image capture device and are limited when a portion of a user's body is occluded from the field of view of the image capture device. Some virtual reality systems use inertial measurement units positioned on portions of a user's body to track gestures, but the inertial measurement units suffer from drift error that requires more frequent sensor calibration to compensate.

SUMMARY

A wearable device (such as a glove or other control adapted to be worn on a portion of a body) includes a position sensing apparatus that determines spatial positions of points on the wearable device based on magnetic fields generated by magnetic field generators and detected by an array of magnetic flux sensors. In some embodiments, the sensors of the array have known or solved positions relative to one another. In some embodiments, the wearable device comprises an array of generators being tracked by an array of sensors with known or solvable positions; alternatively, the wearable device comprises an array of sensors being tracked by an array of generators with known or solvable positions.

For example, in the case of a glove, magnetic flux density sensors (or magnetic field strength sensors) positioned about the fingertips sense the positions of the fingertips in reference to a magnetic field generator located at a predefined location on or with respect to the glove. In one or more embodiments, a magnetic field generator (such as a permanent or electro magnet) is located at a predefined (e.g., known) location on the wearable device and generates a magnetic field that is fixed in relation to the wearable device (e.g., at the wrist position in the case of a glove). Alternatively, the magnetic field generator is located separately from the wearable device, but in a predetermined or known location and generates a magnetic field that varies in a predetermined manner in relation to the wearable device. For example, the magnetic generator may be placed on a table top or on a steering wheel of a car, in the case where magnetic flux sensors are placed on a wearable glove. In such a case, each fingertip includes a magnetic flux sensor and/or a magnetic field sensor that senses flux density and/or magnetic field strength and direction of the magnetic field generated by the magnetic field generator. Using a model of the expected magnetic field (which may be calibrated upon initial use), the spatial relationship between the fingertips and the fixed magnetic field generator are determined.

In alternative embodiments, the magnetic flux sensor is fixed in relation to the wearable device (e.g., on the wrist for a wearable glove or at a known predefined location), and magnetic field generators (e.g., electromagnets) are placed on each of the fingertips. In such embodiments, each magnetic field generator includes one or more electromagnets that can be independently driven to result in the creation of a three dimensional magnetic field with known AC characteristics and geometry. Furthermore, the magnetic fields generated by each of the electromagnets can be distinguished from magnetic fields generated by other electromagnets by controlling one or more of the AC characteristics of the field. For example, each electromagnet can be driven at a different frequency (e.g., frequency division multiplexing) for disambiguation from other electromagnets. Alternatively, each electromagnet can be driven at a different instance in time (e.g., time division multiplexing) for disambiguation from (and interoperability with) other electromagnets or undesired interference in the form of ambient or external magnetic flux.

DETAILED DESCRIPTION

FIGS. 1A-1Eillustrate frameworks within which spatial positions between magnetic sensors (MS) and magnetic field generators (MG) are determined, in accordance with one or more embodiments.

FIGS. 1A-1Billustrate a framework in a two dimensional (2D) magnetic field space for calculation of spatial relationships between magnetic generators and magnetic flux sensors.

In one or more embodiments, each magnetic field generator (MG) includes one or more magnets; each magnet of a given magnetic generator (MG) may be configured to generate a corresponding magnetic field 100 oriented along a distinct direction (e.g., a distinct coordinate axis) from other magnets of that magnetic generator. In some embodiments, a magnetic field generator (MG) comprises one or more programmable magnets (e.g., a polymagnet) that provide programmable (e.g., software-controlled) magnetic field properties. These programmable magnets enable control over and programmable variability of a number of magnetic poles, a density of magnetic poles (number of magnetic poles over a given surface area), a spatial orientation/configuration/layout of magnetic poles, magnetic field strength, a variation of magnetic field strength as a function of spatial coordinates (e.g., distance from the MG), focal points of the magnetic field, mechanical forces (e.g., attraction, repulsion, holding, alignment forces) between poles of the same polymagnet or between polymagnets, and so on.

Similarly, in one or more embodiments, each magnetic flux sensor (MS) includes one or more constituent sensing elements (e.g., one or more magnetometers). In some embodiments, each sensing element (magnetometer) is placed at a distinct known location with respect to other sensing elements within the magnetic flux sensor (MS), described in conjunction withFIG. 1C. Alternatively or additionally each sensing element (magnetometer) is configured to generate a signal responsive to a detected magnetic field that is oriented along a distinct direction (e.g., a distinct coordinate axis).

For an arbitrary location in the space, the strength of magnetic field H is proportional to two factors r (the distance between the sensing point to the magnet) and θ (the angle between the magnet's north and the sensor). In magnetism, H is usually decomposed to two orthogonal vectors (e.g., in radial space) Hrand Hθ. These two vectors are the basis in this 2D magnetic-field space and can be mathematically represented in terms of r and θ (as shown inFIG. 1A).
Hr=Mcos θ/2πr3(1)
Hθ=Msin θ/4πr3(2)
where M is magnetic moment. In the case of an electromagnet, the value of M related to the permeability of core material, current and area of the electromagnet. Given a constant AC current, M may be assumed to be a constant.

In one or more embodiments, to apply trilateration for spatial position estimation, the first step is to calculate the distance between the electromagnet and the sensors. Solving equations (1) and (2), the distance (r) and orientation (θ) can be calculated from the magnetic field (Hrand Hθ). However, there exists spatial ambiguity in the 3D space (as illustrated inFIG. 1B)—from a top view of the magnet, points located on a circle concentric with the axis of the magnet have the same field strength as they are all located at the same distance and angle from the magnet. With unknown sensor orientations, a sensor detects the same sensor measurement on these concentric positions, resulting in spatial ambiguity.

According to one or more embodiments, to resolve the spatial ambiguity, the total magnetic field strength is calculated based on equation (3):
∥H∥2=(Hr)2+(Hθ)2=K*r−6*(3 cos2θ+1)  (3)
where ∥H∥ is the norm-2 of the sensor vector, r and θ are the distance between sensors and electromagnet (same as in Eq. 1 and 2), and K is a constant. The constant K is a factor of constant M (e.g., K=M2/16π2). The constant K can be leveraged to redesign the electromagnets. Equation (3) comprises the two variables r and θ to be solved for.

In other words, the physical meaning behind this framework is to convert the 3D space into a “beacon system” in which the received signal strength (i.e., ∥H∥, the total magnetic field strength) relates to the distance from the signal source (i.e., r) and signal receiving angle (i.e., θ). The 1D projection can eliminate the need for searching unknown rotation angles of the magnet and can significantly reduce the system complexity.

Equation 3, however, is under-constrained due to the two variables (r, θ) to be solved for, from a single equation (e.g., from ∥H∥). Hence, the next step is to remodel these two variables and convert the system into an over-constrained system.

To this end, a fixed and/or known sensor layout is used to define a coordinate system (e.g., as illustrated inFIG. 1C). In one or more embodiments, and in the coordinate system130ofFIG. 1C, sensing element (sensor) S1is used as the origin and the coordinates of the other three sensing elements (sensors) S2, S3, S4can be ascertained with respect to the coordinates of S1. For instance, in the illustration ofFIG. 1C, sensing elements S1, S2and S3are coplanar while S4is positioned above S1along a direction orthogonal to the plane in which S1, S2and S3are positioned.

FIG. 1Cillustrates a coordinate system130system for trilateration and determination of spatial positions of magnetic generators and flux sensors, according to one or more embodiments. In some embodiments, the coordinate system130ofFIG. 1C, illustrates a single magnetic flux sensor (MS) that includes a plurality of constituent sensing elements (e.g., magnetometers S1, S2, S3, and S4). Alternatively, each magnetometer (e.g., magnetometers S1, S2, S3, and S4) of the coordinate system130may correspond to a distinct magnetic flux sensor (MS).

The two variables (r, θ) of equations (1)-(3) are replaced with the electromagnet's 3D position (x, y, z) in the coordinate system ofFIG. 1C. In other words, given this coordinate system130, two variables (r, θ) can be represented in terms of the electromagnet's 3D positions (x, y, z) using equations (4) and (5):
r1=(x2+y2+z2)1/2(4)
cos θ1=z/r1(5)
Similarly, these three shared variables (x, y, z) can be substituted into the equation (3) for the other three sensors, resulting in equations (6)-(11):
r2((x+1)2+(y−1)2+z2)1/2(6)
cos θ2=z/r2(7)
r3=((x−1)2+(y−1)2+z2)1/2(8)
cos θ3=z/r3(9)
r4=(x2y2+(z−1)2)1/2(10)
cos θ4=z/r4(11)

The resulting system of equations is over-constrained and has four equations (of Eq. 3) from each of four sensors to be solved for three shared variables (x, y, z). In some embodiments, where the magnetic field generator (MG) comprises a programmable magnet (e.g., a polymagnet), magnetic field properties of the MG are programmable, controllable, and/or reconfigurable. In some embodiments, the programmable, controllable, and/or reconfigurable magnetic field properties include a number of magnetic poles, a density of magnetic poles (e.g., number and distribution of magnetic poles over a given surface area of the MG), a spatial orientation/configuration/layout of magnetic poles, magnetic field strength, a variation of magnetic field strength as a function of spatial coordinates (e.g., distance from the MG), focal points of the magnetic field, mechanical forces (e.g., attraction, repulsion, holding, alignment forces) between poles of the same polymagnet or between polymagnets, and so on. For example, a spatial flux density or flux orientation mapping can be programmed or configured (e.g., to be distinct from the spatial flux density relationship described in equations (1) and (2)) to uniquely or distinctly encode position and/or orientation of different magnets and/or different sensors. In some embodiments, polymagnets and programmable magnetic sensors could be programmed to provide stronger magnetic fields, or fields concentrated within shorter ranges to improve resolution and accuracy of position sensing within the shorter sensing ranges.

In some embodiments, when the magnetic field generator (MG) is a programmable magnet or an electromagnet, the signals applied to the magnetic field generator to generate the magnetic field (e.g., frequency or time division multiplexed signals) are optionally pre-processed or normalized by a function of or corresponding to 1/r3corresponding to the effect of spatial distance on the magnetic field components in radial coordinate space. For example, a “non-affine” transformation may be applied to the signals applied to the magnetic field generator to transform the input signals based on a normalization function corresponding to 1/(r3) in radial coordinate (r, θ) space.

FIG. 1Dillustrates an alternative 3-dimensional framework140for determining spatial position vectors in 3D Cartesian space for a configuration with a single magnetic flux sensor (MS)110and single magnetic generator (MG)120.

In some embodiments, a spatial position is expressed as a vector with multiple components representing spatial coordinates (positions and/or orientations) in a multi-dimensional space. For example, in a three dimensional (3D) coordinate system, the vector components of a spatial position vector include Cartesian distances along three orthogonal Cartesian coordinate axes (X, Y, Z) and/or angular orientation (angles α, φ, ψ) defined with respect to three mutually perpendicular Cartesian axes (X, Y, Z) or mutually perpendicular Cartesian planes (YZ, XZ, and XY). In some embodiments, the spatial position vectors may include Cartesian distances along three orthogonal Cartesian coordinate axes (X, Y, Z), but not the angular orientations (angles α, φ, ψ).

In one or more embodiments, each magnetic field generator (MG)120includes one or more magnets; each magnet of a given magnetic generator (MG)120may be configured to generate a corresponding magnetic field oriented along a distinct direction (e.g., a distinct coordinate axis) from other magnets of that magnetic field generator120. In some embodiments, a magnetic field generator120includes three magnets, the three magnets generating three orthogonal magnetic fields along three orthogonal Cartesian coordinate axes (Hx, Hy, and Hz, as illustrated for MG120inFIG. 1D).

Similarly, each magnetic flux sensor (MS)110includes one or more constituent sensing elements (e.g., one or more magnetometers), each sensing element (magnetometer) configured to generate a signal responsive to a detected magnetic field that is oriented along a distinct direction (e.g., a distinct coordinate axis). For example, a magnetic flux sensor (e.g., MS110ofFIG. 1D) includes three sensing elements (such as hall-effect sensors) configured to generate (output) corresponding signals (e.g., current outputs) that are proportional to and responsive to magnetic fields along the three different orthogonal axes (X, Y, and Z) of a three dimensional spatial coordinate system.

In such embodiments, a spatial position vector (e.g., vector V, as illustrated inFIG. 1D) may be defined for each pairing of magnetic field generator120and magnetic flux sensor110to represent Cartesian distances along three orthogonal Cartesian coordinate axes (X, Y, Z) between the magnetic field generator120and the magnetic flux sensor110included in the pairing. The spatial position vector may also include angular orientations represented as angles (α, φ, ψ) between the magnetic field axes of the MG120(e.g., Hx, Hy, and Hz) and the sensing axes of the MS110(e.g., X, Y, and Z). The angles may alternatively be computed with respect to the three mutually perpendicular Cartesian planes (YZ, XZ, and XY) that are defined either for the MS110or the MG120.

FIG. 1Eillustrates a 2-dimensional framework150for determining spatial position vectors in 2D Cartesian space for a configuration with a single magnetic flux sensor (MS)110and multiple magnetic generators (MGs)120-1,120-2, and120-n.

In some embodiments, the magnetic fields (H1x, H1y; H2x, H2y; Hnx, Hny) from the different magnetic generators120-1,120-2,120-nare distinguishable from each other, allowing the magnetic flux sensor110to be able identify magnetic fields from different magnetic generators MG120-1,120-2,120-n, allowing separate determination of positions of different magnetic generators MG120-1,120-2,120-n.

As illustrated inFIG. 1Dfor the first magnetic field generator MG120-1with reference to the magnetic flux sensor MS110, a spatial position vector (V1) including the Cartesian distances (x1, y1) and angular orientations (α1, φ1), can be computed based on the signals detected by the MS110responsive to the magnetic fields (H1xand H2x) generated by MG120-1.

Similarly, as illustrated inFIG. 1E, a spatial position vector (V) including the Cartesian distances (x, y, z) and angular orientations (α, φ, ψ), can be computed based on the signals detected by a MS110responsive to the magnetic fields (Hx, Hy, and Hz) generated by a MG120-1,120-2,120-nin a 3D Cartesian space.

In some embodiments, in a 3D coordinate system, the spatial ambiguity in positions in the 3D sensor space (explained above in conjunction withFIGS. 1A-1B) is resolved by performing 2D projections from the 3D space to a 2D magnetic field space. This 2D projection involves three unknown rotation angles and can be mathematically indicated as below:

where H is a sensor vector and TR,P,Yis a rotation matrix with three unknown variables R (Raw), P (Pitch) and Y (Yaw) corresponding to angular orientations (α, φ, ψ), to project the 3D sensor space to the 2D magnetic-field space. As equation (12) is an under-constrained system, there are three equations (Hx, Hy, Hz) for determining five unknown variables (R, P, Y, r, θ). In some embodiments a searching process that determines a global optimal solution is used to solve for the unknown variables (e.g., R, P, Y).

Common Reference Magnetic Field Generator and Different Magnetic Sensors on Different Fingers

FIG. 2illustrates positions of multiple magnetic flux sensors (MS)210-1,210-2,210-nand a magnetic field generator (MG)220. In the embodiment shown inFIG. 2, a plurality of magnetic flux sensors210-1,210-2,210-nare shown in relation to a hand, where different magnetic flux sensors210-1,210-2,210-nare located at various fingers of the hand are coupled to a common magnetic field generator220located at or near the wrist of the hand The magnetic flux sensors210-1,210-2,210-nand magnetic field generator220may be coupled to or provided within a wearable glove to be worn around the hand.

As illustrated inFIG. 2, one or more magnetic flux sensors (MS)210-1,210-2,210-nare positioned on one or more fingertips, and a common magnetic generator MG220is positioned at a predefined location (e.g., at the wrist). In some embodiments, and as explained with reference toFIGS. 1A-1E, each of the magnetic flux sensors210-1,210-2,210-nmay include one or more sensing elements. For example, each magnetic flux sensor210-1,210-2,210-nincludes a plurality of sensing elements having predefined, known, or solvable positions relative to each other, as further described above with reference to sensing elements S1, S2, S3, and S4of the coordinate system130ofFIG. 1C. Alternatively, each magnetic flux sensor210-1,210-2,210-ncorresponds to a sensing element (e.g., magnetometers S1, S2, S3, and S4of the coordinate system130ofFIG. 1C) having a solvable or known spatial location relative to other magnetic flux sensors210-1,210-2,210-n.

In some embodiments, the magnetic generator (MG)220includes a single permanent magnet or electromagnet. In alternative embodiments, the magnetic generator (MG)220includes a plurality of permanent magnets having distinct (e.g., and known or solvable) relative spatial positions and/or different (e.g., and known or solvable) relative orientations. In alternative embodiments, the magnetic generator (MG)220includes one or more programmable magnets (e.g., polymagnets) with programmable, controllable, and/or reconfigurable magnetic properties.

Each magnetic flux sensor210-1,210-2,210-noutputs a signal (or combination of signals) responsive to the magnetic fields (Hx, Hy, Hz; or Hrand Hθ) generated by the MG220, and detected at the respective magnetic flux sensor210-1,210-2,210-n. The magnetic fields for the magnetic field generator220may be expressed as vector components (Hrand Hθ), as further described above with reference toFIGS. 1A-1B. As further described above in conjunction withFIGS. 1A-1E, spatial position vectors V1, V2, and Vn are computed that correspond to each magnetic flux sensor210-1,210-2,210-n(e.g., V1corresponds to magnetic flux sensor210-1, V2corresponds to magnetic flux sensor210-2, and Vn corresponds to magnetic flux sensor210-n) based on signals output from the respective magnetic flux sensor210-1,210-2,210-n.

The spatial vectors V1, V2, Vn, represent positions of the magnetic generator (MG)220with respect to each of the magnetic flux sensors210-1,210-2,210-n. From the spatial vectors V1, V2, Vn, positions of the magnetic flux sensors210-1,210-2,210-n(and the corresponding fingertips) relative to the common the magnetic field generator220are determined.

In some embodiments, a model of an expected magnetic field is calibrated upon initial use for various positions of the magnetic flux sensors210-1,210-2,210-nwith respect to the location of the magnetic field generator220(with the positions of the magnetic flux sensors210-1,210-2,210-nacting a proxies for the positions of various fingertips). Using the calibrated model, the spatial relationships between the magnetic flux sensors210-1,210-2,210-nand the fixed magnetic field generator220are determined at run-time.

Common Magnetic Flux Sensor and Different Magnetic Field Generators on Different Fingers

FIG. 3illustrates positions of a magnetic flux sensor (MS)310and multiple magnetic field generators (MG)320-1,320-2,320-nin relation to a hand. In the example ofFIG. 3, a plurality of magnetic field generators320-2, MG320-nare positioned on different fingers of the hand and are coupled to a common magnetic flux sensor310located at or near the wrist of the hand. The magnetic flux sensor310and magnetic field generators320-1,320-2,320-nillustrated inFIG. 3may be coupled to or provided within a wearable glove to be worn around the hand.

In some embodiments, and as further described above in conjunction withFIGS. 1A-1E, the magnetic flux sensor310may include one or more sensing elements. For example, magnetic flux sensor310includes a plurality of sensing elements having predefined, known, or solvable relative positions, as further described above with reference to sensing elements S1, S2, S3, and S4of the coordinate system130ofFIG. 1C.

In some embodiments, each of the magnetic generators320-1,320-2,320-nincludes a single permanent magnet or electromagnet. In alternative embodiments, a single magnetic generator320-1,320-2,320-nincludes a plurality of permanent magnets having distinct (e.g., and known or solvable) relative spatial positions and/or different (e.g., and known or solvable) relative orientations. In alternative embodiments, a single magnetic generator320-1,320-2,320-nincludes one or more programmable magnets (e.g., polymagnets) with programmable, controllable, and/or reconfigurable magnetic properties.

As illustrated inFIG. 3, the common magnetic flux sensor310is positioned at a predefined location. For example, the magnetic flux sensor310is positioned on a wrist of the hand or at another predefined location. In the example ofFIG. 3, each magnetic field generator320-1,320-2,320-n, are placed on different fingertips of the hand.

In some embodiments, each magnetic field generator320-1,320-2,320-nincludes one or more electromagnets that can be independently actuated based on current provided through a current carrying coil to generate orthogonal magnetic fields (H1x, H1y, H1z; H2x, H2y, H2z; and so on). The magnetic fields for each of the magnetic field generators MG320-1,320-2,320-ncan be expressed as vector components (Hrand Hθ) as further described above in conjunction withFIGS. 1A-1B.

Furthermore, in embodiments where the magnetic field generators320-1,320-2,320-nare electromagnets, the magnetic fields generated by each of electromagnet may be distinguished from magnetic fields generated by other electromagnets by controlling one or more attributes (e.g., frequency, timing, modulation codes/patterns) of the stimulating current provided to various electromagnets. For example, each electromagnet is stimulated at a different frequency for disambiguation (based on frequency division multiplexing) from other electromagnets. Accordingly, signals detected by the magnetic flux sensor310are capable of being uniquely associated with a particular electromagnet based on a frequency of the signals. Alternatively, each electromagnet can be stimulated at a different time for disambiguation (e.g., time division multiplexing) from other electromagnets. Accordingly, signals detected by the magnetic flux sensor310can be uniquely associated with a particular electromagnet based on a time interval when the magnetic flux sensor310detected the signals.

In the example ofFIG. 3, one or more magnetic field generators320-1,320-2,320-nare positioned on one or more fingertips of a hand and a common magnetic flux sensor310is positioned at a predefined location (e.g., at the wrist). The magnetic flux sensor310outputs a signal (or combination of signals) responsive to magnetic fields generated by each magnetic field generator320-1,320-2,320—that are detected by the magnetic sensor310. Spatial position vectors V1, V2, and Vn are computed, as described with reference toFIG. 1A-1Babove, from the signal output by the magnetic flux sensor310, in response to a magnetic field detected from various magnetic field generators320-1,320-2,320-n. For example, spatial position vector V1corresponds to an output from the magnetic flux sensor310based on a magnetic field detected from magnetic field generator320-1; similarly, spatial position vectors V2and Vn correspond to outputs from the magnetic flux sensor310based on a magnetic field detected from magnetic field generator320-2and from magnetic field generator320-n, respectively. The spatial vectors V1, V2, and Vn, are used to determine the positions of the magnetic field generators320-1,320-2,320-n, which act as a proxy for the positions of different fingertips, in reference to the location of the magnetic flux sensor310.

FIG. 4illustrates one embodiment of a system400for position and location sensing of magnetic generators (MG)420-1,420-2,420-nrelative to a magnetic flux sensor (MS)410. In various embodiments, the system400may include different or additional components than those described in conjunction withFIG. 4. Additionally, functionality provided by different components described below in conjunction withFIG. 4may be differently allocated among various components of the system400in some embodiments.

In the example shown inFIG. 4, the system400includes the magnetic flux sensor410and one or more additional sensors425. Additionally, the system400includes one or more magnetic field generators420-1,420-2,420-n, as further described above in conjunction withFIGS. 2 and 3. The additional sensors425may include inertial sensors such as accelerometers and gyroscopes. The system400also includes a bias/driving circuit440for providing bias signals (such as power and other operating signals) and driving signals (such as stimulating/driving currents and voltages) to the magnetic flux sensor410, to the one or more additional sensors425, and to the magnetic field generators420-1,420-2,420-n. The driving signals provided to each of the magnetic field generators420-1,420-2,420-nmay be disambiguated from the corresponding driving signals provided to other magnetic field generators420-1,420-2,420-nbased on attributes such as frequency, timing, modulation codes, modulation patterns, and so on. The measurement circuit430detects and selects signals from the magnetic flux sensor410and the one or more additional sensors425and optionally preconditions (e.g., filters, amplifies, denoises) the detected signals. The magnetic flux sensor410may have a sensing element that is resonant to certain frequencies and may be tuned to respond to those frequencies, allowing the magnetic flux sensor410to detect magnetic fields generated by different magnetic field generators420-1,420-2,420-nthat operate on different frequencies. For example, the measurement circuit430includes bandpass filters that are each centered at different frequencies to extract and differentiate the magnetic fields detected from different individual magnetic field generators420-1,420-3,420-n. In one implementation, the bandpass filters are 6th-order finite impulse response (FIR) filters with a 3 dB cutoff at +2 and −2 Hz from a center frequency. If a data rate of the system400is 320 samples/second, the usable bandwidth is about 160 Hz, so different magnetic field generators420-1,420-2,420-nmay be operated at 70 Hz, 85 Hz, 100 Hz, 115 Hz and 125 Hz in one embodiment.

The measurement circuit430may include an analog demodulator and selection filter which serves to convert the detected signal to a baseband (frequency range having signal content of interest). Additionally, the measurement circuit430may include a digital signal processor to digitally filter the detected or baseband-converted signal to further select frequency components of interest. The position analyzer450receives output from the measurement circuit430and generates spatial position vectors (V1, V2, Vn, and the like), corresponding to each pair of a magnetic field generator420-1,420-2,420-nand the magnetic flux sensor410. A spatial position vector corresponding to a pair of a magnetic field generator420-1and the magnetic flux sensor410represents a position of the magnetic field generator420-1relative to the magnetic flux sensor410. The orientation analyzer460determines an orientation of a hand of a user proximate to, or contacting, the magnetic field generators420-1,420-2,420-n, based on the signals captured by the one or more additional sensors425(e.g., inertial sensors, such as accelerometers and gyroscopes optical sensors or imaging sensors such as cameras). In some embodiments, the axes of the one or more additional sensors425are aligned to the measurement axes of the magnetic flux sensors420-1,420-2,420-nto enable direct use or application of angular orientations measured with reference to the magnetic field axes of magnetic fields generated by the magnetic field generators420-1,420-2,420-n. In such embodiments, by augmenting each magnetic generator420-1,420-2,420-nwith an additional sensor425(e.g., an inertial measurement unit comprising an accelerometer and gyroscope) and calculating the orientation of the magnetic generator420-1,420-2,420-nrelative to a known frame of reference (e.g., a point relative to the inertial measurement unit or a point within the internal measurement), 6 degrees of freedom (DOF) of the magnetic field generators420-1,420-2,420-n(3 DOFs from the accelerometer and 3 DOFs from the gyroscope) may be determined.

In one or more embodiments, system400also includes a stimulus generation circuit470configured to generate signals that modify biasing and driving properties of the magnetic flux sensor410, the one or more additional sensors425, and the one or more magnetic field generators420-1,420-2420-nbased on the measured or detected signals. The stimulus generation circuit470may receive signals from the position analyzer450and from the orientation analyzer450, or from the measurement circuit430, and modify one or more properties of the magnetic fields generated by the magnetic field generators420-1,420-2,420-nbased on the received signals.

The spatial positions and the hand orientation may be combined to determined locations of fingertips or other portions of the hand. In some embodiments, a location of a fingertip corresponds to absolute coordinates in a three dimensional (3D) space given a fixed reference system such as a geo-positioning system defined relative to the Earth (e.g., in terms of longitude/latitude). In such embodiments, a location corresponds to coordinates defined relative to a referenced coordinate system (e.g., such as the coordinate system130ofFIG. 1Cwhere an electromagnet's position is computed relative to the known sensors).

FIG. 5is a flowchart of one embodiment of a method for determining positions of magnetic field generators coupled to portions of a device relative to a magnetic flux sensor. In various embodiments, the method may include different or additional steps than those described below in conjunction withFIG. 5. Additionally, in some embodiments, steps of the method may be performed in different orders than the order described in conjunction withFIG. 5.

One or more magnetic fields are generated505by one or more magnetic field generators, such as those described above in conjunction withFIGS. 2 and 3, positioned on a wearable device. One or more magnetic flux sensors, such as those further described above in conjunction withFIGS. 2 and 3, are positioned at predetermined positions relative to the wearable device. For example, a magnetic flux sensor is positioned at a predetermined position on the wearable device. Alternatively, a magnetic flux sensor is positioned at a predetermined position external to the wearable device. Responsive to the generated magnetic fields, a magnetic flux sensor generates510one or more output signals. An output signal generated510by the magnetic flux sensor is based on a strength and a direction of a magnetic field generated505by one or more magnetic field detected by the magnetic flux sensor. As described above in conjunction withFIGS. 3 and 4, an output signal may generated510by the magnetic flux sensor based on a direction and an orientation of a magnetic field generated by a particular magnetic field generator, so different output signals are generated510based on directions and orientations of magnetic fields generated by different magnetic field generators and detected by the magnetic flux sensor.

Based on the output signals from the magnetic flux sensor, spatial vectors representing relative positioning for each pairing of the magnetic flux sensor and a magnetic field generator are determined520. For example, the position analyzer described above in conjunction withFIG. 4receives output signals from the magnetic flux sensor and determines520spatial vectors representing relative positions of each magnetic field generator relative to the magnetic flux sensor. Relative positions for portions of the wearable device corresponding to positions of the magnetic field generators (e.g., fingertip positions of a wearable glove) are determined based on the spatial vectors.

In some embodiments, and as described with reference toFIGS. 1A-1C, the spatial localization algorithm comprises:

(1) Sensing or measuring (and optionally storing) the magnetic vector H from one or more magnetic flux sensors for one or more of the magnetic generators.

(2) For each axis in H (i.e., for each component of the magnetic field vector H such as Hx, Hy, Hz; or Hrand Hθ), applying a bandpass filter to extract magnetic fields emitted from individual electromagnets and, optionally, extracting envelopes of filtered data using the Hilbert transform.

(3) Calculating the total magnetic field strength (e.g., as the norm-2 of H (using eq. (3)).

(4) Performing a coordinate transform to a Cartesian coordinate space (e.g., to express the components of the magnetic field vector H as functions of 3D Cartesian variables (x, y, z)) to obtain a new set of equations expressing the measured components of the magnetic field vector H in terms of (as functions of) the 3D Cartesian variables. In some embodiments, performing the coordinate transform comprises substituting variables of a radial coordinate system (e.g., the two variables r and θ in Eq. 3) with 3D Cartesian coordinate system variables (x, y, z). In some embodiments, the coordinate transform is performed using Eqs. 4 to 11.

(5) Computing a magnetic field generator's 3D position in terms of the 3D Cartesian coordinate system variables (x, y, z) by solving the new set of equations expressing the measured components of the magnetic field vector H in terms of (as functions of) the 3D Cartesian variables.

In one or more embodiments, additional signals from one or more additional sensors, such as those described above in conjunction withFIG. 4, are obtained540. For example, one or more additional sensors are inertial sensors (such as accelerometers and gyroscopes). An orientation of the wearable device (e.g., of a hand wearing the glove) is determined550using the additional signals in various embodiments. Locations of portions of the wearable device (e.g., locations of the fingers on a glove) are determined560by combining the position vectors and the orientation information.

In one or more embodiments, the disclosed systems and methods for position sensing (e.g., sensing of fingertip positions) are used in conjunction with a virtual reality (VR) system. For example, the disclosed methods for detecting positions of fingers or other body parts are used to provide information about or to render a state of a body part (e.g., a hand) of a user contacting portions of the wearable device in a VR environment that one or more portions of or VR world. For example, states of a hand (e.g., open, closed, pointing, gesturing, etc.) contacting the wearable device are be determined based on the detected positions or locations of fingers or finger tips of the hand.