BIPOP
|
Tutorial
ComputeContactForces
This function computes the interaction force at each point of contact,
and for each simulation time. What it does is basically:
- (Re)compute the actuation torques with the [zdot, Torques] =
ActuationDynamics(t, q, qdot, z, state)
function.
- Then the acceleration qddot is computed with [qddot] =
LagrangianDynamics(t, q, qdot, Torques, ContactState).
- Finally the contact forces with [Lambda] = ContactForces(q, qdot, qddot, Torques, ContactState).
ContactForces
This function seeks for each point of contact the interaction force the most
inside the friction cone by solving a linear optimization problem.
These steps are repeated for all the simulation times and each vector
Lambda computed this way is stored as a column of the matrix
LAMBDA. Each vector Lambda contains first the X
components of all the contact forces, then the Y components and finally
the Z components, in that strict order.
Visu and CreateVRML
These two functions do the same thing, they draw a 3D animation of the
model for the motion simulated beforehand. The interaction forces at
each contacting solid are drawn at the corresponding centers of pressure
and the sum of the interaction forces is drawn at the global center of pressure.
The Visu function defined in the
LagrangianDynamics/*Name* module/directory realizes this
animation with Scilab functions and produces a stick figure animation,
while the CreateVRML function defined
in the LagrangianDynamics directory produces
a full 3D animation in a VRML file, much nicer to look at.
Some results of simulation obtained with HuMAnS are available in the
screenshots section of the site.
For all the models distributed with the HuMAnS toolbox, the basic '.wrl'
files used to produce these VRML animations are provided, but if you want
to develop your own model you will need to make the definition of this
VRML model on your own.
The Spy function
This function is here to give some informations to the
user during the computation of the simulation. At times
defined by the SpyPeriod parameter, it calls
the function Visu
and instead of passing data matrices as inputs it only
gives vectors so that it is not an animation that appears
but just a single picture of the state of the system at a
given time.
|