Skip to content

Commit 653fd85

Browse files
authored
Merge pull request #228 from moorepants/tmt-other-inertia-forces
Better explain the TMT calculation for inertia forces
2 parents 8e04b4a + b4e2cd0 commit 653fd85

1 file changed

Lines changed: 63 additions & 18 deletions

File tree

tmt.rst

Lines changed: 63 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,11 @@ matrix is populated by the measure numbers of the partial velocities expressed
6767
in the inertial reference frame.
6868

6969
Given :math:`\nu` rigid bodies in a multibody system described by :math:`n`
70-
generalized coordinates and generalized speeds, the velocities of each mass
71-
center and the angular velocities of each body in an inertial reference frame
72-
:math:`N` can be written in column vector :math:`\bar{v}` form by extracting
73-
the measure numbers in the inertial reference frame :math:`N` of each velocity
74-
term.
70+
generalized coordinates and generalized speeds related by
71+
:math:`\bar{u}=\dot{\bar{q}}`, the velocities of each mass center and the
72+
angular velocities of each body in an inertial reference frame :math:`N` can be
73+
written in column vector :math:`\bar{v}` form by extracting the measure numbers
74+
in the inertial reference frame :math:`N` of each velocity term.
7575

7676
.. math::
7777
@@ -131,8 +131,8 @@ associated mass and inertia for that body can be written as:
131131
\breve{I}^{B_1/B_{1o}} \cdot \hat{n}_z\hat{n}_z \\
132132
\end{bmatrix}
133133
134-
Multiplying the velocities with this matrix gives the momenta of each rigid
135-
body.
134+
Multiplying the velocities with this matrix gives the momenta scalars of each
135+
rigid body.
136136

137137
.. math::
138138
@@ -190,47 +190,93 @@ then:
190190

191191
.. math::
192192
193-
\frac{d \mathbf{M} \bar{v}}{dt} = \bar{F} \in \mathbb{R}^{6\nu}
193+
\frac{d \mathbf{M} \bar{v}}{dt}
194+
= \mathbf{M}\dot{\bar{v}} + \dot{\mathbf{M}}\bar{v}
195+
= \bar{F}
196+
\in \mathbb{R}^{6\nu}
197+
198+
Subsituting the mapping to generalized speeds :math:`\dot{\bar{v}} =
199+
\dot{\mathbf{T}} \bar{u} + \mathbf{T} \dot{\bar{u}}` gives:
200+
201+
.. math::
202+
203+
\mathbf{M}\mathbf{T}\dot{\bar{u}}
204+
+ \left(\dot{\mathbf{M}}\mathbf{T}
205+
+ \mathbf{M}\dot{\mathbf{T}}\right)\bar{u}
206+
= \bar{F}
207+
\in \mathbb{R}^{6\nu}
208+
209+
Finally, premultiplying by the transpose of :math:`\mathbf{T}` transforms the
210+
equations of motion into the dimension of the generalized coordinates.
211+
212+
.. math::
213+
214+
\mathbf{T}^T\left[\mathbf{M}\mathbf{T}\dot{\bar{u}}
215+
+ \left(\dot{\mathbf{M}}\mathbf{T}
216+
+ \mathbf{M}\dot{\mathbf{T}}\right)\bar{u}\right]
217+
= \mathbf{T}^T \bar{F}
218+
\in \mathbb{R}^{n}
194219
195220
We know that selecting :math:`n` generalized coordinates for such a system
196221
allows us to write the dynamical differential equations as a set of :math:`n`
197222
equations which is, in general, much smaller than :math:`6\nu` equations due to
198223
the large number of holonomic constraints that represent the connections of all
199224
the bodies in the system. Vallery and Schwab show that the mass matrix
200225
:math:`\mathbf{M}_d` for this reduced set of equations can be efficiently
201-
calculated using the :math:`\mathbf{T}` matrix ([Vallery2020]_, pg. 349):
226+
calculated using the :math:`\mathbf{T}` matrix ([Vallery2020]_, pg. 349) [#]_:
202227

203228
.. math::
204229
205230
\mathbf{M}_d = -\mathbf{T}^T \mathbf{M} \mathbf{T}
206231
232+
.. [#] The negative sign is present to match the sign convention we used in
233+
Kane's Method, i.e. :math:`F - ma = 0`.
234+
207235
and that the forces not proportional to the generalized accelerations is found
208236
with:
209237

210238
.. math::
211239
212240
\bar{g}_d = \mathbf{T}^T\left(\bar{F} - \bar{g}\right)
213241
214-
where [#]_:
242+
where:
215243

216244
.. math::
217245
218-
\bar{g} = \frac{d\mathbf{M}\bar{v}}{dt}\bigg\rvert_{\dot{\bar{u}}=\bar{0}}
246+
\bar{g} = \frac{d\mathbf{M}\bar{v}}{dt}\bigg\rvert_{\dot{\bar{u}}=\bar{0}} =
247+
\left(\dot{\mathbf{M}} \mathbf{T} + \mathbf{M} \dot{\mathbf{T}}\right) \bar{u}
219248
220-
.. [#] Note that my :math:`\bar{g}` is slightly different than the one
221-
presented in [Vallery2020]_ to make sure the time derivative of the angular
222-
momenta are properly calculated.
249+
.. note::
250+
251+
It is worth noting that with the chain rule you can compute
252+
:math:`\dot{\mathbf{M}}` and :math:`\dot{\mathbf{T}}`:
253+
254+
.. math::
255+
256+
\dot{\mathbf{M}} = \left[\begin{array}{c|c|c} \mathbf{J}_{\bar{M}_i, \bar{q}}\bar{u} & \ldots & \mathbf{J}_{\bar{M}_{6\nu}, \bar{q}}\bar{u} \end{array}\right], \quad
257+
\dot{\mathbf{T}} = \left[\begin{array}{c|c|c} \mathbf{J}_{\bar{T}_j, \bar{q}}\bar{u} & \ldots & \mathbf{J}_{\bar{T}_n, \bar{q}}\bar{u} \end{array}\right]
258+
259+
where:
260+
261+
.. math::
262+
263+
\mathbf{M} = \left[\begin{array}{c|c|c}\bar{M}_i & \ldots & \bar{M}_{6\nu} \end{array}\right], \quad
264+
\mathbf{T} = \left[\begin{array}{c|c|c}\bar{T}_j & \ldots & \bar{T}_n \end{array}\right]
265+
266+
It is then clear that :math:`\bar{g}(\bar{u}, \bar{q})` are inertial forces
267+
that are stricly a function of configuration and velocity.
223268

224269
The equations of motion then take this form:
225270

226271
.. math::
227272
228-
\bar{0} =
229273
\mathbf{M}_d\dot{\bar{u}} + \bar{g}_d =
230274
-\mathbf{T}^T \mathbf{M} \mathbf{T} \dot{\bar{u}} +
231275
\mathbf{T}^T\left(\bar{F} - \bar{g}\right)
276+
= \bar{0}
232277
233-
These equations are equivalent to Kane's Equations.
278+
These equations are equivalent to Kane's and Lagrange's dynamical differential
279+
equations.
234280

235281
Example Formulation
236282
===================
@@ -406,8 +452,7 @@ and then compute :math:`\bar{g}`:
406452
.. jupyter-execute::
407453

408454
qd_repl = dict(zip(q.diff(t), u))
409-
ud_repl = {udi: 0 for udi in u.diff(t)}
410-
gbar = (M*v).diff(t).xreplace(qd_repl).xreplace(ud_repl)
455+
gbar = ((M.diff(t)*T + M*T.diff(t))*u).xreplace(qd_repl)
411456
sm.trigsimp(gbar)
412457

413458
The reduced mass matrix is then formed with

0 commit comments

Comments
 (0)