Cascade communication from sensing device to link section
Through the cascade communication system and inertial measurement unit, the whole body motion capture is achieved in an uncontrolled environment, and the problems of environmental limitations and high costs in the prior art are solved, and the portable, low-cost, and calibration-free motion capture effect is achieved.
Patent Information
- Application Number
- CN202380029655.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-03-23
- Filing Date
- 2023-03-23
- Publication Date
- 2025-01-03
AI Technical Summary
The prior art is difficult to achieve full-body motion capture in an uncontrolled environment, especially in the absence of multiple camera perspectives, and traditional systems are expensive and restrict user movement, requiring special equipment and frequent calibration.
Using a cascading communication system, multiple sensors (such as inertial measurement units) are used to capture motion data on the user's body, and communicate wirelessly with the computing device through the link device to achieve full-body motion capture without the need for an external camera. The system design is light and low Cost, no manual calibration required for users.
It realizes portable whole-body motion capture in an uncontrolled environment, reducing system costs and energy consumption, avoiding restrictions on user motion, and no frequent calibration is required.
Smart Images

Figure CN119255749A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 322,984, filed on March 23, 2022, entitled “FULL BODY MOTION CAPTURE IN UNCONTROLLED ENVIRONMENTS,” which is expressly incorporated by reference into this application. Background Art
[0003] Full body motion capture (also known as motion capture) refers to the process of recording human body movements and storing these movements digitally. For example, it can be used in medical, film, video games, sports, military and robotic applications. In medical applications, full body motion capture can be used to track the patient's movements to diagnose and track the treatment of movement disorders (e.g., Parkinson's disease). In filmmaking and video game development, full body motion capture is used to record the movements of human actors and use this information to animate digital representations of human actors and their movements in two-dimensional or three-dimensional space. In sports, full body motion capture can provide real-time feedback on various movements, similar to training with a coach. Summary of the invention
[0004] The embodiments described and claimed herein solve the above problems by providing a cascade communication system, the cascade communication system comprising:
[0005] a first sensing device, the first sensing device comprising one or more sensors for generating data and storing the data in a first buffer, and a first microcontroller for extracting samples of the buffered data and placing the samples in a first data packet transmitted outwardly from the first sensing device at a time slot assigned to the first sensing device with reference to a first sensing device clock signal;
[0006] a second sensing device, the second sensing device comprising one or more sensors for generating data and storing the data in a second buffer, and a second microcontroller for extracting samples of the buffered data and placing the samples in a second data packet transmitted outwardly from the second sensing device at a time slot assigned to the second sensing device with reference to a second sensing device clock signal; and
[0007] A linking device, the linking device is connected to a first sensing device and a second sensing device, and the linking device is configured to: receive a first data packet from the first sensing device; confirm the receipt of the first data packet using a first outbound confirmation packet including instructions for modifying the timing of a next data packet to be sent out from the first sensing device to more closely match a time slot assigned to the first sensing device by a reference linking device clock signal; receive a second data packet from the second sensing device; and confirm the receipt of the second data packet using a second outbound confirmation packet including instructions for modifying the timing of a next data packet to be sent out from the second sensing device to more closely match a time slot assigned to the second sensing device by a reference linking device clock signal.
[0008] Other implementations are also described and listed herein. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] Figure 1 A full body motion capture system for use in an uncontrolled environment is shown in accordance with the disclosed technology.
[0010] Figure 2 An example tracker for a full body motion capture system utilizing a three-sensor inertial measurement unit (IMU) to determine the tracker's orientation in an uncontrolled environment is shown.
[0011] Figure 3 A user's arm is shown with a tracker attached to determine the position of the limb in an uncontrolled environment.
[0012] Figure 4 Example operations using a full body motion capture system used in an uncontrolled environment in accordance with the disclosed techniques are shown.
[0013] Figure 5 A full body motion capture system with cascaded communication between a link and a tracker connected thereto is shown in accordance with the disclosed technology.
[0014] Figure 6 A cascade communication system with cascade communication between a link device and a sensing device connected thereto according to the disclosed technology is shown.
[0015] Figure 7 An example operation of a full body motion capture system with cascaded communication between a link and a tracker connected thereto using techniques consistent with the present disclosure is shown.
[0016] Fig. 8AAn example charging hub is shown with associated tracker and link portions, each of which utilizes low power near-beam wireless inductive charging from the charging hub.
[0017] Figure 8B An example low power near beam wireless inductive charging circuit is shown.
[0018] Fig. 9 Example operations using a low power near beam wireless charging hub are shown.
[0019] Fig.10 An example system diagram is shown of a computing environment suitable for executing a full body motion capture system in accordance with the disclosed techniques. DETAILED DESCRIPTION
[0020] During full-body motion capture, the motion of one or more users is recorded from multiple camera perspectives within a controlled environment and sampled multiple times per second to calculate the user's position and motion in three-dimensional space. Typical modern motion capture systems typically use infrared cameras that track infrared (IR) light emitting diodes (LEDs) on an object or object of interest. Although controlled environments with multiple camera perspectives may be practical in filmmaking and video game development environments, such conditions may not exist for medical applications that track users at home and elsewhere. In some cases, users may move around in large outdoor areas where the camera perspective may be out of range, obscured by weather or terrain, or blocked by other users in the field of view. In addition, even if a controlled environment with multiple camera perspectives could be provided, it may not be economically practical.
[0021] Other prior art systems can achieve full body motion capture without external cameras; however, these systems are often expensive, restrict the user's movement to a designated area, require the user to wear a specialized full body suit, require a large number of devices, may be completely wired and / or require energy-consuming WiFi connections. These systems also typically require a thorough calibration procedure before each use and may lose calibration when moved to different areas.
[0022] The disclosed technology relates to systems and methods for providing full body motion capture in uncontrolled environments where the use of multiple known camera angles is impossible or impractical. The proposed solution is not limited and enables portable full body motion capture in uncontrolled environments without the need for manual recalibration by the user.
[0023] Figure 1A full body motion capture system 100 is shown for use in an uncontrolled environment. Trackers (T) (e.g., tracker 102) represent measurement devices worn at different points on a user's body 108 to capture the motion of the user's body. The trackers (T) may be strategically placed and spaced apart on the user's body 108 to capture the relative motion of different parts of the user's body 108 (e.g., the motion of the user's head, torso, arms, legs relative to each other and the overall motion of the user's body 108).
[0024] Each tracker (T) has a device housing that can have various sizes and shapes and have various internal components. In some embodiments, each tracker (T) is generally prismatic with a rounded top surface and includes at least one set of sensors that are combined with a computing device referred to herein as an inertial measurement unit (IMU) to determine orientation. For example, each tracker (T) can be equipped with an inertial sensor or an accelerometer, a magnetometer, and a gyroscope. Combined with the anatomical constraints imposed by the position of the user's body 108 where the tracker (T) is located, the output of the sensor allows the system 100 to achieve full-body motion capture without the use of an external camera. In addition, the dimensions of each tracker (T) can be approximately 26mm×26mm×8mm (all dimensions are + / -5mm).
[0025] Each tracker (T) may be further equipped with a wireless transmitter that transmits the orientation of the tracker (T) to the link portion (L) 104 using a short-range (low-power) wireless communication protocol (e.g., Bluetooth, Zigbee, ShockBurst (SB), Enhanced ShockBurst (ESB), or a custom short-range communication protocol, etc.) operating on various radio frequency bands (e.g., 2.4 GHz ISM band). The link portion (L) 104 may also be placed on the user's body 108 and include a wireless receiver. When the link portion (L) 104 may also be connected to a computer via USB, the link portion (L) 104 does not need to be placed on the user's body 108 due to its wireless functionality. In other embodiments, the link portion (L) 104 functionality may be combined with one or more trackers (T) or computing devices 106 in a single device worn on the user's body 108. Link portion (L) 104 is used to receive and merge orientation data received from trackers (T) via a communication link (e.g., communication link 110, also referred to herein as a tracker orientation signal). In other embodiments, each tracker (T) is individually wired to link portion (L) 104 in addition to or in lieu of a wireless communication link.
[0026] The link portion (L) 104 may be equipped with a wireless transmitter that transmits the relative motion of the tracker (T) to a computing device 106 (e.g., a smartphone, smartwatch, tablet, laptop, desktop computer, etc.) via a communication link 112 that may carry a single body motion capture signal using a short-range (low-power) wireless communication protocol (e.g., Bluetooth, Zigbee, etc.). In various embodiments, the computing device 106 may be separate from the user's body 108 but in close proximity, as shown in the figures, or may be worn on the user's body 108 similar to the link portion (L) 104 and the tracker (T). In other embodiments, the link portion (L) 104 is wired to the computing device 106 in addition to or in lieu of the wireless communication link 112. In some embodiments, devices other than the tracker (T) (e.g., haptic devices) may be connected to the link portion (L) 104 and become part of the system 100.
[0027] Alternatively or additionally, the wireless transmitter may utilize a medium-range (medium power) wireless communication protocol (e.g., WiFi) to transmit the relative motion of the tracker (T) to a computing device 106 that may be located further away (e.g., in the same room or building, but not within the user's reach). Alternatively or additionally, the wireless transmitter may utilize a long-range (high power) wireless communication protocol (e.g., a cellular data network with Internet access) to transmit the relative motion of the tracker (T) to a computing device 106 or cloud computing storage device located anywhere within the range of the long-range data network (e.g., any geographic location connected to the Internet).
[0028] In various embodiments, the link portion (L) 104 includes the ability to receive signals from the tracker (T) using a first communication protocol and to send signals to the computing device 106 using a second different communication protocol. In addition, the link portion (L) 104 may have the ability to flow to two different communication protocols simultaneously. The link portion (L) 104 is also capable of merging the signals received from the tracker (T) into a single outbound data stream sent to the computing device 106.
[0029] The tracker (T) and link portion (L) 104 are intended to be lightweight, small, unobtrusive to the user, and low cost. Because the tracker (T) only uses sensors that may be present in a smartphone to track orientation (rather than tracker position), the tracker (T) is less expensive and uses less power than similar trackers that can also be used to determine tracker position. In addition, by utilizing a general purpose computing device 106 that the user already has (e.g., the user's smartphone), the full body motion capture system 100 avoids the additional cost of a dedicated computing device. Although in Figure 1The user is shown wearing 10 trackers (T), but in other embodiments, the user may wear 5-15 trackers (T) for various levels of full body motion capture resolution.
[0030] Figure 2 An example tracker 202 of a full body motion capture system is shown that utilizes a three-sensor inertial measurement unit (IMU) 214 to determine the orientation of the tracker in an uncontrolled environment. The tracker 202 is equipped with at least three sensors that are collectively combined with a computing device referred to herein as an inertial measurement unit (IMU) 214 to determine relative motion. The IMU 214 includes an inertial sensor or accelerometer 216, a magnetometer 218, and a gyroscope 220. In combination with the anatomical constraints imposed by the user's body position at which the tracker 202 is located, the outputs from the accelerometer 216, magnetometer 218, and gyroscope 220 allow the tracker 202 to be used in conjunction with other similar trackers (e.g., see Figure 1 The tracker (T) is combined with the real-time tracking device (RT) to achieve full-body motion capture without the use of external cameras.
[0031] The overall orientation of the tracker 202 is defined by its rotation along three principal axes: pitch axis 222, roll axis 224, and yaw axis 226. Although roll, pitch, and yaw are discussed for simplicity of description, four-dimensional quaternions may be used in actual implementations to avoid discontinuities. In an example embodiment, assuming no movement of the user's body, the accelerometer 216 is primarily used to determine the orientation of the tracker 202 along two axes (e.g., along the pitch axis 222 and the roll axis 224, but not along the yaw axis 226). The magnetometer 218 is primarily used to determine the orientation along the yaw axis 226. In combination, the accelerometer 216 and the magnetometer 218 are able to fully determine the spatial absolute orientation of the tracker 202 relative to the local gravity vector and the local magnetic field vector. The gyroscope 220 is used to measure rapid changes in the orientation of the tracker 202, but the gyroscope 220 has no fixed reference and therefore accumulates errors over time.
[0032] Specifically, the accelerometer 216 is triaxial and uses the three-dimensional gravity vector as a fixed reference to measure the acceleration on the tracker 202. When the tracker 202 is moving slowly or stationary (i.e., the only measurable acceleration is gravity), the accelerometer 216 accurately calculates the pitch angle and roll angle about the pitch axis 222 and the roll axis 224, respectively. Since even a moving human body often stops repeatedly, the IMU 214 is calibrated to equate the magnitude of the acceleration vector output by the accelerometer 216 to be 9.8 m / s by making the time point when the tracker 202 is substantially stationary. 2The time points at which the tracker 202 is substantially stationary are identified by the time points at which the acceleration vector is within an adjustable threshold of 0 or an assumed value of the magnitude of the gravity vector. At these time points, the acceleration vector is assumed to be oriented in the direction of gravity and the values output by the accelerometer 216 are used to update the angles about the pitch axis 222 and the roll axis 224. These time points are common in human motion and occur at sufficiently regular intervals that gyro drift does not accumulate in the roll and pitch. Although 9.8 m / s 2 is the commonly understood value of gravity on Earth, but other values of gravity can be used in a similar manner (e.g., in microgravity environments such as on the Moon). Accelerometer 216 measures force, so the above techniques can also be used when the "gravity" vector points in an arbitrary direction. This arbitrary "gravity" vector is usable as long as the force is constant and non-zero.
[0033] The three-axis magnetometer 218 is primarily used to determine the yaw angle about the yaw axis 226 by measuring the strength of the magnetic field. In most cases, the magnetometer 218 measures the Earth's magnetic north pole, which remains relatively constant. The magnetic field vector is treated similarly to the gravity vector described above, except that it points in a different direction. The magnetic field vector depends on the geographic location and is orthogonal to the gravity vector in most cases and can be used for yaw angle calculations. The exception occurs at the North and South Poles, where the gravity and magnetic field vectors are parallel. In these limited cases, the accelerometer 216 and magnetometer 218 will measure the same value. In combination, the accelerometer 216 and magnetometer 218 are able to fully determine the orientation of the tracker 202 in space using the roll, pitch, and yaw angles, however, the results are only accurate during slow motion (i.e., ignoring acceleration caused by user motion). The gyroscope 220 is used to accurately measure fast motion, but there is no fixed reference, which limits its usability to short periods of time because errors accumulate. Therefore, whenever it is determined that the accelerometer 216 and the magnetometer 218 have high accuracy (e.g., during slow motion and with a stable magnetic field), the accelerometer 216 and the magnetometer 218 are used to correct the gyroscope 220. Using the gyroscope 220 for high-rate orientation estimation (e.g., a rate of 1000 Hz), the accelerometer 216 and the magnetometer 218 can be operated at a lower sampling rate (e.g., a rate of 10-50 samples / second) to reduce the overall power consumption of the tracker 202.
[0034] The gyroscope 220 is three-axis and can be used to estimate the yaw angle when there are magnetic fields nearby that affect the magnetometer 218. When the gyroscope 220 operates without a fixed reference and errors accumulate over time, the accelerometer 216 / magnetometer 218 combination can be used to correct for drift in the angle measurements of the gyroscope 220. As the nearby hard and soft magnetic fields change over time, the tracker 202 also compensates for these magnetic fields over time.
[0035] In one example implementation, the magnetometer 218 data may be modeled as follows:
[0036] mag'=Soft*(mag–Hard);
[0037] mag' is the 1×3 corrected magnetometer data;
[0038] mag is the 1×3 raw magnetometer data from magnetometer 218;
[0039] Soft is a 3×3 matrix containing rotation, skew, and scale; and
[0040] Hard is a 1×3 matrix containing the position offsets.
[0041] While soft iron and hard iron interference are often used to describe these correction terms, they are technically incorrect. Soft iron refers to materials that are easily magnetized and demagnetized. While this does occur at the PCB level, the soft iron matrix primarily corrects for magnetic distortion materials within the 218 mm range of the magnetometer, whether hard or soft. Similarly, the hard iron offset vector can also include soft iron distortion. Correcting the magnetometer data can be defined by:
[0042] mag'=Near*(mag–Far).
[0043] As the magnetometer 218 rotates in all possible orientations, the ideal magnetic field readings produce a sphere, however, near and far magnetic distortions will alter the sphere in different ways. For example, if the magnetic field is far away, the magnetometer 218 will see an offset in the magnetometer readings because the magnetic field distortion is weak relative to the Earth's magnetic field. If the magnetic field is far enough away, the distortion will be felt uniformly across the sensor axis of the magnetometer 218. This offset is caused by a weakening or strengthening of the total magnetic field as the Earth's magnetic field lines bend around ferrous materials before being read by the magnetometer 218. This is commonly caused by steel beams in buildings, but can also be observed with nearby permanent magnets. The magnetic field will be centered around the combined effects of the magnetic field distortions rather than around the origin (0,0,0). Depending on the interaction, this may increase or decrease the overall magnetic field strength in the local area. These positioning occurs gradually, by meters, indicating that a continuous calibration algorithm is applied.
[0044] If the magnetic field distortion is nearby (e.g., in the millimeter range), the magnetic field lines will bend around the material, causing the magnetometer 218 to lose or gain sensitivity along the direction of the magnetic field lines, resulting in expansion to an ideal sphere. If the magnetic field is close enough, the distortion will be felt unevenly on the sensor axis of the magnetometer 218. The resulting shape is often called an ellipsoid, however, this is technically incorrect. When the distortion is close to the magnetometer 218, the magnetic field lines form a shape that applies uneven distortion to all axes. For example, if the near-field distortion is along the x-axis, it will apply strong distortion to the +x axis and slight distortion to the -x axis. The result is similar to an ellipsoid, but the ellipsoid is symmetrical, which may not accurately reflect reality. A 3×3 near-field matrix may better reflect reality because it assumes asymmetry. Once the near-field correction matrix is obtained, it may not need to be recalculated again.
[0045] Near-field magnetic interference typically originates from nearby soft magnetic objects (e.g., capacitors on an associated printed circuit board (PCB), associated traces and vias, batteries, coils, etc.) and is assumed to be relatively constant in low-power systems. Rotation of the tracker 202 about all axes 222, 224, 226 is expected to produce a data sphere with a fixed center. Near-field magnetic interference distorts the data sphere into an ellipsoid. Some prior art solutions fit the ellipsoidal data to a sphere fitting equation, which, as discussed above, is generally insufficient to produce the required accuracy at all angular orientations of the tracker 202 due to the asymmetry of the near-field distortion. In the disclosed technology, the dot product between the normalized gravity direction determined by the accelerometer 216 and the normalized magnetic north pole determined by the magnetometer 218 is assumed to be a constant, referred to as the local magnetic inclination. The spherical fitting equations using these additional constraints are then fit to the ellipsoid of the yaw data to produce an improved near-field magnetic interference correction. The following is an example near-field magnetic interference correction equation.
[0046] Solving the near-field matrix involves computing 12 variables in the following minimization problem:
[0047] Minimize: ax'*mx'+ay'*my'+az'*mz'–sin(dip);
[0048] ax', ay', az' are the normalized acceleration values when the acceleration is within the gravity threshold;
[0049] mx', my', mz' are the normalized magnetometer values after applying near-field correction and far-field correction;
[0050] dip is the local dip angle;
[0051] x=N11*(mx–F0)+N12*(my–F1)+N13*(mz–F2);
[0052] y=N21*(mx–F0)+N22*(my–F1)+N23*(mz–F2);
[0053] z=N31*(mx–F0)+N32*(my–F1)+N33*(mz–F2);
[0054] norm = SQRT(x^2+y^2+z^2);
[0055] mx' = x / norm;
[0056] my'=y / norm;
[0057] mz' = z / norm;
[0058] N11 is the first row and first column of the 3×3 near-field correction matrix;
[0059] F0 is the first element of the far-field correction vector; and
[0060] mx is the x component of the raw magnetometer value from the sensor reading.
[0061] Above is a multi-dimensional nonlinear equation with 12 unknowns to solve for a 3×3 near-field correction matrix (N) and a 1×3 far-field correction vector (F). The sensor data is noisy; therefore, an exact solution may not always exist when only 12 data points are given. To achieve reasonable accuracy, a linear least squares method for a few hundred appropriately spaced data points can be used to solve the overdetermined system. In this case, the choice of points is important. They represent all possible rotations and are recorded in a magnetically stable environment. In this case, the Gauss-Newton algorithm can be used because the Jacobian matrix can be calculated analytically. Although the Gauss-Newton algorithm will produce multiple solutions depending on the starting point, the minima are all concentrated very close to the global minimum, so any solution may be acceptable and provide excellent accuracy. The algorithm is computationally intensive but only needs to be performed once at the factory. The near-field correction matrix will always be valid in normal use, even if the position is changed.
[0062] What changes and is therefore constantly updated is the 1×3 far-field correction vector. This vector can easily change depending on the environment, but also depends on the sensor itself. The readings of the magnetometer 218 may change due to internal magnetization. To address this issue, a magnetometer with internal demagnetization can be used to clear the residual magnetization. In addition to reusing the 3×3 near-field correction matrix, the calibration itself is similar to the near-field correction minimization problem. Therefore, there are only 3 unknowns to solve (F0, F1, F2). The algorithm runs in real time, so the Gauss-Newton algorithm is no longer the fastest choice because each iteration only uses the Jacobian (first-order derivative) to update the estimate. A linear least squares algorithm using the Hessian (second-order derivative) can produce faster convergence with fewer iterations. For example, suitable algorithms include the Gradient Descent Algorithm and the Levenberg-Marquardt Algorithm. The only requirement for the input data is to collect a suitable distribution. Testing has shown that 30 samples covering a 20 degree arc are suitable to achieve a 1% center offset error. Similar to above, the algorithm will return a local minimum depending on the starting point, but the solution can be concentrated around the true minimum, making any solution acceptable.
[0063] These equations are valid because they assume that the angle between the normalized magnetic field and the normalized acceleration is always equal to the physical property of the local tilt angle. However, this property only holds true when the magnetic field is correctly calibrated. As long as there is an arbitrary acceleration vector, the magnetic field vector is separated by the local tilt angle. When located on a unit sphere, the possible magnetic field values form a circle, and each point of the circle represents a different yaw angle. In short, given the acceleration, the yaw angle is uncertain. However, when more points are collected, the possible true values of the magnetic field will narrow because the magnetic field itself contains the true yaw angle. In essence, the linear least squares algorithm finds the value that minimizes the dot product, thereby finding the center of the sphere and obtaining the most accurate magnetometer 218 reading. Once the center of the sphere (the far-field correction vector) is found, the data can be centered and normalized. Acceleration can be used to rotate the magnetic field so that the x and y components form a tangent to the yaw angle, and the z component is equal to the sine of the tilt angle. Then, the yaw angle obtained from the magnetic field can be used to correct the gyroscope yaw angle.
[0064] Far-field magnetic interference originates from nearby hard magnetic objects (e.g., speaker magnets) and can change rapidly as the proximity to the source changes. Far-field magnetic interference causes the center point of the sphere of data collected by the rotation of the tracker 202 to shift, which is directly accounted for by examining the dot product between the normalized acceleration vector and the normalized magnetic field vector after applying near-field and far-field corrections. If the dot product matches the local tilt angle within a threshold, the yaw angle of the magnetic field can be trusted. If the dot product of multiple samples is different, the far-field correction vector is recalculated by collecting more samples. It is assumed that the measurement of angular yaw change measured by the gyroscope 220 is accurate in the short term, but over time, errors gradually accumulate, which makes the gyroscope 220 gradually less accurate over time because it lacks a fixed reference point. In contrast, the yaw angle measurement output from the magnetometer 218 may be affected by far-field magnetic interference and therefore may not be trusted when the dot product is not close to the tilt angle. However, since the magnetometer 218 has a fixed magnetic North reference point, any changes in short-term far-field magnetic disturbances can be calibrated out and used to correct for gyro errors in the yaw axis when the data becomes reliable again due to the unchanged magnetic North reference.
[0065] Therefore, far-field magnetic disturbances are compensated by first comparing the dot product between the corrected normalized magnetometer and the normalized accelerometer to the local inclination, and then calculating the resulting yaw angle when the center of the magnetic sphere is found. Since this calibration only requires a small portion of the sphere and 30 samples, it can be run continuously. Whenever the dot product does not match the local inclination, the gyroscope 220 updates the orientation as calibration data is collected. After 30 samples, the tracker 202 will run the far-field calibration algorithm and check the resulting dot product. When the dot product matches the inclination, the magnetometer 218 can be trusted again, so the yaw angle is corrected to the magnetometer 218 reading. In some embodiments, a smoothing algorithm is used to prevent noticeable abrupt changes in the updated magnetometer 218 readings when moving from a series of gyroscope 220 readings.
[0066] In summary, when the magnitude of the accelerometer 216 output is equal to the commonly understood gravity value within a threshold, the gravity measurements (pitch and roll angles) of the accelerometer 216 can be assumed to be accurate. When the dot product between the corrected normalized acceleration and the normalized magnetic field is equal to the local tilt angle within a threshold, the magnetic north (yaw angle) measurement of the magnetometer 218 can be assumed to be accurate. If the dot product is different from the local tilt angle, the incremental change in yaw angle measurement of the gyroscope 220 can be assumed to be accurate in the short term until trust in the yaw angle measurement of the magnetometer 218 can be reestablished.
[0067] In conjunction with the known relative positioning of the tracker 202 on the user's body and the known anatomical constraints of the user's body, as discussed further below, the orientation of the tracker 202 enables continuous motion tracking in an uncontrolled environment.
[0068] Figure 3 A user's arm 300 is shown with trackers 302, 328, 332 attached to determine limb position in an uncontrolled environment. Although the arm is explicitly illustrated and described below, a similar process can be applied to the user's leg or other subset of the user's body or the entire user's body to calculate the position using the tracker orientation data in combination with the known anatomical constraints of the user's body. The arm 300 can be analyzed as a kinematic chain including a set of joints (i.e., upper arm 305, lower arm 310 and hand 315) and joints (i.e., elbow 320 and wrist 325). The joints 305, 310, 315 are assumed to be straight rigid members, each extending along axes 330, 335, 342, respectively. The joint 320 is assumed to be a hinge joint (one degree of freedom), while the joint 325 is assumed to be a ball and socket joint (two rotational degrees of freedom). While the above assumptions about the possible motion of the upper arm 305, lower arm 310 and hand 315 joints and the elbow 320 and wrist 325 joints are not absolute, they are reasonable known anatomy constraints that can be applied to all human bodies for purposes of calculating position using tracker orientation data.
[0069] Although the user's limbs can be calculated in essentially the same manner as described above with reference to the user's arm 300. The user's torso can be treated slightly differently. In some embodiments, the user's torso includes a single tracker and is simulated by a rigid joint. In a further embodiment, the user's torso includes two trackers, one located at the user's upper torso and one located at the user's lower torso. Using two trackers, the movement of the user's torso can be simulated by the two joints connected by a ball and socket joint. Depending on the accuracy required to present the user's torso movement, further additional trackers can be used on the user's torso (or two torso trackers can be inserted to estimate additional spinal joints), which can be used to more accurately represent the actual kinematic chain of the user's spine. In embodiments that do not reference an external absolute positioning device (e.g., a VR head-mounted device), one of the torso trackers can be used as a known position to provide a basis for calculating the positions of the other trackers from it.
[0070] The known anatomical constraints of the user's body are predefined, and in some embodiments, for example, include height, weight, and / or body shape, as well as limb length / range of motion limits of the user's limbs. In other embodiments, it is assumed that the known anatomical constraints are universal to all users, rather than specific to any particular user's body. If the user wishes to animate a similar avatar, the length of the user's limbs can be used to more accurately reflect their own size, or they can animate a completely different body model as their avatar. The user's height, weight, and / or body shape can be used to display an avatar that is more similar to themselves to the user, however, this is not necessary for the function of the full-body motion capture system disclosed herein, because the orientation of the limb does not change when the limb length is adjusted. The assumed anatomical constraints can be based on a general known anatomical model of the human body, including limits on human joint rotation, and are used to calculate the tracker position using the measured tracker orientation. The term "body" (without the qualifier "human") used herein refers to any human or non-human (e.g., animal) body, and can even be a body that has no basis in the real world (e.g., giants, aliens, and hydras).
[0071] Similar body structure models can be made for other non-humanoid animals such as canines or felines. In this case, the motion of a humanoid user can be mapped to a non-humanoid avatar. In addition, a non-humanoid user such as a dog can be mapped to a humanoid or non-humanoid avatar. In addition, the disclosed technology can be applied to any inanimate object that can be simulated by a kinematic chain, or a combination of such an inanimate object and a humanoid kinematic chain (e.g., a user holding a motion device such as a fishing rod that can be simulated using a kinematic chain).
[0072] The trackers 302, 328, 332 are attached to the upper arm 305, lower arm 310, and hand 315 of the user, respectively. The trackers 302, 328, 332 include straps 340, 345, 350, respectively, each strap being used to attach the tracker 302, 328, 332 to the arm 300. The straps 340, 345, 350 are also used to orient the roll axes 355, 360, 365 of the trackers 302, 328, 332 so that they are substantially parallel to the upper arm 305, lower arm 310, and hand 315 of the user, respectively, as shown in the drawings. The straps 340, 345, 350 prevent the trackers 302, 328, 332 from being mounted to the joints 305, 310, 315 in a non-parallel manner, thereby enabling alignment to be part of the constraints for calculating the tracker position using the tracker orientation data and assumed body structure constraints.
[0073] In some embodiments, each of the trackers 302, 328, 332 may optionally be mounted in a position opposite to that shown in the figures. However, this still results in the roll axes 355, 360, 365 of the trackers 302, 328, 332 being substantially parallel to the upper arm 305, lower arm 310, and hand 315 of the user, respectively. The trackers 302, 328, 332 are simply oriented in opposite directions, which can be compensated for by resetting the zero points of the trackers 302, 328, 332 using a calibration procedure, as discussed in further detail below. In other embodiments, instead of a roll axis, the yaw or pitch axis of each of the trackers 302, 328, 332 is substantially parallel to the upper arm 305, lower arm 310, and hand 315 of the user, respectively. This assumption can be used as a known constraint to calculate the tracker position using the tracker orientation data and the assumed body structure constraints.
[0074] As described above, assumed body structure constraints of the human body based on known body mechanics and human motion limitations are combined with tracker orientation data to generate tracker positions that vary over time. This data can be used to animate a digital avatar using user body movements in an uncontrolled environment (e.g., without a camera or other external tracker positioning information). In a calibration event, which may include a limb recognition event, the tracker is pre-identified for a specific position on the user's body, which may include the tracker orientation on the belt and the belt orientation on the body to properly align the axes. Once the limb recognition event is completed, the calibration event continues assuming a fixed starting position of the user (e.g., a T-pose or I-pose), with each tracker reset based on a known fixed starting position. Calibration can be repeated periodically, regardless of whether the user is explicitly instructed to recalibrate, to resolve any drift issues by returning to the fixed starting position in a short period of time (e.g., 1-3 seconds).
[0075] Trackers 302, 328, 332 and associated link units (not shown, see e.g. Figure 1 The link portion 104) may not be able to determine the absolute position within a physical space such as a room alone. In various embodiments, this is not a problem because the user's absolute position within the physical space is independent of the animation of the user's avatar. The user's avatar will move within the virtual space anyway, and the user's real physical space is not required. In other embodiments, the absolute position within the physical space is important. In these cases, an external absolute positioning device (e.g., a VR headset) can be used to provide a reference point within the user's physical space to determine the absolute position of the trackers 302, 328, 332 within the user's physical space.
[0076] Tracker positions are inferred using Inverse Forward Kinematics (RFK), which is based on Forward Kinematics (FK). Specifically, RFK starts with the end position and orientation of the kinematic chain, and then works backwards using known joint orientations and joint lengths to compute the tracker position along the kinematic chain. Compared to FK, which solves for the tracker position forward along the kinematic chain using the starting position, rotation, and joint length, RFK starts with the end position and rotation and solves for the tracker position backward along the kinematic chain.
[0077] Mathematically speaking, FK propagates the internal known position of the system forward in the kinematic chain and then aligns it to the target coordinate system at the end, as follows:
[0078] EL_P=SH_P+H(EL_Q,SH2EL);
[0079] HA_P=EL_P+H(HA_Q,EL2HA);
[0080] (T_P–HA_P)=offset;
[0081] HA_P+=offset; and
[0082] EL_P+=offset.
[0083] Instead, RFK propagates the known position of the target coordinate system backwards in the kinematic chain in one iteration as follows:
[0084] HA_P=T_P;
[0085] EL_P=HA_P–H(HA_Q,HA2EL); and
[0086] SH_P=EL_P–H(EL_Q,EL2SH).
[0087] No offset is needed, since the calculations are all done in the target coordinate system by backpropagating the position.
[0088] Refer to the above content;
[0089] T_P is the known position of the target coordinate system shared with the hand;
[0090] SH_P, EL_P, and HA_P are the positions of the shoulder, elbow, and hand;
[0091] EL_Q and HA_Q are the quaternions of the elbow and hand;
[0092] H() is the Hamiltonian product of the joint lengths by quaternion rotations; and
[0093] SH2EL is the fixed shoulder to elbow length. Other lengths follow the same convention.
[0094] RFK calculates the unknown position and aligns it to the known coordinate system in one iteration. When using FK, one iteration is used to calculate the position in the internal coordinate system, and then another iteration is used to align the internal coordinate system to the known coordinate system by calculating the position difference of the two coordinate systems at the common joint. RFK is particularly useful in VR applications where the position is provided by the headset. By propagating the known position back to the kinematic chain, the body tracking system can be aligned to the VR coordinate system in one iteration.
[0095] Most body tracking systems use inverse kinematics (IK) that estimates missing joint positions and orientations along a kinematic chain using a single end-effector position and orientation. For example, VR controllers contain IR LEDs that are continuously read by a VR headset. The headset uses the size and visible pattern of a series of LEDs to determine the position and orientation of the controller. If the controller is held in the user's hand, IK can be used to estimate the elbow position and orientation without having to have a separate tracker on the elbow. However, the accuracy of this estimate varies widely and may not be suitable for applications that require high-resolution data. In addition, IK is traditionally used by animators because it is easier for animators to control the hand and simply let the program figure out where the elbow should go. RFK achieves higher accuracy because it produces one solution for a given set of inputs, while IK produces multiple solutions. RFK is also computationally efficient, requiring only a single iteration to calculate each sample, while IK requires multiple samples and multiple iterations to converge to a solution when no analytical solution exists, as is the case with the human body.
[0096] In various embodiments, hard limits in body structure constraints can be used to correct sensor errors or drift. For example, a hinge joint prevents movement outside a single plane. Trackers on both sides of the hinge joint can be prevented from outputting position changes outside a single plane. In addition, sensor readings outside the hard limits can be gradually averaged or adjusted over time to reduce the possibility of obvious corrections. In some embodiments, such corrections can indicate the need to recalibrate the motion tracking system according to the procedures described above. In some embodiments, the user can be notified of the need for recalibration with an indication (e.g., tactile feedback from the link). In addition, in some embodiments, if the user expects their avatar or related tracked object to be restricted in a specific way, the user can set a customized hard limit (e.g., a tennis racket can have a hard limit that remains attached to a specific user's hand).
[0097] Figure 4An example operation 400 of using a full body motion capture system used in an uncontrolled environment according to the disclosed technology is shown. In an application operation 405, a user applies 5-15 trackers on the user's body in a spaced arrangement. Each tracker includes an inertial sensor or an accelerometer, a magnetometer, and a gyroscope to determine the tracker orientation. In addition, each tracker is located at a predetermined location on the user's body (e.g., the user's head, torso, and limbs). Although there are more parts of the user's body where trackers can be placed, the return on investment decreases with more than 15 trackers. Example placement locations (count) are head (1), chest (1), waist (1), upper arm (2), lower arm (2), hand (2), thigh (2), calf (2), foot (2). Fingers and toes are also part of the human body's kinematic chain, but they can be considered special cases because their joints and joints are not completely independent of each other like other parts of the body, so fewer trackers are required to fully capture their motion.
[0098] The calibration operation 410 calibrates the tracker against a fixed reference including one of the trackers. In one example implementation, the fixed reference is a user's head including one of the trackers. The user stands in a predetermined position and the tracker is calibrated against the fixed reference using known anatomical constraints of the user's body (e.g., the user's height and weight) and motion constraints of the tracker's various positions (e.g., elbows and knees are limited to rotation around a single axis, while hips and shoulders can rotate in all directions). In other implementations, the calibration operation 410 does not require a fixed reference.
[0099] The calibration operation 410 may further define the exact location on the user's body at which each tracker is applied. For example, when the user is instructed to apply one of the trackers to their left upper arm, the calibration operation 410 determines and stores the exact location (e.g., anterior, posterior, medial, or lateral) of the tracker on the user's left upper arm. The calibration operation 410 defines the starting location and orientation of each tracker with reference to a fixed reference (e.g., a tracker applied to the user's head).
[0100] Tracking operations 415 track accelerometer, magnetometer, and gyroscope measurements for each tracker as the user moves from a first body position to a second body position, etc. Sensor fusion operations 420 combine data from the accelerometer, magnetometer, and gyroscope associated with each tracker to generate a signal representing the orientation of each tracker as the user changes body position over time.
[0101] Sensor fusion is the process of taking data from different sources and generating a combined output. In the case of IMU data, the inputs are accelerometer, gyroscope, and magnetometer data, and the output is orientation data. Some filters commonly used for IMU data include Mahony, Kalman, and Madgwick algorithms. These algorithms all have the same problem that there is no trusted reference for correction. They use gravity vectors and magnetic field vectors, but they assume that the data is accurate in all cases. If the input data is inaccurate, the filter receives the data and produces inaccurate results. In addition, these are general algorithms that are not necessarily developed for IMU sensor fusion. The method of the present disclosure uses an opportunistic approach that relies on using data from sensors only when the sensors are considered accurate. In an example embodiment, the gyroscope continuously collects data at a frequency of more than 400Hz, which is sufficient to capture most human body movements. The gyroscope data updates the quaternion by rotating the quaternion on the appropriate axis. The quaternion is converted to roll, pitch, and yaw angles in an XYZ Euler angle sequence for potential correction. Accelerometer data is sampled at a frequency of 10Hz and its magnitude is calculated. If the magnitude is close to gravity, assume the data is accurate.
[0102] Roll and pitch are calculated by the accelerometers and compared to the quaternion derived roll and pitch. The two measurements are then combined using a compensation filter that gives more weight to the quaternion derived values for smooth motion. The new roll, the new pitch and the old yaw are then combined to form the corrected quaternion. Correcting the yaw angle requires combining the concepts discussed. First, the trackers must know their position on the body and their arrangement which can be pre-configured (for example, the trackers can be placed on a belt in two ways).
[0103] After the trackers have been positioned, the user stands in the calibration pose. The most natural pose seems to be the I-pose, where the body is upright, feet together and forward, and arms are stretched straight down. The tracker detects that no motion has occurred for a predetermined time using the acceleration values derived from the correct quaternion and determines that the user wants to calibrate. This can be done at any time. Since the trackers know their position on the body, they know what quaternion they should be reset to. The added advantage is that if the pose is accidentally maintained, recalibration of the tracker will only improve the user experience.
[0104] In another solution immediately following a quaternion reset (assuming the magnetic field is constant), the tracker starts recording magnetometer data in a lookup table (LUT) along with the yaw angle (assumed to be accurate in the short term). The first thing to check is whether the magnetometer data is trustworthy. In prior art methods, this involves rotating the tracker in all possible orientations to find the best fitting ellipsoid, but this is impractical for this application. Alternatively, an effective way to check is to compare the magnetometer data with the accelerometer data. Both magnetometer data and accelerometer data measure a fixed reference, they are just different references, so the data is similar except for rotation. The dot product of the two vectors gives the similarity between them. If they are similar, it means that the magnetometer data is accurate, and it is assumed to be accurate. Only when the tracker has rotated a sufficient amount will the new magnetometer data be stored. If the magnetometer data is within a reasonable range of the value previously stored in the LUT, it will be corrected in the compensation filter using this yaw angle and the quaternion derived yaw angle. In this way, the yaw angle will be accurate to within a few degrees, as the error cannot grow. The magnetic field in a room is stable, so once the user has calibrated in a room, the calibration will most likely remain valid. If the user changes rooms, the magnetic field will shift slightly (e.g. due to different hard iron offsets). Using the LUT and the quaternion-derived yaw angle, the LUT can be offset so that the user does not need to recalibrate when changing rooms.
[0105] The merging operation 425 merges the signals output from the trackers on a single link section. The link section can also be attached to the user's body or placed nearby and is used to merge the signals output from each tracker. In various prior art systems, having multiple wireless trackers means having multiple link sections (also called receivers), which increases the link section size because each antenna needs to be fully spaced apart from the other antennas. Each link section and tracker pair can operate at different frequencies to reduce interference, but if multiple link sections and tracker pairs work simultaneously, interference still exists. The disclosed technology utilizes a single link section (or receiver) for all trackers (or tracker subsets). An additional advantage is to reduce the load on the computing device because it only needs to manage data from one link section instead of multiple link sections. In addition, a single combined data packet works well with standardized communication protocols such as Bluetooth or WiFi designed for larger data packets and fewer concurrent connections.
[0106] In one embodiment, as described below with reference to Figure 5-7Disclosed in further detail, the link unit utilizes cascaded communication with the tracker to collect and distinguish the orientation data sent by the tracker to the link unit. In other embodiments, the link unit scans a predetermined wireless frequency for a period of time sufficient to capture a signal. The tracker synchronizes its timer with the link unit so that it knows when to send the next orientation data packet. The link unit switches to another frequency, waits for a signal, and synchronizes with another tracker. This is done until the expected number of trackers is reached, and then repeated. With clock synchronization, the tracker can sleep when it is not sending data, and the link unit can also sleep when it is not expected to receive data, which keeps battery requirements at a low level, further helping to reduce the size of the tracker / link unit. In addition, the link unit acts as a data buffer and combines the data from the tracker into a single data packet, which is then sent further down the data processing chain to another computing device. This keeps latency to a minimum because the processing required for real-time analysis is the sampling rate of the data, rather than the faster on-demand sampling rate.
[0107] Interpolation operation 430 interpolates the data received by the link portion to generate a digital representation of the user's body movement. More specifically, interpolation operation 430 uses the tracker positions on the user's body and the constraints unique to the user's body (or the human body in general) to generate a signal that digitally represents the relative position and movement of each tracker over time. Interpolation operation 430 is performed using each tracker on the user's body to fully map the movement of the user's body to the digital avatar. In various embodiments, the link portion is connected to a computing device that performs interpolation operation 430. The digital representation of the user's body movement can then be stored in the computing device or sent to other computing devices via a computing network.
[0108] Figure 5 A full body motion capture system 500 with cascade communication between a link 504 and trackers 502, 528, 530, 532, 534, 536 connected thereto is shown in accordance with the disclosed technology. Trackers 502, 528, 530, 532, 534, 536 represent measurement devices worn on a user's body to capture the user's body motion. Trackers 502, 528, 530, 532, 534, 536 may be strategically placed on the user's body and spaced apart to capture relative motion of different parts of the user's body.
[0109] Each of the trackers 502, 528, 530, 532, 534, 536 is equipped with various sensors that are combined with a computing device referred to herein as an inertial measurement unit (IMU) to determine orientation. For example, each of the trackers 502, 528, 530, 532, 534, 536 can be equipped with an inertial sensor or an accelerometer, a magnetometer, and a gyroscope. Combined with the anatomical constraints imposed by the user's body position at which the trackers 502, 528, 530, 532, 534, 536 are located, the output of the sensors enables the system 500 to achieve full body motion capture without the use of an external camera.
[0110] Each of the trackers 502, 528, 530, 532, 534, 536 is also equipped with a communication link with receiving and transmitting capabilities, which uses a customized short-range communication protocol operating on a specific frequency (e.g., 2.4 GHz ISM band) to transmit the orientation of the tracker 502, 528, 530, 532, 534, 536 to the link unit 504. The link unit 504 is also placed on the user's body and also includes a communication link with receiving and transmitting capabilities. The link unit 504 is used to receive and merge the orientation data received from the trackers 502, 528, 530, 532, 534, 536 via the communication link.
[0111] Prior art body-worn trackers typically operate in a 1:1 relationship with associated link sections to maximize signal integrity and throughput. Such systems minimize the risk of location data from each tracker being confused with location data from other trackers. However, such prior art systems significantly increase the number of required link sections from one (as provided by the disclosed technology) to a number equal to the number of trackers. This is disadvantageous due to increased cost and overall system complexity. Furthermore, these systems still suffer from signal integrity issues as air collisions may be unavoidable when synchronization schemes are not employed.
[0112] Other prior art systems attempt to connect multiple trackers to a single link unit via a common communication standard such as Bluetooth. However, connecting multiple devices via a common communication standard such as Bluetooth often results in delays in receiving data packets, including queued or dropped data packets that must be re-requested from the tracker. In addition, as described herein, such prior art systems focus on sending location data rather than orientation data from the tracker to the link unit. These location data packets tend to be larger than orientation data packets and are therefore more susceptible to data packet loss due to wireless network bandwidth limitations.
[0113] Another problem with prior art body-worn sensors that use wireless communication with one or more nearby link units is that the human body tends to block most signals in the 2.4 GHz band. One solution is to use more power, but this comes at the expense of a larger device. Alternatively, one link unit can keep the range of the wireless connection shorter and only increase the size of one device, in this case the body-worn link unit 504. The link unit 504 can be worn on the user's body to minimize the distance to the trackers 502, 528, 530, 532, 534, 536 and maximize the quality of the connection.
[0114] To further improve the quality of the connection, the trackers 502, 528, 530, 532, 534, 536 can space the signals to be received by the link portion 504 in time, space, or frequency. For example, the trackers 502, 528, 530, 532, 534, 536 can operate at frequencies spaced apart in the 2.4 GHz band or multiple bands to reduce air interference. For further example, the trackers 502, 528, 530, 532, 534, 536 can operate using predetermined time slots (e.g., allocated time points or timing windows), each time slot being unique to one of the trackers 502, 528, 530, 532, 534, 536. More specifically, outbound orientation packets 538, 540, 542, 544, 546, 548 from each of the trackers 502, 528, 530, 532, 534, 536, respectively, are cascaded in timing such that the packets are sequentially received by link portion 504. Link portion 504 is able to identify the source of each packet based on when the packet was received.
[0115] The link unit 504 can also send a confirmation packet (not shown, for example, see Figure 6 The link portion 504 provides feedback to the tracker 502, 528, 530, 532, 534, 536 in the form of an acknowledgement character or acknowledgement packet AD, which is sent in response to receiving each of the data packets 538, 540, 542, 544, 546, 548. The acknowledgement packet confirms the receipt of each of the data packets 538, 540, 542, 544, 546, 548 and provides instructions to modify the timing of the next data packet outbound from each of the trackers 502, 528, 530, 532, 534, 536 to more closely match the predetermined time slot assigned to the tracker. In this way, the link portion 504 provides a continuous timing feedback loop, ensuring that the trackers 502, 528, 530, 532, 534, 536 continue to send orientation data packets in their assigned predetermined time slots.
[0116] In addition, the data required to transmit the device orientation can be minimized to only a few bytes (e.g., less than 16 bytes or 8 bytes), which can be transmitted in 1 ms, or even in 300 μs. When not in active use, the trackers 502, 528, 530, 532, 534, 536 can enter a low power (sleep) mode while the IMU of each of the trackers 502, 528, 530, 532, 534, 536 fills its data buffer. As discussed above, the trackers 502, 528, 530, 532, 534, 536 are synchronized with the link portion 504 so that two of the trackers 502, 528, 530, 532, 534, 536 do not send orientation data packets at the same time to reduce interference, and enable the trackers 502, 528, 530, 532, 534, 536 to sleep between transmissions to improve battery life. The use of low power wireless and / or wired connections minimizes the power requirements of the trackers 502, 528, 530, 532, 534, 536, which enables them to be used to continuously monitor the user's body when the whole body motion capture system 500 is in use and still maintain a long battery life. In a purely wired embodiment, the trackers 502, 528, 530, 532, 534, 536 can omit a dedicated battery power source and draw power from a central battery located in the link portion 504.
[0117] Although in Figure 56 trackers 502, 528, 530, 532, 534, 536 are shown connected to one link section 504, but other embodiments may include any number of trackers (e.g., 1 to 32) connected to a single link section, with the only limiting factor being the bandwidth available to separate the inbound packets from each tracker in a timely manner. In detail, if sending a packet and receiving an acknowledgment packet takes a tracker 1ms, the radio time is 1ms. In cascaded communications, the radio time cannot be occupied by multiple connections at the same time. Therefore, if the system 500 operates at a frequency of 100Hz (10ms), the system 500 only supports 10 trackers. If the frequency is reduced to 30Hz (33ms), the system 500 will support an increase to 33 trackers. The radio time can be reduced by increasing the bit rate, but at the expense of range and signal integrity. In some embodiments, the signal frequency is used to further separate multiple groups of trackers. For example, if a single link unit uses more trackers than available bandwidth, a first set of trackers can utilize a first frequency band and a second set of trackers can utilize a second frequency band, thereby doubling the maximum possible trackers that can be connected to the link unit. Further for example, by operating a first link unit and its associated trackers on a first frequency band and a second link unit and its associated trackers on a second frequency band, two separate full body motion capture systems can be used in close proximity (e.g., within the same room or building). Still further, more than two frequency bands can be utilized to further expand the number of link units and associated trackers that can be used in close physical proximity to each other.
[0118] In another embodiment, one or more of the trackers 502, 528, 530, 532, 534, 536 may be replaced with a combined tracker (e.g., a glove) that includes multiple individual trackers. The orientation data for the multiple individual trackers is merged at the combined tracker, and the data packets outbound from the combined tracker contain the orientation data for each of the multiple individual trackers. In some embodiments, this may produce increasingly larger orientation data packets. The system 500 can accommodate various data packet sizes by evenly spacing and allocating an appropriate amount of time using a ratio of the total bandwidth. This approach works as long as the data packet size is fixed and does not change over time. For example, if the combined tracking device uses 20% of the available bandwidth, it will obtain larger time slots to reflect this by shifting other trackers that each consume only 10% of the available bandwidth.
[0119] In various embodiments, outbound orientation packets from trackers 502, 528, 530, 532, 534, 536 are encrypted and / or authenticated. Encryption and / or authentication enhances user privacy and security while preventing or reducing the replacement of trackers 502, 528, 530, 532, 534, 536 by unauthorized trackers or the replacement of link units 504 by unauthorized link units. The encryption program includes a synchronized pseudo-random number generator present on trackers 502, 528, 530, 532, 534, 536 and link units 504. Each outbound orientation packet iteration generates a new key known to the tracker (for encryption) and the link unit (for decryption) based on the latest generated pseudo-random number. In addition, each pair of tracker / link units has its own pseudo-random number pairing so that if any tracker is illegally hacked, only one tracker will be accessed. Authentication can be achieved by generating a hash value for each orientation packet by the tracker and link unit. If the hash values match, the orientation packet is authenticated. The bit fields within each orientation data packet may also be scrambled to further enhance encryption and / or authentication of the orientation data packet.
[0120] A new tracker can be added to the system 500 using a procedure where the link 504 sends its position within the pseudo-random number generator to the new tracker so that the new tracker can synchronize with the same count. Next, the new tracker will generate the same pseudo-random number-based key as the link 504.
[0121] The result is a low-footprint encrypted and / or authenticated orientation data packet. Since orientation data packets are already small, low-footprint encryption and / or authentication is important so as not to overwhelm the orientation data packet with excessive security measures that overwhelm the amount of data actually being transmitted. Also contemplated herein is a method for encrypting and / or authenticating outbound traffic from link portion 504 to an external computing device (not shown, e.g., see Fig.10 A similar procedure is performed for data packets received from an external computing device 1099).
[0122] Information security involves confidentiality, integrity, and availability. Most off-the-shelf security systems are designed for larger data packets, which are typically considered in this article, or for securely storing static data. These algorithms are typically resource-heavy and computationally expensive. Even technologies such as Bluetooth Low Energy, which uses AES-CCM as the default security, require dedicated encryption / decryption hardware to run efficiently on resource-limited systems. In addition, AES-CCM requires a minimum of 5 bytes of payload and an additional 4 bytes of data per packet for security, which makes it unusable in real-time applications with small payloads because the encryption burden will be greater than the payload itself. Therefore, many existing technologies focus on protecting static data or protecting larger data packets. In fact, many real-time systems forgo any form of security because it is generally believed that it is impossible to do this adequately in real time.
[0123] The disclosed technology includes a symmetric key algorithm using a stream cipher that follows the concept of a one-time pad (OTP). The generated ciphertext is secure as long as the following conditions are met:
[0124] 1. The key is at least as long as the plaintext;
[0125] 2. The key must be random;
[0126] 3. The key must not be reused; and
[0127] 4. The key must be kept secret.
[0128] The disclosed algorithm was generated using these concepts as building blocks.
[0129] The key size of 64 bits (8 bytes) is selected to match the 64-bit payload. In order for the key to never be reused, a counter-based pseudo-random number generator (CBPRNG) can be used to generate a new 64-bit key in each iteration. This type of number generator has no internal state, and with two separate CBPRNGs, if they use the same key and are given the same counter number, they will produce the same result. If they use different keys, the generated 64-bit keys will not match. Since the CBPRNG is not truly random, it must be carefully selected to ensure that it passes statistical tests for randomness, entropy, and uniformity. In addition, the generator must be able to provide random numbers that are at least as long as the life of the system 500 to avoid duplication. The key is programmed into each tracker-link unit pair at the factory and will never be shared again. This means that a specific tracker will only work with a specific link unit such as link unit 504. Adding a tracker or replacing a tracker requires that the link unit 504 know the tracker's key. This key exchange can be performed over a secure connection between the link unit 504 and the computing device.
[0130] System 500 addresses the confidentiality issue by using randomly generated keys in various ways. The data can be XORed directly with the key. This will ensure that the data appears random to a passerby. However, even though the data may appear random, a passerby knows that certain data is being transmitted. An attacker can intercept the data packets and replace the bits with their own data to guess the packet format. In this way, they can determine which bits contain orientation data and which bits contain battery charge because they can see the effect their changes have on those parts of the decrypted data. To prevent this, circular shifts can be used to increase obfuscation and diffusion so that the key is shifted bits. If an attacker tries the same technique, they now have no idea which bits contain which data because the results will be random.
[0131] Integrity is concerned with preventing the data from being tampered with like in the previous example. Integrity is achieved by using a cryptographic hash one-way function that produces the same result when fed the same data, but produces a very different result when fed a slightly different set of data. Typically this is done with a message authentication code (MAC). There are three common ways to do this, but the fastest for smaller packets is MAC-then-Encrypt (MtE). The payload is run through a hash function and a MAC is generated. The MAC is appended to the payload, then the data is XORed and bit-shifted using the key to produce an encrypted packet. When the packet is transmitted, the receiver will first decrypt the packet using the same key, then run the decrypted payload through the same hash function and compare the MAC. If they match, the data is safe to use, otherwise the data has been tampered with and can be ignored. A fast hash function such as the 32-bit version of siphash or highwayhash can be used. The result can be XORed and reduced to 8 bits to optimize packet size.
[0132] Availability itself involves preventing denial of service attacks that prevent legitimate users from using system 500. For example, an attacker could send thousands of packets per second, causing system 500 to be unable to receive actual real data, similar to a jammer. This problem may be unavoidable because the problem occurs at the physical level. Even if system 500 randomly changes frequencies, the attacker could flood all frequencies with attacks. System 500 also has no way to detect the source of the packet without first decrypting the packet, so system 500 must take the time to decrypt each packet before ignoring it. This is a problem with all wireless systems because the physical signal itself can be interfered with, equivalent to cutting the signal line in a wired system.
[0133] Each of the trackers 502, 528, 530, 532, 534, 536 has a different key. The key is shared with the link unit 504. Initially, the tracker sends an unencrypted data packet with no information, and the link unit 504 replies with the current counter in an unencrypted acknowledgment packet. The link unit 504 must keep track of the counter to prevent the counter from being reused or intentionally advanced. The counter can be saved in persistent memory and sampling can be skipped on each restart to prevent intentional manipulation of the counter value to drain the battery or malfunction. In addition, each of the trackers 502, 528, 530, 532, 534, 536 keeps track of its counter in the same way that an attacker can pretend to be the link unit 504 or the tracker. If one of the trackers 502, 528, 530, 532, 534, 536 receives a link unit counter value that is lower than the current tracker counter value, then the tracker will ignore the counter value and send another unencrypted zero data packet. The link unit 504 will advance the counter by a few thousand and then try again. The link section 504 will continue to advance the counter value until it is greater than the tracker's current counter. Although this can intentionally advance the link section counter (there are 2 before overflowing), 64 possible values), but the process may require multiple life cycles.
[0134] Once the tracker receives a valid counter value from the link section 504, the tracker will run the CBPRNG and generate a 64-bit key. This key is used to run a hash function on the payload to generate an 8-bit MAC. The 56-bit payload and the 8-bit MAC are then scrambled with the key to form an encrypted data packet. The 64-bit encrypted data packet is sent to the link section 504. The link section 504 receives the data packet and runs the same CBPRNG using the same counter number and key as the tracker to generate the same 64-bit key. The key decrypts the 64-bit encrypted data packet and runs the 56-bit payload through a hash function. If the hash function produces the same MAC as the 8-bit MAC present in the data packet, the data is safe to use. If the hash values do not match, the data is ignored. In the next example, the link section counter and the tracker counter are advanced regardless of whether the data is valid. If the hash value is invalid after a set number of samples, the link section 504 will revert to sending the counter number and the procedure starts over. In this way, the communication between the link section 504 and the tracker is secure. Even if an attacker manages to find the key of one of the trackers, it will only be valid for that one tracker.
[0135] Figure 6A cascade communication system (e.g., a full-body motion capture system) 600 is shown having cascade communication between a link device (or link portion) 604 and a sensing device (or tracker) 602, 628 connected thereto according to the disclosed technology. Although sensing devices 602, 628 are generally discussed herein as representing measurement devices worn on a user's body to capture the user's body motion, other embodiments may include any sensor package (or sensor, buffer, and microcontroller) capable of detecting information and queuing the information as data stored in a buffer for timed outbound transmission. Similarly, although link device 604 is generally discussed herein as receiving and merging orientation data received from a set of trackers, link device 604 may receive data only from sensing devices 602, 628 and distinguish the received data according to its timing, whether or not the received data is merged.
[0136] The sensing devices 602, 628 and the link device 604 are each equipped with a low-frequency clock and a high-frequency clock (collectively referred to as clocks 650, 652, 658). The high-frequency clock is more accurate than the low-frequency clock, but consumes more power. However, the high-frequency clock can periodically calibrate the low-frequency clock to maintain very similar accuracy to the high-frequency clock with lower overall power consumption. In addition, independent self-calibration of the low-frequency clock synchronizes the tracker low-frequency clock of each of the sensing devices 602, 628 with the low-frequency clock of the link device 604 to within a few nanoseconds without requiring the same clock source. The sensing devices 602, 628 use the low-frequency clock to wake up from sleep mode and perform functions such as reading sensor data, performing sensor fusion, and sending data packets. These functions have fixed code execution times.
[0137] Whenever the link device 604 receives a data packet from one of the sensing devices 602, 628, it will compare the reception time with its own clock 658 and calculate the difference from the expected time. If the data packet arrives early or late, the link device 604 sends a correction to the sensing device via an acknowledgment packet or acknowledgment character (ack.). The sensing device receives the acknowledgment packet and adjusts its sleep time so that when it next wakes up, the link device 604 will receive the data packet closer to its expected time.
[0138] The program runs due to a fixed code execution time. If the code had a variable execution time, data processing could occur before going to sleep and wakeup could be reserved for sending packets since wakeup and sending have a fixed execution time. If an acknowledgment character is not received, the tracker does not attempt to resend the packet but instead times out and simply goes into sleep mode. This is sufficient for body tracking data since the data can reasonably interpolate up to 6 missing samples. For applications that require higher data integrity, the sensing devices 602, 628 can track the number of missing packets and offset the time since each missing packet uses a fixed amount of time. Although an algorithm is designed for a system where the frequencies of the connected devices are the same, the algorithm can be modified to handle devices with different frequencies.
[0139] The sensing devices 602, 628 are equipped with one or more sensors (e.g., IMUs) 638, 640, buffers 642, 644, and microcontrollers 646, 648, respectively. Each of the microcontrollers 646, 648 is also equipped with a clock 650, 652 and a communication link 654, 656, each of which has receiving and transmitting capabilities using a customized short-range communication protocol operating on a specific frequency (e.g., 2.4 GHz ISM band). The communication links 654, 656 transmit information collected by the sensors 638, 640 and queued by the buffers 642, 644 to the link device 604, respectively. The link device 604 is equipped with its own clock 658 and communication link 660, which is used to receive and, in some embodiments, merge the data received from the sensing devices 602, 628.
[0140] The sensing devices 602, 628 may space signals to be received by the link device 604 in time, space, or frequency. For example, the sensing devices 602, 628 may operate at frequencies spaced apart in the 2.4 GHz band or multiple bands to reduce air interference. Further for example, the sensing devices 602, 628 may operate using predetermined time slots (e.g., allocated time points or timing windows), each time slot being unique to one of the sensing devices 602, 628. Outbound packets from the sensing devices 602, 628 may be cascaded in timing so that the link device 604 receives the packets in sequence. The link device 604 may identify the source of each packet based on when the packet was received.
[0141] The link device 604 is also capable of providing feedback to the sensing devices 602, 628 in the form of an acknowledgment character or acknowledgment packet sent in response to receiving each data packet. The acknowledgment packet acknowledges the receipt of each data packet and provides instructions to modify the timing of the next data packet outbound from each of the sensing devices 602, 628 to more closely match the predetermined time slots assigned to the sensing devices. In this manner, the link device 604 provides a continuous timing feedback loop, ensuring that the sensing devices 602, 628 continue to send data packets in their assigned predetermined time slots. Since the sensing devices 602, 628 have fixed execution times and the low frequency clocks are synchronized, the link device 604 only needs to know the time when the data packet is received, because the time difference between the expected reception and the actual reception will be the exact offset required on the sensing devices 604, 628 to ensure that the next tracker data packet will be closer to the expected reception time.
[0142] For clarity, the following specific example is provided. Clocks 650, 652, 658 run at a cyclic period (e.g., 1000 Hz or 1 ms). With reference to the clock signal from clock 650, sensing device 602 is assigned a time slot A (e.g., 0.4 milliseconds, 0.4 ms, 1.4 ms, 2.4 ms, etc.). A sample of buffered data (packet A) is extracted from buffer 642 and sent out via communication link 654 at 0.4 ms. Upon receipt of packet A, link device 604 sends an acknowledgement character A back to sensing device 602 via communication link 660 to acknowledge receipt of packet A.
[0143] The timing of reception of packet A by link device 604 will be close enough to the assigned time slot A to identify the packet as originating from sensing device 602, but some error will be introduced by transmission time, differences in the operation of clocks 650, 652, 658, etc. Embedded in the acknowledgment character A is an instruction to modify the timing of the next packet to be sent out from sensing device 602 to more closely match the time slot assigned to sensing device 602 with reference to the clock signal from clock 658. The instruction is intended to correct any difference between the assigned time slot A and the actual reception time of packet A at link device 604.
[0144] With reference to the clock signal from clock 652, a time slot B (e.g., 0.8 milliseconds, 0.8 ms, 1.8 ms, 2.8 ms, etc.) is allocated to sensing device 628. A sample of buffered data (packet B) is extracted from buffer 644 and sent out over communication link 656 at 0.8 ms. Upon receipt of packet B, link device 604 sends an acknowledgement character B back to sensing device 628 via communication link 660 to acknowledge receipt of packet B.
[0145] The timing of reception of packet B by link device 604 will also be close enough to the assigned time slot B to identify the packet as originating from sensing device 628, but some errors will be introduced by transmission times, operational differences in clocks 650, 652, 658, etc. Embedded in the acknowledgment character B is an instruction to modify the timing of the next packet to be sent out from sensing device 628 to more closely match the time slot assigned to sensing device 628. The instruction is intended to correct any difference between the assigned time slot B and the actual reception time of packet B at link device 604.
[0146] Another sample of buffered data (packet C) is extracted from buffer 642 and sent out over communication link 654 at 1.4 ms by default. However, the acknowledgement character A is used to modify the transmission time slot of packet C to more closely reflect the time slot allocated for the reception of packet C. For example, acknowledgement character A may include an instruction to delay the next packet by 20 μs. Thus, from the perspective of sensing device 602 and its clock 650, packet C is transmitted 20 μs earlier than 1.4 ms. Upon receipt of packet C, link device 604 transmits acknowledgement character C back to sensing device 602 via communication link 660 to acknowledge receipt of packet C.
[0147] The timing of reception of packet C by link device 604 will be close enough to the assigned time slot C to identify the packet as originating from sensing device 602, and due to the delay instruction, may be closer to the assigned time slot C, but may leave some error. Embedded in the confirmation character C is another instruction to modify the timing of the next packet to be sent out from sensing device 602 to more closely match the time slot assigned to sensing device 602. This instruction is intended to correct any difference between the assigned time slot C and the actual reception time of packet C at link device 604.
[0148] Another sample of buffered data (packet D) is extracted from buffer 644 and transmitted over communication link 656 at 1.8 ms by default. However, the acknowledgement character B is used to modify the transmission time slot of packet D to more closely reflect the time slot allocated for the reception of packet D. For example, acknowledgement character B may include an instruction to advance the next packet by 20 μs. Thus, from the perspective of sensing device 628 and its clock 652, packet D is transmitted 20 μs later than 1.8 ms. Upon receipt of packet D, link device 604 transmits acknowledgement character D back to sensing device 628 via communication link 660 to acknowledge receipt of packet D.
[0149] The timing of reception of packet D by link device 604 will be close enough to the assigned time slot D to identify the packet as originating from sensing device 628, and due to the advance instruction, may be closer to the assigned time slot D, but may leave some error. Embedded in the confirmation character D is another instruction to modify the timing of the next packet to be sent out from sensing device 628 to more closely match the time slot assigned to sensing device 628. This instruction is intended to correct any difference between the assigned time slot D and the actual reception time of packet D at link device 604.
[0150] To simplify the description, Figure 6 The specific example provided in only provides a total of four packets AD for two sensing devices 602, 628 and two for each of the sensing devices 602, 628. In practice, this example can be extended to as many devices as desired within the bandwidth limitations. In addition, this example can be extended to a continuous sequence of multiple cascaded packets from the sensing devices 602, 628 (and possibly additional sensing devices) to provide a continuous positive feedback loop to maintain the timing of the incoming packets to the link device 604 within the predetermined time slot. In some embodiments, approximately three sequentially cascaded packets from each sensing device are sufficient to achieve high accuracy in meeting the predetermined time slot. The proximity frequencies and allocated time slots provided are also merely examples, which can be increased or decreased depending on the needs of the link device 604 and the potential use of the underlying information in the data packets.
[0151] In addition, the data required for transmission device orientation can be minimized to only a few bytes (e.g., less than 16 bytes or 8 bytes), which can be transmitted within 1 ms, or even within 300 μs. Data packets (including information from sensing devices 602, 628 and confirmation packets) can each include an identifier indicating the intended destination of the data packet. For example, data packet AD can include an identifier of link device 604 so that only link device 604 reads data packet AD. Sensing devices other than the transmitting device can also receive data packets AD, but can ignore them based on the identifier. Similarly, confirmation characters AD can include an identifier of a specific intended sensing device so that only the sensing device reads each outbound confirmation character. Link device 604 and / or any other sensing device can also receive outbound confirmation characters, but can ignore them based on the identifier.
[0152] When not in active use, the sensing device 602, 628 can enter a low power (sleep) mode with the microcontroller 646, 648 in a standby state while the sensors 638, 640 fill their respective data buffers 642, 644. When the time slot allocated for the sensing device approaches, the sensing device powers up its microcontroller in sufficient time to sample its buffer and send the sample as an output data packet for the link device 604, as discussed in detail below. After receiving an acknowledgment character from the link device 604, the sensing device can enter its low power (sleep) mode again until the next time slot allocated for the sensing device approaches. This procedure is repeated iteratively and the battery life of each sensing device is improved by keeping each sensing device in a low power mode most of the time.
[0153] As discussed above, the sensing devices 602, 628 are synchronized with the link device 604 so that the sensing devices 602, 628 do not send data packets at the same time to reduce interference and enable the sensing devices 602, 628 to sleep between transmissions, thereby improving battery life. The use of low-power wireless connections and / or wired connections minimizes the power requirements of the sensing devices 602, 628, which enables them to be used for continuous sensing when the system 600 is in use and also maintains a long battery life. In a purely wired implementation, the sensing devices 602, 628 can omit a dedicated battery power source and draw power from a central battery located in the link device 604.
[0154] Although as discussed in detail above, Figure 6 , two sensing devices 602, 628 are shown connected to one link device 604, but other embodiments may include any number of sensing devices (e.g., 1 to 32) connected to a single link device, the only limiting factor being the bandwidth available to separate the inbound data packets from each sensing device in a timely manner. In some embodiments, signal frequency is used to further separate multiple groups of sensing devices. For example, if a single link device uses more sensing devices than the available bandwidth, a first group of sensing devices can utilize a first frequency band and a second group of sensing devices can utilize a second frequency band, thereby doubling the maximum possible sensing devices that can be connected to the link device. Further for example, by operating a first link device and its associated sensing devices on a first frequency band and a second link device and its associated sensing devices on a second frequency band, two separate cascaded communication systems can be used in close proximity (e.g., within the same room or building). Still further, more than two frequency bands can be utilized to further expand the number of link devices and associated sensing devices that can be used in close physical proximity to each other.
[0155] Figure 7An example operation 700 of using a full body motion capture system with cascade communication between a link portion and a tracker connected thereto according to the disclosed technology is shown. Other embodiments may use the disclosed cascade communication operation for systems other than full body motion capture. A generation operation 705 generates orientation data for the tracker and stores it in a buffer within the tracker. A tracker is a measurement device worn on a user's body to capture the user's body movements. Trackers can be strategically placed on the user's body and spaced apart from other trackers to capture relative motion of different parts of the user's body. The tracker is equipped with various sensors that are combined with a computing device referred to herein as an inertial measurement unit (IMU) to determine orientation and generate orientation data.
[0156] Extraction operation 710 extracts samples of the buffered data and places the samples into a data packet sent out of the tracker at a time slot assigned to the tracker with reference to the tracker clock signal. The tracker includes a microcontroller having a communication link to perform extraction operation 710. The tracker also includes a clock that defines a first tracker clock signal.
[0157] A receiving operation 715 receives a data packet from a tracker at the link portion. The link portion may also be placed on the user's body and also include a communication link with receiving and transmitting capabilities. The link portion is used to receive and merge orientation data received from a connected tracker (e.g., the tracker discussed above) via the communication link.
[0158] An acknowledgement operation 720 acknowledges receipt of the data packet using an outbound acknowledgement packet including instructions to modify the timing of the next data packet to be sent out from the tracker to more closely match the time slot assigned to the tracker by the reference link section clock signal. A second receive operation 725 receives the outbound acknowledgement packet from the link section at the tracker. A low power operation 730 switches the tracker into a low power mode between the second receive operation 725 and extracting the next sample of buffered data to place in the next data packet. When the time slot assigned to the tracker is restored, a modification operation 735 repowers the tracker and modifies the timing of the next data packet to be sent out from the tracker according to the instructions of the acknowledgement packet.
[0159] Operation 700 is substantially repeated for a second tracker that is assigned its own different time slot, such that packets incoming to the link portion from the second tracker are distinguishable from packets incoming to the link portion from the tracker discussed in detail above. Figure 7The specific example provided in only provides one tracker and one data packet. In practice, the example can be extended to as many trackers as needed within the bandwidth constraints. Furthermore, the example can be extended to a continuous sequence of multiple cascaded data packets from a tracker (and possibly additional trackers), providing a continuous positive feedback loop for each tracker to maintain the timing of incoming data packets to the link section within a predetermined time slot.
[0160] Fig. 8A An example charging hub 810 is shown with associated trackers (or sensing devices) 802 and link portions 804, each of which utilizes low-power near-beam wireless inductive charging from the charging hub 810. Dashed lines represent structures and features that are shown for clarity but are not generally visible. The charging hub 810 includes an array of six tracker docking stations (e.g., tracker docking stations 818) configured to accommodate battery-powered sensing devices such as trackers (e.g., tracker 802) in a particular charging orientation. The tracker charging orientation can be described as having a back side 870 of the tracker 802 placed near a front side 872 of the tracker docking station 818, and the tracker 802 centered within the tracker docking station 818 and rotated so that one side (e.g., side 874) thereof is aligned with a lower edge 876 of the tracker docking station 818, and the tracker 802 is seated within a saddle in the charging hub 810 formed by the tracker docking station 818. The charging hub 810 also includes a link portion docking station 820 configured to accommodate the link portion 804 in a particular charging orientation as well. The link portion charging orientation can be described as having a back side 878 of the link portion 804 placed near a top side 880 of the link portion docking station 820, and the link portion 804 centered within the link portion docking station 820 and rotated so that its side (e.g., side 882) is aligned with an edge (e.g., edge 884) of the link portion docking station 820, and the link portion 804 is seated within a recess in the charging hub 810 formed by the link portion docking station 820.
[0161] The link portion 804 and tracker slidably fit within the link portion docking station and the tracker docking station, respectively (with or without rubber pieces) to removably secure the link portion 804 and tracker in place on the charging hub 810 in a desired orientation. In other embodiments, the tracker includes receivers (not shown) on each side that removably receive matching clips (also not shown) on the charging hub 810 to secure the tracker in place on the charging hub 810 in a desired orientation. Still further embodiments may include magnets within the link portion docking station and the tracker docking station that mate with magnets within the link portion and tracker themselves, respectively, to removably secure the link portion 804 and tracker in place on the charging hub 810 in a desired orientation.
[0162] The charging hub 810 utilizes low power near beam wireless inductive charging to charge the trackers and link portions 804 when they are properly docked in respective docking stations on the charging hub 810. Each tracker includes a tracker inductive coil located inside and adjacent to a flat outer surface of the tracker (e.g., tracker inductive coil 886 located inside a flat outer surface of tracker 802, such as back side 870). Each tracker dock includes a matching dock inductive coil located inside and adjacent to a flat outer surface of the dock (e.g., dock inductive coil 890 located inside a flat outer surface of tracker dock 818, such as front side 872). Similarly, the link portion 804 includes a link portion inductive coil 888 located inside and adjacent to a flat outer surface of the link portion 804 (e.g., back side 878). The matching dock inductive coil 892 is located inside and adjacent to a flat outer surface of the link portion dock 820 (e.g., top side 880).
[0163] Low-power near-beam wireless inductive charging can be achieved with fewer components than the prior art. Typical wireless charging systems include dedicated circuits and have a high component count, which limits their use on larger devices. In addition, prior art solutions include a wireless power channel and a separate wireless communication channel, which increases cost and takes up PCB space. Although a wireless communication channel is generally required to ensure safety when transmitting multi-watt power through a single coil, the present disclosure designs each coil to consume no more than 250mW of power. This power is low enough that most materials can dissipate the generated heat energy at ambient temperature.
[0164] In addition, the charging hub 810 forms a negative feedback loop in which foreign objects located on the charging hub 810 will change the impedance of the LC circuit, so that less power is automatically transmitted. For example, when no device is charged, each coil consumes 20mW of power due to impedance changes caused by load reduction. The short distance of less than 3 or 5mm also ensures that unintentional radiation is not absorbed by stray objects. The transmitter operates through a fixed clock source that oscillates at several hundred KHz and is tuned to minimize the impedance of the coil. The clock is transmitted through a buffer that isolates the impedance of various charging devices so that each device works independently of other devices. The transistor receives the buffered signal and quickly closes and disconnects the high-side LC circuit, so that a magnetic field is generated in the coil (L). Whenever a properly impedance-matched coil is brought within 4 or 5mm of the transmitter coil, the impedance of the charging hub 810 changes to a value that maximizes the magnetic field generation, thereby improving the efficiency of wireless power transmission.
[0165] A single clock source is used to charge multiple devices. The number of devices that can be charged is increased by increasing the number of buffers, transistors, and LC circuits to match the number of devices. The theoretical limit is based on the amount of power that the charging hub 810 can provide. There are two isolation methods that allow this method to work in multi-device configurations where other methods may fail. First, the clock signal is electrically isolated with buffers so that multiple devices do not affect each other. Second, the magnetic fields are physically isolated using a specific orientation of the charger coil positions and ferrite sheets that redirect the magnetic field. If the charger is a simple grid of devices, or there is no ferrite sheet behind each coil, the transmitter coil magnetic fields will interact and power will flow from the transmitter coil to the adjacent transmitter coil instead of from the transmitter coil to the receiver coil as expected, which will negatively affect charging. This is because the shape of the induced magnetic field is a closed curve extending from one magnetic pole to the next. If the coils are adjacent to each other on the same plane, the magnetic field will propagate between adjacent coils because this is the shortest path between the magnetic poles. Similarly, if the coils do not have ferrite sheets but maintain the shape of the disclosed charger, the magnetic field lines will connect inside the charger because this is the shortest path between the magnetic poles. To adequately isolate the magnetic field, the coils are physically separated and shielded from each other, which is achieved with ferrite sheets. Angling the coils from each other allows the coils to be closer, rather than being linearly spaced in the same plane.
[0166] The link section 804 / tracker receiver circuit includes a full-bridge rectifier for converting the provided AC voltage to a DC voltage, as well as a constant current regulator (CCR). If higher efficiency than a diode is required, the full-bridge rectifier can be made with transistors. The circuit can monitor the battery voltage and shut down the CCR when the link section 804 / tracker battery is close to capacity. This changes the receiver LC circuit impedance by changing the load, which reduces the power of the link section 804 / tracker being charged, thereby minimizing heating and power losses. The controllable CCR supports state-of-the-art charging techniques such as pulse current charging, which has been shown to maximize battery life compared to traditional charging methods such as constant current constant voltage (CC-CV) charging. The circuit can produce an overall efficiency of over 70% even when charging multiple devices.
[0167] Figure 8B An example low power near beam wireless inductive charging circuit 800 is shown. In a typical simple inductive charging circuit according to the prior art, series LC circuits are used because they can output more power and are more efficient than an equivalent parallel LC circuit. However, the increased power comes at the expense of a smaller operating range when the load or impedance changes, which is why this type of charger uses a feedback loop to adjust the frequency and amplitude to find the optimal power transfer point.
[0168] In a typical flexible inductive charging circuit according to the prior art, the problem of a simple series LC circuit is solved by adding a feedback loop to find the optimal charging parameters under varying loads. A custom transmitter and a custom receiver are responsible for using the same coil for power transmission and communication. Typically, communication and power transmission occur at different frequencies, allowing the system to distinguish between them. These designs can vary the frequency, amplitude, and load of the circuit to find the optimal charging point. The power at the receiver is measured and sent back to the transmitter. The transmitter then calculates the efficiency and adjusts the frequency and amplitude to provide the most efficient charging. The system can compensate for various coil materials, coil shapes, coil spacing, and varying loads. However, since the optimal power transfer point needs to be found for each device, the system cannot work in a multi-device configuration. A multi-device configuration may require multiple custom TX ICs so that each IC can monitor each device independently.
[0169] The low power near beam wireless inductive charging circuit 800 uses a parallel LC circuit which has a lower peak power transfer rate but is more resilient under varying loads and impedances than prior art solutions. This means that even if the inductance value, capacitance value, or load varies slightly, the power transfer is not affected and remains close to peak performance. In other words, using a parallel LC circuit eliminates the need for a secondary communication channel that optimizes the narrow sweet spot present in a series LC circuit.
[0170] Near-beam inductive charging keeps the frequency and amplitude of the clock source constant. The magnetically coupled parallel LC resonant circuits 805, 815 form a fourth-order expression with multiple optimal points based on the frequency and coupling coefficient (k factor) of the two coils (L1, L2). The k factor is the efficiency of the two coils (L1, L2), and when the power transfer is lossless, the k factor will be 1.0. In prior art solutions, the power is calculated at the receiver and then sent back to the charger. The charger can then calculate the power loss and adjust accordingly. This provides maximum power transfer even at multiple charging frequencies. Since the circuit 800 lacks a secondary communication channel, it is not possible to transfer power or calculate efficiency on the fly at the receiver. Instead, optimal power transfer is achieved by impedance matching the receiver LC circuit 815 to the transmitter LC circuit 805. When the circuits 805, 815 are impedance matched, the resistive losses at that frequency are minimized. This does not necessarily mean that the power transfer is maximum at that frequency, but because a parallel LC circuit is used, the resulting power transfer will be close to peak efficiency. Furthermore, by using a parallel LC circuit, the point of minimum loss is large even with varying loads, which means that different receiver coil sizes and receiver LC circuits can be used on the same transmitter. Assuming known coil inductance and known frequency, the point of minimum resistive loss can be found by selecting the capacitor using the following equation:
[0171] C_TX = 1 / (L_TX*(1.29*2*PI*F)^2); and
[0172] C_RX=1 / (L_RX*(2*PI*F)^2), where
[0173] C = the capacitance of the capacitor in the LC circuit, in farads;
[0174] L = the inductance of the coil in the LC circuit, in Henrys; and
[0175] F = clock frequency.
[0176] A value of 1.29 is used on the transmitter side to illustrate transistor zero voltage switching (ZVS), which is the point at which transistor switching losses are minimized. The coil inductance and shape can also be varied while maintaining this equation, as only values are given that minimize resistive losses. Power transfer losses are controlled by the k factor, which is primarily related to coil coupling. The frequency can be set to minimize component cost. Lower frequencies mean greater capacitance, which equates to greater resistive losses. In general, lower frequencies increase the power transfer rate but result in greater losses, while higher frequencies decrease the power transfer rate but result in higher efficiency. About 200 kilohertz (KHz) is a good range for achieving a balance of efficiency and adequate power transfer. An additional advantage of impedance matching-based tuning is that the frequency will remain constant, but the induced magnetic field will vary depending on the load. In this way, the circuit 800 automatically minimizes losses when loaded and unloaded. Although the near-beam charging circuit 800 does not maximize overall power efficiency, it does minimize power losses, which may be sufficient in low-power applications.
[0177] When the tracker is placed in a specific charging orientation within the tracker dock, the tracker inductive coil faces the dock inductive coil (e.g., the tracker inductive coil 886 of the tracker 802 faces the dock inductive coil 890 within the dock 818), thereby forming a pair of matched inductive coils. Similarly, when the link portion 804 is placed in a specific charging orientation within the link portion dock 820, the link portion inductive coil 888 faces the dock inductive coil 892, thereby forming a pair of matched inductive coils. In the charging orientation, the pair of matched inductive coils are coplanar and centered with each other, and they are very close to each other (e.g., 3 mm to 5 mm or less than 6 mm).
[0178] Multiple matched pairs of tracker inductive coils are typically capable of transferring about 30 milliamps of power at 5 volts with a conversion rate of about 70%. Power transfer can generally be increased by increasing the diameter of the coil without significantly reducing efficiency. For example, by increasing the coil diameter from 12mm to 20mm, the link section 804 coil is capable of transferring about 85ma of power at 5V. The power transfer capability is directly related to the area of the coil. These numbers represent the maximum power transfer and are within the range of a standard 500ma 5V USB port. In addition, the charging power on the receiver side can be reduced by simply reducing the duty cycle of the CCR activity. This is useful in situations where one may want to balance the charging of the link section 804 / tracker group by adjusting the charging rate of each device, or when the charger is operating from a power-limited power source.
[0179] In various embodiments, the tracker induction coils may utilize constant current, pulsed current, constant voltage, pulsed voltage, or some combination thereof, which may be matched or mismatched to the impedance and other characteristics of the battery to be charged (e.g., battery 896). In some embodiments, one of the multiple pairs of matched induction coils (e.g., induction coils 888, 892) is larger than the other pairs of matched induction coils (e.g., induction coils 886, 890). The enlarged coils may enable a faster rate of power transfer from the charging hub 810 to the link portion 804 than the tracker. This may be due to the battery capacity and power requirements of the link portion 804 exceeding the tracker. For example, the area of the induction coils 888, 892 may be 20% larger than the induction coils 886, 890, and the power transfer may be 20% greater than the induction coils 886, 890. Unmatched coil sizes may also be used in situations where perfect coil alignment cannot be guaranteed, as the mismatch transfers more power over a larger area.
[0180] As long as the charging hub 810 is powered (e.g., by its own battery or an external power source), the docking station inductive coils (e.g., inductive coils 890, 892) can remain in a state that is always closed. This avoids the additional complexity and cost of providing a separate channel to control the on / off state of the docking station inductive coils as provided by many prior arts. Due to the relatively small power transfer rate and the close proximity of multiple pairs of matched inductive coils (e.g., as described above), there is no danger in powering the docking station inductive coils (e.g., low power does not create a risk of electric shock or a fire hazard) even when the matching tracker / link unit 804 inductive coil is disconnected or does not exist. The tracker / link unit 804 inductive coils (e.g., inductive coils 886, 888) are disconnected by the corresponding tracker / link unit 804 when the corresponding battery (e.g., battery 896) is indicated as fully charged, so that the batteries in the tracker and link unit 804 are not overcharged. In other embodiments, the docking station inductive coils are also closed / disconnected via a separate channel.
[0181] Each of the inductive coils within the charging hub 810, tracker, and link portion 804 is shielded on the back side of the inductive coil facing the interior of the charging hub 810, tracker, and link portion 804, respectively. The shield (e.g., shield 894) is typically planar and covers at least the footprint of the inductive coil and possibly more, such as Fig. 8A As shown. The shield may take the form of a metal or ferrite sheet that is specifically designed to prevent most of the magnetic field emitted from the induction coil from penetrating the shield into the charging hub 810, the tracker, and the link portion 804. The shield also serves to amplify the magnetic field emitted from the front side of the induction coil and to focus the magnetic field, except for the hemispherical magnetic field, to the center of the induction coil and away from the charging hub 810, the tracker, and the link portion 804. The docking stations may also be shielded from each other to prevent unnecessary magnetic interference from adjacent docking stations and to ensure that the docking stations provide sufficient and equal charging rates for the tracker and link portion 804. In other embodiments, the charging hub 810 utilizes metal contacts at its docking station that mate with the metal contacts on the tracker and link portion 804 for a traditional charging scheme.
[0182] As shown in the accompanying drawings, the docking stations on the charging hub 810 are arranged in a multi-faceted arrangement, where the docking stations are not located in a single plane as in many prior art wireless charging plates and pads. This orientation physically separates the magnetic field of the charging coil from the magnetic field of the adjacent charging coil, thereby enabling multi-device charging in a compact space. Although the charging hub 810 is shown as having six docking stations for trackers and a single docking station 820 for the link portion 804, in other embodiments, as few as two docking stations and as many docking stations as needed for trackers and / or link portions may be used. In addition, although the charging hub 810 has a specific number of charging docking stations, not all charging docking stations are used at the same time to charge the connected trackers and / or link portions. In addition, the charging hub 810 can also double as a storage box for the tracker and / or link portion 804 when not in use. In addition, the charging hub 810 can be physically connected to a power source when in use, or the charging hub 810 can have its own rechargeable battery power source, so that the charging hub 810 can charge the tracker and / or link unit 804 even if it is not physically connected to a power source if the battery power of the charging hub 810 is sufficient.
[0183] The advantages of the disclosed low power near beam wireless inductive charging over prior art solutions using electrical contacts are that it is waterproof, requires only one cable for power (or to charge the charging hub 810 if it is battery powered), does not require a separate power pack, does not require USB or other connections on the tracker and / or link unit 804, and the charging hub 810 / tracker / link unit 804 is easy to transport and use.
[0184] The advantages of the disclosed low power near beam wireless inductive charging over prior art wireless inductive solutions are that prior art solutions are designed to transfer high power and provide greater flexibility in aligning a pair of matching inductive coils. The present technology is low power, enabled in part by the specific charging orientation disclosed herein, which allows for smaller coils. The lower power and smaller coils further enable the docking station inductive coil to remain in an always-closed state as long as the charging hub 810 is powered, compared to the prior art. This avoids the additional complexity and cost of providing a separate channel to control the on / off state of the docking station inductive coil, as many prior art technologies provide.
[0185] Fig. 9 An example operation 900 using a low power near beam wireless charging hub is shown. Although the low power near beam wireless charging hub is explicitly described as charging a tracker array and a link portion of a full body motion capture system, the low power near beam wireless charging hub can be used to charge a variety of battery powered sensing devices. The power supply operation 910 powers the charging hub via an external power source or an internal battery. The charging hub includes a docking station and a docking station induction coil located inside and adjacent to a flat outer surface of the docking station. The docking station has a multi-faceted arrangement surrounding the exterior of the charging hub and is shielded from each other.
[0186] A first seating operation 920 seats a first battery-powered sensing device (e.g., a tracker) in a first docking station of a charging hub in a first predetermined charging orientation. The first battery-powered sensing device includes a first device inductive coil located inside and adjacent to a planar outer surface of the first battery-powered sensing device. One of the docking station inductive coils faces the first device inductive coil in the first predetermined charging orientation.
[0187] The second docking operation 930 docks a second battery-powered sensing device (e.g., link portion) in a second docking station of the charging hub in a second predetermined charging orientation. The second battery-powered sensing device includes a second device inductive coil located inside and adjacent to a flat outer surface of the second battery-powered sensing device. Another of the docking station inductive coils faces the second device inductive coil in the second predetermined charging orientation.
[0188] The charging operation 940 inductively charges a first battery-powered sensing device and a second battery-powered sensing device using a plurality of pairs of matched inductive coils. The first matched pair is one of the first device inductive coil and the docking station inductive coil. The second matched pair is the other of the second device inductive coil and the docking station inductive coil.
[0189] In some embodiments, when the charging hub is powered on, the docking station inductive coil is always in a closed state and handles on / off charging control on the battery-powered sensing device. When the first battery-powered sensing device is fully charged, the first disconnect operation 950 disconnects the first device inductive coil. When the second battery-powered sensing device is fully charged, the second disconnect operation 960 disconnects the second device inductive coil.
[0190] Although the above specifically describes the use of two battery-powered sensing devices in two docking stations, in other embodiments, the battery-powered sensing devices and corresponding docking stations in the required charging hubs can be used as described above. In addition, not all charging docks are used at the same time to charge the connected battery-powered sensing devices (e.g., the tracker and / or link portion of the whole body motion capture system).
[0191] Fig.10 An example system diagram of a computing environment 1000 suitable for executing a full body motion capture system according to the disclosed technology is shown. Tracker (or sensing device) 1002 includes an IMU 1014, which includes an accelerometer 1016, a magnetometer 1018, and a gyroscope 1020, which together provide orientation data for tracker 1002. The orientation data flows through a bus 1010 (e.g., a printed circuit board) to a microcontroller, which includes at least a processor 1008, a system memory 1006, a power supply 1028, and a wired / wireless interface 1024. Although as described above, in Fig.10 Only one tracker 1002 is shown in FIG. 1 , but the full body motion capture system described in detail elsewhere herein may include more than two trackers, each of which may be configured as described above and as described above. Fig.10 shown.
[0192] The link portion (or link device) 1004 receives and consolidates the orientation data received from a group of trackers such as tracker 1002 via a wired or wireless communication link 1060 between the wired / wireless interface 1024 of the tracker 1002 and the wired / wireless interface 1025 of the link portion 1004. In various embodiments, the link portion 1004 receives data from the tracker 1002 and other connected trackers. Whether or not to consolidate and / or further process the received data, the link portion 1004 transmits the data to an external computing device 1099 (e.g., a smartphone, tablet, laptop, desktop, server, and virtual machine) via another wired or wireless communication link 1061.
[0193] Thus, for example, the wired / wireless interface 1025 of the link portion 1004 may include three radio waves. A first radio wave establishes a communication link 1060 with the tracker 1002. A second radio wave establishes a communication link 1061 with an external computing device 1099 using Bluetooth. A third radio wave establishes a communication link 1061 with an external computing device 1099 using WiFi. Additional or fewer radio waves, including different radio waves than those listed, and including radio wave options capable of using multiple communication standards are also contemplated herein.
[0194] Typically, the tracker 1002 and link unit 1004, buses 1010, 1011 interconnect major subsystems such as processors 1008, 1009, system memory 1006, 1007 (such as random access memory (RAM) and read-only memory (ROM)), and power supplies 1028, 1029. Wired / wireless interfaces 1024, 1025 are used to establish communication links 1060, 1061, which ultimately enable the link unit 1004, tracker 1002 and other connected trackers to transmit tracker orientation and / or position data to a data storage network and / or a local or wide area network (such as the Internet) through an external computing device 1099 using any network interface system known to those skilled in the art.
[0195] Many other devices or subsystems (e.g., servers, personal computers, tablets, smartphones, mobile devices, etc.) can be used with Fig.10 In addition, there is no need to have Fig.10 All components shown can be used to practice the disclosed technology. In addition, the device and its components can be used with Fig.10 Code (eg, computer software, including mobile applications (apps)) for implementing the disclosed technology may be operably disposed in system memory 1006, 1007 as firmware or software.
[0196] Tracker 1002 and / or link portion 1004 may include various tangible computer-readable storage media (e.g., system memory 1006, 1007) and intangible computer-readable communication signals. Tangible computer-readable storage may be implemented by any available media including volatile and non-volatile storage media accessible by tracker 1002 and / or link portion 1004, as well as removable and non-removable storage media implemented in any method or technology to store information such as computer-readable instructions, data structures, program modules, and / or other data. Tangible computer-readable storage media include, but are not limited to, firmware, RAM, ROM, electrically erasable programmable read-only memory (EEPROM), flash memory or other storage technology, optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other tangible media that can be used to store the desired information and can be accessed by tracker 1002 and / or link portion 1004.
[0197] Intangible computer-readable communication signals may be implemented as computer-readable instructions, data structures, program modules, or other data residing in a modulated data signal such as a carrier wave or other signal transmission mechanism. The term "modulated data signal" refers to a signal whose one or more characteristics are set or changed to encode information in the signal. By way of example and not limitation, intangible communication signals include signals propagated through wired media (such as a wired network or a direct wired connection) and wireless media (such as sound, radio frequency (RF), infrared (IR) and other wireless media). Computer-readable storage media as defined herein expressly exclude intangible computer-readable communication signals.
[0198] Some embodiments may include an article of manufacture that may include a tangible storage medium for storing logic. Examples of storage media may include one or more types of computer-readable storage media capable of storing electronic data, including volatile or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writable or rewritable memory, etc. Examples of logic may include various software elements, such as software components, programs, applications, computer programs, applications, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, operating segments, methods, programs, software interfaces, application program interfaces (APIs), instruction sets, computing codes, computer codes, code segments, computer code segments, words, values, symbols, or any combination thereof. For example, in one embodiment, an article of manufacture may store executable computer program instructions that, when executed by a computer, cause the computer to perform methods and / or operations according to the described embodiments. Executable computer program instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, etc. Executable computer program instructions can be implemented according to a predefined computer language, method or syntax to instruct a computer to perform a specific operation segment. The instructions can be implemented using any suitable high-level, low-level, object-oriented, visual, compiled and / or interpreted programming language.
[0199] The technology of the present disclosure can be implemented as logical steps in one or more computer systems (for example, as a sequence of steps implemented by a processor executed in one or more computer systems, and as interconnected machines or circuit modules within one or more computer systems). The implementation method is a matter of choice, depending on the performance requirements of the computer system implementing the technology of the present disclosure. Therefore, the logical operations that constitute the implementation methods of the technology of the present disclosure are variously referred to as operations, steps, objects, or modules. In addition, the logical operations can be performed in any order, adding or omitting operations as needed, unless otherwise explicitly required or the claim language inherently requires a specific order.
[0200] The above description, examples and data provide a complete description of the structure and use of exemplary embodiments of the disclosed technology. Since many embodiments of the disclosed technology can be carried out without departing from the spirit and scope of the present invention, the disclosed technology exists in the claims attached below. In addition, without departing from the cited claims, the structural features of different embodiments can be combined in another embodiment.
Claims
1. A cascade communication system, comprising: a first sensing device, the first sensing device comprising: one or more sensors for generating data and storing the data in a first buffer; and a first microcontroller for extracting samples of the buffered data and placing the samples in a first data packet transmitted outwardly from the first sensing device at a time slot assigned to the first sensing device with reference to a first sensing device clock signal; a second sensing device, the second sensing device comprising: one or more sensors for generating data and storing the data in a second buffer; and a second microcontroller for extracting samples of the buffered data and placing the samples in a second data packet transmitted outwardly from the second sensing device at a time slot assigned to the second sensing device with reference to a second sensing device clock signal; and A link device, the link device is connected to the first sensing device and the second sensing device, the link device is used to: receive the first data packet from the first sensing device; confirm the receipt of the first data packet using a first outbound confirmation packet including instructions for modifying the timing of the next data packet to be sent out from the first sensing device to more closely match the time slot assigned to the first sensing device with reference to the link device clock signal; receive the second data packet from the second sensing device; and confirm the receipt of the second data packet using a second outbound confirmation packet including instructions for modifying the timing of the next data packet to be sent out from the second sensing device to more closely match the time slot assigned to the second sensing device with reference to the link device clock signal.
2. The cascade communication system according to claim 1, wherein: Each of the first data packet and the second data packet includes an identifier indicating the link device as an intended destination of the first data packet and the second data packet.
3. The cascade communication system according to claim 1, wherein: The first microcontroller is used to: receiving the first outbound confirmation packet from the link device; as well as modifying the timing of the next data packet to be sent out from the first sensing device as indicated by the first outbound confirmation packet, and Wherein, the second microcontroller is used for: receiving the second outbound acknowledgment packet from the link device; and The timing of the next data packet to be sent out from the second sensing device is modified as indicated by the second outbound confirmation packet.
4. The cascade communication system according to claim 1, wherein: Each of the first sensing device and the second sensing device enters a low power mode between receiving an outbound acknowledgement packet from the link device and extracting a next sample of the buffered data to place into a next data packet.
5. The cascade communication system according to claim 1, wherein: Each of the first data packet and the second data packet is smaller than 16 bytes.
6. The cascade communication system according to claim 1, wherein: Each of the first data packet and the second data packet is encrypted using a symmetric key algorithm using a stream cipher.
7. A method of cascading tracker communications in a body motion capture system, the method comprising: generating orientation data for a first tracker and storing the orientation data for the first tracker in a first buffer within the first tracker; extracting samples of the buffered data and placing the samples into a first data packet transmitted outwardly from the first tracker at a time slot assigned to the first tracker with reference to a first tracker clock signal; receiving, at a link portion, the first data packet from the first tracker; acknowledging receipt of the first data packet with a first outbound acknowledgment packet including instructions for modifying a timing of a next data packet to be sent outwardly from the first tracker to more closely match a time slot assigned to the first tracker by a reference link portion clock signal; generating orientation data for a second tracker and storing the orientation data for the second tracker in a second buffer within the second tracker; extracting samples of the buffered data and placing the samples into a second data packet transmitted outwardly from the second tracker at a time slot assigned to the second tracker with reference to a second tracker clock signal; receiving, at the link portion, the second data packet from the second tracker; as well as Receipt of the second data packet is acknowledged with a second outbound acknowledgement packet including instructions for modifying the timing of a next data packet to be sent out from the second tracker to more closely match a time slot assigned to the second tracker with reference to the link section clock signal.
8. The method according to claim 7, wherein: Each of the first data packet and the second data packet includes an identifier indicating the link portion as an intended destination of the first data packet and the second data packet.
9. The method according to claim 7, further comprising: receiving the first outbound confirmation packet from the link portion; modifying the time of the next data packet to be sent out from the first tracker as indicated by the first outbound confirmation packet; receiving the second outbound confirmation packet from the link portion; as well as The time of the next data packet to be sent out from the second tracker is modified according to the indication of the second outbound confirmation packet.
10. The method according to claim 7, further comprising: A low power mode is entered at each of the trackers between receiving an outbound acknowledgement packet from the link portion and extracting a next sample of the buffered data to place into a next data packet.
11. The method according to claim 7, further comprising: combining the received data packets into a single body motion capture signal; Sending the single body motion capture signal outwardly from the link portion; receiving, at a computing device, the body motion capture signal from the link portion; as well as The body motion capture signals are interpolated to create a digital representation of the user's body motion.
12. The method according to claim 7, wherein: Each of the first data packet and the second data packet is encrypted using a symmetric key algorithm using a stream cipher.
13. A body motion capture system comprising: a first tracker to be placed on a first part of a user's body, the first tracker comprising: one or more sensors for generating orientation data of the first tracker and storing the orientation data of the first tracker in a first buffer; and a first microcontroller for extracting samples of the buffered data and placing the samples in a first data packet sent outwardly from the first tracker at a time slot assigned to the first tracker with reference to a first tracker clock signal; a second tracker to be placed on a second part of the user's body, the second tracker comprising: one or more sensors for generating orientation data of the second tracker and storing the orientation data of the second tracker in a second buffer; and a second microcontroller for extracting samples of the buffered data and placing the samples in a second data packet sent out from the second tracker at a time slot assigned to the second tracker with reference to a second tracker clock signal; and A link portion connected to the first tracker and the second tracker, the link portion being used to: receiving the first data packet from the first tracker; acknowledging receipt of the first data packet with a first outbound acknowledgment packet including instructions for modifying a timing of a next data packet to be sent outwardly from the first tracker to more closely match a time slot assigned to the first tracker by a reference link portion clock signal; receiving the second data packet from the second tracker; and Receipt of the second data packet is acknowledged with a second outbound acknowledgement packet including instructions for modifying the timing of a next data packet to be sent out from the second tracker to more closely match a time slot assigned to the second tracker with reference to the link section clock signal.
14. The body motion capture system according to claim 13, wherein: Each of the first data packet and the second data packet includes an identifier indicating the link portion as an intended destination of the first data packet and the second data packet.
15. The body motion capture system according to claim 13, wherein: The first microcontroller is used to: receiving the first outbound confirmation packet from the link portion; and modifying the time of the next data packet to be sent out from the first tracker as indicated by the first outbound acknowledgement packet, and Wherein, the second microcontroller is used for: receiving the second outbound confirmation packet from the link portion; and The time of the next data packet to be sent out from the second tracker is modified according to the indication of the second outbound confirmation packet.
16. The body motion capture system according to claim 13, wherein: Each of the first tracker and the second tracker enters a low power mode between receiving an outbound acknowledgement packet from the link portion and extracting a next sample of the buffered data to place into a next data packet.
17. The body motion capture system according to claim 13, further comprising: a third combined tracker to be placed on a third part of the user's body, the third combined tracker comprising: Two or more separate trackers, each of the separate trackers comprising: one or more sensors for generating orientation data for the third combined tracker and storing the orientation data for the third combined tracker in a third buffer; and A third microcontroller is used to extract samples of the buffered data and place the samples into a third data packet sent out from the third combined tracker at a time slot assigned to the third tracker with reference to a third combined tracker clock signal.
18. The body motion capture system according to claim 17, wherein: The third combined tracker is a glove.
19. The body motion capture system of claim 13, wherein: The link unit is further configured to merge the received data packets into a single body motion capture signal, and the body motion capture system further comprises: A computing device is configured to receive the body motion capture signals from the link portion and interpolate the body motion capture signals to create a digital representation of the user's body motion.
20. The body motion capture system of claim 13, wherein: Each of the first data packet and the second data packet is encrypted using a symmetric key algorithm using a stream cipher.
Citation Information
Cited By
Communication encryption method based on Enhanced SockBurst protocol
CN121126329A
