# Satellite Dynamics Toolbox - Principle, User Guide and tutorials ```Satellite Dynamics Toolbox
Principle, User Guide and
tutorials
Daniel Alazard, Christelle Cumer
June 2014
EMPTY PAGE
3
Contents
Nomenclature
5
1 Rigid body dynamics based on Newton-Euler equations
1.1 Newton-Euler equations at the center of mass . . . . . . . . . . .
1.2 Newton-Euler equations at any reference point . . . . . . . . . . .
1.3 Linearized Newton-Euler equations . . . . . . . . . . . . . . . . .
11
11
12
13
2 Satellite Dynamics Toolbox: principles
2.1 Assumptions . . . . . . . . . . . . . . . . . . . . . .
2.2 Direct dynamics model . . . . . . . . . . . . . . . .
2.3 Appendage dynamics model MPA (s) . . . . . . . . .
2.3.1 Case of a rigid appendage . . . . . . . . . .
2.3.2 Case of a flexible appendage . . . . . . . . .
2.3.3 Case of an embedded angular momentum . .
2.4 Inverse dynamics model . . . . . . . . . . . . . . .
2.5 Revolute joint between the appendage and the hub
2.6 Generalisation . . . . . . . . . . . . . . . . . . . . .
17
18
18
19
20
20
21
23
24
26
3 Implementation with Matlabr
3.1 Satellite Dynamics Toolbox functions . .
3.2 User defined data file nom fich.m . . . .
3.2.1 Remarks . . . . . . . . . . . . . .
3.2.2 A first tutorial (on inertia tensor
point) . . . . . . . . . . . . . . .
3.3 FAQ . . . . . . . . . . . . . . . . . . . .
3.4 Example 1: Spacecraft1.m . . . . . . .
3.5 Example 2: Spacecraft2.m . . . . . . .
3.6 Example 3: Spacecraft5.m . . . . . . .
3.7 Example 4: FOUR CMGs.m . . . . . . . . .
Page 3/58
.
.
.
.
.
.
.
.
.
. . . . . . .
. . . . . . .
. . . . . . .
specified at
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
. . . . . . . . . 29
. . . . . . . . . 31
. . . . . . . . . 31
any reference
. . . . . . . . . 32
. . . . . . . . . 33
. . . . . . . . . 35
. . . . . . . . . 37
. . . . . . . . . 38
. . . . . . . . . 40
4
Contents
3.8 Example 5: SpaceRoboticArm.m . . . . . . . . . . . . . . . . . . . . . 45
3.9 Example 6: Spacecraft1u.m . . . . . . . . . . . . . . . . . . . . . . . 48
3.10 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
References
53
A Inline help
A.1 help of
A.2 help of
A.3 help of
A.4 help of
A.5 help of
55
55
56
56
56
57
function
function
function
function
function
main.m . . . . . . . . . . . .
translate dynamic model.m
rotate dynamic model.m . .
kinematic model.m . . . . .
antisym.m . . . . . . . . . .
Page 4/58
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
Nomenclature
Rb = (O, ~xb , ~yb , ~zb ) : Main body (hub B) reference frame. O is a reference point on
the main body. ~xb , ~yb , ~zb are unit vectors.
Ra = (P, ~xa , ~ya , ~za ) : Appendage A reference frame. P is the appendage’s anchoring point on the hub. ~xa , ~ya , ~za are unit vectors.
B
: Hub’s (B) centre of mass.
A
: Appendage’s (A) centre of mass.
G
: Overall assembly’s centre of mass B + A.
Tba
: Direction cosine matrix of the rotation from frame Rb to frame
Ra , that contains the coordinates of vectors ~xa , ~ya , ~za expressed in frame Rb .
→
−
aB
: Inertial acceleration (vector) of body B at point B.
→
−
aP
: Inertial acceleration (vector) of body B at point P .
→
−
ω
: Angular speed (vector) of Rb with respect to the inertial
frame.
→
−
F ext
: External forces (vector) applied to B.
→
−
T ext,B
: External torques (vector) applied to B at point B.
→
−
F B/A
: Force (vector) applied by B on A.
→
−
T B/A,P
: Torque (vector) applied by B on A at point P .
B
DB
: Hub’s static dynamics model expressed at point B.
mB
: Hub’s B mass.
B
: Inertia tensor 3 × 3 of B at point B.
IB
A
MP (s)
: Appendage’s dynamics model at point P .
A
m
: Appendage’s mass.
IA
: Inertia tensor 3 × 3 of A at point A.
A
τP B
: Kinematic
between
" model−−
# points P and B:
→
I3 (∗ P B)
: τP B =
.
03×3
I3
Page 5/58
6
Nomenclature

x
−−→
−−→
−−→
(∗ P B) : Skew symmetric matrix associated with vector P B: if P B =  y 
z R
i


0 −z y
h −−→ i
then (∗ P B)
= z
0 −x  .
Ri
−y x
0
Ri
Na
: Number of appendages.

If there is a flexible appendage, we add the following definitions:
N : Number of flexible modes.
η : Modal coordinates’ vector.
ωi : ith flexible mode’s angular frequency.
ξi : ith flexible mode’s damping ratio.
li,P : ith flexible mode’s vector of modal participations (1 × 6), expressed at
point P .
LP : Matrix N × 6 of the modal participation factors expressed at point P :
T
T
T
(LP = [l1,P
, l2,P
, · · · , lN,P
]T ).
If there is an embedded angular momentum, we add the following definitions:
Ω : Angular speed (rad/s) of the spinning top.
~zw : Unit vector along the embedded angular momentum.
Iw : Spinning top’s principal inertia.
Ir : Spinning top’s radial inertia.
If there is a revolute joint between the appendage and the hub, we add the following
definitions:
~ra : Unit vector along the revolute joint axis: ~ra = [xra yra zra ]TRa .
θ¨ : Revolute joint’s angular acceleration.
Cm : Revolute joint’s torque.
General definitions:
[X]Ri
: X (model, vector or tensor) expressed in frame Ri .
−
→
→
−
dX
| =0
: Derivative of vector X with respect to frame Ri .
dt Ri
~u ∧ ~v
: Cross product of vector ~u with vector ~v (~u ∧ ~v = (∗~u)~v )
~u.~v
: Scalar product of vector ~u with vector ~v (~u.~v = [~u]TRi [~v ]Ri , ∀ Ri )
s
: Laplace’s variable.
In
: Identity matrix n × n.
0n×m
: Zero matrix n × m.
T
A
: Transpose of A.
diag(ωi )
: Diagonal matrix N × N : diag(ωi )(i, i) = ωi , i = 1, · · · , N .
P (s)(i : j, l : m) : Sub-system of P (s) from inputs l to m to outputs i to j
Page 6/58
7
Introduction
This document presents the principles and the Matlabr implementation of the
http://personnel.isae.fr/daniel-alazard/matlab-packages/
satellite-dynamics-toolbox.html.
This toolbox allows the user to compute the linear dynamics model of a satellite
fitted with one or more flexible appendage (solar generators, antennas, . . . ) possibly taking into account the joints and actuators (solar generator driving mechanism,
Control Moment Gyro (CMG), external manipulator, . . . ). More generally, it can
model an open kinematic chain of bodies (sub-structures) in a space environment
(gravity efforts are not taken into account). Such a chain or structure can be described by a tree (see Figure 1) where:
• each node Ai corresponds to a body (or link or substructure),
• each edge corresponds to a joint between two bodies. 2 types of joint are
considered:
– clamped joint,
– revolute joint (around a given axis).
Classical tree terminology will be used. In the example of Figure 1: A0 is the root,
A3 to A7 are the leaves, A2 is the parent of A5 and the child of A0 .
Each body can be either flexible or not (with the restriction that the flexible bodies
must be the last elements or the leaves of the chain). The linear dynamics model is
the 6 by 6 transfer between the external forces and torques applied on the main body
structure at a reference point and the translational and rotational accelerations (at
the same reference point). When the structure includes joints (in this version of the
toolbox, only revolute joints between the sub-structures are considered), the model
is augmented with the transfer between internal torque and acceleration for each
joint.
Chapter 1 is a reminder on Newton-Euler equations applied to a single rigid
body.
Page 7/58
8
Nomenclature
A0
A1
A4
A2
A5
A6
A7
A3
Figure 1: Example of a tree (open-chain) structure.
Chapter 2 explains the modelling principles used in the Satellite Dynamics Toolbox.
Chapter 3 presents the Matlabr implementation of the toolbox, and more particularly:
• the setup of the data files describing the structure to be modeled,
• structure examples:
– Spacecraft1.m is a data file describing a spacecraft composed of a main
body and two cantilevered flexible appendages (see section 3.4),
– Spacecraft2.m is the same as Spacecraft1.m but the first appendage
is connected to the main body through a revolute joint and tilted with a
10 degrees angle (see section 3.5),
– Spacecraft5.m is the same as Spacecraft1.m but includes 3 additionnal
appendages corresponding to angular momentums along to X, Y and Z
axes taken into account to represent spinned RWAs (see section 3.6),
– FOUR_CMGs.m is a data file describing a platform fitted with four identical CMGs (see section 3.7). The CMG is described by the data file
dataCMG.m. This data correspond roughly to the experimental CMG
platform TETRAGYRE developed by ONERA/DCSD and presented
at: http://www.onera.fr/dcsd/gyrodynes/,
– SpaceRoboticArm.m is a data file describing a platform fitted with a 6
d.o.f. rigid space robotic manipulator (see section 3.8): the 6 links of
the manipulator are described in the files Segment1.m, Segment2.m, ...,
Segment6.m.
All these files and a demo script file (demoSTD.m) are included in the SDT
package.
Page 8/58
9
Nomenclature
Remark: this new version of the toolbox can also manage uncertain parameters
to perform sensitivity analyses. In this case, the outputs of the toolbox main functions are uncertain elements, matrices or models, compatible with the Matlabr
Robust Control Toolbox (see file Spacecraft1u.m as an example, section 3.9)).
The development of this version of the toolbox was done with Matlabr R2013a.
Page 9/58
EMPTY PAGE
11
Chapter 1
Rigid body dynamics based on
Newton-Euler equations
This chapter is a reminder on rigid body dynamics based on Newton-Euler equations (see also ). The interest of Newton-Euler equations is to consider in the
same model the 6 degrees-of-fredom (3 translations and 3 rotations) of the rigid
body. This chapter will also present the linearity assmuptions which will be
1.1
Newton-Euler equations at the center of mass
Let us consider a body B with a center of mass B (see Figure 1.1).


→
−
aB
→
−
ω˙


P
~zb
~xb
B
O
B
~yb


→
−
F ext
→
−
T ext,B
Figure 1.1: A rigid body.
Page 11/58


12
1. Rigid body dynamics based on Newton-Euler equations
# " →
"
−
F ext
mB I3 03×3
=
→
−
03×3 IBB
T ext,B
|
{z
}
→
−
aB
→
−
ω˙
#
+
03×1
→
−
−
ω ∧ IBB →
ω
(1.1)
B
DB
where:
→
−
• F ext : total force acting on the body,
→
−
• T ext,B : total torque acting about the centre of mass,
• mB : mass of the body,
• IBB : Inertia tensor of the body about the centre of mass,
−
• →
a B : acceleration of the centre of mass,
−
• →
ω : angular velocity of the body.
Eq. (1.1) is intrinsic and can be projected in any frame. Using the skew matrix
−
−
(∗ →
ω ) associated with vector →
ω (see nomenclature), Eq. (1.1) can be written:
# " →
# " →
−
−
B
a
03×1
m I3 03×3
F ext
B
(1.2)
+
=
→
−
−
−
→
−
ω
ω ) IBB →
(∗ →
03×3 IBB
ω˙
T ext,B
{z
}
|
B
DB
1.2
Newton-Euler equations at any reference point
Let us consider another point P on the body B. Since the body is rigid (assumption
[H1]),the velocity of P can be expressed as a function of the velocity of B and the
−
angular velocity →
ω:
−−→ −
−−→ −
→
−
−
−
vP =→
vB +→
ω ∧ BP = →
v B + PB ∧ →
ω .
(1.3)
−−→
−−→
Using the skew matrix (∗ P B) associated with vector BP (see nomenclature), one
can write:
−−→ −
→
−
−
vP =→
v B + (∗ P B)→
ω .
(1.4)
Considering the dual velovity vectors (6 components) at point B and P , one can
write:
→
"
−→ # →
−
−
∗−
vP
vB
I3 ( P B)
=
.
(1.5)
→
−
→
−
ω
ω
03×3
I3
|
{z
}
τP B
Page 12/58
13
1.3 Linearized Newton-Euler equations
τP B is called the kinematic model (or jacobian) between points P and B.
Property: τP−1B = τBP .
Considering the dual force vectors (6 components) at point B and P , one can also
write:
#" →
# "
" →
#
−
−
I3
03×3
F ext
F ext
=
.
(1.6)
−−→
→
−
→
−
−(∗ P B) I3
T ext,B
T ext,P
|
{z
}
τPT B
→
−
→
−
Indeed: T ext,B = T ext,P +
−−→ →
−
BP ∧ F ext .
| {z }
lever arm × force
The time-derivation of (1.3) in the inertial frame gives:
−−→ −
−
→
−−→ −
d
PB →
→
−
−
−
−
aP =→
a B + PB ∧ →
ω +→
ω ∧ (P B ∧ →
ω) ,
ω˙ +
∧−
dt | {z B}
(1.7)
=0 ([H1])
or equivalently:
# "
"
−−→ # "
→
−
aP
I3 (∗ P B)
=
→
−
ω˙
03×3
I3
|
{z
}
→
−
aB
→
−
ω˙
#
+
"
−−→ − #
−
(∗ →
ω )(∗ P B)→
ω
.
03×1
(1.8)
τP B
Using (1.2), (1.6) and (1.8), one can derive the Newton-Euler equations at point
P:
#"
#
# "
" →
# "
−→ →
−−→
−
−
−
∗−
B ∗→
→
−
BP
)
ω
ω
)(
m
(
aP
mB I3
mB (∗ BP )
F ext
=
+ ∗→
−−→ −
−−→
−−→
→
−
→
−
ω˙
ω
ω ) IBB − mB (∗ BP )2 →
(−
−mB (∗ BP ) IBB − mB (∗ BP )2
T ext,P
|
{z
}
T DB τ
τBP
B BP
(1.9)
1.3
Linearized Newton-Euler equations
−
−
−
Assuming that →
ω is small (linearity assumption [H2]), quadratic terms in (∗ →
ω )X3×3 →
ω
can be neglected. Then equations (1.2) and (1.9) becomes:
" →
# #
" →
−
−
aB
F ext
mB I3 03×3
• →
=
−
→
−
03×3 IBB
ω˙
T ext,B
|
{z
}
B
DB
B
DB
is the direct dynamics model of the body B about the centre of mass B.
Page 13/58
14
1. Rigid body dynamics based on Newton-Euler equations
# "
#"
" →
−−→
−
F ext
mB I3
mB (∗ BP )
=
• →
−−→
−
−−→
−mB (∗ BP ) IBB − mB (∗ BP )2
T ext,P
{z
}
|
→
−
aP
→
−
ω˙
#
B =τ T D B τ
DP
BP B BP
T
B
DPB = τBP
DB
τBP
(1.10)
is the direct dynamics model of the body B about the point P .
Equations (1.10) is very convenient to transport the direct dynamics model from
one point to another: considering a third point R, one can also write:
B
T
B
T
DR
= τBR
DB
τBR = τBR
τPTB DPB τP B τBR
(1.11)
B
= τPTR DPB τP R .
DR
(1.12)
Without loss of generality, one can write the linear dynamics model of a mechanical
system at its center of mass B and then transport it to any other point R (where
the external force is applied for instance).
The development of (1.10) is:


−−→
mB I3
mB (∗ BP )
−−→
−−→ 

T
B
DPB = τBP
DB
τBP =  −mB (∗ BP ) IBB − mB (∗ BP )2 
|
{z
}
IB
P
One can recognize in the bottom-right-hand term, the Huygens theorem between
the inertia tensor IBB of B at point B and the inertia tensor IBP of B at point P :
−−→
IBP = IBB − mB (∗ BP )2
(1.13)
or in projection
in the frame Rb = (0, ~xb , ~yb , ~zb ) attached to the body B, with
 
x
−−→  
BP = y
:
z R
b
B
IP R = IBB R
b
b


y 2 + z 2 −xy
−xz
+ mB  −xy x2 + z 2
−yz 
2
−xz
−yz
x + y2 R
(1.14)
b
Note that the equation (1.12) works on the 6 × 6 direct dynamics model and is valid
for any points (P and R) on the body B while Huygens theorem (equation (1.13))
works on the 3 × 3 tensor of inertia and is valid only if B coincides with the centre
of mass of the body B. In the general case:
−→
IBR 6= IBP − mB (∗ P R)2 .
Page 14/58
1.3 Linearized Newton-Euler equations
15
Nevertheless Huygens theorem (equation (1.13)) can be used to find IBB from IBO ,
in the case where the data of the tensor of inertia are provided w.r.t. the body
reference frame Rb :
−−→
IBB = IBO + mB (∗ OB)2 .
(1.15)
Indeed, in the Matlabr implementation of the SDT (detailled in chapter 3), the
tensor of inertia of each body must be defined w.r.t. to its centre of mass by the
user. In some applications, data are provided at a reference point O different from
the centre of mass B, then equation (1.15) can then be used and can be easily
implemented in the SDT (see section 3.2.2 as a tutorial).
Page 15/58
EMPTY PAGE
17
Chapter 2
Satellite Dynamics Toolbox:
principles
We consider a satellite as a main body B (the hub) and one appendage A cantilevered
to the hub at point P , as shown on Figure 2.1. The appendage is considered as a
dynamic sub-structure either because of its flexibility or because of an embedded
angular momentum (reaction wheels or CMG). The objective is two-fold: first, computing the direct dynamics model MBA+B (s), i.e. the 6 by"6 transfer
# between the
→
−
aB
dual vector of the translational and rotational accelerations
of the hub seen
→
−
ω˙
from
the hub
" →
# centre of mass B and the dual vector of the external forces and torques
−
F ext
applied to the hub at point B :
→
−
T ext,B
" →
#
"
−
F ext
= MBA+B (s)
→
−
T ext,B
→
−
aB
→
−
ω˙
#
.
Second, computing the inverse dynamics model [MBA+B (s)]−1 .
Considering the result of the previous chapter (equation (1.10)), one can then compute the direct and inverse dynamics models about any arbitrary
point
" reference
#
→
−
aR
R, that is: the models between dual vectors of accelerations
and forces
→
−
ω˙
" →
#
−
F ext
seen from the reference point R:
→
−
T ext,R
T
MRA+B (s) = τBR
MBA+B (s) τBR
−1 T
A+B −1
MR (s)
= τRB MBA+B (s)
τRB .
Page 17/58
(2.1)
(2.2)
18
2. Satellite Dynamics Toolbox: principles


→
−
aB
→
−
ω˙

A

~xa
G
~zb
~xb
B
P
~ya
O
B
A
~za

~yb


→
−
F ext
→
−
T ext,B


→
−
F B/A
→
−
T B/A,P



Figure 2.1: The system hub B + appendage A.
2.1
Assumptions
[H1 ] The hub is rigid:
−
−
→
dBP
|
dt Rb
= 0.
−
−
[H2 ] Non-linear terms (in →
ω ∧ X3×3 →
ω ) of second or higher order are disregarded.
[H3 ] The only external force (resp. torque) applied to the appendage A is the
→
−
→
−
force F B/A (resp. torque T B/A,P ) applied by the hub B at the appendage’s
anchorage point P .
2.2
Direct dynamics model
The direct dynamics model of the assembly MBA+B (s) at the hub B centre of mass
is the sum (, ):
B
• of the hub’s direct dynamics
model at point B: DB
:
B
m I3 03×3
B
DB
=
which can be projected in frame Rb as follows:
03×3 IBB
B
B
m I3 03×3
DB R =
,
b
03×3 IBB R
b
Rb
• and of the appendage’s direct dynamics model at point P : MPA (s) moved
to point B thanks to the kinematic model τP B (see nomenclature) and the
transport equation (1.10), that leads to:
MBA (s) = τPTB MPA (s)τP B .
Page 18/58
(2.3)
2.3 Appendage dynamics model MPA (s)
19
When summing, we can write that:
B
MBA+B (s) = DB
+ τPTB MPA (s)τP B .
(2.4)
In projection in the hub’s frame Rb , the assembly’s direct dynamics model is the
following:
A+B B
+ τPTB R
MB
(s) = DB
R
R
b
b
b
Tba 03×3
03×3 Tba
A MP (s) Ra
Tba 03×3
03×3 Tba
T
[τP B ]Rb
where Tba is the direction cosine matrix of the rotation from frame Rb to frame Ra
(see nomenclature). Figure 2.2 represents this model’s block diagram and matching
physical signals.


→
−
aP
→
−
ω˙


h

MPA
i
Ra
(s)



Ra
Tba 03×3
03×3 Tba

T




→
−
aB
→
−
ω˙
Tba 03×3
03×3 Tba
h
[τP B ]Rb
Rb
τPTB
DBB
i

Ra

Rb
 →
−
F B/A
→
−
T B/A,B
+
h


i



→
−
F B/A
→
−
T B/A,P
+


Rb


→
−
F ext
→
−
T ext,B


Rb
Rb
Figure 2.2: Direct dynamics model block diagram MBA+B (s) expressed in frame Rb .
The following operation allows for the transport of the direct dynamics model to
point G, the global assembly’s centre of mass:
T
MBA+B (s)τBG .
MGA+B (s) = τBG
2.3
Appendage dynamics model MPA(s)
There are 3 different cases to consider in order to write the appendage’s dynamics
model MPA (s), at anchoring point P between A and B (see ).
Page 19/58
20
2. Satellite Dynamics Toolbox: principles
2.3.1
Case of a rigid appendage
MPA (s)
=
DPA
=
T
τAP
This is a static model.
2.3.2
mA I3 03×3
03×3
IA
A
τAP .
(2.5)
Case of a flexible appendage
MPA (s)
=
DPA
−
N
X
i=1
T
li,P
li,P
s2
,
s2 + 2ξi ωi s + ωi2
(2.6)
in which DPA comes from (2.5) and the various parameters ωi , ξi et li,P (see nomenclature) can be provided by finite element software used to model the appendage
(see  or  for more explanations). Other representations can be used for MPA (s):
• the hybrid-cantilevered model:

 →
"
−
F B/A
 = DPA

→
−
T B/A,P
#
→
−
aP
+ LTP η¨
→
−
˙ω
" →
#
−
aP
η¨ + diag(2ξi ωi )η˙ + diag(ωi2 )η = −LP
→
−
ω˙
• the second order generic model:
q¨r
06×6
06×N
q˙r
06×6
06×N
qr
Fext
DPA LTP
+
+
=
LP IN
η¨
0N ×6 diag(2ξi ωi )
η˙
0N ×6 diag(ωi2 )
η
0N ×1


#
" →
→
−
−
aP
F B/A
.
and Fext =  →
where q¨r =
−
→
−
˙ω
T B/A,P
• the state-space representation with a feedforward matrix DPA0 , which is the
residual mass of the appendage A rigidly cantilevered to the hub B at point
P:
" # "
#" # "
#" →
#
−
aP
η˙
0N ×N
IN
η
0N ×6
=
+
→
−
η¨
−diag(ωi2 ) −diag(2ξi ωi )
η˙
−LP
ω˙
 →

" #
" →
#
−
−
aP
F B/A
η
A
T

 = −LTP diag(ωi2 ) −LTP diag(2ξi ωi )
+(DP − LP LP )
→
−
−
|
{z
} →
η˙
ω˙
T B/A,P
A
DP
0
• or the block diagram on Figure 2.3. This diagram easily allows for the introduction of parametric uncertainties on ωi , ξi , Lp and DPA0 because they appear
with a minimum number of occurences.
Page 20/58
2.3 Appendage dynamics model MPA (s)
21
h
η
+
diag(ωi )
diag(ωi )
1
s
η˙
1
s
MPA
i
Ra
(s)
−
η¨
−
+
diag(2ξi )
[LP ]TRa
[LP ]Ra
−
h
+


→
−
F B/A
→
−
T B/A,P
DPA0
i
Ra




Ra
→
−
aP
→
−
ω˙


Ra
Figure 2.3: Direct dynamics model block diagram of the appendage MPA (s) expressed
in frame Ra .
2.3.3
Case of an embedded angular momentum
MPA (s)
=
DPA
+
03×3
03×3
03×3 − 1s Iw Ω (∗~zw )
,
(2.7)
where DPA comes from (2.5), where Iw (Kg m2 ) is the appendage’s inertia about its
spin axis (spinning top) defined by unit vector ~zw and where Ω is the spinning top’s
Complementary assumptions
When the appendage is an embedded angular momentum, we will further suppose
that:
[H4 ] Ω and ~zw (the angular speed and the spin axis of the spinning top) are
constants in frame Ra ,
[H5 ] the spinning top is balanced,
[H6 ] (non-restrictive) the spin axis is along the z axis of the appendage body frame
Ra (i.e. ~zw = ~za ).
Page 21/58
22
2. Satellite Dynamics Toolbox: principles
Under assumptions [H5] and [H6], one can

Ir
A
IA Ra =  0
0
write:

0 0
Ir 0 
0 Iw R
a
where Iw is the spinning top’s principal inertia (about ~zw ) and Ir its radial inertia.
When expressed in frame Ra , equation (2.7) becomes:

03×3
03×3
A



A
T m I3 03×3
0
1/s 0

[τAP ]Ra +
MP Ra (s) = τAP Ra
03×3
IA
03×3 Iw Ω  −1/s 0 0 
A Ra
Ra
0
0 0
(2.8)
Proof of the model (2.7)
At point A, the appendage’s centre of mass, one can write:
→
−
−
F B/A = mA →
aA
(2.9)
→
−
→
−
→
−
→
− A dH A
→
−
dH A
→
−
−
T B/A,A =
|Rb + ω ∧ H =
|Ra + →
ω ∧ H A (from [H1])
(2.10)
dt
dt
→
−
→
−
zw is the total angular momentum of the appendage.
where H A = IA
A ω + Iw Ω~
→
−
d(Ω~zw )
→
−˙
−
→
− →
−
|Ra + →
T B/A,A = IA
ω ∧ IA
zw
A ω + Iw
A ω + ω ∧ Iw Ω~
|
{z
}
dt
| {z }
=0 ([H2])
=0 ([H4])
→
−˙
−
∗
= IA
zw )→
ω
A ω − Iw Ω( ~
1
−
A
∗
=
IA − Iw Ω( ~zw ) →
ω˙
s
(2.11)
From (2.9) and (2.11), the direct dynamics model of the appendage at point A is:
A
m I3 03×3
03×3
03×3
A
MA (s) =
+
.
03×3
IA
03×3 − 1s Iw Ω (∗~zw )
A
T
Transporting this model to point P , we get MPA (s) = τAP
MAA (s)τAP , that leads to
equation (2.7) when taking the first of the following remarks into account.
Page 22/58




Ra
.
23
2.4 Inverse dynamics model
Remarks (independent of the projection frame used):
03×3
03×3
03×3
03×3
T
τAP =
, ∀ τAP .
• τAP
03×3 − 1s Iw Ω (∗~zw )
03×3 − 1s Iw Ω (∗~zw )
• It clearly appears in (2.8) that the model of an embedded angular momentum
appendage is a second order 6 × 6 model containing 2 integrators. These 2
−
integrators were used to model the hub’s rotation vector →
ω from the angular
→
−
˙
acceleration ω (equation (2.11)), that is the last 3 inputs of direct dynamics
model.
• When computing a minimal realization of the inverse dynamics model [MBA+B (s)]−1
augmented with the 6 integrators needed to compute the speeds from the accelerations, these previous integrators disappear.
• When considering a hub fitted with Na embedded angular momentum appendages Ai , i = 1,P
· · · , Na (for instance, reaction wheels), the dynamics model
Na
A +B
of the assembly MB i=1 i (s), which is a 2N order model, should reduce to
a second-order model because the matrix (∗~h) is rank 2 for all vectors ~h and:
Na
X
1
i=1
s
a
1X
1
Iwi Ωi (∗~zwi ) = (∗~h)
s i=1
s
N
Iwi Ωi (∗~zwi ) =
P a
where ~h = N
zwi is the total angular momentum of the global assemi=1 Iwi Ωi ~
bly, containing the Na spinning tops.
2.4
Inverse dynamics model
Figure 2.4 shows the block diagram of the inverse dynamics model [MBA+B (s)]−1 ,
expressed in frame Rb . It also shows that the appendage’s direct dynamics model
is a feedback for the hub’s inverse dynamics model :
−1
B
B −1
B −1 −1
DB
+ MBA (s)
= [DB
]
I6 + MBA (s)[DB
]
.
The usefulness of this representation instead of the direct inversion turns up when
conducting sensitivity or robustness analyses with respect to parametric variations
of the appendage’s model. Indeed, there is no need to invert the direct dynamics
model of the appendage MPA (s). Moreover, one can assure that each characteristic
parameter of the model MPA (s) (mA , IA
P , ωi , ξi , li,P , Ω, · · · ) appear a minimum
number of occurences.
Page 23/58
24
2. Satellite Dynamics Toolbox: principles
h


→
−
F B/A
→
−
T B/A,P


(s)


Ra
→
−
F B/A
→
−
T B/A,B
→
−
F ext
→
−
T ext,B
Ra



i



MPA


Tba 03×3
03×3 Tba
h
τPTB





i
Tba 03×3
03×3 Tba
Rb
Rb
−


Ra
T

[τP B ]Rb
Rb

+
→
−
aP
→
−
ω˙

h
DBB

i−1
→
−
aB
→
−
ω˙


Rb
Rb
Figure 2.4: Inverse dynamics model block diagram of the appendage [MBA+B (s)]−1
expressed in frame Rb .
2.5
Revolute joint between the appendage and
the hub
Let us consider Figure 2.5 in which the joint between the hub B and the appendage
A at point P is a revolute joint along ~ra axis. We use the following definitions:
• θ¨ is the angular acceleration inside
 the
 revolute joint:
xr a
h
i
→
−
→
−
˙ω
˙
¨
¨

ra or ω A/B
= θ yra  ,
A/B = θ ~
Ra
zra R
a
• Cm is the torque (if present) along (P, ~za ) applied by an actuator located inside
the revolute joint.
The objective is to compute the augmented direct model PBA+B (s) (7 × 7) of the
assembly A + B such that:
 →


−
F ext
 →

−
A+B
 T ext,B  = PB (s) 
Cm
Page 24/58

→
−
aB
→
− 
ω˙
θ¨
25
2.5 Revolute joint between the appendage and the hub


→
−
aB
→
−
ω˙




→
−
F B/A
→
−
T B/A,P


B
~ra
~ya
O
B
A
~xa
P ~za
Cm
~zb
~xb
A
θ¨
~yb


→
−
F ext
→
−
T ext,B


Figure 2.5: Assembly of the base B and the appendage A linked with a revolute
joint along ~za
→
−
Because of the revolute joint, the projection of the torque T B/A,P , exerted by the
base on the appendage at point P , along ~ra axis is either: null in case of a free
revolute joint or equal to Cm in case of an actuated joint.
→
−
Cm = T B/A,P .~ra .
(2.12)
Expressing the direct dynamics model MPA (s) of the appendage at point P in frame
Ra enables us to write that:
" →
#
"
#
−
→
−
a
F B/A
P
= MPA (s) →
−
→
−
¨ra
ω˙ + θ~
T B/A,P
(2.13)
From (2.12) and (2.13), one can write the augmented direct model (7 × 7) of the
appendage PPA Ra (s) at point P and expressed in frame Ra :


0
# 
# 
 " →
 " →

−
0 
−


a
F B/A
P

A
→
−
I6
0 
−


 →



ω
˙
=
M
(s)
I
 .

T B/A,P R 
P Ra
 6 xr  
R
0 0 0 xra yra zra
a
a
a


Cm
θ¨

yr 
a
|
{z
[PPA ]
Ra
zra
(s)
}
(2.14)
The block diagram of Figure 2.6 represents this operation.
It also shows the con A
nection of the first six inputs and outputs between PP Ra (s) and the hub’s direct
B
model DB
in order to get the assembly model PBA+B (s), expressed in frame Rb .
Page 25/58
26
2. Satellite Dynamics Toolbox: principles
Taking into account a revolute joint between the hub and an appendage with an
embedded angular momentum then allows for the modelling of CMGs (Control
Moment Gyros), the axis of the joint being the precession axis of the CMG.
θ¨

3

x ra
 yra 
z ra


3 + +


Tba
03×3
→
−
aP
→
−
ω˙
h
MPA
i
Ra
(s)


Ra

→
−
aB
→
−
ω˙




→
−
F B/A
→
−
T B/A,P

→
−
F B/A
→
−
T B/A,B


Ra
Tba 03×3
03×3 Tba
h
τPTB


Rb
+
Rb
6
h
i
DBB R
b
Cm
[xra yra zra ]

[τP B ]Rb

3
3


T
03×3 
Tba
A
PP Ra (s)
+


i
Rb


→
−
F ext
→
−
T ext,B


Rb
6
Figure 2.6: Direct dynamics model (7 × 7) block diagram of the assembly hub +
appendage PBA+B (s) with revolute joint, expressed in frame Rb .
For control laws synthesis, one can use the following inverse model:
# 
# 
 " →
 " →
−
−
aB
F ext
→
−
−
 A+B −1
 →


ω˙
= PB
(s) 



T
ext,B
R
b
Rb
Rb
Cm
θ¨
(2.15)
that allows the user to introduce, between the seventh input to the seventh output,
a local model of the joint mechanism or controller K(s) according to Figure 2.7.
2.6
Generalisation
One can generalise the previous approach:
• to take Na appendages (Ai , i = 1, · · · , Na ) linked with the hub at points Pi
into account,
Page 26/58
27
2.6 Generalisation
→
−
F ext
→
−
T ext,B R
Cm
→
−
aB
→
−
ω˙
R
b
A+B −1p
PB
(s) ¨
Rb
θ
1
s
b
θ˙
1
s
θ
K(s)
Figure 2.7: Inverse dynamics model of the assembly hub + appendage with a revolute joint and a local mechanism or controller model K(s), expressed in
frame Rb .
• to take into account that an appendage Ai can itself be the support (the
parent) of another appendage Aij at point Pij . Thus, one can model any open
kinematic chain of bodies that can be described through a connection tree. To
do this, one has to build the global model, starting from the tree leaves and
using the previous approach where the body Ai is considered as a base (hub)
or the parent of appendage Aij . However, because of assumption [H1], each
intermediate body must be rigid. Flexible bodies are allowed only at the end
of the kinematic chain.
The intrinsic formulae (they do not depend on a projection frame) that enable
transport (2.3) or addition (2.4) of direct dynamics models allow to build the global
model and to use it recursively. The SDT toolbox was developed on this principle.
For example, one can write the global direct dynamics model of the system shown
on Figure 2.8 as follows:
P
MB
Ai +B
B
(s) = DB
+ τPT1 B DPA11 + τPT11 P1 MPA1111 (s)τP11 P1 τP1 B
+ τPT2 B MPA22 (s) τP2 B .
One can also use this generalization to model revolute joints between elements, as
detailed in the previous section. Thus, it allows for the modelling of a gyroscopic
actuator (CMG) fitted on a hub using three bodies as shown on Figure 2.9:
• the hub B,
• the fork Ai connected through a revolute joint (precession axis ~rai = ~zai ) with
B at point Pi ,
• the spinning top Aii ≡ Wi linked with Ai at point Pii = Gi and with its
angular momentum along ~zwi (according to the assumptions [H6]).
Page 27/58
28
2. Satellite Dynamics Toolbox: principles
~xa11
~xa1
P1
~zb
~xb
B
O
B
~za1
~yb
~ya2
~xa2
P11
~ya11
A1
~za11
A11
~ya1
P2
~za2
A2
Figure 2.8: Example of an open kinematic chain
~xai
~yai
~zai
~ywi
Wi
Gi
~xwi ~zwi
Pi
B
Ai
Figure 2.9: Illustration of a CMG.
Page 28/58
29
Chapter 3
Implementation with Matlabr
The Matlabr package SDT_V1.3.zip to implement the Satellite Dynamics Toolbox can be downloaded from:
http://personnel.isae.fr/daniel-alazard/matlab-packages
/satellite-dynamics-toolbox.html.
This toolbox requires a user defined data file describing the structure of the spacecraft. The variables to be declared by such a script file are described in section 3.2.
The Matlabr package contains also several examples of such a script file detailled
in sections 3.4 to 3.9 and the associated demo file demoSTD.m. It is advised to the
user to run step by step this demo file and to use one of the data file examples as
a guide to create its own data file. The next section describes the various functions
included in the toolbox in relation with the general notations used in the document
and summarized in the nomenclature. The inline help of these functions are given
in appendix A.
3.1
Satellite Dynamics Toolbox functions
Once the user defined data script file is created, 5 functions can be used: main,
translate_dynamic_model, rotate_dynamic_model, kinematic_model and antisym.
Let us called nom_fich.m the user defined data script file:
• main.m: using the syntax mod=main(’nom_fich’), the function outputs a
structure variable mod with 5 fields:
P a Ai
– mod.TotalMass: the total mass of the satellite ( N
+ mB , in kg),
i=1 m
– mod.TotalCg: the coordinates
h−→i of the global centre of mass expressed in
the reference frame Rb : ( OG , in m),
Rb
– mod.DynamicModel: the direct dynamics model expressed at the global
Page 29/58
3. Implementation with Matlabr
30
h P Na
i
i=1 Ai +B
centre of mass (G) in the reference frame Rb : ( MG
Rb
(s) in SI
units, meaning that the accelerations in input of the model are in m/s2
and in rad/s2 and that the forces and torques outputted by the model
are in N and N m),
– mod.InverseTotalModel: the above inverse model (inputs are forces,
outputs are accelerations)
– mod.liste_IOs: a string of chars that describes the different channels of
the (square) model mod.DynamicModel and built from the names of the
bodies written in nom_fich.m. The first 6 channels are always relative
to the 3 translations and the 3 rotations of the hub (base). The optional
7th and beyond channels are the transfers between the torques Cm and
accelerations θ¨ local to each revolute joint linking two bodies, if activated.
• translate_dynamic_model.m: the syntax MB=translate_dynamic_model(A,B,MA)
translates (or transports) the direct dynamics model MA projected in a frame
Ri from point A (vector of the 3 components of the point A in the frame Ri )
to point B (vector of the 3 components of the point B in the frame Ri ). Inputs
and output arguments are expressed in the same frame Ri :
[τAB ]Ri 06×Nr
[τAB ]TRi 06×Nr
[MA ]Ri (s)
.
[MB ]Ri (s) =
0Nr ×6
INr
0Nr ×6
INr
where Nr is the number of revolute joints in the structures.
• rotate_dynamic_model.m: the syntax MB=rotate_dynamic_model(MA,ANG,AXIS)
computes the direct or the inverse dynamics model (input argument MA) projected in a frame Ri after a rotation of ANG (deg) around the axis AXIS (unit
vector of the 3 components of the rotation axis ~ra in the frame Ri ). Inputs
and output arguments are expressed in the same frame Ri . This function
computes the direction cosine matrix T associated to the rotation and then:




T
03×3 03×Nr
TT
03×3 03×Nr
[MB ]Ri (s) =  03×Nr
T
03×Nr  [MA ]Ri (s)  03×Nr T T
03×Nr  .
0Nr ×3 0Nr ×3 INr
0Nr ×3 0Nr ×3 INr
where Nr is the number of revolute joints in the structures.
• kinematic_model.m: the syntax TAU=kinematic_model(A,B) computes the
kinematic model TAU betwen points A and B (vectors of the 3 components of
points A and B in a frame Ri ):
h −→ i #
"
I3
(∗ AB)
Ri
[τAB ]Ri =
.
03×3
I3
Page 30/58
3.2 User defined data file nom fich.m
31
• antisym.m:
the skew symmetric matrix
i the syntax M=antisym(V) computes
h →
→
−
∗−
associated to the vector V = V (3 components) projected in the
M= ( V)
Ri
frame Ri (see nomenclature).
3.2
User defined data file nom fich.m
From a reference frame Rb , the user-defined data file nom_fich.m describes the
geometry, the dynamics parameters of the main body (hub) and of the different
appendages Ai . Running this file through:
>> nom_fich
must creates 3 variables:
• MB: structure describing the main body B. The different required fields of this
structure are detailed in table 3.1,
• nappend: the number of appendages Na (integer),
• SA: vector of Na cells. Each cell SA{i}, i=1:nappend, describes the appendage
Ai . The different required fields of the structure SA{i} are detailed in table
3.2.
3.2.1
Remarks
One can also define appendage SA{i} in an independent data file nom_fich_i.m (see
table 3.2, line 6), that creates the same variables MB, nappend and SA as nom_fich.m.
It allows the user:
• to use the recursivity of main.m in order to model chains of rigid bodies (see
example data files SpaceRoboticArm.m and files Segment1.m to Segment6.m
provided with the toolbox. They model a robotic manipulator on a space
platform).
• to use only one data file when the platform is fitted with several identical
appendages. We can meet this case when modelling a platform fitted with a
cluster of gyroscopic actuators (see example data file presented in section 3.7).
Page 31/58
3. Implementation with Matlabr
32
Variable name
MB.Name
MB.cg
MB.m
MB.Ixx
MB.Iyy
MB.Izz
MB.Ixy
MB.Ixz
MB.Iyz
nappend
Notation
Type
char
h−−→i
OB
B
double 3 × 1
Rb
B m
I R (1, 1)
B
b
IBB R (2, 2)
B b
I R (3, 3)
B
b
IBB R (1, 2)
B b
I R (1, 3)
B
b
IBB R (2, 3)
b
Na
double
double
double
double
double
double
double
integer
Unit
m
Kg
Kg m2
Kg m2
Kg m2
Kg m2
Kg m2
Kg m2
Table 3.1: Description of the fields of the structure MB.
3.2.2
A first tutorial (on inertia tensor specified at any reference point)
In the user defined data file nom fich.m, the tensor of inertia of each body (fields
MB.I** and SA{i}.I**) must be defined w.r.t. to its centre of mass. In some
applications, data are provided at a reference point O different from the centre of
mass B, then Huygens thereom (1.15) can be used in the script file nom fich.m
by using the following Matlabr sequence based on the function antisym:
MB.Name=’Platform’;
MB.cg = [ 0.0063;-0.0200;1.7744];
MB.m =
905.6290;
%
%
%
%
Name of the body
position of gravity center
in (0,X,Y,Z) (m)
mass (kg)
MB.IO=[3.8991*1.0e+03 0.0086*1.0e+03 -0.0265*1.0e+03;... % Main inertia in
0.0086*1.0e+03 4.0907*1.0e+03 0.0114*1.0e+03;... % (O,X1,Y1,Z1)
-0.0265*1.0e+03 0.0114*1.0e+03 0.4606*1.0e+03];
% (Kg m^2)
MB.I=MB.IO + MB.m*antisym(MB.cg)^2; % Huygens theorem
MB.Ixx=MB.I(1,1);
% Main Inertia in
MB.Iyy=MB.I(2,2);
% (CG1,X1,Y1,Z1) (kgm^2)
MB.Izz=MB.I(3,3);
MB.Ixy=MB.I(1,2);
% Cross Inertia in
MB.Ixz=MB.I(1,3);
% (CG1,X1,Y1,Z1) (kgm^2)
MB.Iyz=MB.I(2,3);
Page 32/58
33
3.3 FAQ
In this example the Huygens thereom is applied to the main body MB but the same
procedure can be applied to any appendage SA{i}.
3.3
FAQ
• The field liste_IOs returned by the function main is wrong (?):
the function main.m is called recursively and uses persistent variables. In a
nominal use, the persistent variables are managed inside the function main.m
but if the function returned on an error message (due to wrong data in
nom_fich.m for instance), it is then required to clear persistent variables for
the next call by the command:
clear main
• The fields DynamicModel or InverseTotalModel returned by the function
main contains some NaN (?):
the mass or inertia seen from one of the d.o.fs is null. There is a mistake in
the file nom_fich.m.
• The ss model returned by the function main in the field DynamicModel or
InverseTotalModel contains unstable dynamics (?):
the mass or inertia of one or more bodies is not definite positive. There is a
mistake in the file nom_fich.m.
Page 33/58
3. Implementation with Matlabr
34
1
Variable name
SA{i}.Name
2
SA{i}.P
3
4(∗ )
5(∗ )
6(∗∗ )
7(∗∗∗ )
SA{i}.TM
SA{i}.pivot
SA{i}.pivotdir
SA{i}.angle
SA{i}.filename
8
SA{i}.cg
9(# )
10
11
12
13
14
15
16
17(## )
18
19
20
SA{i}.omega
SA{i}.m
SA{i}.Ixx
SA{i}.Iyy
SA{i}.Izz
SA{i}.Ixy
SA{i}.Ixz
SA{i}.Iyz
SA{i}.flex
SA{i}.L
SA{i}.wi
SA{i}.z
Notation
h−→i
OP
Rb
Tba
[~ra ]Ra = [xra yra zra ]T
θ
h−→i
PA
Ra
Ω
A
Am
I Ra (1, 1)
A
IA
(2, 2)
A
A Ra
I Ra (3, 3)
A
(1, 2)
IA
A
A Ra
I Ra (1, 3)
A
IA
A Ra (2, 3)
[LP ]Ra ou [LA ]Ra
[ω1 ω2 · · · ωN ]
[ξ1 ξ2 · · · ξN ]
Type
char
Unit
double 3 × 1
m
double 3 × 3
boolean
double 3 × 1
double
char
deg
double 3 × 1
double
double
double
double
double
double
double
double
integer
double N × 6
double 1 × N
double 1 × N
m
Kg
Kg m2
Kg m2
Kg m2
Kg m2
Kg m2
Kg m2
√
√
Kg, Kgm
Table 3.2: Description of the fields of the structure in cell SA{i}.
(∗ ): if SA{i}.pivot=1 then there is a revolute joint between the appendage and the hub at point P . The direction
~
ra ) of the revolute joint axis can be specified in the field # 5 SA{i}.pivotdir, otherwize the defaut value is
SA{i}.pivotdir=[0;0;1]. In case of a revolute joint, the direct dynamics model will be augmented on the outputs,
¨ If SA{i}.pivot=0 then the appendage is
by the joint torque Cm and on the inputs, by the joint acceleration θ.
cantilevered to the hub B at point P and the fields # 5 and 6 are optional or disregarded.
(∗∗ ): if SA{i}.pivot=1 then is possible to take into account a tilt of the appendage by SA{i}.angle degrees along
the revolute joint axis.
(∗∗∗ ): if the appendage is described by a data file, then the fields from line 8 to 20 are optional or disregarded.
(# ) if the field SA{i}.omega exists, then the appendage is considered as an onboard angular momentum along
~
zai . Then, SA{i}.omega and SA{i}.Izz are the angular rate and the main inertia of the spinning top, SA{i}.Ixx
is its radial inertia, fields # 12, 14, 15 and 16 are optional or disregarded and the appendage must be rigid:
SA{i}.flex=0.
(## ): if SA{i}.flex=0 then the appendage is supposed rigid and the fields from line 18 to 20 are optional or
disregarded. If SA{i}.flex=1 then the appendage is flexible and SA{i}.L is the list of the modal participation
factors LA expressed at centre of mass A of the appendage. If SA{i}.flex=2 then the appendage is flexible and
SA{i}.L is the list of the modal participation factors LP at anchoring point P . We remind that LP = LA τAP .
Page 34/58
35
3.4 Example 1: Spacecraft1.m
3.4
Example 1: Spacecraft1.m
This file describes a platform (MB.Name=’Platform’) fitted with 2 (nappend=2) flexible appendages (SA{1} and SA{2}) cantilevered in 2 different points of the platform:
• a solar array (SA{1}.Name = ’Solar Array’) described by 3 flexible modes,
• an antenna (SA{2}.Name = ’Antenna’) described by 3 flexible modes.
The frequencies ωi , i = 1, 2, 3 of the 3 modes are the same for both appendages.
Because of the symmetry of the two modal participation factors along the z axis of
each appendage, one flexible mode is uncontrollable. It is reduced when computing
a minimal realization of the model.
The following Matlabr session (see also the script file demoSTD.m) shows how to
use this file with the SDT and perform complementary analyses.
>> mod=main(’Spacecraft1’);
2 states removed.
>> % 1 flexible mode removed (due to symmetry of flexible appendage)
>> mod.TotalCg
% the position of the total centre of mass G.
ans =
0.1909
0.3909
0
>> mod.liste_IOs
% list of channels
ans =
Trans.
Trans.
Trans.
Rot. X
Rot. Y
Rot. Z
X Platform
Y Platform
Z Platform
Platform
Platform
Platform
>> Md=mod.DynamicModel;
>>
>>
>>
>>
% direct dynamic model.
% Translation of the direct dynamic model from the global centre of mass G
% to the hub’s centre of mass B:
Spacecraft1
% to get all the data in the workspace.
MD_B=translate_dynamic_model(mod.TotalCg,MB.cg,Md);
Page 35/58
3. Implementation with Matlabr
36
>> % Inverse Dynamic Model:
>> Mi=mod.InverseTotalModel;
>> damp(Mi) % The 5=6-1 flexible modes.
Eigenvalue
-4.03e-02
-4.03e-02
-5.07e-02
-5.07e-02
-9.64e-02
-9.64e-02
-1.09e-01
-1.09e-01
-1.11e-01
-1.11e-01
+
+
+
+
+
-
8.03e+00i
8.03e+00i
9.03e+00i
9.03e+00i
1.70e+01i
1.70e+01i
1.80e+01i
1.80e+01i
2.09e+01i
2.09e+01i
Damping
Frequency
5.02e-03
5.02e-03
5.61e-03
5.61e-03
5.67e-03
5.67e-03
6.02e-03
6.02e-03
5.29e-03
5.29e-03
8.03e+00
8.03e+00
9.03e+00
9.03e+00
1.70e+01
1.70e+01
1.80e+01
1.80e+01
2.09e+01
2.09e+01
>> figure
>> sigma(Mi) % Frequency domain response.
The frequency response is presented on Figure 3.1.
Figure 3.1: Frequency response (Singular Values) of the inverse dynamics model.
Page 36/58
37
3.5 Example 2: Spacecraft2.m
3.5
Example 2: Spacecraft2.m
This file describes the same platform as example 1 but now, the link between the
solar array and the hub is a revolute joint along ~ea1 = ~za1 . The following Matlabr
session (see also the script file demoSTD.m) shows how to use this file with the SDT
and perform complementary analyses, more particularly study the response of the
revolute joint’s angle to a force impulse applied at the global centre of mass. One
will notice that thanks to the revolute joint, the 6 flexible modes are now both
controllable and observable: computing a minimal realization of the model will not
reduce the number of modes.
>> clear all,close all,
>> mod=main(’Spacecraft2’);
>> mod.liste_IOs % Now the dynamic model is 7x7
ans =
Trans.
Trans.
Trans.
Rot. X
Rot. Y
Rot. Z
Joint:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
X Platform
Y Platform
Z Platform
Platform
Platform
Platform
Solar Array/Platform
Md=mod.DynamicModel;
% direct dynamic model.
Mi=mod.InverseTotalModel;
% inverse dynamic model
Mi71=Mi(7,1); % Transfer between a force applied on the
%
platform along X axis and the revolute joint’s
%
relative acceleration.
ddint=tf(1,[1 0 0]); % double integrations
% impulse response of Mi71/s/s :
figure
impulse(Mi71*ddint,3) % response of the revolute joint angle to
%
an impulse on the X thruster.
The impulse response is shown on Figure 3.2.
Remark: The file Spacecraft3.m describes the same assembly but uses file APPENDAGE1.m
to define the solar array. File Spacecraft4.m shows the usefulness of the recursivity
used in function main.m: it describes the same assembly as Spacecraft3.m, with a
third (more complex) appendage which is the assembly described in Spacecraft3.m...
Page 37/58
3. Implementation with Matlabr
38
Figure 3.2: Impulse response of the transfer between θ, the angle of the revolute
joint, and the force applied at the global centre of mass along X
3.6
Example 3: Spacecraft5.m
This file describes the same platform as example 1 but now, it is fitted with 3
more appendages (nappend=5) modelling embedded angular momentums along the
3 directions (~xb , ~yb , ~zb ) in the hub’s frame. Such devices can model reaction wheels
(RWA), that have a very high speed (close to their saturation).
The following Matlabr session (see also the script file demoSTD.m) shows how to
use this file with the SDT and perform complementary analyses. One will notice
the following facts:
• The reduction of one uncontrollable mode (same as example 1)
• The reduction of a double pair of integrators. Indeed, to model the 3 embedded angular momentum (see the remarks in section 2.3.3), we introduced three
pairs of integrators in the direct dynamics model. However, only 2 integrators are required to model the gyroscopic couplings due to the total angular
momentum (i.e. the sum of the 3 embedded angular momentums).
• The gyroscopic mode in the inverse dynamics model which is represented by
a pair of poles on the imaginary axis, at low frequency (around 0.1 rd/s)
• The reduction of a pair of integrators when introducing the 3 integrators between the 3 angular accelerations and speeds of the hub. All the integrators
added into the dynamics model to take into account gyroscopic couplings disappeared in the reduction, as expected.
Page 38/58
39
3.6 Example 3: Spacecraft5.m
>> clear all,close all,
>> mod=main(’Spacecraft5’);
2 states removed.
2 states removed.
2 states removed.
>> % 1 flexible mode removed (due to symmetry of flexible appendages)
>> % + 2 double integrators removed.
>> Md=mod.DynamicModel;
% direct dynamic model.
>> damp(Md) % only 2 integrators to represent the 3 angular momentums.
Eigenvalue
1.36e-15
-5.68e-15
-4.00e-02
-4.00e-02
-4.00e-02
-4.00e-02
-7.50e-02
-7.50e-02
-7.50e-02
-7.50e-02
-1.00e-01
-1.00e-01
+
+
+
+
+
-
8.00e+00i
8.00e+00i
8.00e+00i
8.00e+00i
1.50e+01i
1.50e+01i
1.50e+01i
1.50e+01i
2.00e+01i
2.00e+01i
Damping
Frequency
-1.00e+00
1.00e+00
5.00e-03
5.00e-03
5.00e-03
5.00e-03
5.00e-03
5.00e-03
5.00e-03
5.00e-03
5.00e-03
5.00e-03
1.36e-15
5.68e-15
8.00e+00
8.00e+00
8.00e+00
8.00e+00
1.50e+01
1.50e+01
1.50e+01
1.50e+01
2.00e+01
2.00e+01
>> Mi=mod.InverseTotalModel;
>> damp(Mi)
Eigenvalue
-2.14e-11
-2.14e-11
-4.03e-02
-4.03e-02
-5.06e-02
-5.06e-02
-9.62e-02
-9.62e-02
-1.09e-01
-1.09e-01
-1.11e-01
-1.11e-01
+
+
+
+
+
+
-
9.21e-02i
9.21e-02i
8.03e+00i
8.03e+00i
9.02e+00i
9.02e+00i
1.70e+01i
1.70e+01i
1.80e+01i
1.80e+01i
2.09e+01i
2.09e+01i
Damping
Frequency
2.32e-10
2.32e-10
5.02e-03
5.02e-03
5.61e-03
5.61e-03
5.67e-03
5.67e-03
6.02e-03
6.02e-03
5.29e-03
5.29e-03
9.21e-02
9.21e-02
8.03e+00
8.03e+00
9.02e+00
9.02e+00
1.70e+01
1.70e+01
1.80e+01
1.80e+01
2.09e+01
2.09e+01
Page 39/58
3. Implementation with Matlabr
40
>> % ==> in addition to flexible modes, one can see a very low frequency
>> %
(around 0.1 rd/s) mode corresponding to the gyroscopic mode
>> figure
>> sigma(Mi) % ==> a very low fequency resonance.
>> % Angular model:
>> Mi=Mi(4:6,4:6);
>> % Integrations between angular acceleration and rates:
>> int=tf(1,[1 0]);
>> Mi_int=minreal(Mi*(int*eye(3)));
2 states removed.
>> % ==> 2 states removed: extra integrators to model gyroscopic couplings
>> %
are removed, as wanted.
The frequency-domain response is shown on Figure 3.3.
Figure 3.3: Frequency-domain response (Singular Values) of the inverse dynamics
model.
3.7
Example 4: FOUR CMGs.m
This file describes the example of a platform fitted with a cluster of 4 identical
gyroscopic actuators, in a pyramidal configuration. The geometries, weights and
inertias of the different bodies are very close to those of the experimental platform
TETRAGYRE developed by ONERA/DCSD (see http://www.onera.fr/dcsd/gyrodynes/
Page 40/58
41
3.7 Example 4: FOUR CMGs.m
and Figure 3.4). The default configuration is obtained when the spinning tops axes
are horizontal and when the sum of the angular momentums is zero.
Figure 3.4: The bench TETRAGYRE.
The main data file is FOUR_CMGs.m. It describes the platform (hub) B and the nominal configuration of the 4 CMGs. One difference with the example files detailed
above is that we add a global variable angles (4 × 1) that represents the current
configuration of the precession axes. It also enables the computation of the dynamics model in any configuration without modifying the data file. This variable
is initialized with the nominal angular configuration (angles=[0;0;0;0];). The
file dataCMG.m describes one CMG (see Figure 2.9) and is called 4 times by the file
FOUR_CMGs.m. The CMG is modelled as a fork Ai for the main part of the appendage
and a spinning top Wi as the appendage’s appendage.
The following Matlabr session (see also the script file demoSTD.m) shows how to
use this file with the SDT, performs complementary analyses and proposes a 3-axes
attitude control law. This control law has the following structure, also depicted in
Figure 3.5:
• a inner control loop feedbacking the precession speeds σ˙ i . It is a pure proportional control and it is the same on the 4 precession axes:
Cmi = 0.06(σ˙ i,ref − σ˙ i ), ∀ i = 1, · · · , 4 ,
• an outer control loop feedbacking the 3 hub attitudes. It is a pure proportional
control and it is the same on the hub’s 3 rotation axes:
h→
− i
T ref
= 3[(φref − φ) (θref − θ) (ψref − ψ)]T ,
Rb
Page 41/58
3. Implementation with Matlabr
42
• a guidance law for the cluster of gyroscopic actuators which is the pseudoinverse of the Jacobian J0 = J(σi )|σi =0 (3 × 4) computed from the 4 precession
speeds to the hub’s 3 rotation speeds when in nominal configuration:
h→
− i
[σ˙ 1,ref σ˙ 2,ref · · · σ˙ 4,ref ]T = J0T (J0 J0T )−1 T ref
.
Rb
→
−
T ext,G
→
−
ω˙
3


φref
 θref 
ψref
+
−
3 I3
h
i
→
−
T ref
Rb

J0T (J0 J0T )−1
3


σ˙ 1,ref


..


.
σ˙ 4,ref
+
4
−
0.06 I4

Cm1
 .. 
 . 
Cm4
3
P
−1


Ai +B
σ
¨1
(s)
MG(4:10,4:10)
 .. 
 . 
σ
¨4
4
4
Figure 3.5: Attitude control using 4 CMGs.
>> clear all,close all,
>> mod=main(’FOUR_CMGs’);
Angular configuration: 0 0 0 0
2 states removed.
>> mod.liste_IOs
% Definition of the various channels
ans =
Trans.
Trans.
Trans.
Rot. X
Rot. Y
Rot. Z
Joint:
Joint:
Joint:
Joint:
X Platform
Y Platform
Z Platform
Platform
Platform
Platform
CMG #1/Platform
CMG #2/Platform
CMG #3/Platform
CMG #4/Platform
>> Md=mod.DynamicModel; % direct dynamic model
>> % Model restricted to 3 axes angular motion + CMGs channels:
>> Md=Md(4:10,4:10);
Page 42/58

I3
s
I3
s

I4
s

φ
 θ 
ψ

σ˙ 1
 .. 
 . 
σ˙ 4
43
3.7 Example 4: FOUR CMGs.m
>> % One can check that the total angular momentum is null:
>> M3x3=minreal(Md(1:3,1:3))
6 states removed.
M3x3 =
d =
y1
y2
y3
u1
5.315
0
-0.005015
u2
0
5.315
-0.005015
u3
-0.005015
-0.005015
10.61
Static gain.
>> %
>> %
==> The 3x3 model is static: no more gyroscopic couplings between platform
and inertial frame.
>> Mi=inv(Md);
>> damp(Mi)
% Inverse dynamic model.
Eigenvalue
-3.55e-15
-3.55e-15
-5.33e-15
-5.33e-15
-7.25e-17
-7.25e-17
+
+
+
-
4.85e+01i
4.85e+01i
4.85e+01i
4.85e+01i
8.40e+01i
8.40e+01i
Damping
Frequency
7.33e-17
7.33e-17
1.10e-16
1.10e-16
8.63e-19
8.63e-19
4.85e+01
4.85e+01
4.85e+01
4.85e+01
8.40e+01
8.40e+01
>> % ==> the pulsations of the 3 gyroscopic modes.
>> % Dynamic model for a new angular configuration:
>> global angles
>> angles=[10;20;-5;-25];
>> mod_bis=main(’FOUR_CMGs’);
Angular configuration: 10 20 -5 -25
2 states removed.
>> damp(mod_bis.InverseTotalModel)
Eigenvalue
Damping
Frequency
-1.24e-16 + 3.13e+01i
-1.24e-16 - 3.13e+01i
3.95e-18
3.95e-18
3.13e+01
3.13e+01
Page 43/58
3. Implementation with Matlabr
44
7.11e-15 + 6.32e+01i
-1.12e-16
6.32e+01
7.11e-15 - 6.32e+01i
-1.12e-16
6.32e+01
8.29e-17 + 8.59e+01i
-9.65e-19
8.59e+01
8.29e-17 - 8.59e+01i
-9.65e-19
8.59e+01
>> % ==> angular frequecies of gyroscopic modes have changed.
>> % First integrators (angular rates on outputs on nominal model Mi):
>> int=tf(1,[1 0]);
>> Gv=minreal((int*eye(7))*Mi);
3 states removed.
>> % Precession rate servo-loop (inner loop):
>> bf2=feedback(Gv*diag([1 1 1 0.06 0.06 0.06 0.06]),eye(4),4:7,4:7);
>> bf2=minreal(bf2); % 3 states removed: OK !!
3 states removed.
>> damp(bf2)
Eigenvalue
-3.00e+01
-3.00e+01
-3.00e+01
-3.00e+01
-5.99e+01
-3.00e+01
-3.00e+01
+
+
-
3.81e+01i
3.81e+01i
3.81e+01i
3.81e+01i
+ 7.85e+01i
- 7.85e+01i
Damping
Frequency
6.18e-01
6.18e-01
6.18e-01
6.18e-01
1.00e+00
3.57e-01
3.57e-01
4.85e+01
4.85e+01
4.85e+01
4.85e+01
5.99e+01
8.40e+01
8.40e+01
>> % ==> gyroscopic modes are correctly damped.
>>
>>
>>
>>
% Platform attitude servo-loop:
% The jacobian is defined as the DCgain of the transfer between the 4
% precession rates reference inputs and the 3 platform angular rates:
Jacob=dcgain(bf2(1:3,[4:7]))
Jacob =
0.0120
0.0000
0.0035
-0.0120
0.0000
0.0035
0.0000
0.0120
0.0035
0.0000
-0.0120
0.0035
>> % Second integrators: platform angular positions and rates on outputs:
Page 44/58
45
3.8 Example 5: SpaceRoboticArm.m
>> sint=ss(0,1,[1;0],[0;1]);
>> Gpv=minreal(append(sint,sint,sint,1,1,1,1)*bf2);
>> % CMGs guidance:
>> Gpv=Gpv*[eye(3),zeros(3);zeros(4,3) pinv(Jacob)];
>>
>>
>>
>>
% Attitude servo-loop bandwitdh (outer loop):
w=3;
bf=feedback(Gpv*diag([1,1,1,w,w,w]),eye(3),[4 5 6],[1 3 5]);
damp(bf)
Eigenvalue
-3.08e+00
-3.25e+00
-3.25e+00
-2.84e+01 +
-2.84e+01 -2.84e+01 +
-2.84e+01 -5.99e+01
-2.84e+01 +
-2.84e+01 (Frequencies
3.69e+01i
3.69e+01i
3.69e+01i
3.69e+01i
7.80e+01i
7.80e+01i
expressed
Damping
Frequency
1.00e+00
1.00e+00
1.00e+00
6.09e-01
6.09e-01
6.09e-01
6.09e-01
1.00e+00
3.43e-01
3.43e-01
3.08e+00
3.25e+00
3.25e+00
4.66e+01
4.66e+01
4.66e+01
4.66e+01
5.99e+01
8.30e+01
8.30e+01
>> % ==> all the modes are correctly damped.
>> figure
>> step(bf([1 3 5],[4 5 6]),2);
The step response is shown on Figure 3.6.
3.8
Example 5: SpaceRoboticArm.m
This file describes a spatial vehicle fitted with a manipulator (arm) with 6 degrees
of freedom and a high aspect ratio, as shown on Figure 3.7. We suppose that the
segments are all rigid. The obtained model has 12 channels: 6 for the degrees of
freedom of the hub and 6 for the manipulator. The files Segment1.m, Segment2.m,
..., Segment6.m describe the different segments. Each segment is composed of a
main body (hub) and one appendage which is the next segment. The global variable
config (6×1) can be used to set the angular configuration of the manipulator (same
as in the previous example).
The following Matlabr session (see also the script file demoSTD.m in the STD_V1.3
sub-directory) shows how to use this file with the SDT.
Page 45/58
3. Implementation with Matlabr
46
Figure 3.6: Step response of the CMG platform with attitude control, on the 3 axes
~zb
B
~yb
B
~xb
Figure 3.7: A manipulator arm fitted on a spatial vehicle
>> clear all,close all,
>> global config
>> mod=main(’SpaceRoboticArm’);
Angular configuration: 0
30 120
0
0
0
>> mod.liste_IOs % The 12 channels (d.o.f. order).
ans =
Trans. X Main_body
Page 46/58
47
3.8 Example 5: SpaceRoboticArm.m
Trans.
Trans.
Rot. X
Rot. Y
Rot. Z
Joint:
Joint:
Joint:
Joint:
Joint:
Joint:
Y Main_body
Z Main_body
Main_body
Main_body
Main_body
>> mod.TotalCg
% Position of the global centre of mass.
ans =
0.0270
-0.3741
1.4893
>> mod.DynamicModel
ans =
d =
y1
y2
y3
y4
y5
y6
y7
y8
y9
y10
y11
y12
u1
1400
-6.311e-30
6.311e-30
-7.272e-31
0
3.411e-13
0
8.472e-16
-4.216e-15
-1.002e-13
-5.978e-14
523.7
u2
-6.311e-30
1400
3.864e-46
4.547e-13
3.088e-30
2.132e-14
0
-32.74
25.2
598.8
1500
37.8
u3
6.311e-30
3.864e-46
1400
-3.411e-13
-2.132e-14
-2.361e-30
0
-18.9
-43.65
-1037
523.7
0
u4
-7.272e-31
4.547e-13
-3.411e-13
1.361e+04
-57.02
-266.3
0.3375
202.1
-241.7
-4377
-1.07e+04
-266.3
y1
y2
y3
u5
0
3.088e-30
-2.132e-14
u6
3.411e-13
2.132e-14
-2.361e-30
u7
0
0
0
u8
8.472e-16
-32.74
-18.9
Page 47/58
3. Implementation with Matlabr
48
y4
y5
y6
y7
y8
y9
y10
y11
y12
-57.02
1.141e+04
1269
4.133e-17
15.53
19.45
223.7
57.02
1269
-266.3
1269
2934
-5.646e-17
-26.91
11.23
129.2
225.4
2267
0.3375
4.133e-17
-5.646e-17
0.3375
2.067e-17
-0.3375
-0.3375
-0.3375
-5.646e-17
202.1
15.53
-26.91
2.067e-17
32.09
2.562e-15
2.562e-15
-208.9
-27.79
y1
y2
y3
y4
y5
y6
y7
y8
y9
y10
y11
y12
u9
-4.216e-15
25.2
-43.65
-241.7
19.45
11.23
-0.3375
2.562e-15
30.01
385.8
225.1
11.91
u10
-1.002e-13
598.8
-1037
-4377
223.7
129.2
-0.3375
2.562e-15
385.8
7804
3983
145.3
u11
-5.978e-14
1500
523.7
-1.07e+04
57.02
225.4
-0.3375
-208.9
225.1
3983
1.088e+04
265.9
u12
523.7
37.8
0
-266.3
1269
2267
-5.646e-17
-27.79
11.91
145.3
265.9
2464
Static gain.
>> % This model is static since all links are rigid
3.9
Example 6: Spacecraft1u.m
This version of the toolbox (SDT Version 1.3) also allows to take parametric variations of parameters into account, and more particularly the main structural parameters such as the mass, the inertias, the geometry (position of the centre of mass and
position of the anchoring points), the angular frequencies, dampings and modal participation factors. To sum up, all the parameters defined by the fields of type double
of the structures MB and SA{i} (see table 3.1 and 3.2) except the angular parameters
(SA{i}.TM, SA{i}.pivotdir and SA{i}.angle) can be defined with parametric uncertainties. The varying parameters can be defined by the function ureal from the
Robust Control Toolbox (RCT). Then, the output variables of the SDT are
uncertain matrices or state-space representations and are fully compatible with the
analysis tools of the RCT.
The file Spacecraft1u.m is based on example 2 and adds parametric variations on
dynamics and geometric parameters of the hub and of the appendage. The following
Page 48/58
49
3.9 Example 6: Spacecraft1u.m
Matlabr session shows how to perform a sensitivity analysis of the frequency
response of the inverse dynamics model (see Figure 3.8).
>> clear all,close all,
>> mod=main(’Spacecraft1u’);
>> mod.TotalCg
% the position of the global centre of mass.
ans =
Uncertain matrix with 3 rows and 1 columns.
The uncertainty consists of the following blocks:
MB_m: Uncertain real, nominal = 100, variability = [-10,10]%, 1 occurrences
SA1_CGx: Uncertain real, nominal = 1, variability = [-10,10]%, 1 occurrences
SA1_Px: Uncertain real, nominal = 0, range = [-0.01,0.01], 1 occurrences
SA1_Py: Uncertain real, nominal = 1, variability = [-10,10]%, 1 occurrences
SA1_m: Uncertain real, nominal = 50, variability = [-10,10]%, 1 occurrences
SA2_CGy: Uncertain real, nominal = 1, variability = [-10,10]%, 1 occurrences
SA2_Py: Uncertain real, nominal = -1, variability = [-10,10]%, 1 occurrences
SA2_Pz: Uncertain real, nominal = 0, range = [-0.01,0.01], 1 occurrences
SA2_m: Uncertain real, nominal = 20, variability = [-10,10]%, 1 occurrences
Type "ans.NominalValue" to see the nominal value, "get(ans)" to see all properties,
and "ans.Uncertainty" to interact with the uncertain elements.
>>
>>
>>
>>
Mi=mod.InverseTotalModel; % inverse dynamic model
figure
sigma(Mi)
% sensitivity of the frequency domain response to parametric variations.
Figure 3.8: Frequency responses (Singular Values) of the inverse dynamics model for
several parameter configurations
Page 49/58
3. Implementation with Matlabr
50
3.10
Exercise
Statement
Using the data file SpaceRoboticArm.m (see section 3.8) describing a chaser spacecraft with a robotic arm and the data file Spacecraft1.m (see section 3.4) describing
a spacecraft with two symmetrical flexible appendages, the objective of this exercise
is two build the data file to analyse the dynamic behavior of the chaser holding the
spacecraft considered as a debris (see Figure 3.9). The interface point P7 between
the arm end effector and the debris is characterized by:
• its
vector in the frame Ra6 attached to the end effector (Segment6.m):
h−−coordinate
−→i
O6 P7
= [0 0 0.55]T ,
Ra6
• its coordinates vector
ini the frame Ra7 attached to the debris spacecraft
h−−−→
(Spacecraft1.m): O7 P7
= [−0.3 0 − 1.2]T .
Ra7
The direction cosine matrix between frames Ra6 and Ra7 (see nomenclature) is:


cos θ 0 sin θ
Ta6 a7 = 
0
1
0  with: θ = 80 deg .
− sin θ 0 cos θ
Solution
Firstly, the data file Segment6.m must be completed by the following instructions
to take into account that Segment6 (the end-effector) hold an appendage described
in the data file Spacecraft1.m
nappend = 1;
%==========================================================================
% APPENDAGE 1 : SA{1}
% DEBRIS SPACECRAFT
%-------------------------------------------------------------------------SA{1}.Name = ’DEBRIS’;
% Name of next appendage: the debris
SA{1}.P = [0;0;0.55];
% position of connection point P7 in (O6,X,Y,Z) (m)
SA{1}.TM = [ cos(80*pi/180) 0
0
1
-sin(80*pi/180) 0
SA{1}.pivot = 0;
sin(80*pi/180)
0
cos(80*pi/180)];
% cantilevered joint
SA{1}.filename = ’Spacecraft1’;
Page 50/58
% T_A6A7
51
3.10 Exercise
Ra7
O7
Ra6
P7
O6
Figure 3.9: A manipulator arm fitted on a spatial vehicle holding a debris spacecraft.
Secondly, the data file Spacecraft1.m must be completed by the following instructions to take into account the new reference point P7 (instead of the previous one:
O7 ):
% DEBRIS case: taking into account P7_O7:
MB.cg = MB.cg + [0.3;0;1.2];
SA{1}.P = SA{1}.P + [0.3;0;1.2];
SA{2}.P = SA{2}.P + [0.3;0;1.2];
Then the model of the assembly: chaser + robotic arm + debris can be computed
using:
>> clear all,close all,
>> global config
>> mod=main(’SpaceRoboticArm’);
Page 51/58
EMPTY PAGE
53
References
 M. Rognant, Ch. Cumer “Configurations `a 6 actionneurs gyroscopiques - Etude bibliographique”, ONERA, RT 1/22821 DCSD, Janvier 2016
 D. Alazard, Ch. Cumer and K. Tantawi “Linear dynamic modeling of spacecraft with
various flexible appendages and on-board angular momentums”, 7th International
ESA Conference on Guidance, Navigation & Control Systems , 01-05 Jun 2008,
Tralee, Ireland
 G, Nicolas, D. Alazard, Ch. Cumer and C. Charbonnel Journal of Dynamic Systems
Measurement and Control, vol. 136 (num. 2), ISSN 0022-0434, 2014
 Ch. Cumer, D. Alazard “It´erations design m´ecanique/commande - Tˆache 1 :
Mod´elisation m´ecanique classique”, RAv 1/21116 DCSD - Avril 2013
 D. Alazard “Reverse engineering in control design”, Wiley, 2013.
 Newton–Euler equations: http://en.wikipedia.org/wiki/Newton-Euler equations
Page 53/58
EMPTY PAGE
55
Appendix A
Inline help
A.1
help of function main.m
MODEL = main(FILENAME) compute the model MODEL of the
spacecraft described in the file FILENAME.m
MODEL is a structure:
MODEL.TotalMass: total mass of the spacecraft,
MODEL.TotalCg: 3x1 coordinate vector of the global centre of mass
(CGtot) in the reference frame attached to the main body
(0, X, Y, Z),
MODEL.InverseTotalModel: [(6+NBPIVOTS)x(6+NBPIVOTS) ss] inverse dynamic
model between inputs:
* 6 dof external force-torque applied on the main body,
* NBPIVOTS torques applied inside the NBPIVOTS
pivot joints between main body and appendages,
and outputs:
* 6 dof linear-angular accelerations of main body,
* NBPIVOTS relative angular accelerations of
appendages w.r.t main body around pivots axis.
This model is written at point CGtot in frame (CGtot,
X, Y, Z).
MODEL.DynamicModel: [(6+NBPIVOTS)x(6+NBPIVOTS) ss] direct dynamic model of
the spacecraft (the inverse of the previous one).
MODEL.liste_IOs: Description and ordering of the (6+NBPIVOTS) inputs
(outputs) used in the dynamic model.
Reference:
Alazard, D., Cumer, C., and Tantawi, K.,
\Linear dynamic modeling of spacecraft with various flexible
appendages and on-board angular momentums".
Page 55/58
56
A. Inline help
In Proceedings of the 7th International ESA Conference on Guidance,
Tralee, Ireland, 1-5 June 2008
A.2
help of function translate dynamic model.m
TDM = translate_dynamic_model(vec_A,vec_B,DM) translate the direct
dynamic model from point A to point B in the same reference frame.
Inputs:
* vec_A: 3x1 coordinate vector of point A,
* vec_B: 3x1 coordinate vector of point B,
* DM: dynamic model at point A.
Output:
* TDM: dynamic model at point B.
It is assumed that the first 6x6 block of DM represent the dynamic model
between the 6 dof acceleration vector and the 6 dof external force
vector.
A.3
help of function rotate dynamic model.m
DM_OUT = rotate_dynamic_model (DM_IN , ANGLE, AXIS)
computes the dynamic model after a rotation of ANGLE (deg)
around the axis AXIS :
* DN_IN: dynamic model of a body in a frame R,
* ANGLE: rotation angle (deg),
* AXIS:
3 components in the frame R of the unitary vector
along the rotation axis,
* DN_OUT: dynamic model of the rotated body in the frame R.
It is assumed that the first 6x6 block of DM_IN represent the dynamic model
between the 6 dof acceleration vector and the 6 dof external force
vector.
A.4
help of function kinematic model.m
JACOB=kinematic_model(vec_A, vec_B) calculates the kinematic model JACOB
of a body between two points A and B
Inputs:
* vec_A: 3x1 coordinate vector of point A in a given frame,
* vec_B: 3x1 coordinate vector of point B (in the same frame).
Page 56/58
57
A.5 help of function antisym.m
Output:
* JACOB: 6x6 kinematic model (projected in the same frame).
| eye(3)
JACOB = |
|zeros(3)
A.5
(*AB) |
|
eye(3)|
help of function antisym.m
MAT=antisym(VEC) computes the antisymmetric matrix MAT associated
with a vector VEC.
if VEC=[x y z]’ then MAT=[0 -z y;z 0 -x;-y x 0].