@@ -67,11 +67,11 @@ matrix is populated by the measure numbers of the partial velocities expressed
6767in the inertial reference frame.
6868
6969Given :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_{1 o}} \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
196221allows us to write the dynamical differential equations as a set of :math: `n`
197222equations which is, in general, much smaller than :math: `6 \nu ` equations due to
198223the large number of holonomic constraints that represent the connections of all
199224the 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
208236with:
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
224269The 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
235281Example 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
413458The reduced mass matrix is then formed with
0 commit comments