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.
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.
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
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).
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.
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.