[MBDyn-users] Example to Total Pin Joint

Pierangelo Masarati masarati at aero.polimi.it
Fri Mar 14 22:20:27 CET 2008


Rudi Jaeger wrote:

> joint:
>     jnt1,                                # joint label
>     spherical pin,                            # joint type
>     nod1,                                # node 1
>     reference, global, null,                    # relative offset 1
>     reference, global, null;                    # absolute pin position
> 
> joint:
>     jnt2,                                # joint label
>     total pin joint,                        # joint type
>     nod1,                                # node 1
>     position constraint,
>     inactive,active,inactive,
>     0.0,1.0,0.0,
>     1.0;

<snip>

> As suggested I added inertia to the body and used a spherical pin
> as "basis joint". The initial position of the mass has also changed.
> 
> If all constrains are inactive, the mass moves along the diagonal
> in the xy-plane. If the total pin setting is as above:
> 
> joint:
>      jnt2,                                # joint label
>      total pin joint,                        # joint type
>      nod1,                                # node 1
>      position constraint,
>      inactive,active,inactive,
>      0.0,1.0,0.0,
>      1.0;
> 
> the mass will only move along the x-axis with its y-value always 1.0.
> It seems to be important that the initial position of the mass and
> the setting of the tpl-drive coincide, i.e. this will not work:
> 
> joint:
>       jnt2,                                # joint label
>       total pin joint,                        # joint type
>       nod1,                                # node 1
>       position constraint,
>       inactive,active,inactive,
>       0.0,1.0,0.0,
>       0.5;
> 
> If the movement should be along the y-axis (with x being constraint),
> the setting would be:
>  
> joint:
>       jnt2,                                # joint label
>       total pin joint,                        # joint type
>       nod1,                                # node 1
>       position constraint,
>       active,inactive,inactive,
>       1.0,0.0,0.0,
>       1.0;
> 
> The results look good. Am I still doing something wrong?

Probably, yes, if I understand your needs correctly.  A "spherical pin"
will constrain the three components of a point rigidly attached to the
node with respect to the ground, so the node will be free to oscillate
about that point, but it won't be allowed to translate along the {1,1,0}
axis.  What you need, according to my understanding of the problem, is
some specific crafting of the "total pin joint", without any other
constraint.

Let me first explain the versatility of the "total joint" and,
specifically, of the "total pin joint".
It allows to define a pair of reference frames attached to the ground,
one to be used for the position constraint, and one for the rotation
constraint, and then to specify what components of position and of
rotation, in the respective reference frames, have to be constrained.

For your purpose, you need to:
- define the position of the constraint in {0,0,0};
- define the position reference frame with one axis oriented as {1,1,0}
- only allow the motion along that axis, by activating the constraint in
the other two directions
- define the rotation reference frame with one axis oriented as {1,1,0}
- only allow rotation about that axis, by activating the constraint
about the other two directions

So:

joint:
        jnt2,                                # joint label
        total pin joint,                     # joint type
        nod1,                                # node 1
                position, reference, global, null,
                position orientation, reference, global,
                        1, 1.,1.,0.,
                        3, 0.,0.,1.,
                rotation orientation, reference, global,
                        1, 1.,1.,0.,
                        3, 0.,0.,1.,
	# ground reference parameters
                position, reference, global, null,
                position orientation, reference, global,
                        1, 1.,1.,0.,
                        3, 0.,0.,1.,
                rotation orientation, reference, global,
                        1, 1.,1.,0.,
                        3, 0.,0.,1.,
        position constraint,
                inactive, # do not constrain motion along {1,1,0}
                active,
                active,
                null,     # do not impose any motion
        orientation constraint,
                inactive, # do not constrain motion about {1,1,0}
                active,
                active,
                null;     # do not impose any motion


Hope this helps.  Please note that this joint is not going to work,
unfortunately, if the relative rotation exceeds some value (I think it's
\pi, or is it \pi/2?) because the current implementation of a formula
that imposes the relative orientation between the node and the ground
contains an approximation.  We are going to eliminate this approximation
to make it more reliable when large finite rotations need to be
accounted for.

Cheers, p.





More information about the Mbdyn-users mailing list