Direct dynamics analysis¶
Introduction¶
This tutorial introduces additional features of the Direct Dynamics module in Robotran.
For the basics use of direct dynamics, see the Pendulum-Spring tutorial Getting Started.
The programming language in this tutorial is C.
All the detailed informations is given in the MBsysC documentation. However, this tutorial gives some insights on some specific options.
Time integration
Integrator type
MBsysC comes with different integrators (RK4, Dopri5…). The selection
of the integrator is done by setting
mbs_dirdyn->options->integrator
to the wanted value. The list of
the available integrators is in the MBsysC
documentation.
Some are implicit, multi-step, etc. See their headers for more
information (like the Rosenbrock
header).
//...
int main(int argc, char const *argv[])
{
//...
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
/* Direct Dynamics *
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// dirdyn options (see documentations for additional options)
mbs_dirdyn->options->integrator = "RK4";
//...
}
Other options have to follow the same syntax as above.
REMARK:
By default, the integrator is Runge Kutta with 4 steps
Integrators parameters
Depending on the integrators, various parameters can be chosen
(toler
, dt_max
, …). See MBsysC
documentation.
Force the integrator to pass at specific time values
If you need an adaptive integrator to pass at some fixed time stepped
value (for example for a synchronization), you can activate the
flag_waypoint
in the MbsDirdynOptions structure. Then the step
size is defined in the delta_t_wp
field. ..
Stiff systems
It is also possible to perform numerical stabilization based on
Baumgarte method
at the velocities and accelerations levels. See
flag_baumgarte_stabilization
and baumgarte_alpha
baumgarte_beta
options.
Jacobian calculation
For the implicit integrators, option n_freeze
may stop the
computation and compute it only each n_freeze
time. For example,
if n_freeze = 1
, the Jacobian will be computed every two time
steps.
Besides, the flag flag_ongoing_jac_computation
says when the
integrator is computing the Jacobian (==1) or when an internal step
is processed (==0). It allows to separate calculation between the two
situations. For example, if a FSM is used, it could be better not to
change the FSM state during the Jacobian computation.
Animation
Various options are available for customizing the animations saving
(see resfilename
, respath
, save_anim
, …).
Various
To make the computation time smaller, several flags allow to prevent Robotran from computing useless values.
flag_compute_Qc
andcompute_Qc
: computation of the driven joint Lagrange multiplierscompute_all_uxd
: computation of the user derivative