Large dynamic systems like those described in Section 2.1 are difficult to engineer. There are many parameters that must be chosen, and furthermore there are few guidelines available, so, often a great deal of expertise with dynamic simulation is required to realize a working system. This sort of system is also computationally rather costly: the system described above consumes nearly 100% of a 500MHz Alpha 21164 processor.
The above system can be easily converted to an energy-based kinematics
engine as describe by Witkin [21], by dropping the integration
over acceleration. Here are the update equations for the dynamic
case using the synchronous Euler method:
= | |||
= | |||
= |
= | |||
= | |||
= |
Fortunately there are other ways of making predictions about dynamic
systems, including Kalman filters. Linear Kalman filters are
computationally efficient, and, while Kalman filters also have a large
number of parameters that must be chosen, there is a mature literature on
the subject [1]. The update equation for the linear Kalman
filter is the matrix form of the dynamic update equations above:
A system that uses one such individual Kalman filter per tracked body part demonstrates good local tracking characteristics (in fact, optimal characteristics for some narrow definition of the word), but are subject to the failing that they occasionally make predictions that, taken together, violate the global, known constraints of the system. By linking independent Kalman filters together with the kinematics-only constraint formulation, we achieve qualitatively identical performance to the full-dynamics implementation with significantly less engineering and only 15% utilization of the same 500MHz Alpha 21164 processor. The state estimates of the Kalman filter simply become the goals for the constraint system. The kinematics iterate to a globally consistent answer, and those results then become the new state estimates.
A more intimate connection could be achieved with considerably more work and computation by using the Jacobians calculated in the constraint system to guide extended Kalman filters, but we didn't find this to be necessary.
It's important to remember that these linear Kalman filters sit within the larger recurive estimation framework described in the rest of this paper. They share the ``Dynamics'' box in Figure 1 with the constraint system.