## Results

Clip1

Clip 2

### Notes About Stability and Accuracy

The stability of position and motion accuracy relies most importantly on the resolution of the measurement.  With 1024-bit resolution in angel computation (for orientation tracking), the smallest measurable angle change is:

Equation (15): Smallest Measurable Change in Angle

Which results in a total of:

Equation (16): Total Number of Positions in a Cycle

This is certainly more than enough resolution to accurately construct rotational motion using sins’ and cos.’

One noticeable error seen in playback is the apparent jitter in the motion playback.  At first thought, this would seem to be the result of signal noise or poor resolution.  That idea was refuted by the stability of DC-accelerations.  Table (2) below, shows consecutive samples of each channel at DC as seen by the incoming data packets on the computer.

Table (2): Zero-G Acceleration Measurements

751.000000, 743.000000, 883.000000, 782.000000, 701.000000, 866.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 744.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 744.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 783.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 743.000000, 882.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

750.000000, 743.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 744.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 783.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 744.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 701.000000, 866.000000

751.000000, 743.000000, 882.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 744.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 865.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 866.000000

751.000000, 743.000000, 883.000000, 782.000000, 702.000000, 865.000000

Notice, as each channel sits at DC (the sensors are set flat on a table and sampled) that there is only 1-bit noise.  Recall Equation (15) (above) that shows a single bit flip will result in a .05-degree change in angle – this isn’t even noticeable.

A greater source of jitter, however, is the mechanical oscillation of the sensor itself.  This can occur when the sensor is improperly (or not tightly enough) fashioned to the body.  Also, shaking of the wire that connects the sensor to the prototype board can also shake the sensor enough for it to jitter.  This oscillation can have a long time constant resulting in great signal error.  Additionally, the body is not a perfectly rigidly body and exhibits some of it’s own jitter.

### G-Observation

Using only g-observation techniques, the motion capture system is highly effective.  Notice in the video above, motion in any plane that contains at least some part of gravity provides accurate body orientation and position tracking.  The major drawback to this method is it’s poor speed response.  For no motion, or relatively slow motion, the algorithm reproduces orientation and body position very accurately.  With more rapid motions, or with vibrations of the sensor, however, there is a short period where the orientation is in an indeterminate state.  As rapid motions subside, the motion will settle and the algorithm will lock back onto the proper position and orientation.

### Numerical Integration

Using numerical integration techniques to extract positional movements was perhaps the most difficult, but rewarding portion of this project.  The problem included many difficult aspects to overcome, such as removing gravity, filtering and averaging as well as magnitude response of the system.  Using the DC-blocking filter to remove the effect of gravity worked very well.  The plot below shows the measured acceleration of an axis which implements DC (gravity) blocking.

Figure (17): DC Blocking Results

The DC-filter axis is rotated from parallel to the g-field through a 180-degree rotation to parallel with the g-field in the opposite orientation.  Notice that there is no measurable acceleration seen in the acceleration plot (left), the only visible result is added noise.  By performing numerical integration on the signal to extract velocity (right), some noticeable errors are present.  Implementing a velocity damper during time periods where acceleration is small minimizes such errors.

The next difficult to overcome is drift error as a result of two numerical integrations of acceleration over time in the presence of relatively high noise and error density.  The first solution to the problem is to place a “Reset” button in the capture program.  If the system has drifted too far, it can be reset to an initial state.  A second solution was the filtering/magnitude shaping/damping algorithm as described in the High Level Design portion.  The results are shown below in figure (18).

Figure (18): Numerical Integration Over a Single Axis

A left followed by right hand motion (perpendicular to the earth’s gravity field) is shown above.  Notice how the velocity is extracted from position to show a velocity to the left (negative) followed by a velocity to the right (positive).  The source of the double-hump velocity motions (as opposed to a single-hump that would be expected) is a result of improper integration coefficients.  The code actually blocks any opposite-shaped hump if just finished a hump of a particular orientation.  Without this fix, the velocity models the acceleration too greatly, and resultantly provides motions with no ending offset.  Thus, the second hump in the velocity left or right motions is a result (as can be seen) of the bouncing of the acceleration curve.  Using proper coefficients (for division/multiplication) would better eliminate these effects.  Notice on the bottom plot how position (in this case an angular position) is extracted by another numerical integration over velocity.  This plot accurately shows a left (angle decrease) followed by a right (angle increase) motion, with relatively little lag.  The dual-humped velocity curves, then result in a jerking motion from the initial position to the final one, rather than a smooth movement.

Although position can be extracted from acceleration it is extremely difficult to find the proper magnitude for these motions.  Different types of movements – especially jerky ones, although giving the proper extracted motion, have highly varying magnitudes

### Delay

As can be seen by the video (above) and the two plots shown above, delay in motion and playback is most generally a result from averaging and signal transmission.  In general, the maximum transmission delay can be no longer than  which is considered rather negligible.  Delay due to averaging or numerical integration can persist as long as 100 ms, as seen by the plots above (which are 3.67 seconds long).

### Safety

Although not as big of an issue compared to other projects, safety was still an important consideration in designing our project, specifically with the hardware.  Because these are electronic components, we wanted to ensure that there is never an electrical connection from the tracking sensors to the body.  Wrapping the connectors in electrical tape as well as placing Velcro straps between the tracker and the body combat this issue.  The PCB boards themselves have no possibility of shocking someone.  In a professional application, the trackers would be placed in a completely isolated container, but for this application, Velcroing them directly to the body is sufficient.

Neither the tracking sensors nor any portion of the prototype board become hot enough to burn or injure a human.

A final consideration on safety is the face of the manikin that plays back the motion.  When improper arm orientations are observed, the smiley-face turns to a frown, indicating that a limb or joint may be broken or stressed.  Although the user would most certainly feel the pain before observing it on the screen, this can be useful in playing back the data later for biomechanical analysis or physical therapy applications.

### Usability

Any plane of motion that uses g-observation for motion tracking works effectively for any type of person.  Numerical integration (NI) motion takes some time to use properly.  NI-motion planes best respond from quick starting motions and slowly decaying stops.  NI-planes also respond very well to rapid oscillations that provide a DC motion in a single direction.  Because the gravity-filter is not perfect, motion in the proper direction can also be achieved in NI-planes by quickly tilting the sensor in the proper direction.

In general, the tracking system can be easily used by any type of person (or motion-generating object).  It really is quite incredible to watch the playback of your own motion in real–time.