34
ROBOTRAN 6.3 - FSA Paul Fisette March 2004 Contents 1 Introduction 2 2 Definitions, Conventions and Notations 3 2.1 Topology ............................................... 3 2.2 Bodies: characterization ....................................... 3 2.3 Joints: characterization ....................................... 5 3 Multibody Formalisms 8 3.1 Direct Dynamics of Tree-like Multibody Systems ......................... 8 3.2 Direct Dynamics of Constrained Multibody Systems ....................... 9 3.2.1 Dynamical and Constraints Equations ........................... 9 3.2.2 Reduction using the Coordinate Partitioning Method ................... 10 3.2.3 Forced Variables ....................................... 12 3.2.4 Generation of Loop and User Constraints ......................... 13 3.3 Special Features ........................................... 16 3.3.1 Link Forces .......................................... 16 3.3.2 Sensor Kinematics ...................................... 18 4 The ROBOTRAN Program 20 4.1 Available symbolic models ...................................... 20 4.1.1 Direct Dynamics ....................................... 20 4.1.2 Link Forces .......................................... 21 4.1.3 Sensor Kinematics ...................................... 21 4.1.4 Loop Constraints kinematics ................................ 22 4.2 Data Files ............................................... 22 4.2.1 The ”.dat” le: description of the tree-like multibody system .............. 22 4.2.2 The “.con” le: description of the loop constraints .................... 25 4.2.3 The “.lin” le: description of the links ........................... 27 4.2.4 The “.sen” le: description of the kinematic sensors ................... 28 5 Directory Organization - Run 30 6 Examples 30 6.1 The planar four-bar mechanism ................................... 30 6.2 The ”Iltis” military vehicle ..................................... 32 6.2.1 Description and modelling of the system .......................... 32 6.2.2 Illustrative results ...................................... 33 1

Manual Robot Ran

  • Upload
    orb1989

  • View
    250

  • Download
    2

Embed Size (px)

DESCRIPTION

Manual Robot Ran

Citation preview

  • ROBOTRAN 6.3 - FSA

    Paul Fisette

    March 2004

    Contents

    1 Introduction 2

    2 Definitions, Conventions and Notations 3

    2.1 Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2.2 Bodies: characterization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2.3 Joints: characterization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    3 Multibody Formalisms 8

    3.1 Direct Dynamics of Tree-like Multibody Systems . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3.2 Direct Dynamics of Constrained Multibody Systems . . . . . . . . . . . . . . . . . . . . . . . 9

    3.2.1 Dynamical and Constraints Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    3.2.2 Reduction using the Coordinate Partitioning Method . . . . . . . . . . . . . . . . . . . 10

    3.2.3 Forced Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    3.2.4 Generation of Loop and User Constraints . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.3 Special Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.3.1 Link Forces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.3.2 Sensor Kinematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    4 The ROBOTRAN Program 20

    4.1 Available symbolic models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    4.1.1 Direct Dynamics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    4.1.2 Link Forces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    4.1.3 Sensor Kinematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    4.1.4 Loop Constraints kinematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    4.2 Data Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    4.2.1 The .dat file: description of the tree-like multibody system . . . . . . . . . . . . . . 22

    4.2.2 The .con file: description of the loop constraints . . . . . . . . . . . . . . . . . . . . 25

    4.2.3 The .lin file: description of the links . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    4.2.4 The .sen file: description of the kinematic sensors . . . . . . . . . . . . . . . . . . . 28

    5 Directory Organization - Run 30

    6 Examples 30

    6.1 The planar four-bar mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    6.2 The Iltis military vehicle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    6.2.1 Description and modelling of the system . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    6.2.2 Illustrative results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    1

  • 1 Introduction

    The generation of the kinematic and dynamical equations of multibody systems (mechanisms, vehicles,

    robots, human body, machine tools, satellites, etc... as shown in Figure 1) can be quite a tedious task

    both because of the size and the complexity of the mathematical models corresponding to actual physical

    applications.

    Set of articulated rigid bodies

    MechanismsRoad vehicles

    Railway vehicles

    Robot manipulatorsSpace applications

    t

    y

    Figure 1: Multibody Systems

    This is why a large variety of multibody programs have been developed all over the world, whose recent de-

    velopments aim at improving their universality, their computer eciency, and their user-friendliness. Among

    the possible options to generate the equations of motion, the symbolic approach, which timidly appeared in

    the eighties, is a powerful tool to drastically simplify the equations and to give them a good readability in

    their final form.

    The ROBOTRAN program was developed at UCL within this context. It is a stand-alone C program

    entirely dedicated to the modelling of multibody systems. The underlying symbolic approach gives the

    program a toolbox rather than a blackbox nature. Indeed, for any given application, the user builds, via

    ROBOTRAN, his or her own model by using the symbolic results to solve the specificities of the application

    at hand, e.g., a typical constraint, a particular joint, a specific force, etc...

    We should finally point out that the goal of any of the menus proposed by ROBOTRAN is to generate

    only the desired symbolic equations (ex. inverse or direct dynamics, direct kinematics, identification matrix,

    ...) related to a given multibody system. These equations which represent the multibody model are recorded

    in an output file with a Matlab1 syntax. To exploit these symbolic equations, they must obviously be

    introduced into a numerical program for the analysis phase, and this is the users responsibility.

    In other words, the ROBOTRAN program can be seen as a multibody model writer which ensures for the

    numerical phase:

    a high eciency (because the symbolic ROBOTRAN process does the utmost to simplify the generatedequations),

    a high portability (because the symbolic equations are generated in a single file, with the desired syntaxand the suitable interface).

    Rem.: each time a numerical aspect (method, process, algorithm, ...) is mentioned in this guide, it always

    relates to the numerical analysis which is subsequent to the symbolic generation, and thus not covered by

    the ROBOTRAN program.

    1FSA version

    2

  • 2 Definitions, Conventions and Notations

    2.1 Topology

    A general multibody system is a mechanical system composed of n rigid bodies connected by joints.

    A tree-structure is always used to describe the topology of the system, i.e. the way the bodies are connected.

    Each time a closed loop of bodies is present, we shall see later that a particular procedure will be used to

    restore a temporary tree-like structure by either cutting a body into two parts or by cutting a joint (see

    Figure 2b).

    1

    inbody {0,1 2 2 4 4 5 5}= , , , , , ,

    base = body 0

    1

    2

    2

    3

    3

    4455

    77

    886

    6

    1

    inbody {0,1 2 2 4 4 5 5,7,1}= , , , , , ,

    cut of a joint

    base = body 0

    1

    2

    2

    3

    3

    4455

    7

    10

    7

    9

    10

    886

    6

    9

    cut ofa body

    Figure 2: a. Tree-like structure b. Tree structure after loop cuts

    In the tree structure (original or restored), the bodies must be numbered according to an ascending order

    which starts from the base (body 0, fixed to inertial space). Since in a tree structure, a single joint precedes

    each body, this joint is given the same index as the body (see Figure 2).

    The topology of the system is then stored in the ancestor inbody n-dimensional vector, whose ith component

    contains the index h of the body which precedes body i in the tree structure, also referred to as its parent.

    Conversely, body i is denoted as the child of body h. (For instance in Figure 2, body 2 is the parent of

    bodies 3 and 4 which are the children of body 2). One sould note that a body always has a unique parent,

    but can have zero or numerous children.

    2.2 Bodies: characterization

    As shown in Figure 3, an orthogonal right-handed body-frame {Xi} is rigidly attached to each body i andlocated at its centre of mass CMi. It is generally simpler to choose this frame in such a way that its axes

    correspond to the principal inertia axes of the body, but this is not indispensable in the present formalism.

    Also shown in Figure 3 is {X0}, the inertial frame attached to the base body 0.Before listing the necessary model data, let us introduce the following notations to define vectors and

    tensors.

    A vector a is described in a given body frame {Xi} by its three components ax, ay, az:

    a =ax Xix + ay X

    iy + az X

    iz (1)

    Writing the frame {Xi} under the form of a 3 1 column matrix of unit vectors:

    [Xi]=

    XixXiyXiz

    (2a)

    3

  • CM ild

    i

    k

    d j

    parent body h

    child body j

    child body k

    body O0Xx

    0Xy

    0Xz

    frc i

    g

    trqi

    O0i

    O0j

    O0kOi

    j

    Ok

    body : i i m i I,Xi{ }

    Figure 3: Body characterization

    and applying classical matrix multiplication rules, we can write vector a in the following concise form:

    a =[Xi]t a where a= (ax ay az)

    t (3)

    The same notation holds for a tensor T of order 2 (ex: the inertia tensor of a body):

    T =[Xi]t T [Xi] with T =

    Txx Txy TxzTyx Tyy TyzTzx Tzy Tzz

    Returning to the description of multibody systems, the following quantities are introduced for rigid bodies

    (see Figure 3):

    dj=[Xi]t dj , the so-called joint vector which locates on body i the connection point 2Oj of joint j withrespect to the connection point O0i of joint i. Body i being rigid, the components of dj are constantin the {Xi} frame. The d vectors are defined in body i for each of its children j, k, ... (see Figure 3),

    li=[Xi]t li, the position vector of the centre of mass CM i of body i with respect to the connectionpoint O0i of joint i. The components of li are constant in the {Xi} frame,

    mi, the mass of body i, Ii = [Xi]t Ii [Xi], the symmetric inertia tensor of body i with respect to its centre of mass CM i. Its

    components are constant in the {Xi} frame.

    As regards forces and torques acting on body i, we split them into three categories:

    1. The joint forces/torques, which act between a body and its parent and children, inside and in the

    direction of the corresponding joint. Their contribution to the equations of motion denoted Qi for

    joint i will be discussed later.

    2. The gravity force which is considered separately in the formalism. This force is computed from the

    gravity vector g whose three components g are provided in the inertial frame {X0} for obvious reasons:g =[Xo]t g (see Figure 3).

    2see section 2.3

    4

  • 1 d.o.f

    1 d.o.f2 d.o.f

    1=2-1 d.o.f

    Figure 4: Some examples of joints

    3. The so-called external forces and torques which represent any force or torque acting on body i in

    addition to the two previous ones. Their number, their direction and their nature being generally

    user-dependent, they are gathered and represented in ROBOTRAN in a unique resultant force vector

    frci and a unique resultant torque vector trqi with respect to the centre of mass CM i.

    They will and must be computed by the user in terms of their components in the {Xi} frame:frci = [Xi]t frci and trqi = [Xi]t trqi (4)

    2.3 Joints: characterization

    The n joints between the bodies represent devices such as telescopic arms, hinges, universal joints, etc... as

    shown in the examples of Figure 4.

    Relative motions occur in these joints and the variables describing these motions in the joints of the tree

    structure are used as generalized coordinates q. This means that the absolute configuration of the system is

    described at any time in terms of a set of relative coordinates q and their time derivatives q and q.

    q iO i

    O ,iO i O ,i=

    h

    i

    h

    i

    Prismatic joint iT joint R joint

    Revolute joint i

    q iie ie

    Figure 5: Elementary joint

    In order to avoid the description of a large data base of joints, it is assumed in ROBOTRAN that joints

    have only one degree of freedom, either prismatic (denoted T) or revolute (denoted R) as depicted in

    Figure 5. Each joint i is assumed to be massless and connects body i to its parent h at anchor reference

    points, O0i, Oi respectively; these arbitrary points are distinct for a prismatic joint and identical for arevolute joint (see Figure 5). Let us introduce the joint unit vector ei aligned with the joint axis according

    to Figure 5.

    In joint i, the generalized coordinate qi represents:

    a relative displacement if i is prismatic (units = [m]) such that OiO0i = qi ei (qi is thus positive infigure 5a).

    5

  • a relative angle if i is revolute (units = [rad]), which characterizes the rotation along the unit vectorei of body frame {Xi} with respect to body frame {Xh}.

    More elaborate joints (spherical, universal, or even a general 6 d.o.f. joint3) can be straightforwardly

    modelled as a succession of these elementary joints and intermediate fictitious bodies as shown in the example

    of Figure 6 which refers to the universal joint of Figure 4. A ficititious body i has neither dimension (li = 0;

    dj = 0 body j child of i ) nor mass (mi = 0; Ii = 0) but is considered in the same way as other bodies inthe multibody topology (numbering, filiation, etc...). For instance, in order to confer 6 d.o.f. to the vehicle

    chassis of figure 29 (in Section 6.2 devoted to this application), five fictitious massless bodies have been

    inserted between the base (body 0) and the chassis (body 6), with, in succession, three prismatic and three

    revolute joints.

    Figure 6: Modelling of a 2 d.o.f. universal joint

    These additional fictitious bodies do not aect the symbolic results provided by ROBOTRAN nor thus the

    resulting performances, since all zero quantities are simply disregarded during the symbolic manipulations.

    Joint modelling hypothesis:

    To avoid resorting to more than one frame per body, the following hypothesis is made, related

    to the joint direction:

    The axis of any (prismatic or revolute) joint i must be aligned with one of the axis-directions (x,

    y or z) of the frame attached to body i and to its parent body h (= inbody(i)) (see Figure 7).

    Moreover, the unit joint vector ei is such that, at any time:

    ei = Xix = Xhx or X

    iy = X

    hy or X

    iz = X

    hz

    for a joint aligned with the x, y, z direction respectively.

    We can now define the so-called reference configuration of the tree-like multibody system as follows (see

    Figure 7):

    All body-fixed frames {Xi} are aligned with the inertial frame {X0}

    All the generalized coordinates are equal to zero: qi = 0 , joint i, revolute and prismatic.

    This reference configuration is of a great help (and it is strongly recommended to sketch it for the

    considered application!) in easily defining the various geometrical vectors introduced above and creating the

    symbolic input.

    rem.: this reference configuration is also required for closed loop systems, but can only be estab-

    lished once the loops have been cut (tree-like structure restored).

    3for instance between a flying body and the base

    6

  • kj

    h

    i

    body O

    0Xy0Xz

    Xk{ }

    Xj{ }

    Xh{ }

    Xi{ }

    0Xx

    je

    ie ke

    he

    O i O ,i=

    O h O ,h=

    O j O ,j=

    O k O ,k=

    Figure 7: Multibody system - reference configuration

    Skewed joints: Although the previous hypothesis related to the joint directions could appear as being

    restrictive, this is not the case because if a joint is skewed in the real system4, it can nevertheless be

    modelled correctly and simply by introducing intermediate artificial joints (and fictitious massless bodies)

    which will be locked to a constant value during the simulation, as shown in the illustrative example of Figure

    8. In this example, the axis of a revolute joint i (qi) in the real system (Figure 8a) forms a constant angle

    with respect to the {x, z} plane of the parent body-frame {Xh} along the Xhx unit vector. Inserting afictitious body i and a revolute joint (qi =) solves the problem (Figure 8b). Indeed:

    the ROBOTRAN reference configuration is obtained for qi = 0,

    the presence of this constant angle in the real system will be taken into account in the numericalanalysis by locking this joint to a constant value, i.e.: qi =, qi = qi = 0 t. The correspondingequation of motion will simply be disregarded during the numerical analysis.

    i

    qq

    q

    fictitious body i

    a. b.

    ij

    i

    x xxx

    y yy

    y

    z zz

    z

    {{ { {

    XX X Xi

    h h j

    }} } }

    =

    Figure 8: Modelling of a skewed joint

    Here again, thanks to the symbolic approach, these additional fictitious bodies and joints have

    no influence on the results produced by ROBOTRAN.

    One of the great advantages of the above hypothesis is that only one frame per body is required:

    4ex.: the handlebars steering of a bicycle

    7

  • this considerably alleviates the model notations for most applications, and the users workload

    in this phase.

    3 Multibody Formalisms

    3.1 Direct Dynamics of Tree-like Multibody Systems

    In this section, formalisms for tree-like multibody systems are proposed. Since closed systems (containing

    kinematic loops) are modelled by first restoring a tree-like structure as already mentioned in Section 2.1, the

    following models are useful for any kind of multibody system.

    The direct dynamics of a multibody system is the computation of the generalized accelerations q (joint

    accelerations) for a given configuration (q, q) of the system to which forces and torques are applied; the

    latter can of course be internal (joint force) or external (i.e.: induced by the environment like contact forces,

    gravity force, etc...).

    Direct dynamical equations are extensively used for simulation purposes, i.e. to predict the motion of

    the system (q(t), q(t)), starting from an initial configuration (q(t = 0), q(t = 0)), by time-integrating the

    accelerations q(t).

    Various multibody formalisms can be used to compute the joint accelerations q (ex. based on a virtual

    principle, the Lagrange equation or the standard Newton/Euler laws formulated recursively, ...).

    The equations describing the direct dynamics can be generated in the following well-known form:

    M(q, )q + c(q, q, , frc, trq, g) = Q(q, q) (5)

    The accelerations can then be obtained numerically by solving the linear system (5) with respect to

    q. For this purpose, rather than blindly inverting the mass matrix M(q, ), we preferably resort to linear

    algebra techniques (Cholesky decomposition of M followed by a backward/forward substitution in the linear

    system).

    In the previous equations:

    M [n n] is the symmetric generalized mass matrix of the system,

    c [n1] is the non linear dynamical vector which contains the gyroscopic, centrifugal and gravity termsas well as the contribution of components of external resultant forces frc and torques trq,

    q [n 1] denotes the relative generalized coordinates,

    [10 n 1]denotes the set of dynamical parameters of the system (typically: body masses, centres ofmass and inertia matrices),

    Q [n1] represents the generalized joint forces (torques). Let us first define vector Qi as the force (resp.the torque) on body i produced in the prismatic (resp. ith revolute) joint i by its parent h = inbody(i),

    in the direction of the joint axis:

    Qi = Qi ei

    Qi, the ith element of Q represents the component of this force (resp. torque) along the unit joint

    vector ei. As for the components of the external forces and torques frci and trqi (see equation 4), the

    constitutive equation of Qi is problem dependent and thus its description is left to the user in the

    numerical part. The following elementary cases are given as illustrative examples:

    . a perfect (prismatic/revolute) joint: Qi = 0,

    . a joint consisting of a linear prismatic (resp. revolute) spring with stiness K: Qi = K (qi qin)

    8

  • where qin denotes the springs neutral position [m] (resp. [rad]),

    . a joint consisting of a linear prismatic (resp. revolute) damper (with damping coecient D): Qi =

    D qi,. a general nonlinear equation in terms of qi and qi and some parameters pj : Qi = g (qi, qi, pj).

    3.2 Direct Dynamics of Constrained Multibody Systems

    3.2.1 Dynamical and Constraints Equations

    Figure 9: Example of closed-loop multibody systems

    Most multibody applications contain loops of bodies (car suspension, parallel robots, mechanisms, etc...,

    as shown in Figure 9) which force the generalized joint coordinates q to satisfy geometrical constraints hl(q) =

    0 at any time. Beside these loop constraints, other algebraic constraints denoted as user constraints

    hu(q) = 0 can arise for other reasons, as for instance, in order to impose parallelism between two bodies

    (i = j), to model the motion in a screw joint with lead (qi = qj , with [ mrad ]), etc...

    Gathering these m constraints together, we can write:

    h(q) =

    hl(q)

    hu(q)

    != 0 [m 1]

    In order to fully describe the system, these constaints and their first and second time derivatives must be

    added to the equations of motion5, in which constraint forces are introduced via the Lagrange multipliers

    technique:

    M(q) q + c(q, q, frc, trq, g) = Q(q, q) + JT (6)

    h(q) = 0 (7)

    h(q, q) = J(q)q = 0 (8)

    h(q, q, q) = J(q)q + J q(q, q) = 0 (9)

    where:

    5in which, for legibility reasons, we will no longer indicate the dependance with respect to the dynamical parameters .

    9

  • J = hq denotes the constraint Jacobian matrix (dimension: [m n]),

    J q(q, q) [m 1] is the quadratic term (expression in qi qj) of the constraints at acceleration level(dimension: [m 1]),

    represents the Lagrange multipliers associated with the constraints (dimension: [m 1]).

    NB: at this level, only holonomic constraints (i.e. which can be written in the form of algebraic

    equations h(q) = 0) have been considered. Non-holonomic constraints (such as the pure rolling

    motion between bodies), which can only be written at the velocity level w(q, q) = 0, are not

    considered in this text. Nevertheless, they can formally be added at velocity (system (8))

    and acceleration (system (9)) levels to the set of holonomic constraints, but they must be

    processed dierently during the numerical resolution. In particular their time integration if

    required must be performed numerically since the algebraic form (7) does not exist for these

    non-holonomic constraints.

    3.2.2 Reduction using the Coordinate Partitioning Method

    Various methods can be used to solve the system (6, 7, 8, 9). Amongst these, one can opt for a full reduction

    of the system to a purely dierential form, which can be obtained by means of the well-known Coordinate

    Partitioning Method.

    Assuming that the constraints h(q) = 0 are independent6, the Jacobian matrix J has full rank m. In this

    case, m generalized coordinates can be expressed at least locally as functions of the (nm) others. Inthis way, it becomes possible to reduce the original DAE system (6, 7, 8, 9) to a set of (nm) dierentialequations (ODE) in these (n m) independent coordinates. This reduced set will represent the equationsof motion of the constrained multibody system, where (nm) also corresponds to its number of degrees offreedom.

    Let us summarize the steps required to obtain these equations of motion.

    After reordering the vector of generalized coordinates q (and the columns of the constraint Jacobian J),

    we can perform the following partition:

    q =

    u

    v

    !; J =

    Ju Jv

    (10)

    where u denotes the subset of (n m) independent coordinates and v denotes the subset of dependentcoordinates. By correctly choosing the subset v, the m by m matrix Jv will be regular.

    By correctly, we mean that, to establish this partitioning for a given application (and this is a critical

    point !), we can rely:

    on an intuitive reasoning, based on the system configuration (ex. for the slider-crank mechanism ofFigure 9, the crank rotation can obviously be chosen as the independent variable u),

    on a mathematical process, using an LU factorization of the full Jacobian matrix J(q), with columnpermutation on the basis of the largest pivot. The resulting left [mm] square block will be the bestcandidate7 Jv matrix, whose columns indices thus correspond to the best subset v, numerically

    speaking.

    Once the coordinate partitioning is established, the reduction method simply uses matrix permutations

    and operations to produce the final system. Let us first partition the generalized mass matrix M and the

    6Indeed, if, for instance, a constraint is a linear combination of the other ones, the Jacobian matrix will obviously be singular.7for the current configuration {q}

    10

  • vector c according to the coordinate partitioning (10):Muu Muv

    Mvu Mvv

    !u

    v

    !+

    cu

    cv

    !=

    Qu

    Qv

    !+

    Ju

    t

    Jvt

    ! (11)

    where Jvt refers to the transpose of matrix Jv. Since this matrix is regular, eliminating the unknowns

    using the lower part of system (11) produces:Muu Muv

    uv

    !+ Bvu

    t

    Mvu Mvv

    uv

    !+ cu + Bvu

    tcv = Qu + BtvuQv (12)

    where we define the so-called coupling matrix Bvu= (Jv)1 Ju.

    Then using the first (eq. (8)) and second derivatives (eq. (9)) of the constraints, the generalized velocities

    and accelerations v and v are respectively given by:

    v = Bvuu (13)

    v = Bvuu + b with b= J1v (J q) (14)

    and can also be eliminated from the dierential equations (12). This produces the final reduced system:Muu + MuvBvu + Bvu

    tMvu + BvutMvvBvu

    u

    +Muv + Bvu

    tMvv

    b + (cu + Bvutcv) (Qu + BtvuQv) = 0

    which can be concisely written as:

    M(u, v)u + F(u, u, v) = 0 (15)The algebraic constraints still have to be solved in order to eliminate the dependent variables v from (15).

    While analytical solutions can exist for specific cases, general algebraic constraints (7) require a numerical

    procedure to be solved: the Newton-Raphson iterative algorithm can be used for successive estimations of

    v:

    vk+1 = vk (Jv)1 h |v=vk (16)where the right hand side is evaluated for v = vk and the values of u corresponding to the instantaneous

    system configuration.

    Thanks to this final numerical elimination, the set of purely dierential equations (15) constitutes the

    equations of motion of the constrained system described in terms of the n m independent generalizedcoordinates u. The sequence of computations producing system (15) is illustrated in the block-diagram

    of Figure 10 which relates to the numerical integration scheme of a constrained multibody system. This

    block-diagram is of course helpful for the algorithmic implementation. In Figure 10, the dashed box denotes

    the model whose inputs are the independent position u and velocities u and outputs are the independent

    accelerations u.

    Before concluding this section, let us point out that, although equations (15) are sucient to time

    integrate the multibody system, some interesting variables have been eliminated in the reduction process

    and in particular, the dependent variables v and the Lagrange multipliers . To compute the latter, we can

    add some equations to the model (i.e. the dashed box of Figure 10), in order to provide this additional

    output.

    Value of v can be computed directly from system (14). As regards the Lagrange multipliers , the lower part of equation (11) can be used to recover them:

    = (Jvt)1 {Mvuu + Mvv v + cv Qv} (17)

    11

  • Bvu ( )u u + (

    u

    u u

    v v u= ( ),qu

    ,

    ,

    ,

    u

    u

    uv v u= ( )

    ) = 0FM

    M(q ) c (

    (

    q

    q

    ,

    ,

    q

    q

    , )

    )J

    (

    (

    q

    q

    )

    )

    Newton/Raphson

    External and joint forces/torques

    frc, trq, Q

    vk+1 = vk (Jv)1 h

    Figure 10: Time integration of the reduced dynamical equations

    3.2.3 Forced Variables

    In various situations, some of the generalized joint coordinates qi are no longer considered as variables

    because their motion is forced to follow a specific law, which is a function of time t.

    Formally:

    qi = f(t) ; qi = f(t) ; qi = f(t) (18)

    Strictly speaking, equation (18) represents additional constraints on the system involving the sole variable

    qi. Their simple form enables us to treat these constraints separately (from the set h(q)) in a more ecient

    way.

    Some typical examples of forced variables are:

    a sinusodal excitation: qi = a sin t ; qi = a cos t ; qi = a2 sin t the constant rotation of a body (ex. a crank): qi = t ; qi = ; qi = 0 the locked position of a joint variable (see example of Figure 8): qi = ; qi = 0 ; qi = 0

    To take these variables into account in the formalism, and in particular in the coordinate partitioning

    reduction, we first consider them as being part of the independent set of variables u8 whose values obey

    a prescribed law of type (18) (computed somewhere in the dashed box of Figure 10). Of course, forced

    variables CANNOT be time integrated 9.

    The dierence in the reduction process starts when expressing the final form (15). Formally, let us split

    u into forced variables uF and really independent variables uI :

    u =

    uI

    uF

    !(19)

    System (15) can then be partitioned accordingly and becomes, using the Lagrange multipliers technique:MII MIFMFI MFF

    !uI

    uF

    !+

    FIFF

    !=

    0

    F

    !(20)

    8Obviously, considering a forced variable as a dependent one is intrinsically aberrant!9or subject to any other numerical process.

    12

  • in which F denote the Lagrange multipliers associated with the forced motion constraints (18).

    The reduced form of the dynamical equations of a constrained multibody system containing forced vari-

    ables finally reads:

    MII uI + (FI + MIF uF ) = 0 (21)

    If the Lagrange multipliers F associated with the forced motion are required as outputs, the lower part of

    equation (20) is used:

    F = MFI uI + MFF uF + FF (22)

    These Lagrange multipliers can be of practical interest since they represent the joint torque for a forced

    revolute joint and the joint force for a forced prismatic joint.

    3.2.4 Generation of Loop and User Constraints

    As previously suggested, when dealing with closed loop systems, a so-called cutting procedure is implemented

    to artificially restore a tree-like structure. This procedure is at the root of the automatic generation by ROBO-

    TRAN of the loop constraints hl(q) = 0. Three cutting procedures have been systemized in ROBOTRAN and

    are presented here below.

    Cutting procedure of type 1: This first procedure is the most general10 one and consists in cutting a

    body of the loop into two parts denoted the original body o and the shadow body sh 11. Although any

    body in the loop could be chosen, we have restricted the choice to the body of the loop which is the first

    encountered when covering the chain of bodies, starting from the inertial body (in the case of the four-bar

    mechanism of section 6.1, body 0 should be chosen for this kind of cut). Figure 11 clearly represents a cut

    of type 1.

    {X }o

    Pojoint o

    {X }0

    {X }sh

    Psh

    Original body 'o'

    Shadow body 'sh'

    dlp

    Figure 11: Cutting procedure of type 1

    For a general 3D situation, this loop closure induces 6 constraints:

    1. three position constraints (h1(q), h2(q), h3(q)) imposing that bodies o and sh have a common point Po

    Psh at any time,

    2. three orientation constraints (denoted h4(q), h5(q), h6(q)) expressing that frames {Xo} and {Xsh} mustcoincide at any time.

    10but paradoxally, seldom used because more costly in terms of arithmetical operations11This body must be added to the system in the .dat file as a massless body.

    13

  • Rem.: The orientation constraints are in fact introduced at the velocity level, by imposing that the

    relative angular velocity of frame {Xsh} with respect to {Xo}, denoted sh o is zero at any time.Since sh o is not integrable, it is shown in [?] that 3 algebraic pseudo-constraints can be established

    (h4(q), h5(q), h6(q)) by annihilating for instance the o-diagonal R(2,3), R(3,1) and R(1,2) elements

    of the orientation matrix R(q) between frames {Xsh} and {Xo}. In particular, it is shown that theJacobian matrix of the angular velocity sh o makes the numerical solution of the pseudo-constraints

    h4, h5, h6 converge, when used in the Newton/Raphson iterative formula (16).

    From a practical point of view, the user simply needs to provide for this first type of loop:

    The indices of the original and shadow bodies12, The vector dlp locating in the shadow body sh, with respect to joint sh the point Psh, which is in

    fact (see figure) the anchor point of joint o

    The components of dlp are constant in the {Xsh} frame.Although this first cutting procedure is general, it leads to 6 constraints and, most of the time, practical

    applications can avoid this first technique by resorting to one of the following two procedures.

    Cutting procedure of type 2: This procedure applies to loops which contain a spherical ( or revolute)

    joint which can be considered as ideal from both the geometrical (no backlash) and dynamical (no torque

    transmitted) points of view. As shown in Figure 12, the spherical joint under consideration is removed from

    the system13 and, denoting the centre point P of the spherical joint by Pp for the primary chain and by Ps

    for the secondary chain respectively, three position constraints suce to close the loop: they simply express

    that the position vectors x(Pp) and x(Ps) coincide at any time:

    x(Pp) x(Ps) = 0 , tFrom a practical point of view, the user simply needs to provide for this second type of loop:

    (P )sx

    PsPp

    (P )px

    Body p Body s

    dd

    lp

    ls

    Primary chain Secondary chain

    Figure 12: Cutting procedure of type 2

    the indices of the primary body p and secondary body s, the vector dlp locating point Pp on body p, with respect to connection point O0p.

    The components of dlp are constant in the {Xp} frame, the vector dls locating point Ps on body s, with respect to connection point O0s.

    The components of dls are constant in the {Xs} frame.12As mentioned earlier, by convention, the original body must be an ancestor of the shadow body in the tree structure.13no additional shadow body is required in this case.

    14

  • Cutting procedure of type 3: This procedure applies to loops which contain a connecting rod whose

    mass and inertia can be ignored and whose (two) connecting joints can be considered as ideal, as previously

    defined for the spherical joint.

    As shown in Figure 13, the connecting rod under consideration is simply removed from the system. Denoting

    by Pp and Ps the ends of rod on the primary body p and secondary body s respectively, a single constraint

    is sucient to close the loop, expressing that the distance lrod between points Pp and Ps remains constant

    at any time.

    rodl

    PsBody sBody p

    dd

    P

    lpls

    p

    Primary chain Secondary chain

    Figure 13: Cutting procedure of type 3

    From a practical point of view, we must provide for this third type of loop closure:

    the index of the primary body p and of secondary body s,

    the vector dlp locating point Pp on body p, with respect to connection point O0p.The components of dlp are constant in the {Xp} frame,

    the vector dls locating point Ps on body s, with respect to connection point O0sThe components of dls are constant in the {Xs} frame.

    the length lrod of the connecting rod.

    User constraints: Besides the loop constraints described above, we can also introduce a so-called user

    constraint14 between the generalized coordinates:

    hu(q) = 0 (23)

    In the present release of ROBOTRAN, only linear combinations of generalized coordinates may be introduced.

    Let us consider for instance a linear constraint involving three variables qi, qj and qk :

    hu(q) = ucc(1) qi + ucc(2) qj + ucc(3) qk = 0 (24)

    The vector ucc (for User Constraint Coecients) is part of the ROBOTRAN data to store the constant

    coecients of the involved variables (see Section 4.2).

    14not available in the FSA version.

    15

  • 3.3 Special Features

    3.3.1 Link Forces

    Besides joint forces Q and gravity g, we showed in Section 2.2 that, in the present formulation, all other

    forces and torques are considered as external to the system and gathered, for each body, into a resultant

    force vector frc and a resultant torque vector trq with respect to the body centre of mass. Practically, in

    the dashed box of Figure 10, these vectors frc and trq must be computed (by the user):

    after the constraint solution phase at position and velocity level (indeed, the system must be closedbefore computing forces and torques which could depend on the generalized coordinates q and velocities

    q.

    before the computation of the equations of motion (5) or (15) in which they appear via vector c (resp.F).By experience, numerous practical applications require the introduction of contributive forces (e.g.:

    spring, actuator, damper, ...) acting between two points of the system, as illustrated in Figure 14.

    This will be denoted as a link between two anchor points in the present section. While acting

    internally between bodies of the structure, they are considered in ROBOTRAN as action-reaction

    external forces, since they are external with respect to both bodies involved in the link.

    These link forces, which are mainly inspired by vehicle suspension problems, have been automated in

    ROBOTRAN as a practical means for reducing computational loads wherever possible. A typical example is

    illustrated in Figure 14 which represents a five-bar left rear suspension system of a road vehicle.

    Wheel carrier

    Front of vehicle

    Figure 14: Five-bar suspension system

    In this suspension, the main rod is connected to the chassis via the suspension elements: a parallel

    spring anddamper. If the mass and inertia of these elements are negligible (with respect to the remainder of

    the vehicle), their dynamical eects can thus be simply modelled by means of external15 forces respectively

    applied to the chassis (F) and to the rod n5 (F). The resulting multibody representation is sketched inFigure 15. Both this force (F) and its reaction (F) will be considered as external resultant forces/torques(frc, trq) when generating the equations of motion.

    To make the following developments more legible, let us suppose that the considered suspension has a

    linear characteristic given by its stiness k and a neutral length Zo. The unsigned value Flink of the vector

    force Flink applied to the chassis and due to the spring is thus simply given by:

    Flink = k(Z Zo) (25)15called external to distinguish them from the generalized joint forces

    16

  • Chassis

    Rod n 5

    Wheelcarrier

    WheelF-F

    F

    Figure 15: Multibody model of the suspension

    where Z is the actual length of the spring. This vector force is applied to the material point of the chassis

    which serves as attachment point of the spring (i.e. the anchor point of the link), and is aligned with the

    spring direction. Based on this constitutive equation, which is assumed to be provided by the user, we may

    now compute the spring contribution to the resultant vector force frcchas and torque trqchas applied to the

    chassis. For this purpose, we denote by xchasspr (q) the absolute vector position of the attachment point of the

    spring on the chassis, and similarly by xrodspr(q) the vector position of its attachment point on the rod (n5).

    The vector link force is thus given by:

    Flink = k (Z Z0)xrodspr xchasspr

    k xrodspr xchasspr k

    (26)

    and the contributions to frcchas and trqchas are given by:

    frcchas = Flink

    trqchas =xchasspr xchas

    Flink (27)where xchas denotes the absolute position vector of the centre of mass CMchas of the body chassis. Similarly,

    the contributions to the external resultant force/torque on body rod read:

    frcrod = Flinktrqrod = xrodspr xrod Flink (28)

    In order to transform any constitutive equation of type (25) characterizing an internal point-to-point link

    of the multibody system into external forces/torques (frci, trqi) applied to the involved bodies, we thus

    require, as functions of the joint generalized coordinates, the expressions of the position vectors of the two

    anchor points (in addition to the position vectors of the centre of mass CM i).

    The method used above for the spring can also be applied in modelling the suspension damper. Assuming

    (again) a linear characteristic of the damping device:

    Flink = c Z

    the vector damper link force is given by:

    Flink=c Z

    xroddamp xchasdamp

    k xroddamp xchasdamp k

    (29)

    17

  • ji

    dbpF, -F

    PpPs

    dbs

    Figure 16: Link between body i and j

    which is easily transformed into external resultant forces/torques (frci, trqi) with formulae similar to (27)

    and (28). In addition to the anchor point position vectors, the user now needs, in order to compute Z, the

    expressions of the velocities

    ..xchasdamp and

    .xroddamp in terms of the joint coordinates q and velocities q.

    In view of this typical example, we can assert that computing these link forces from the generalized

    coordinates q and/or velocities q, and converting them into the resultant vectors frc and trq for each body

    is far from being obvious. Indeed, if one considers in Figure 16, a general link between the two anchor points

    Pp on body i and Ps on body j, respectively located with respect to the previous joint by vectors dbp (whose

    components are constant in the {Xi} frame) and dbs (whose components are constant in the {Xj} frame),we must:

    compute the absolute position and velocitie of the two anchor points Pp and Ps,

    compute the distance Z and/or the relative velocity Z between the two anchor points,

    introduce the constitutive equation Flink= Flink(Z, Z, p, t) in which p denotes any kind of user param-eters,

    project F and F onto the body-fixed frames to respectively obtain frci and frcj ,

    compute the resultant body torques trqi and trqj .

    If implemented manually for each link, these five steps are subject to human mistakes: this is the main

    reason why it has been automated in ROBOTRAN.

    The user still of course remains responsible for the unsigned constitutive equations Flink=Flink(Z, Z, p, t)

    (ex. equation (25)). In other words, their computation will be the object of a user function (named

    LinkForces in ROBOTRAN), on the basis of the model of the physical device which represents the link (see

    Section 4.2 for practical implementation).

    3.3.2 Sensor Kinematics

    For various reasons, it can be of interest to obtain the symbolic expression of the forward kinematics of

    any sub-chain in the multibody system, i.e., the position, the orientation, the linear/angular velocities and

    the linear/angular accelerations of a given body (and of a particular point S of this body denoted sensor)

    with respect to another one.

    18

  • pv

    a

    .

    d C

    ^s

    {X }^ o

    Body s

    sens

    sens

    sens

    senssens

    Body o

    SS

    ,sO

    ,oO

    Figure 17: Sub-chain kinematics

    For instance, sub-chain forward kinematics is useful for:

    the introduction of a new constraint on the system,

    the introduction of a specific force whose constitutive equation requires the computation of the kine-matics of a given point,

    the computation of a specific result, such as the absolute position or acceleration of a point (e.g.: thevertical acceleration of a passenger in a car or the absolute velocity of a sensor S.

    ...

    Sub-chain kinematics is only considered on the tree-like structure. However, since closed structures are

    first cut in order to restore a tree, the present computation can be used in any situation (of course, if one

    plans to compute the position psens(q) of a given sensor S, the loop constraints must be solved in advance

    in such a way that the computation of vector psens is made with the correct values of the generalized

    coordinates q = {u, v}).Let us consider in Figure 17, the sub-chain {o...s} in which o represents the original body and s the body

    carrying the point sensor S, located on body s by a constant position vector dc = [Xs]t dc with respect to

    the joint s connection point (O0s):For this sub-chain, the forward kinematics aims to compute:

    psens = [Xo]t psens : the position vector of sensor S with respect to point O0O,

    Rsens: the rotation matrix from body frame {Xo} to body frame{Xs} such that [Xs] = R sens[Xo]and that, for a given vector x, its components in these frames obey: [xs] = Rsens [x

    o],

    vsens = [Xo]t vsens: the velocity of point S with respect to frame {Xo} (N.B.: vsens represents therelative velocity of point S with respect to frame {Xo}, the latter being assimilated to an inertial framein that case),

    sens = [Xo]t sens: the angular velocity of frame {Xs} with respect to frame {Xo},

    19

  • Jsens =

    vsensq

    sensq

    !, the Jacobian matrix containing the partial derivative of the components vsens

    with respect to q (rows 1,2,3) and of the components sens with respect to q (rows 4,5,6) (N.B.: column

    k corresponds to the generalized velocity qk),

    asens = [Xo]t asens: the acceleration of point S with respect to frame {Xo} (N.B.: asens represents therelative acceleration of point S with respect to frame {Xo}, the latter being assimilated to an inertialframe in that case),

    sens = [Xo]t sens: the angular velocity of frame {Xs} with respect to frame {Xo}.

    Most of the time, the desired computation is related to absolute quantities (position, velocities, ...) with

    respect to the inertial frame. In that case, the original body will simply be the base, that is, body 0.

    4 The ROBOTRAN Program

    This section describes each possible run of ROBOTRAN (version 6.3 - FSA).

    ROBOTRAN 6.3 FSA(max 30 d.o.f.)

    robot.dat robot.lin robot.conrobot.sen

    dirdynaner.m link.m dirkinerig.m constr.m

    ROBOTRAN 6.3 FSA(max 30 d.o.f.)

    robot.dat robot.lin robot.conrobot.sen

    dirdynaner.m link.m dirkinerig.m constr.m

    Robotran 6.3 - FSA

    4.1 Available symbolic models

    4.1.1 Direct Dynamics

    Topology: Tree-like

    Bodies: rigid

    Method: Recursive Newton/Euler scheme with classical parameters ( = {mass, centre of mass, inertiawith respect to centre of mass})

    Equations: see (5)

    Input files: robot.dat

    Output function: dirdynaner.m: [AM,c] = dirdynaner(q,qd,d,l,m,In,frc,trq,g)

    Computed quantities (output arguments):

    AM: symmetric mass matrix M(q) (diagonal + upper part),

    c: dynamical vector c(q, q, ...).

    20

  • 4.1.2 Link Forces

    Topology: Tree-like or closed-loop

    Bodies: rigid

    Method: Recursive forward kinematics

    Equations: see Section 3.3.1

    Input files:

    robot.dat: general data file

    robot.lin: description of the required link forces

    Output function : link: [frc,trq] = link(q,qd,d,dbp,dbs,l,frc,trq,pdbl,pint)link internally calls a user function named LinkForces:

    Flink = LinkForces(Z,Zd,pdbl,pint);

    This function must be created by the user to compute the constitutive equations of the link forces

    Flink(1) ... Flink(Nlink) in terms of the link distances Z(1) ... Z(Nlink), velocities Zd(1)

    ... Zd(Nlink) and some additional user parameters double pdble, int pint.

    Example: a linear spring with stiness K and neutral length L in link number 2 will be modelled in

    LinkForces as:

    Flink(2) = K * (Z(2) - L);

    Example: a linear damper with damping coecient D in link number 4 will be modelled in LinkForces

    as:

    Flink(4) = D * Zd(4);

    Computed quantities (output arguments): for the two bodies involved in a link:

    frc, trq (components in body frames of vectors frc, trq), in incremental form, i.e.:

    frc(i,j)=frc(i,j)+... and trq(i,j)=trq(i,j)+...

    4.1.3 Sensor Kinematics

    Topology: Tree-like

    Bodies: rigid

    Method: Recursive forward kinematics

    Equations: see Section 3.3.2

    Input files:

    robot.dat: general data file

    robot.sen: description of the required sensors

    Output function : dirkinerig.m : [Psens,Rsens,Jsens,Vsens,OMsens,Asens,OMPsens] =dirkinerig(q,qd,qdd,d,dc,isens)

    rem.: a single output file is created for all the sensor mentioned in the .sen input file. An

    internal switch statement: in dirkinerig.m selects the correct sensor, on the basis of the flag

    input argument isens.

    21

  • Computed quantities (output arguments): for each sub-chain associated with each sensor:

    Psens: position vector psens

    Rsens: rotation matrix Rsens

    Vsens: velocity vector vsens

    OMsens: angular velocity vector sens

    Jsens: Jacobian matrix Jsens

    Asens: acceleration vector asens

    OMPsens: angular acceleration vector sens

    4.1.4 Loop Constraints kinematics

    Topology: restored Tree-like structure Bodies: rigid Method: Recursive forward kinematics Equations: (7), (8) and (9) Input files:

    robot.dat: general data file

    robot.con: description of the loop constraints

    Output function : constr.m : [h,JAC,jdqd] = constr(q,qd,d,dl6p,dl3p,dl3s,dl1p,dl1s,lrod,flag) Computed quantities (output arguments): for each sub-chain associated with each sensor:

    h: the constraints h(q)

    JAC: the constraints Jacobian J(q)

    jdqd: the quadratic terms of the constraints at acceleration level: J q(q, q)

    rem.:

    In the output file constr.m, an internal switch statement selects the computation of theprevious quantities on the basis of an input flag argument flag.

    The rule is: computation of h (q), J(q) for flag = 1 and of J q(q, q) for flag = 2.

    The numbering of the constraints (1 to m) and Jacobian rows sequentially corresponds to the.con file structure: the first rows for the loops of type 1 (if these exist), next for the loops of

    type 2, then of type 3 and finally for the user constraints.

    4.2 Data Files

    4.2.1 The .dat file: description of the tree-like multibody system

    The input .dat file is the main input file of ROBOTRAN, and is a prerequisite for all of its menus. Indeed, it

    contains all the information on the system topology (in tree-like form), geometry, dynamical properties and

    external forces and torques acting on the system.

    In order to create this file for a given multibody system, it is important to place the latter in its reference

    configuration (as explained in Figure 7), for which all the body-fixed frames are aligned, in particular with

    the inertial frame {Xo}.Figure 18 illustrates an academic example with 4 bodies (funny project) whose data file funny.dat

    is depicted in Figure 19.

    22

  • {X}x

    y

    l

    l

    l

    l

    d

    dd

    z

    body 1

    body 0

    body 2

    body 3

    body 4

    q(1)

    1

    2

    3

    4

    4

    2

    3

    q(4)

    R3

    T3

    T1

    R22

    CM

    1CM

    3CM

    4CM

    q(3)

    q(2)

    inbody = [0 1 2 2]

    Figure 18: An funny example

    The symbolic data file funny.dat contains various sections, separated by a comment line, viz.

    successively:

    1. a title (1 line, max. 60 characters),

    2. a section giving the number of bodies n and the n-dimensional inbody vector (on two lines),

    3. a section describing the n joints (n lines). R for revolute, T or P for Prismatic and 1, 2, 3

    respectively for the x, y, z directions in the reference configuration. Symbols are then introduced for

    the generalized coordinates qi, velocities qi and accelerations qi,

    4. a section describing the joint position vectors di (n lines): 3 constant components in the corresponding

    body frame (see Figure 3),

    5. a section describing the centre of mass position vectors li (n lines): 3 constant components in the

    corresponding body frame (see Figure 3),

    6. a section describing the masses of the bodies (n lines),

    7. a section describing the inertia Ii of the bodies (3n lines): 6 constant components of the inertia matrix

    Ii in the corresponding body frame (diagonal and upper part of the matrix only),

    8. a section describing the resultant of external forces frci on the bodies (n lines): 3 components in the

    corresponding body frame,

    9. a section describing the resultant of external torques trqi on the bodies (n lines): 3 components in the

    corresponding body frame,

    10. a section describing the gravity vector g (1 line): 3 components in the inertial frame,

    11. a final comment line to end the file.

    23

  • Figure 19: The .dat input file

    24

  • Comments:

    1. The syntax (number of sections and lines) must be rigorous. The number and type of spaces between

    symbols on a given line are free. Nevertheless, any mistake will be detected by ROBOTRAN which will

    then produce an error message.

    2. Note that some values (vector components, ...) have been set to zero, according to the system under

    consideration: this is highly recommendable since ROBOTRAN will take these zero entries into account

    to generate the symbolic equations in a more compact form.

    3. The choice of the symbols for the various entries of the .dat file is left16 to the user (max. 12 characters:

    ex. d(1,3), d13 or dxmember, ....). These symbols must start with a letter and can contain only:

    alphanumeric characters, comma ,, parentheses (), or brackets [].

    However, for all the recursive models (NER, ODN, BAR, ..., see Figure ??), in order to facilitate the

    connection (via function arguments) with the numerical simulation program, symbols of the .dat file

    (except 0 !) are automatically transformed by ROBOTRAN into an unequivocal syntax, using the

    following array notation:

    For Matlab syntax:

    . d(1:3,i) for the ith joint position vector,

    . l(1:3,i) for the ith CM position vector,

    . m(i) for the mass of body i,

    . In(1:9,i) for the inertia matrix of body i,

    . frc(1:3,i) for the external force resultant on body i (CM),

    . trq(1:3,i) for the external torque resultant on body i (CM),

    . g(1:3) for the gravity vector.

    This rule has been adopted to help the user in calling the functions generated by ROBOTRAN with a

    minimum of input arguments (see below).

    4. External resultant forces and torques frc and trq are purely symbolic vectors that ROBOTRAN

    will project adequatly into the various equations of motion. This is a key characteristic of the symbolic

    approach: these vectors, if introduced in the .dat file, induce variables frc(i,j) and trq(i,j) whose

    contents, in the numerical program, must be evaluated before the evaluation of the equations of motion.

    We showed in Section 3.3.2 that in the case of link forces, frc and trq can be computed automatically

    by ROBOTRAN on the basis of the .lin data file (see below). However, in a general case, the modelling

    of these external forces and torques is the users responsibility. He must thus implement them in a

    user function, in a similar manner as for the link forces.

    4.2.2 The .con file: description of the loop constraints

    To generate the constraints for his application, the user must first restore a tree-structure by applying the

    cutting procedure explained in Section 3.2.4 and then place the opened system into its reference configura-

    tion. The general .dat file can then be created as previously detailed.

    16Of course, some specific characters such as +, -, :, etc... are not allowed and detected by ROBOTRAN, to avoid the

    creation of symbolic variables which are incompatible with classical programming languages.

    25

  • Figure 20: The .con input file

    As regards the loop and user constraints, the .con input file is required and will be completed according to

    the three cutting procedures (loops). Figure 20 illustrates the contents of the .con input file related to an

    imaginary multibody system containing loops of types 1, 2 and 3 .

    This .con file is quite self-explanatory. A title (1 line) is followed by four sections successively related

    to the cutting procedures of types 1, 2, 3 and to user constraints17 ended by a comment line. The system

    considered in Figure 20 contains two loops of type 1, three loops of type 2, one loop of type 3 and two user

    constraints.

    For each loop, 2 bodies are mentioned (the original/shadow for type 1 and the primary/secondary bodies

    for types 2 and 3).

    In particular, in the case of a loop of type 2, which implies three position constraints in the x, y, z

    directions, an additional number can be added to this line, to indicate that one of the constraints must

    be disregarded for the considered loop. For instance, a number 2 at the right of the secondary body

    tells ROBOTRAN to get rid of the y constraint. Returning to the example of Figure 20, ROBOTRAN will

    disregard, for the second loop of type 2, the third constraint, i.e. in the z direction.

    This feature is interesting, for instance in the case of planar systems: a revolute joint beween two bodies in

    a planar loop can be processed via a cut of type 2 in which the constraint perpendicular to the plane will

    be automatically omitted in the output files.

    On the next line(s) of the section, the symbolic components of the dlp and dls vectors (see Section 3.2.4)

    are then introduced according to the syntax shown in Figure 20. Once again, zeros (0) are welcome to

    simplify the symbolic equations.

    17not availlable in the 6.3 FSA version

    26

  • The syntax (separation lines, ...) of the file must be in accordance with this example.

    As for the .dat file, non zero symbols chosen for the constant components of vectors dlp an dls are automat-

    ically transformed by ROBOTRAN in the case of recursive generation, in order to facilitate the numerical

    interfacing. The following notations are adopted:

    Type 1 loop (cut of a body)For Matlab syntax:

    . dl6p(1:3,i) for the dlp vector components of the ith loop of type 1,

    Type 2 loop (cut of a spherical joint)For Matlab syntax:

    . dl3p(1:3,i) for the dlp vector components of the ith loop of type 2,

    . dl3s(1:3,i) for the dls vector components of the ith loop of type 2.

    Type 3 loop (elimination of a connecting rod)For Matlab syntax:

    . dl1p(1:3,i) for the dlp vector components of the ith loop of type 3,

    . dl1s(1:3,i) for the dls vector components of the ith loop of type 3.

    User constraints : not available in the 6.3 - FSA version.

    4.2.3 The .lin file: description of the links

    Let us directly give in Figure 21 an example of a hypothetic system with link forces according to Section

    3.3.1, so as to create the input file hypothetic.lin.

    {X}x

    y

    z

    body 1

    body 0

    body 2

    body 3

    body 4

    dbp1

    dbs1

    dbp2

    dbs2dbp3

    dbs 3

    inbody = [0 1 2 2]

    Figure 21: hypothetic: An example of multibody system with links

    The input file is represented in Figure 22.

    27

  • Figure 22: The .lin input file

    The file indicates that the multibody system under consideration (hypothetic) contains 3 link forces

    (nlink = 3) between bodies 1 and 2, 3 and 4, 2 and 3, respectively. For a given link, the first body is referred

    to as the primary body p and the second as the secondary body s. Anchor points of link i are located by

    the vectors dibp and dibs with respect to the previous joint connection (see Figure 21) for the primary p and

    secondary body s (of link i), respectively.

    The constant components of these vectors are then introduced in the .lin file as indicated in the example

    of Figure 22.

    Once again, whatever the symbols introduced (except 0), these components are automatically transformed

    by ROBOTRAN into unequivocal arrays, as in the case of the loop vectors dlp and dls: the following array

    notations are adopted:

    . dbp(1:3,i) for the dbp vector of the primary anchor point P of link i,

    . dbs(1:3,i) for the dbs vector of the secondary anchor point S of link i.

    These vectors are of course expressed, as usual, in the primary/secondary body-fixed frames respectively,

    in which their components are constant.

    Finally, a line18 must be added for each link to denote the three classical parameters of linear spring and

    dampers : K, D, Z0 (stiness, damping coecient and neutral length). For a more general constitutive

    equation of a link force acting between a given pair of bodies p and s, it will be introduced, as explained

    in Section 4 , in the LinkForces user function, the latter being called by the link function generated by

    ROBOTRAN (file link.m).

    Finally, we point out that, since link forces are considerd by ROBOTRAN as external resultant forces

    and resultant torques vectors acting on the involved bodies: frc and trq, one must introduce, for each body

    involved in a link, an external force frc and torque trq d in the .dat file (i.e. the three components!).

    4.2.4 The .sen file: description of the kinematic sensors

    The .sen file describes the sensors on the multibody system as well as the necessary kinematic computations

    for these sensors (see Section 3.3.2). The syntax of the file is quite simular to the previous ones, as illustrated

    in Figure 23.

    18must be also present for the FSA version, but not used by ROBOTRAN 6.3 - FSA.

    28

  • Figure 23: The .sen file

    A line for the title

    A line containing the number of sensors

    For each sensor, a section containing

    a comment line

    the indices of the final body (carrying the sensor) and of the original body (assimilated to the

    inertial one) of the sub-chain,

    the component of the position vector dc. As previously done for recursive computations, ROBO-

    TRAN replace the non zero symbols by specific arrays:

    In Matlab syntax:

    . dc(1:3,i) for the dc vector components of sensor i,

    These vectors are of course expressed, as usual, in the final body-fixed frame, in which their

    components are constant.

    on one line, flags to indicate to ROBOTRAN the required kinematic computations for the corre-

    sponding sensor (see Section 3.3.2):

    P for the position psens R for the orientation matrix Rsens J for Jacobian matrix Jsens V for both the linear and angular velocities vsens,sens A for both the linear and angular accelerations asens, sens

    29

  • 5 Directory Organization - Run

    To run the ROBOTRAN 6.3 - FSA program, some measure of organization is required in the directories,

    according to the next figure.

    /myprojects/robot/

    robot.datrobot.senrobot.linrobot.con

    dirdynaner.mlink.m dirkinerig.mconstr.m

    ROBOTRAN

    /myprojects/robot/

    robot.datrobot.senrobot.linrobot.con

    dirdynaner.mlink.m dirkinerig.mconstr.m

    ROBOTRAN

    Each project directory will contain both the input and ouptut files. Let us take a look on the previous

    Figure at the contents of the directory robot/ : robot.dat, robot.lin, robot.con, etc... are the symbolic data

    files of ROBOTRAN. The name of the input files (i.e. before the extension, ex.: robot) MUST absolutely

    match the directory name (upper/lower case sensitive, ex. : robot/). Once robotran.exe has been run (i.e.

    answer to questions), the equations are generated in files stored by ROBOTRAN in the same directory:

    robot/ in the example of the previous figure.

    6 Examples

    6.1 The planar four-bar mechanism

    body 1

    body 2

    body 3

    body 0Q

    S

    S

    q

    q q

    P

    d

    d

    l

    2

    x

    y

    23

    d1l p3

    d1l s3

    3

    l3

    1

    1

    g

    a: system to model b: reference configuration

    2

    frc2trq 2,

    frc3trq 3,l

    1cd

    {X }0^

    Figure 24: A four bar mechanism - Reference configuration

    Figure 24 depicts a simple example representing a planar four-bar mechanism (project fbm) which con-

    tains:

    three bodies,

    one closed loop (closed between body 3 and the base 0),

    30

  • Figure 25: Four-bar mechanism: ROBOTRAN data files

    a link force (between body 2 and body 3),

    a sensor S on body 2.

    First of all, let us focus on the right part of Figure 24: the tree-like structure has been restored by

    cutting the last joint (at the tip of body 3) and placed in its tree-like reference configuration (see Section

    2.3) which is helpful to introduce the symbolic data. The data files fbm.dat, fbm.con, fbm.lin and fbm.sen

    are depicted in Figure 25. For clarity purposes, the body-fixed frames have not been sketched on the figure:

    in the reference configuration (on the right), they all are aligned with the inertial frame {Xo}, and locatedat each body centre of mass CM .

    Note the following particularities.

    The presence of a large number of zero components (0 symbol) in the vector/tensor data, arisingfrom the system, being located in its reference configuration.

    Due to the presence of a link between bodies 2 and 3, external force and torque are necessarily intro-duced in the fbm.dat file for these bodies.

    The system being planar, the third constraint (in the z direction) associated with the loop of type 2must be removed symbolically: this is the reason for the number 3 at the right of the connected

    bodies (0 and 3) in the fbm.con file.

    All the kinematic outputs (P R J V A) are asked for in the .sen file; this is of course not mandatory.

    31

  • 6.2 The Iltis military vehicle

    This example is of course more elaborated and will not be treated in details in this manual. The main

    elements of the symbolic model will be described here. Some illustrative time simulation results obtained

    from an external MATLAB program will be shown as well as some snapshots of the 3D animation of the

    vehicle.

    6.2.1 Description and modelling of the system

    Figure 26: The Iltis military vehicle

    The Bombardier ILTIS vehicle shown in Figure 26 needs to be defined in model form, suitable for com-

    puting specified modal analysis and response properties.

    0.615 0.6150.57 0.356

    0.97 1.047

    Figure 27: Iltis vehicle - nominal configuration

    Figure 27 shows the vehicle in its nominal configuration, which does not necessarily correspond to its

    reference configuration. The numerical values of the absolute position of the bodies, joints and links within

    a suspension are provided in the benchmark on the basis of a figure of type 28 and are given for the nominal

    configuration of the vehicle. The four suspensions have the same topology and thus result in a similar

    symbolic model.

    A-armShock-absorber

    Leaf-spring

    Wheel carrier

    Figure 28: Iltis vehicle suspension

    The specificities of the model are the following (see figure 29):

    32

  • The carbody has 6 d.o.f. with respect to the ground (So, five fictitious bodies are introduced in theROBOTRAN model).

    Each suspension contains 2 loops of bodies; the first one is planar and formed by the leaf spring,the wheel carrier and the A-arm (see Figure 28). It will be modelled in ROBOTRAN via a type 2

    loop. The other loop involves the tie rod and allows the steering of the wheel (also exists for the rear

    suspensions but with a locked tie rod). It will be modelled in ROBOTRAN via a type 3 loop.

    As regards stiness and damping, each suspension is equipped with a shock absorber (modelled as alink force in ROBOTRAN, on the basis of an experimental force characteristic), a leaf spring (modelled

    in ROBOTRAN as an equivalent non-linear massless spring between the suspension and the chassis, via

    a user external force) and a rubber bump stop (bumper) which limits the wheel hop for large road

    disturbances, also modelled as a user force.

    The lateral wheel/ground forces are computed on the basis of the so-called Calspan model. Thevertical tyre force is assumed to be linear (constant stiness) with no damping.

    The ROBOTRAN multibody model of the ILTIS vehicle contains:

    31 generalized coordinates q 4* 3 =12 loop constraints h(q) 1 constraint for the left/right tie rod connection 8 forced variables (q = f(t) or q = cste).

    which leads to: 31 12 8 = 11 degrees of freedom (6 for the chassis, 1 for each suspension wheel hopand 1 for the steering).

    Loop cut(suspension)

    Wheel/ground model

    Link force(damper/spring)

    Loop cut(steering rack)

    User force(bump stop)

    T1

    T2

    T3

    R1R2

    R3

    6 dof joint

    Figure 29: ROBOTRAN suspension model

    6.2.2 Illustrative results

    Once the model is ready, the numerical analysis can take place (in MATLAB). We shall only illustrate

    the time simulation of the vehicle driving on a anti-phase cosine bump (length = 5m, vertical amplitude

    = +0.1m./ 0.1 m), i.e. for which the right and left wheels undergo an asymmetric vertical excitation .For an initial forward velocity V = 10 msec , Figure 30 illustrates the roll and pitch angles of the carbody.

    Figures 31 show the wheel/ground normal forces: losses of contact are obvious on these figures. The high

    peaks in the normal force curves result from the bump stops which are very sti and induce high frequency

    transient responses when hit by the suspension.

    33

  • 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-0.05

    0

    0.05

    0.1

    0.15

    0.2

    0.25

    0.3

    Time [sec]

    Angl

    es [r

    ad]

    carbody roll

    carbody pitch

    Figure 30: Carbody roll and pitch - anti phase cosine obstacle

    0 0.5 1 1.5 20

    2000

    4000

    6000

    8000

    10000

    12000

    14000

    [s]

    [N]

    0 0.5 1 1.5 20

    0.5

    1

    1.5

    2

    2.5x 104

    [s]

    [N]

    0 0.5 1 1.5 20

    0.5

    1

    1.5

    2

    2.5

    3x 104

    [s]

    [N]

    0 0.5 1 1.5 20

    0.5

    1

    1.5

    2

    2.5x 104

    [s]

    [N]

    Front left Front right

    Rear left Rear right

    Figure 31: Wheel/ground normal forces

    The ILTIS vehicle on the in-phase cosine bump

    The previous Figure shows an animation of the vehicle for an in-phase cosine bump.

    34