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 . . . . . . . . . ISAE/DMIA/ADIS 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 ISAE/DMIA/ADIS 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 ISAE/DMIA/ADIS 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 ISAE/DMIA/ADIS Page 6/58 7 Introduction This document presents the principles and the Matlabr implementation of the Satellite Dynamics Toolbox (SDT version 1.3) available for download following this link: 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. ISAE/DMIA/ADIS 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. ISAE/DMIA/ADIS 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. ISAE/DMIA/ADIS 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 [6]). 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 adopted in the following chapters. 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. ISAE/DMIA/ADIS Page 11/58 12 1. Rigid body dynamics based on Newton-Euler equations The Newton-Euler equations reads: # " → " − 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 ISAE/DMIA/ADIS 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. ISAE/DMIA/ADIS 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 . ISAE/DMIA/ADIS 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). ISAE/DMIA/ADIS 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 . ISAE/DMIA/ADIS 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 ([2], [4]): 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 . ISAE/DMIA/ADIS 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 [2]). ISAE/DMIA/ADIS 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 [2] or [3] 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. ISAE/DMIA/ADIS 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 speed (rad/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 ). ISAE/DMIA/ADIS 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. ISAE/DMIA/ADIS 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. ISAE/DMIA/ADIS 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 ISAE/DMIA/ADIS 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 . ISAE/DMIA/ADIS 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, ISAE/DMIA/ADIS 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]). ISAE/DMIA/ADIS 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. ISAE/DMIA/ADIS 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 ISAE/DMIA/ADIS 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 ISAE/DMIA/ADIS 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). ISAE/DMIA/ADIS 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); ISAE/DMIA/ADIS 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. ISAE/DMIA/ADIS 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 rad/s Kg Kg m2 Kg m2 Kg m2 Kg m2 Kg m2 Kg m2 √ √ Kg, Kgm rad/s 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 . ISAE/DMIA/ADIS 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); ISAE/DMIA/ADIS 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 (Frequencies expressed in rad/seconds) >> 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. ISAE/DMIA/ADIS 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... ISAE/DMIA/ADIS 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. ISAE/DMIA/ADIS 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 (Frequencies expressed in rad/seconds) >> 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 ISAE/DMIA/ADIS 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 (Frequencies expressed in rad/seconds) >> % ==> 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/ ISAE/DMIA/ADIS 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 ISAE/DMIA/ADIS 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); ISAE/DMIA/ADIS 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 (Frequencies expressed in rad/seconds) >> % ==> 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 ISAE/DMIA/ADIS 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 (Frequencies expressed in rad/seconds) >> % ==> 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 (Frequencies expressed in rad/seconds) >> % ==> 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: ISAE/DMIA/ADIS 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 in rad/seconds) 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. ISAE/DMIA/ADIS Page 45/58 3. Implementation with Matlabr 46 Figure 3.6: Step response of the CMG platform with attitude control, on the 3 axes link # 6 link # 5 link # 4 link # 3 link # 2 link # 1 ~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 ISAE/DMIA/ADIS 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 Link#6/Link#5 Link#5/Link#4 Link#4/Link#3 Link#3/Link#2 Link#2/Link#1 Link#1/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 ISAE/DMIA/ADIS 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 ISAE/DMIA/ADIS 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 ISAE/DMIA/ADIS 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’; ISAE/DMIA/ADIS 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’); ISAE/DMIA/ADIS Page 51/58 EMPTY PAGE 53 References [1] M. Rognant, Ch. Cumer “Configurations `a 6 actionneurs gyroscopiques - Etude bibliographique”, ONERA, RT 1/22821 DCSD, Janvier 2016 [2] 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 [3] G, Nicolas, D. Alazard, Ch. Cumer and C. Charbonnel Journal of Dynamic Systems Measurement and Control, vol. 136 (num. 2), ISSN 0022-0434, 2014 [4] Ch. Cumer, D. Alazard “It´erations design m´ecanique/commande - Tˆache 1 : Mod´elisation m´ecanique classique”, RAv 1/21116 DCSD - Avril 2013 [5] D. Alazard “Reverse engineering in control design”, Wiley, 2013. [6] Newton–Euler equations: http://en.wikipedia.org/wiki/Newton-Euler equations ISAE/DMIA/ADIS 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". ISAE/DMIA/ADIS Page 55/58 56 A. Inline help In Proceedings of the 7th International ESA Conference on Guidance, Navigation & Control Systems 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). ISAE/DMIA/ADIS 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]. ISAE/DMIA/ADIS Page 57/58 EMPTY PAGE

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement