Rigid body dynamics computes the large-scale motion of joints by integrating Newton's equations for each bone subject to the contact constraints. We have developed a novel simulator that computes the contact constraints directly from the bone models. This computation is the bottleneck in dynamical simulation. At each time step, the simulator computes the touching parts, the contact points, and the contact geometry. It uses this information to detect collisions, to compute the resulting velocity changes, and to compute contact forces. Current contact analysis algorithms have to examine all pairs of part features in the worst case, making the running time per step quadratic in the geometric complexity of the parts. Although clever methods exist for speeding up the computation, they do not apply to joints because of the complex geometry and the closeness of the bones [14, 23].
We have developed a simulation algorithm that replaces collision detection with configuration space computation [20]. The configuration spaces of the pairs of parts in the mechanism are complete, concise contact models. Our algorithm precomputes these contact models from the bone models before the simulation and stores them with the bone models. It handles contacts between parts with curved boundaries without approximation. The worst-case running time of the precomputation is quadratic in the geometric complexity of the parts, as is a single collision detection. At each simulation step, the algorithm obtains the necessary contact data by querying the pairwise configuration spaces. Each query takes linear time in the number of parts and is independent of their geometric complexity.
The simulator requires the material properties and external loads on the bones. We currently use values from the biomechanical literature [12, 7, 17].
We plan to generate customized dynamical models that incorporate contact forces due to bone interactions, external forces due to body weight, muscle forces, and elastic forces due to ligaments, tendons, and other flexible membranes. The contact forces will come from the kinematics model. The user will provide the body weight or the program will compute it from clinical data. The user will provide the muscle forces or the program will compute them from high-level specifications of patient activity, such as ``running'' or ``jumping rope''. We will model flexible membranes as rigid links connected by compression springs, torsion springs, and dampers. The program will estimate the model parameters, such as link lengths and spring coefficients, from the clinical data. The user will simulate standard motion regimens by varying the parameters. For example, tibial rotation is inhibited during flexion by making the torsion spring very stiff.