Using relative parameters, the majority of joints are introduced in the system using their natural degrees of freedom. As a consequence, no matter how big the variation of the degrees of freedom is over the time step, these joints only allow motions that are consistent with the joint kinematics. For example, a revolute joint that has one single rotational degree of freedom can have an increment with a rotation of 3600 degrees in one time step, and it will still not generate out of plane motion, nor will the two points linked by the joint separate. Conversely, some joints are constraint equation based (all the graph closed-loop joints) and need special attention to satisfying proper joint kinematics.
The time integration schemes that are used provide a piecewise polynomial approximation of the solution. These schemes realize a polynomial approximation of the solution. The constraint equations such as those developed in the crankshaft example shown in Figure 5.10: Crankshaft Mechanism are not polynomial expressions of the geometric variables. Similarly the relation between kinematic variables and geometric variables, expressed as , is usually not polynomial. As a consequence, using for example the RK4 time integration, the constraint equations that are exactly satisfied in terms of accelerations at each of the Runge-Kutta estimations might not be satisfied in terms of velocities and positions at the end of the time step. After a number of time steps, closed loops will not be closed anymore, and points P1 and P2 in the crankshaft example will slowly drift away from each other.
To avoid these violations of constraint equations, various strategies can be used.
The drift of the violated constraints equations is corrected by a projection of the numerical solution. Two methods are available to perform it:
- Pure Kinematic Method
As proposed by Dehombreux [DEH95], this method is performed by projecting back the solution of the constraint equation.
Both positions and velocities can be projected back using this correction.
By projecting the solution, an increment of the geometry variables can be found iteratively:
(5–75)
(5–76)
(5–77)
Note that the relation between the kinematic variables and the geometric variables is reused in an incremental form.
Because of the dependency of the constraint equations on the geometric variables, this solution is nonlinear, and must be performed until the increment is small enough.
Once the position has been corrected, another step can be done to correct velocities:
(5–78)
(5–79)
As these equations are not velocity dependent, there is no need to iterate on this system.
- Inertia Matrix Method
In this method, geometry variables are calculated iteratively by solving:
(5–80)
Once convergence is reached, the velocity increments are obtained using
(5–81)
This method results from the minimization of kinetic energy. Using the inertia matrix for correction of violated constraints leads to more consistent results than when using the pure kinematic method. Furthermore, scaling with the inertia matrix enables you to perform a resolution which is consistent with the metrics of the problem.