前文
最近阅读课题论文时看到采用牛顿-欧拉方程来建立动力学方程,尝试系统学习一下这一知识,发现网上资源推导说明不清晰不利于新手入门理解,此文用于记录推导过程以加深理解。
若文中出现错误或误导内容,欢迎指正!
为何物(背景)
描述刚体的力学变化和运动过程有很多种方法,例如基于能量的拉格朗日公式、牛顿力学法以及现在讨论的牛顿-欧拉方程。不同的方法以不同的基本定理和角度来描述刚体运动过程(能量守恒,动量守恒等)。牛顿-欧拉方程则是从刚体的转动和平动两个运动类型来描述力学与运动之间的关系。
刚体的平动描述的是描述对象的运动轨迹,刚体的转动描述的是描述对象自身的转动过程。在实际生活中,刚体的运动往往是平动和转动的复合过程。并且,刚体运动的描述是基于参考系下的,此处要引入惯性坐标系和非惯性坐标系的概念。
惯性坐标系即绝对坐标系,常说的地球坐标系就是典型的惯性坐标系。
非惯性坐标系就是基于运动描述对象建立的坐标系。
举个栗子(故意不小心打错的)
一辆火车上,你坐在座位上静止不动,在火车的坐标系上,你的运动速度就是为0。但是从地面坐标系来看,你跟着火车以一个非常快的速度运动着。因此基于不同的参考系,你的运动描述是不同的。这里要埋个伏笔,由于非惯性系的与惯性系之间关于运动描述的差别,在进行力学分析时,引入了惯性力的概念。后续在进行推导时会提到这一概念
再举一个栗子(肥肠自信.jpg)
根据牛顿第一定理,如果物体上没有受力,它将一直保持当前的运动状态,这种运动状态也称作惯性。
假设游乐园的旋转木马匀速的旋转着。在旋转木马的坐标系中,它相对地面坐标系进行旋转运动。当你坐到木马上之后,在旋转木马的坐标系中,你就是静止不动的,但是在地面坐标系中,你就是在转圈。你的转圈运动不是惯性运动
,你的运动速度一直被改变,存在一个看不见的力持续的改变你的运动状态。这个就是因为非惯性坐标系的缘故产生的一个改变运动状态的力,称作惯性力。
从何来(公式推导)
线运动推导
根据一个图来讲解,惯性坐标系及非惯性坐标系的描述。此图摘自https://blog.csdn.net/huangjunsheng123/article/details/110249073,侵删!
对于旋转过程的描述,通常采用的是旋转矩阵的形式来描述,关于坐标系旋转变换的知识,可以参考我之前写过的这篇博客 坐标系旋转变换。
图纸
U
U
U为惯性坐标系,
B
B
B为非惯性坐标系,
A
A
A为空间中一点,
r
⃗
A
\vec{r}_{A}
rA表示该点在惯性坐标系下的位置矢量,
r
⃗
A
∣
B
\vec{r}_{A|B }
rA∣B表示非惯性坐标系下该点的位置矢量。
r
⃗
B
\vec{r}_{B}
rB为非惯性坐标系在惯性坐标系中的位置矢量。
从简单的矢量运算开始
r
A
⃗
=
r
B
⃗
+
r
A
∣
B
⃗
\vec{r_{A}}=\vec{r_{B}} + \vec{r_{A|B}}
rA=rB+rA∣B
这里就涉及到一个问题,
r
⃗
A
∣
B
\vec{r}_{A|B }
rA∣B是基于
B
B
B坐标系的向量,它的向量值不是基于惯性坐标系的,因此做矢量相加时,需要将这个向量变换到惯性坐标系中,才可以做相加。这里把
r
⃗
A
∣
B
\vec{r}_{A|B }
rA∣B平移到惯性坐标系原点,设旋转矩阵为
C
B
U
C^{U}_{B}
CBU表示从非惯性坐标系变换到惯性坐标系。
则对上面的公式进行修正
r
A
⃗
=
r
B
⃗
+
C
B
U
⋅
r
A
∣
B
⃗
\vec{r_{A}}=\vec{r_{B}} + C^{U}_{B}\cdot \vec{r_{A|B}}
rA=rB+CBU⋅rA∣B这里的修正很重要,我看到很多帖子上都是按照未修正的公式进行推导的,看的我一脸懵。我觉得这些细节是需要明确指出,否则无法快速理解后续的推导。
——
这里要做一个强调,后面的推导是统一在惯性坐标系下进行的。
——
对两边求导,得到
d
r
A
⃗
d
t
=
d
r
B
⃗
d
t
+
d
C
B
U
⋅
r
A
∣
B
⃗
d
t
\frac{d\vec{r_{A}}}{dt}=\frac{d\vec{r_{B}}}{dt} + \frac{dC^{U}_{B}\cdot \vec{r_{A|B}}}{dt}
dtdrA=dtdrB+dtdCBU⋅rA∣B
这里要补充一个内容点——旋转矩阵同样是关于时间的函数,因此对时间求导时需要对其一并计算。
- 对于旋转矩阵的求导公式,可以参考这个博客
https://blog.csdn.net/weixin_38632538/article/details/106085426
- 对向量求导存在以下公理
d r ⃗ d t = ω ⃗ × r ⃗ \frac{d\vec{r}}{dt}=\vec{\omega} \times \vec{r} dtdr=ω×r
这个公式很好理解,即坐标系只进行旋转运动时,向量的大小不会改变,只会改变其角度,改变的趋势与坐标系的旋转角速度有关。- 假设向量 r ⃗ \vec{r} r在非惯性坐标系内,随着非惯性坐标系做旋转运动,其中 ω U ⃗ \vec{\omega_{U}} ωU表示该向量在惯性坐标系下的角速度, ω B ⃗ \vec{\omega_{B}} ωB表示该向量在非惯性坐标系下的角速度。设旋转矩阵是惯性坐标系下任意三个线性无关列向量组合成的矩阵,则有
d C B U d t = d [ b 1 U ⃗ b 2 U ⃗ b 3 U ⃗ ] d t = [ ω U ⃗ × b 1 U ⃗ ω U ⃗ × b 2 U ⃗ ω U ⃗ × b 3 U ⃗ ] \frac{dC^{U}_{B}}{dt}= \frac{d\begin{bmatrix} \vec{b^{U}_{1}} & \vec{b^{U}_{2}} &\vec{b^{U}_{3}} \end{bmatrix}}{dt} = \begin{bmatrix} \vec{\omega_{U}} \times \vec{b^{U}_{1}} & \vec{\omega_{U}} \times \vec{b^{U}_{2}} & \vec{\omega_{U}} \times \vec{b^{U}_{3}} \end{bmatrix} dtdCBU=dtd[b1Ub2Ub3U]=[ωU×b1UωU×b2UωU×b3U]
又根据坐标系旋转变换规律
ω U ⃗ = C B U ⋅ ω B ⃗ \vec{\omega_{U}} = C_{B}^{U} \cdot \vec{\omega_{B}} ωU=CBU⋅ωB
并且满足矩阵计算满足以下规律
b 1 U ⃗ = C B U ⋅ [ 1 0 0 ] = C B U ⋅ e 1 ⃗ b 2 U ⃗ = C B U ⋅ [ 0 1 0 ] = C B U ⋅ e 2 ⃗ b 3 U ⃗ = C B U ⋅ [ 0 0 1 ] = C B U ⋅ e 3 ⃗ \vec{b^{U}_{1}}= C_{B}^{U} \cdot \begin{bmatrix} 1\\0\\0\end{bmatrix}=C_{B}^{U} \cdot \vec{e_{1}}\\ \vec{b^{U}_{2}}= C_{B}^{U} \cdot \begin{bmatrix} 0\\1\\0\end{bmatrix}=C_{B}^{U} \cdot \vec{e_{2}}\\ \vec{b^{U}_{3}}= C_{B}^{U} \cdot \begin{bmatrix} 0\\0\\1\end{bmatrix}=C_{B}^{U} \cdot \vec{e_{3}} b1U=CBU⋅ 100 =CBU⋅e1b2U=CBU⋅ 010 =CBU⋅e2b3U=CBU⋅ 001 =CBU⋅e3
联立上述三个式子可以得到
d C B U d t = [ ( C B U ⋅ ω B ⃗ ) × ( C B U ⋅ e 1 ⃗ ) ( C B U ⋅ ω B ⃗ ) × ( C B U ⋅ e 2 ⃗ ) ( C B U ⋅ ω B ⃗ ) × ( C B U ⋅ e 3 ⃗ ) ] ⇒ d C B U d t = C B U [ ω B ⃗ × e 1 ⃗ ω B ⃗ × e 2 ⃗ ω B ⃗ × e 3 ⃗ ] \frac{dC^{U}_{B}}{dt}=\begin{bmatrix} (C_{B}^{U} \cdot \vec{\omega_{B}}) \times (C_{B}^{U} \cdot \vec{e_{1}}) & (C_{B}^{U} \cdot\vec{\omega_{B}}) \times (C_{B}^{U} \cdot \vec{e_{2}}) & (C_{B}^{U} \cdot \vec{\omega_{B}}) \times (C_{B}^{U} \cdot \vec{e_{3}}) \end{bmatrix}\\ \Rightarrow \frac{dC^{U}_{B}}{dt}=C_{B}^{U} \begin{bmatrix} \vec{\omega_{B}} \times\vec{e_{1}} & \vec{\omega_{B}} \times \vec{e_{2}} &\vec{\omega_{B}} \times \vec{e_{3}} \end{bmatrix} dtdCBU=[(CBU⋅ωB)×(CBU⋅e1)(CBU⋅ωB)×(CBU⋅e2)(CBU⋅ωB)×(CBU⋅e3)]⇒dtdCBU=CBU[ωB×e1ωB×e2ωB×e3]- 这里就是涉及到一个如何将叉乘变化为点乘的知识点——反对称矩阵
设任意三维列向量 A ⃗ B ⃗ \vec{A} \vec{B} AB,则满足以下关系
A ⃗ × B ⃗ = [ a 2 b 3 − a 3 b 2 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] = S ( A ⃗ ) ⋅ B ⃗ \vec{A} \times \vec{B} = \begin{bmatrix} a_2b_3-a_3b_2 &a_3b_1-a_1b_3 & a_1b_2-a_2b_1\end{bmatrix}=S(\vec{A}) \cdot \vec{B} A×B=[a2b3−a3b2a3b1−a1b3a1b2−a2b1]=S(A)⋅B
其中 S ( A ⃗ ) S(\vec{A}) S(A)为反对称矩阵,其表达式为
S ( A ⃗ ) = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] S(\vec{A}) = \begin{bmatrix} 0 & -a_3& a_2 \\ a3& 0 & -a_1 \\ -a_2 & a_1 & 0\end{bmatrix} S(A)= 0a3−a2−a30a1a2−a10
将上式重新代入求导公式可得
d C B U d t = C B U [ S ( ω B ⃗ ) ⋅ e 1 ⃗ S ( ω B ⃗ ) ⋅ e 2 ⃗ S ( ω B ⃗ ) ⋅ e 3 ⃗ ] ⇒ d C B U d t = C B U S ( ω B ⃗ ) ⋅ I = C B U S ( ω B ⃗ ) \frac{dC^{U}_{B}}{dt}=C_{B}^{U} \begin{bmatrix} S(\vec{\omega_{B}}) \cdot\vec{e_{1}} & S(\vec{\omega_{B}}) \cdot\vec{e_{2}} &S(\vec{\omega_{B}}) \cdot\vec{e_{3}} \end{bmatrix}\\ \Rightarrow \frac{dC^{U}_{B}}{dt}=C_{B}^{U} S(\vec{\omega_B})\cdot I=C_{B}^{U} S(\vec{\omega_B}) dtdCBU=CBU[S(ωB)⋅e1S(ωB)⋅e2S(ωB)⋅e3]⇒dtdCBU=CBUS(ωB)⋅I=CBUS(ωB)
按照上面的公式结论来继续求导。
d
r
A
⃗
d
t
=
d
r
B
⃗
d
t
+
d
C
B
U
⋅
r
A
∣
B
⃗
d
t
=
v
B
⃗
+
C
B
U
⋅
v
A
∣
B
⃗
+
d
C
B
U
d
t
r
A
∣
B
⃗
v
A
⃗
=
v
B
⃗
+
C
B
U
⋅
v
A
∣
B
⃗
+
C
B
U
S
(
ω
B
⃗
)
r
A
∣
B
⃗
v
A
⃗
=
v
B
⃗
+
C
B
U
⋅
(
v
A
∣
B
⃗
+
S
(
ω
B
⃗
)
r
A
∣
B
⃗
)
⇒
v
A
⃗
=
v
B
⃗
+
C
B
U
⋅
(
v
A
∣
B
⃗
+
ω
B
⃗
×
r
A
∣
B
⃗
)
\frac{d\vec{r_{A}}}{dt}=\frac{d\vec{r_{B}}}{dt} + \frac{dC^{U}_{B}\cdot \vec{r_{A|B}}}{dt}=\vec{v_B}+C^U_B \cdot \vec{v_{A|B}}+ \frac{dC^{U}_{B}}{dt} \vec{r_{A|B}}\\ \vec{v_A}=\vec{v_B}+C^U_B \cdot \vec{v_{A|B}}+C^U_B S(\vec{\omega_B})\vec{r_{A|B}}\\ \vec{v_A}=\vec{v_B}+C^U_B \cdot (\vec{v_{A|B}}+S(\vec{\omega_B})\vec{r_{A|B}})\\ \Rightarrow\vec{v_A}=\vec{v_B}+C^U_B \cdot (\vec{v_{A|B}}+\vec{\omega_B} \times \vec{r_{A|B}})
dtdrA=dtdrB+dtdCBU⋅rA∣B=vB+CBU⋅vA∣B+dtdCBUrA∣BvA=vB+CBU⋅vA∣B+CBUS(ωB)rA∣BvA=vB+CBU⋅(vA∣B+S(ωB)rA∣B)⇒vA=vB+CBU⋅(vA∣B+ωB×rA∣B)
注意这里括号内的向量 ( v A ∣ B ⃗ + ω B ⃗ × r A ∣ B ⃗ ) (\vec{v_{A|B}}+\vec{\omega_B} \times \vec{r_{A|B}}) (vA∣B+ωB×rA∣B),是基于非惯性坐标系的,经过旋转矩阵变换后才变换到惯性坐标系的。
这里是一个伏笔,后面会考!
接下来就是通过速度求导得到加速度方程,也就可以得到线运动的动力学方程。
如果前面看懂了的话,后面这一步就是高数里简单的复合函数求导题目,有手就行。
d
v
A
⃗
d
t
=
d
v
B
⃗
d
t
+
d
C
B
U
d
t
(
v
A
∣
B
⃗
+
ω
B
⃗
×
r
A
∣
B
⃗
)
+
C
B
U
d
(
v
A
∣
B
⃗
+
ω
B
⃗
×
r
A
∣
B
⃗
)
d
t
⇒
a
A
⃗
=
a
B
⃗
+
C
B
U
(
ω
B
⃗
×
(
v
A
∣
B
⃗
+
ω
B
⃗
×
r
A
∣
B
⃗
)
)
+
C
B
U
(
a
A
∣
B
⃗
+
ω
B
′
⃗
×
r
A
∣
B
⃗
+
ω
B
⃗
×
v
A
∣
B
⃗
)
⇒
a
A
⃗
=
a
B
⃗
+
C
B
U
(
ω
B
⃗
×
v
A
∣
B
⃗
)
+
C
B
U
(
ω
B
⃗
×
ω
B
⃗
×
r
A
∣
B
⃗
)
+
C
B
U
a
A
∣
B
⃗
+
C
B
U
(
ω
B
′
⃗
×
r
A
∣
B
⃗
)
+
C
B
U
(
ω
B
⃗
×
v
A
∣
B
⃗
)
⇒
a
A
⃗
=
a
B
⃗
+
C
B
U
⋅
2
(
ω
B
⃗
×
v
A
∣
B
⃗
)
+
C
B
U
(
ω
B
⃗
×
ω
B
⃗
×
r
A
∣
B
⃗
)
+
C
B
U
a
A
∣
B
⃗
+
C
B
U
(
ω
B
′
⃗
×
r
A
∣
B
⃗
)
\frac{d\vec{v_A}}{dt}=\frac{d\vec{v_B}}{dt}+\frac{dC^U_B}{dt}(\vec{v_{A|B}}+\vec{\omega_B} \times \vec{r_{A|B}})+C^U_B\ \frac{d(\vec{v_{A|B}}+\vec{\omega_B} \times \vec{r_{A|B}})}{dt}\\ \Rightarrow\vec{a_A}=\vec{a_B}+ C^U_B(\vec{\omega_B} \times (\vec{v_{A|B}}+\vec{\omega_B} \times \vec{r_{A|B}})) +C^U_B (\vec{a_{A|B}} + \vec{\omega_B'}\times\vec{r_{A|B}} + \vec{\omega_B}\times \vec{v_{A|B}})\\ \Rightarrow \vec{a_A}=\vec{a_B}+ C^U_B(\vec{\omega_B} \times \vec{v_{A|B}}) +C^U_B(\vec{\omega_B} \times \vec{\omega_B} \times \vec{r_{A|B}}) +C^U_B \vec{a_{A|B}} + C^U_B (\vec{\omega_B'}\times\vec{r_{A|B}}) + C^U_B (\vec{\omega_B}\times \vec{v_{A|B}})\\ \Rightarrow \vec{a_A}=\vec{a_B}+ C^U_B\cdot2(\vec{\omega_B} \times \vec{v_{A|B}}) +C^U_B(\vec{\omega_B} \times \vec{\omega_B} \times \vec{r_{A|B}}) +C^U_B \vec{a_{A|B}} + C^U_B (\vec{\omega_B'}\times\vec{r_{A|B}})
dtdvA=dtdvB+dtdCBU(vA∣B+ωB×rA∣B)+CBU dtd(vA∣B+ωB×rA∣B)⇒aA=aB+CBU(ωB×(vA∣B+ωB×rA∣B))+CBU(aA∣B+ωB′×rA∣B+ωB×vA∣B)⇒aA=aB+CBU(ωB×vA∣B)+CBU(ωB×ωB×rA∣B)+CBUaA∣B+CBU(ωB′×rA∣B)+CBU(ωB×vA∣B)⇒aA=aB+CBU⋅2(ωB×vA∣B)+CBU(ωB×ωB×rA∣B)+CBUaA∣B+CBU(ωB′×rA∣B)
到这里就已经推导完成,下面简单讨论上面各项的物理意义
a B ⃗ \vec{a_{B}} aB 是非惯性坐标系的加速度;
2 ( ω B ⃗ × v A ∣ B ⃗ ) 2(\vec{\omega_B} \times \vec{v_{A|B}}) 2(ωB×vA∣B) 是由于非惯性系旋转产生的惯性力,称作科氏力 (Coriolis Force)
ω B ⃗ × ω B ⃗ × r A ∣ B ⃗ \vec{\omega_B} \times \vec{\omega_B} \times \vec{r_{A|B}} ωB×ωB×rA∣B 是法向加速度,可以把向量看成可以拉伸的弹力绳,在非惯性系旋转过程中,这跟绳子会被甩出去变长,使其变长的力。
a A ∣ B ⃗ \vec{a_{A|B}} aA∣B 是矢量 A A A在非惯性坐标系下的加速度,再经过坐标变换到惯性坐标系下。
ω B ′ ⃗ × r A ∣ B ⃗ \vec{\omega_B'}\times\vec{r_{A|B}} ωB′×rA∣B 是由于非惯性的变速旋转运动,导致矢量的切向方向运动变化的力。
角运动推导
角运动的过程与线运动本质上相同。直接给公式
ω
A
⃗
=
ω
B
⃗
+
C
B
U
⋅
ω
A
∣
B
⃗
\vec{\omega_A}=\vec{\omega_B} + C^U_B \cdot \vec{\omega_{A|B}}
ωA=ωB+CBU⋅ωA∣B
两边求导得到
α
A
⃗
=
d
ω
A
⃗
d
t
=
α
B
⃗
+
C
B
U
(
ω
B
⃗
×
ω
A
∣
B
⃗
)
+
C
B
U
⋅
α
A
∣
B
⃗
\vec{\alpha_{A}} = \frac{d\vec{\omega_A}}{dt}=\vec{\alpha_{B}}+C^U_B (\vec{\omega_B} \times \vec{\omega_{A|B}} ) + C^U_B \cdot \vec{\alpha_{A|B}}
αA=dtdωA=αB+CBU(ωB×ωA∣B)+CBU⋅αA∣B文章来源:https://www.toymoban.com/news/detail-511910.html
总结
总体来说,整个推导过程相对简单,但是在我学习过程中查阅的资料里并没有对旋转变换过程进行描述,导致我自己推导过程遇到许多阻碍,希望这篇文章可以帮助到入门学习的同学。
若文中出现错误或者描述有误的地方,欢迎指正!文章来源地址https://www.toymoban.com/news/detail-511910.html
到了这里,关于浅谈牛顿-欧拉方程及其推导的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!