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
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