本章目录
空间速度、空间力与惯量
当一块门板绕铰链转动时,铰链、板心与门把手三处的线速度各不相同;同样地,作用在门板上的同一股外力,关于这几个不同参考点产生的力矩也彼此各异。如果把刚体的角速度与选定参考点的线速度合并为一个六维运动向量,把关于该点的合力矩与合力合并为另一个六维力向量,就能用一套统一的分块矩阵简洁地描述参考点平移、坐标轴旋转以及刚体动力学方程。
这套六维空间向量代数(spatial vector algebra)的几何基础依然是前几章建立的三维刚体力学。通过把平动与转动之间的几何耦合保留在六维向量与六阶算子内部,后续章节在多体运动学树上传递速度、加速度与惯性力时,只需对每个刚体执行统一的六维矩阵乘法。
本章沿用右手笛卡尔坐标系与列向量。所有六维空间向量均按角分量在前(上三行)、线分量在后(下三行)的顺序排列;E 表示三阶单位矩阵,D=[\boldsymbol d]_\times 表示三维位移向量 \boldsymbol d 对应的反对称叉乘矩阵。每次进行空间变换时,均明确指明所选的参考点、表达坐标轴以及位移向量的指向。
刚体两点的速度与加速度
推动一扇旋转门时,远离门轴的把手移动得很快,门轴铰链处保持静止,而整块门板在任意时刻都共享同一个角速度。为了在多刚体机构中沿着连杆传递运动,首先需要明确:在已知刚体上某一个参考点的速度与加速度之后,如何求出同一刚体上另一个点的速度与加速度。
在刚体上任取两个固连的材料点 P 和 Q,记从点 P 指向点 Q 的世界系位移向量为 \boldsymbol d=\boldsymbol x_Q-\boldsymbol x_P。由于刚体内部任意两点间的距离固定不变,位移向量 \boldsymbol d 只能随刚体一起以角速度 \boldsymbol\omega 旋转,因此其时间导数以及两点的线速度关系分别为:
式中第二项 \boldsymbol\omega\times\boldsymbol d 是点 Q 相对于点 P 因刚体转动而产生的切向相对速度。由此可见,角速度 \boldsymbol\omega 是整块刚体共有的全局运动属性,而线速度则依赖于所选取的参考点位置。对上述速度关系继续求一次时间导数,即可得到两点间的加速度关系,其中自然分离出切向角加速度项与向心加速度项:
推导材料点的两次求导\text{式 }(5.1)
由于 P,Q 为固连在刚体上的两个材料点,它们在随体局部坐标系下的位置差 \boldsymbol d_b 是常向量,世界系位移表示为 \boldsymbol d=R\boldsymbol d_b。利用第二章的姿态导数关系 \dot R=[\boldsymbol\omega]_\times R 连续求两次时间导数:
将位置关系 \boldsymbol x_Q=\boldsymbol x_P+\boldsymbol d 对时间求一阶与二阶导数,即得正文中两点的速度关系与加速度关系式(5.1)。可以看到,即使在角速度恒定(\boldsymbol\alpha=\boldsymbol0)的匀速转动中,二次叉乘向心项 \boldsymbol\omega\times(\boldsymbol\omega\times\boldsymbol d) 依然存在。
例题:门板质心的运动
设门板铰链 O 固定在世界系原点(\boldsymbol v_O=\boldsymbol a_O=\boldsymbol0),某时刻门板质心 C 位于 \boldsymbol x_C=(0.4,0,0)^{\mathsf T}\,\mathrm m。若此刻门板的角速度为 \boldsymbol\omega=2\boldsymbol e_z\,\mathrm{rad/s}、角加速度为 \boldsymbol\alpha=3\boldsymbol e_z\,\mathrm{rad/s^2},则由式(5.1)求得质心的线速度与线加速度分别为:
在下方实验中,可以在门板上分别选取靠近铰链和远离铰链的材料点,对比它们的速度箭头方向与长度:在同一角速度下,材料点到转轴的垂直距离翻倍,相对速度模长 \|\boldsymbol\omega\times\boldsymbol d\| 也随之翻倍;图中的固定空间探针则用于对比“空间固定采样点”与“随刚体运动的材料点”。
思考门板上的两个点到铰链距离不同,它们具有相同的角速度还是线速度?
固连在同一块刚性门板上的任意两点,在相同时间内总是转过相同的角度,因此它们的角速度完全相同;而各点的线速度由 \boldsymbol v=\boldsymbol\omega\times\boldsymbol d 决定,离铰链越远的点线速率越大。下方实验同时展示了门板上多个材料点的速度矢量,可逐一对照核查。
播放匀速转动,比较门上各材料点的速度。移动选定点,查看到铰链的距离与速度大小。固定空间探针显示同一速度场在固定位置的值。
可以看到,随着门板转动,附着在材料点上的速度箭头始终沿着该点圆周轨迹的切线方向旋转。即便角速度 \boldsymbol\omega 保持恒定,材料点速度矢量的大小虽然不变,其方向却在持续偏转——这正是匀速圆周运动中向心加速度 \boldsymbol\omega\times(\boldsymbol\omega\times\boldsymbol d) 的几何来源。
进一步地,我们可以把两点速度公式 \boldsymbol v(\boldsymbol x)=\boldsymbol v_P+\boldsymbol\omega\times(\boldsymbol x-\boldsymbol x_P) 延拓到三维空间中的任意位置 \boldsymbol x(无论该位置是否落在刚体实体内部):只需在位置 \boldsymbol x 处想象一个与刚体虚固连的伴随点,该公式便给出了此刻经过位置 \boldsymbol x 的伴随点速度。这样定义在整个三维空间上的向量场称为刚体的瞬时速度场(velocity field)。图中固定空间探针的位置不随门板移动,其读数反映的正是刚体速度场在空间固定点处的采样值。
空间速度与运动变换
虽然刚体速度场在空间不同位置有着无穷多个不同的速度箭头,但只要给定刚体的角速度 \boldsymbol\omega 以及某一个参考点 P 的线速度 \boldsymbol v_P,整个速度场就唯一确定了。空间速度正是把这两项核心信息打包成一个六维列向量。在后续的多体动力学递推中,每个刚体只需维护自身参考点处的这一个六维向量;当运动沿着关节从父刚体传递到子刚体时,只需通过一个 6\times6 变换矩阵同步完成参考点平移与坐标架旋转。
本节先将第 1 节的两点速度关系改写为六维分块矩阵,建立空间运动变换;后续小节再在此基础上依次导出空间力与空间加速度的变换法则。
选定参考点 P 后,将刚体的角速度向量 \boldsymbol\omega 与参考点 P 处的线速度向量 \boldsymbol v_P 上下拼接为一个六维列向量:
这一六维向量称为刚体在参考点 P 处的空间速度(spatial velocity / spatial motion vector),在旋量理论中也常称为运动旋量(twist)。其前三个分量的单位为 \mathrm{rad/s},后三个分量的单位为 \mathrm{m/s},六个分量共同完整刻画了刚体在当前时刻的速度场。
首先保持坐标轴方向不变,仅将参考点从 P 平移到 Q(位移向量为 \boldsymbol d=\boldsymbol x_Q-\boldsymbol x_P,对应反对称叉乘矩阵 D=[\boldsymbol d]_\times)。利用叉乘的反交换律 \boldsymbol\omega\times\boldsymbol d=-\boldsymbol d\times\boldsymbol\omega=-D\boldsymbol\omega,两点速度关系 \boldsymbol v_Q=\boldsymbol v_P+\boldsymbol\omega\times\boldsymbol d 可写成如下分块下三角矩阵乘法:
接着考虑在同一参考点 Q 处旋转表达坐标架:设正交矩阵 R 将新坐标架下的分量变换到旧坐标架,则从旧坐标架变到新坐标架时,角速度与线速度两组三维分量均需左乘 R^{\mathsf T}。将“先由 P 换点到 Q”与“再左乘 R^{\mathsf T} 换轴”两步矩阵相乘,即得一般的六维空间运动变换矩阵(spatial motion transform):
需要特别留意式(5.3)中的约定:位移向量 \boldsymbol d=\boldsymbol x_Q-\boldsymbol x_P 始终从旧参考点 P 指向新参考点 Q,并且在旧坐标架下表示成叉乘矩阵 D=[\boldsymbol d]_\times。这一指向约定直接决定了左下角分块 -R^{\mathsf T}D 的负号。
由于参考点平移与坐标架旋转都是可逆的几何操作,若先在新坐标架下转回旧坐标轴方向(左乘 R),再沿反方向位移 -\boldsymbol d 移回旧参考点 P,就应当精确还原初始的六个分量。下方推导给出了逆矩阵 X^{-1} 的显式分块,并通过矩阵乘法验证 X^{-1}X=E_6(E_6 为六阶单位矩阵)。
推导组合变换与逆变换X^{-1}X=E_6
将式(5.3)按上下两个三维分块展开:
利用正交性 RR^{\mathsf T}=E 从第一式解出 \boldsymbol\omega_{\mathrm{old}}=R\boldsymbol\omega_{\mathrm{new}},再代入第二式解出 \boldsymbol v_{P,\mathrm{old}}:
直接将 X^{-1} 与 X 分块相乘:对角块均为 RR^{\mathsf T}=E(或 R^{\mathsf T}R=E),左下角分块为 DR^{\mathsf T}R-RR^{\mathsf T}D=D-D=0(反向相乘时为 -R^{\mathsf T}DR+R^{\mathsf T}DR=0),故 X^{-1}X=XX^{-1}=E_6。
例题:参考点与坐标轴同时改变
设旧参考点 P 的线速度为零,刚体角速度为 \boldsymbol\omega_{\mathrm{old}}=2\boldsymbol e_z\,\mathrm{rad/s},从 P 到新参考点 Q 的位移在旧坐标架下为 \boldsymbol d=(0.5,0,0)^{\mathsf T}\,\mathrm m;同时令新坐标架相对于旧坐标架绕正竖轴逆时针转过 \pi/2。先由换点求出点 Q 在旧坐标架下的速度,再左乘 R^{\mathsf T} 投影到新坐标架:
从几何上看,点 Q 的物理速度矢量始终指向空间中的同一方向(旧纵轴正向),而旋转 90^\circ 后的新横轴恰好对齐了旧纵轴正向,因此在新坐标架下表现为横轴正分量 1\,\mathrm{m/s}。
速度场的螺旋轴
借助空间速度的换点变换,我们可以在三维空间中找出一条具有特殊几何意义的直线:在这条直线上所有点的瞬时线速度都与角速度 \boldsymbol\omega 平行。于是,刚体在任意时刻的一般空间运动,都可以直观地分解为绕该直线的转动与沿该直线的滑动的叠加(即沙尔定理,Chasles' theorem)。这条直线称为刚体速度场的瞬时螺旋轴(instantaneous screw axis)。
当刚体的角速度非零(\boldsymbol\omega\ne\boldsymbol0)时,从当前参考点 P 指向螺旋轴上最近点(垂足)的垂直位移向量 \boldsymbol r,以及刚体每绕轴转过单位弧度所伴随的轴向平移量——螺距(pitch)h,分别由下式给出:
由此确定的瞬时螺旋轴穿过空间点 \boldsymbol x_P+\boldsymbol r,且方向平行于 \boldsymbol\omega;螺距 h 的单位为 \mathrm m(或 \mathrm{m/rad}),螺旋轴上各点的瞬时线速度均为沿轴向的 h\boldsymbol\omega。上述分解刻画的是当前瞬时的速度场分布;如果螺旋轴的位置、方向以及螺距 h 随时间保持恒定,刚体上各材料点就会在空间中描绘出标准的螺旋线轨迹,每旋转一弧度沿轴向推进距离 h。
推导消去垂直于转轴的速度\boldsymbol v_{P+\boldsymbol r}=h\boldsymbol\omega
先将参考点 P 的线速度 \boldsymbol v_P 正交分解为平行于 \boldsymbol\omega 的轴向分量 \boldsymbol v_\parallel 与垂直于 \boldsymbol\omega 的横向分量 \boldsymbol v_\perp:
为了在平移参考点 \boldsymbol x_Q=\boldsymbol x_P+\boldsymbol r 后消去横向分量 \boldsymbol v_\perp,位移 \boldsymbol r 需满足 \boldsymbol\omega\times\boldsymbol r=-\boldsymbol v_\perp。将正文定义的 \boldsymbol r=(\boldsymbol\omega\times\boldsymbol v_P)/\|\boldsymbol\omega\|^2 代入左端,并利用二重叉乘恒等式展开:
同时注意到 \boldsymbol r=(\boldsymbol\omega\times\boldsymbol v_P)/\|\boldsymbol\omega\|^2 恒与 \boldsymbol\omega 正交(\boldsymbol r^{\mathsf T}\boldsymbol\omega=0),因此点 \boldsymbol x_P+\boldsymbol r 正是从点 P 向螺旋轴所作垂线的垂足;若从该垂足出发再沿轴向 \boldsymbol\omega 移动任意距离,附加的叉乘速度项为零,说明整条直线上的点都具有相同的轴向速度 h\boldsymbol\omega。
在特殊情形下,若螺距 h=0(即 \boldsymbol\omega\perp\boldsymbol v_P),螺旋轴上各点的瞬时速度为零,刚体的瞬时运动退化为绕该轴的纯转动;若角速度本身为零(\boldsymbol\omega=\boldsymbol0),则速度场在空间各处完全相同,刚体作纯平移运动。
在下方实验中,可先将螺距调为零,在速度场中观察速度为零的瞬时转轴;随后逐步增大螺距 h,观察螺旋轴上的速度箭头如何严格沿着轴向伸长。由于图中保持螺旋轴与螺距恒定,播放动画时即可看到材料点轨迹如何从平面圆周演变为三维螺旋线。
改变螺距,比较参考点的切向速度和轴向速度。播放运动,观察轨迹从圆变为螺旋线;选择纯平移时,各点的速度相同。
可以看到,当 h=0 时材料点描绘出闭合圆周,当 h\ne0 时则叠加了速率恒为 |h|\|\boldsymbol\omega\| 的轴向推进。无论在哪个参考点观察,刚体在同一瞬间都共享同一个角速度 \boldsymbol\omega 与同一个轴向速度分量,改变参考点位置只会改变垂直于螺旋轴的切向速度分量。下一节分析空间力与力矩时,我们也将利用完全对偶的几何分解找出合力的中心轴。
空间力与功率
用同样大小的力推门时,推在远离门轴的把手上或推在靠近门轴的位置,对门板产生的转动效果截然不同。因此,要完整描述一组外力对刚体运动的作用,需要把作用在刚体上的合力与关于选定参考点的合力矩合并在一起。
设作用在刚体上的总外力矢量为 \boldsymbol f,所有外力关于参考点 P 的合力矩为 \boldsymbol\tau_P。按照角分量在前、线分量在后的约定,定义刚体在参考点 P 处的六维空间力(spatial force vector)(在旋量理论中也常称为力旋量,wrench),并由其与空间速度 V_P 的六维欧氏内积给出外力对刚体做功的瞬时总功率 \mathcal P:
在空间力向量 F_P 中,前三个分量的单位为 \mathrm{N\,m},后三个分量的单位为 \mathrm N;它与空间速度 V_P 的六维内积自然将转动功率 \boldsymbol\omega^{\mathsf T}\boldsymbol\tau_P 与参考点平动功率 \boldsymbol v_P^{\mathsf T}\boldsymbol f 相加,给出标量总功率(单位为 \mathrm W)。
推导逐点功率与合力矩\mathcal P=V_P^{\mathsf T}F_P
设刚体上第 i 个外力作用点相对于参考点 P 的位置向量为 \boldsymbol r_i=\boldsymbol x_i-\boldsymbol x_P,所受外力为 \boldsymbol f_i。将刚体两点速度公式 \boldsymbol v_i=\boldsymbol v_P+\boldsymbol\omega\times\boldsymbol r_i 代入各作用点的总功率求和,并利用标量混合积的轮换对称性 \boldsymbol f_i^{\mathsf T}(\boldsymbol\omega\times\boldsymbol r_i)=\boldsymbol\omega^{\mathsf T}(\boldsymbol r_i\times\boldsymbol f_i):
右端两个求和号分别给出了总外力 \boldsymbol f=\sum_i\boldsymbol f_i 与关于点 P 的合力矩 \boldsymbol\tau_P=\sum_i\boldsymbol r_i\times\boldsymbol f_i(若还存在纯力偶矩,其做功功率同样为角速度与力偶矩的内积,可直接并入 \boldsymbol\tau_P),从而证得 \mathcal P=V_P^{\mathsf T}F_P。
当把参考点从 P 平移到 Q(位移为 \boldsymbol d=\boldsymbol x_Q-\boldsymbol x_P)时,每个外力作用点相对于新参考点 Q 的力臂都减少了 \boldsymbol d,因此关于新参考点 Q 的合力矩变为:
与此同时,合力 \boldsymbol f 本身与参考点无关。随着参考点移动,合力矩 \boldsymbol\tau 与参考点线速度 \boldsymbol v 同步发生改变,使转动功率项与平动功率项的变化量精确抵消,保证外力对刚体做功的物理总功率 \mathcal P 与参考点选取无关。
推导换点后的功率抵消\mathcal P_Q=\mathcal P_P
将新参考点 Q 处的合力矩 \boldsymbol\tau_Q 与线速度 \boldsymbol v_Q 代入功率表达式,并利用标量混合积性质 (\boldsymbol\omega\times\boldsymbol d)^{\mathsf T}\boldsymbol f=\boldsymbol\omega^{\mathsf T}(\boldsymbol d\times\boldsymbol f) 展开:
已知空间速度按式(5.3)变换为 V_{\mathrm{new}}=XV_{\mathrm{old}},要求在任意空间速度下功率标量恒保持不变(V_{\mathrm{new}}^{\mathsf T}F_{\mathrm{new}}=V_{\mathrm{old}}^{\mathsf T}F_{\mathrm{old}}),即可直接导出空间力的对偶变换矩阵(spatial force transform):
推导由功率得到转置关系F_{\rm old}=X^{\mathsf T}F_{\rm new}
由功率与坐标系及参考点选取无关的不变性,对任意运动状态 V_{\mathrm{old}} 均有:
由于上式对任意六维向量 V_{\mathrm{old}} 恒成立,必有逆向变换关系 F_{\mathrm{old}}=X^{\mathsf T}F_{\mathrm{new}},即正向变换为 F_{\mathrm{new}}=X^{-\mathsf T}F_{\mathrm{old}}。对第 2 节求出的逆矩阵 X^{-1} 取转置,并利用反对称矩阵性质 D^{\mathsf T}=-D,立即得到式(5.4)的分块上三角形式。在多体动力学递推中,将子连杆的受力向父连杆归算时,正是直接使用转置矩阵 X^{\mathsf T}。
在下方实验中,将参考点从门轴铰链逐步移向推力的作用点,分别观察转动功率项 \boldsymbol\omega^{\mathsf T}\boldsymbol\tau 与平动功率项 \boldsymbol v^{\mathsf T}\boldsymbol f 的消长:随着参考点靠近推力作用线,力臂缩短使 \boldsymbol\omega^{\mathsf T}\boldsymbol\tau 减小,而参考点线速度增大则使 \boldsymbol v^{\mathsf T}\boldsymbol f 同步增大,两项之和沿整条移动路径恒定不变。
合力作用在门板上。移动参考点,观察线速度增加、力矩减少以及两部分功率的变化。切换表达坐标轴,空间方向与总功率保持相同。
特别地,当参考点恰好移到推力的作用线上时,关于该点的力矩 \boldsymbol\tau 降为零,但外力依然通过该参考点的线速度 \boldsymbol v 对门板做正功。这说明在计算关节广义驱动力时,必须将完整的六维空间力投影到关节的六维运动子空间上——下面引入的内积 S^{\mathsf T}F 正是用来自动汇总转动与平动两部分功率的。
具体而言,若单自由度关节的标量速率 \dot q 沿着六维运动轴向量 S 产生空间速度 V=S\dot q,则空间力 F 在该关节运动上做功的功率为 \mathcal P=V^{\mathsf T}F=\dot q(S^{\mathsf T}F)。由此可知,与关节速率 \dot q 配对的标量广义力(generalized force)为:
例如,对于绕过点 O、单位轴向为 \boldsymbol n 的旋转铰链,其在任意参考点 P 处表达的六维关节运动轴为 S=[\boldsymbol n;\ \boldsymbol n\times(\boldsymbol x_P-\boldsymbol x_O)];此时无论参考点 P 选在何处,六维内积 S^{\mathsf T}F_P 都会自动还原出外力关于铰链轴 O 的真实力矩。
与第 3 节寻找速度螺旋轴完全类似,当合力非零(\boldsymbol f\ne\boldsymbol0)时,我们也可以将力矩 \boldsymbol\tau_P 分解为平行于合力 \boldsymbol f 的分量 \boldsymbol\tau_\parallel 与垂直于 \boldsymbol f 的分量:
通过将参考点平移一段垂直于 \boldsymbol f 的位移 \boldsymbol d,即可利用附加力臂 -\boldsymbol d\times\boldsymbol f 完全抵消垂直于合力的力矩分量:
经过新参考点 Q=P+\boldsymbol d 且平行于合力 \boldsymbol f 的直线称为空间力系的中心轴(central axis / line of action)(即潘索中心轴,Poinsot's central axis)。若轴上剩余的平行力偶矩 \boldsymbol\tau_\parallel 也为零,则整个空间力系等价于沿该中心轴作用的单一纯力。
推导合力中心轴与平行力偶\boldsymbol\tau_Q\parallel\boldsymbol f
当 \boldsymbol f\ne\boldsymbol0 时,取从点 P 到点 Q 的垂直位移向量为:
利用二重叉乘恒等式计算换点修正项 \boldsymbol d\times\boldsymbol f 及新参考点 Q 处的合力矩 \boldsymbol\tau_Q=\boldsymbol\tau_P-\boldsymbol d\times\boldsymbol f:
由此可见,在经过点 Q=P+\boldsymbol d 且方向沿 \boldsymbol f 的中心轴上,力矩仅保留与合力平行的分量 \boldsymbol\tau_\parallel;当 \boldsymbol f^{\mathsf T}\boldsymbol\tau_P=0 时,\boldsymbol\tau_Q=\boldsymbol0,该直线即为合力的纯作用线。反之,当合力为零(\boldsymbol f=\boldsymbol0)时,力系为纯力偶,换点公式给出 \boldsymbol\tau_Q=\boldsymbol\tau_P,即纯力偶矩在空间各处均相同。
空间动量与空间惯量
空间速度刻画了刚体的瞬时运动状态,而动量则刻画了这一运动状态所携带的惯性。既然平移参考点时空间速度的线分量会发生改变,为了在任意参考点下都能把“由空间速度求空间动量”写成统一的线性映射,我们需要把刚体的角动量与线动量组装成一个六维空间动量向量,并由此导出 6\times6 空间惯量矩阵。
在刚体上任取参考点 O,记从参考点 O 指向刚体质心 C 的位移向量为 \boldsymbol d=\boldsymbol x_C-\boldsymbol x_O(对应反对称矩阵 D=[\boldsymbol d]_\times),刚体总质量为 m,关于质心的 3\times3 惯量矩阵为 I_C(以上各量均在同一表达坐标系下写出)。
刚体的总线动量 \boldsymbol p 等于总质量乘以质心线速度 \boldsymbol v_C=\boldsymbol v_O+\boldsymbol\omega\times\boldsymbol d;而刚体关于参考点 O 的总角动量 \boldsymbol\ell_O,则等于关于质心的相对角动量 I_C\boldsymbol\omega 加上质心线动量关于点 O 的矩 \boldsymbol d\times\boldsymbol p:
将角动量 \boldsymbol\ell_O 与线动量 \boldsymbol p 上下拼接为六维空间动量(spatial momentum)H_O=[\boldsymbol\ell_O;\ \boldsymbol p],并将上述两式改写为关于空间速度 V_O=[\boldsymbol\omega;\ \boldsymbol v_O] 的分块矩阵乘法,即得到 6\times6 空间惯量矩阵(spatial inertia matrix)\mathcal I_O:
在式(5.5)的分块结构中,左上角 I_O=I_C-mD^2 正是第四章平行轴定理给出的关于点 O 的三维转动惯量矩阵;右下角 mE 为各向同性的平动质量矩阵;右上角 mD 与左下角 -mD 则是因参考点偏离质心而产生的平动–转动交叉耦合块。四个 3\times3 分块的国际单位依次为 \mathrm{kg\,m^2}(左上)、\mathrm{kg\,m}(右上与左下)和 \mathrm{kg}(右下)。
推导动量与惯量的四个分块H_O=\mathcal I_OV_O
利用 \boldsymbol\omega\times\boldsymbol d=-D\boldsymbol\omega 将线动量 \boldsymbol p 展开,并代入角动量 \boldsymbol\ell_O 的表达式:
对任意三维向量 \boldsymbol u,由二重叉乘恒等式有 D^2\boldsymbol u=\boldsymbol d\times(\boldsymbol d\times\boldsymbol u)=\boldsymbol d(\boldsymbol d^{\mathsf T}\boldsymbol u)-\|\boldsymbol d\|^2\boldsymbol u,写成矩阵算子即为 -D^2=\|\boldsymbol d\|^2E-\boldsymbol d\boldsymbol d^{\mathsf T},因此左上角分块恰好还原出第四章的平行轴公式:
同时,由于反对称矩阵满足 (mD)^{\mathsf T}=-mD,且 I_O 与 mE 均为对称矩阵,整个 6\times6 空间惯量矩阵 \mathcal I_O 恒为实对称矩阵。
借助空间惯量矩阵 \mathcal I_O,刚体的总动能(包含平动动能与转动动能)可以直接写成一个紧凑的六维二次型:
推导空间二次型与质心动能2T=V_O^{\mathsf T}\mathcal I_OV_O
按分块展开二次型 V_O^{\mathsf T}\mathcal I_O V_O,并利用 D^{\mathsf T}=-D 将 -\boldsymbol\omega^{\mathsf T}D^2\boldsymbol\omega 改写为 \|D\boldsymbol\omega\|^2:
注意到最后一项范数平方内的向量 \boldsymbol v_O-D\boldsymbol\omega=\boldsymbol v_O+\boldsymbol\omega\times\boldsymbol d 正是质心速度 \boldsymbol v_C,这就证明了在任意参考点下计算的六维二次型都恒等于第四章的刚体总动能。只要刚体质量 m>0 且质心惯量矩阵 I_C 正定,任何非零空间速度 V_O 都给出严格正的动能,因此 6\times6 空间惯量矩阵 \mathcal I_O 是对称正定矩阵。
当参考点恰好选在质心 C 时,位移 \boldsymbol d=\boldsymbol0(即 D=0),右上与左下两个非对角耦合块消失,空间惯量矩阵简化为块对角阵 \operatorname{diag}(I_C,mE);当参考点移离质心时,虽然矩阵的四个分块随之改变,但二次型所代表的物理总动能保持不变。
在下方实验中,可以先将参考点置于质心,确认右上和左下两个耦合分块全为零;随后沿着门板移动参考点,观察非对角耦合块如何随质心偏移 \boldsymbol d 线性浮现,并核对在新旧参考点下通过 \tfrac12V^{\mathsf T}\mathcal IV 算出的总动能始终恒等。
移动参考点,查看六阶惯量矩阵的四个分块。保持同一物理运动,比较线动量、关于参考点的角动量和总动能。取质心参考点时,两个耦合块同时为零。
可以看到,刚体的总线动量 \boldsymbol p=m\boldsymbol v_C 完全由质心速度决定,不随参考点移动而改变;而关于参考点的角动量 \boldsymbol\ell_O 则随新力臂相应变化,矩阵中的非对角耦合块 \pm mD 恰在平动与转动之间传递这一力臂效应。当需要把多个刚体的空间惯量累加在一起时,必须先将它们变换到同一个参考点与同一组表达坐标轴下。
设同一刚体的空间速度在新旧两个坐标系下满足 V_{\rm new}=XV_{\rm old},为了使动能二次型在变换前后恒等(或使空间动量按空间力规则变换),空间惯量矩阵必须满足如下合同变换法则:\mathcal I_{\rm old}=X^{\mathsf T}\mathcal I_{\rm new}X。从操作顺序看,右端算子 X^{\mathsf T}\mathcal I_{\rm new}X 先通过 X 将旧参考点速度映射为新参考点速度,再左乘 \mathcal I_{\rm new} 算出新参考点动量,最后通过 X^{\mathsf T} 将动量归算回旧参考点。第八章的复合刚体算法(CRBA)正是利用这一合同变换,将子树的合成惯量逐级向上累加到父刚体上。
推导空间惯量的变换\mathcal I_{\rm old}=X^{\mathsf T}\mathcal I_{\rm new}X
由于空间动量的角分量是力矩对时间的积分、线分量是力对时间的积分,空间动量 H 与空间力 F 遵循完全相同的对偶换点换轴变换 H_{\mathrm{new}}=X^{-\mathsf T}H_{\mathrm{old}}。结合速度变换 V_{\mathrm{old}}=X^{-1}V_{\mathrm{new}} 与 H_{\mathrm{old}}=\mathcal I_{\mathrm{old}}V_{\mathrm{old}},可得:
在第二式两侧左乘 X^{\mathsf T}、右乘 X,即得逆向归算公式 \mathcal I_{\mathrm{old}}=X^{\mathsf T}\mathcal I_{\mathrm{new}}X。
空间加速度与点加速度
在多刚体机构中递推加速度时,如果直接把角加速度 \boldsymbol\alpha 与材料点的真实线加速度 \boldsymbol a_P 拼在一起,每次平移参考点都会因式(5.1)中的向心项 \boldsymbol\omega\times(\boldsymbol\omega\times\boldsymbol d) 而破坏线性矩阵变换。为了使六维加速度与空间速度共享完全相同的空间变换矩阵 X,空间向量代数对线加速度分量作了一项速度叉乘修正。本节先给出这一空间加速度(spatial acceleration)的定义及还原真实材料点加速度的方法,再从移动探针与随体坐标求导两个角度阐明其物理意义(在匀速旋转门中即可直观看到两者的区别:门板上各材料点的速度方向持续偏转、具有非零向心加速度,但门板在随体坐标系下的空间速度分量恒定、空间加速度为零)。
首先选取固连在刚体上的材料参考点 P,并在世界坐标系下表示速度与加速度。由于两点间的真实加速度关系式(5.1)含有二次向心项,我们从点 P 的真实加速度 \boldsymbol a_P 中减去 \boldsymbol\omega\times\boldsymbol v_P,将参考点 P 处的六维空间加速度定义为:
式(5.6)的下半部分称为空间加速度的线分量(记为 (A_P)_{\mathrm{lin}}=\boldsymbol a_P-\boldsymbol\omega\times\boldsymbol v_P)。反过来,一旦通过递推求出了空间加速度 A_P 与空间速度 V_P,只需把叉乘项 \boldsymbol\omega\times\boldsymbol v_P 加回线分量,即可立即恢复材料点 P 的真实经典线加速度:
推导向心项的抵消与换点A_Q=X(\boldsymbol d)A_P
将第 1 节的两点真实加速度关系式(5.1)与两点速度关系 \boldsymbol v_Q=\boldsymbol v_P+\boldsymbol\omega\times\boldsymbol d 代入点 Q 处的空间加速度线分量:
可以看到,式(5.1)中的向心加速度项 \boldsymbol\omega\times(\boldsymbol\omega\times\boldsymbol d) 与 -\boldsymbol\omega\times\boldsymbol v_Q 展开出的二次项精确抵消!结合全刚体共享同一个角加速度 \boldsymbol\alpha,可知空间加速度在参考点平移下严格满足 A_Q=X(\boldsymbol d)A_P;再配合左乘 R^{\mathsf T} 的坐标架旋转,空间加速度与空间速度遵循完全相同的线性变换法则 A_{\mathrm{new}}=XA_{\mathrm{old}}。
为什么减去 \boldsymbol\omega\times\boldsymbol v_P 会如此自然地消去向心项?如果在原点固定于点 P、坐标轴随刚体一起旋转的随体坐标系中观察,空间加速度 A_b 恰好就是随体空间速度分量 V_b 对时间的普通导数 \dot V_b:对随体线速度分量 \boldsymbol v_b=R^{\mathsf T}\boldsymbol v_P 求时间导数时,坐标轴自身的旋转自动生成了修正项 -\boldsymbol\omega\times\boldsymbol v_P。
推导体坐标中的空间速度求导A_b=\dot V_b
设参考点 P 固连在刚体上,随体线速度与随体角速度分别为 \boldsymbol v_b=R^{\mathsf T}\boldsymbol v_P 和 \boldsymbol\omega_b=R^{\mathsf T}\boldsymbol\omega。利用第四章的转动系求导关系 \dot R^{\mathsf T}=-R^{\mathsf T}[\boldsymbol\omega]_\times 对时间求导:
例如,当旋转门绕固定铰链作匀速转动时,在随门板一起转动的局部坐标系下,角速度分量与各点线速度分量均为不随时间变化的常数,因此 A_b=\dot V_b=\boldsymbol0;而门板上材料点在世界系下的真实向心加速度,则完全由 \boldsymbol\omega\times\boldsymbol v_P 一项还原。
更一般地,在多体引擎(如 MuJoCo 以子树质心为公共参考点)中,采样速度场的参考点 P 本身可能沿着任意给定的空间路径 \boldsymbol x_P(t) 移动。此时需要严格区分两个速度:\boldsymbol u=\dot{\boldsymbol x}_P 是探针(参考点位置)在空间中移动的路径速度,而 \boldsymbol v_P 则是刚体瞬时速度场在当前探针位置 \boldsymbol x_P 处的采样值。在方向固定的世界坐标轴下,空间加速度的线分量与探针读数时间导数 \dot{\boldsymbol v}_P 之间满足如下普遍关系:
这一公式将常见的两种参考点统一为特例:当探针固定在世界空间不动时,路径速度 \boldsymbol u=\boldsymbol0,故 (A_P)_{\rm lin}=\dot{\boldsymbol v}_P,即空间加速度直接等于固定点速度场读数的时间导数;当探针固连在刚体材料点上随刚体运动时,路径速度 \boldsymbol u=\boldsymbol v_P 且读数导数 \dot{\boldsymbol v}_P=\boldsymbol a_P,代入后即回到本节开头的材料点定义式(5.6)。
推导任意移动参考点的速度场导数(A_P)_{\rm lin}=\dot{\boldsymbol v}_P-\boldsymbol\omega\times\boldsymbol u
设探针位置 \boldsymbol x_P(t) 沿任意路径以速度 \boldsymbol u=\dot{\boldsymbol x}_P 移动,\boldsymbol v_P(t) 表示时刻 t 刚体速度场在 \boldsymbol x_P(t) 处的值。任取刚体上一个固连的材料点 O(满足 \dot{\boldsymbol x}_O=\boldsymbol v_O、\dot{\boldsymbol v}_O=\boldsymbol a_O),由速度场定义对时间求导:
由此可见:若参考位置固定在世界空间中(\boldsymbol u=\boldsymbol0),世界系空间速度的时间导数 \dot V_P 直接等于空间加速度 A_P;若参考位置附着在刚体材料点上(\boldsymbol u=\boldsymbol v_P),则还原式(5.6);若采用随整棵运动学树移动的子树质心作为公共参考位置,则探针读数导数与空间加速度之间相差 \boldsymbol\omega\times\boldsymbol u。
同时,记此刻恰好经过位置 P 的刚体伴随材料点的真实加速度为 \boldsymbol a_{\mathrm{mat}}(P),由两点真实加速度公式(5.1)可得它与探针读数导数 \dot{\boldsymbol v}_P 及空间加速度线分量 (A_P)_{\mathrm{lin}} 的换算关系:
这组恒等式清晰地区分了“探针读数的变化率 \dot{\boldsymbol v}_P”、“材料点的真实加速度 \boldsymbol a_{\mathrm{mat}}(P)”与“空间加速度线分量 (A_P)_{\mathrm{lin}}”三个物理量。
进一步地,探针路径 \boldsymbol x_P(t) 决定了在空间何处采样,而表达坐标架则决定了将向量投影到哪组基底上。设表达坐标架相对于世界系的姿态矩阵为 R(t),该坐标架自身以世界角速度 \boldsymbol\nu 旋转。对于任意世界系向量 \boldsymbol z,其在表达坐标架下的分量 \boldsymbol z^c=R^{\mathsf T}\boldsymbol z 对时间的导数满足:
式(5.2)右侧第二项 -\boldsymbol\nu^c\times\boldsymbol z^c 来自表达坐标轴自身的旋转。将探针路径移动(\boldsymbol u)与表达坐标轴旋转(\boldsymbol\nu)结合起来,即可写出任意运动参考系下的空间加速度分量表达式(当取方向固定的世界坐标轴时 \boldsymbol\nu=\boldsymbol0,直接回到上面的世界轴探针公式)。
推导移动与转动坐标中的分量导数\text{式 }(5.2)
设表达坐标架以世界角速度 \boldsymbol\nu 转动,参考点沿路径 \boldsymbol x_P(t) 以速度 \boldsymbol u 移动;记姿态矩阵为 R(满足 \dot R=[\boldsymbol\nu]_\times R),上标 c 表示在该表达坐标架下的投影分量。对任意向量 \boldsymbol z^c=R^{\mathsf T}\boldsymbol z 求导即得式(5.2):
将 \boldsymbol z 分别取为刚体角速度 \boldsymbol\omega 与移动探针处的速度场读数 \boldsymbol v_P,并结合 (A_P)_{\mathrm{lin}}=\dot{\boldsymbol v}_P-\boldsymbol\omega\times\boldsymbol u,可得表达坐标架 c 下的空间加速度分量:
式中带点的 \dot{\boldsymbol\omega}^c,\dot{\boldsymbol v}_P^c 表示分量数组对时间的普通导数。由此可以一目了然地看到两类最重要坐标系的简化:在完全固定的世界坐标系(\boldsymbol\nu=\boldsymbol0,\ \boldsymbol u=\boldsymbol0)以及固连于刚体的随体坐标系(\boldsymbol\nu=\boldsymbol\omega,\ \boldsymbol u=\boldsymbol v_P)中,附加叉乘修正项均精确抵消,空间加速度都直接等于空间速度分量的时间导数 A=\dot V;而在一般的混合移动坐标系下,则需按上式保留对应的修正项。
在下方实验中,先将表达坐标架的转速设为零(\boldsymbol\nu=\boldsymbol0),单独对比探针移动路径的影响:在初始位置 \boldsymbol x_P=(0.4,0,0)^{\mathsf T}\,\mathrm m 处,随刚体转动的材料点具有向心加速度 -1.6\boldsymbol e_x\,\mathrm{m/s^2},而固定空间探针的速度读数导数 \dot{\boldsymbol v}_P 则为零;若切换为沿直线匀速移动的探针,读数导数 \dot{\boldsymbol v}_P 便等于迁移变化率 \boldsymbol\omega\times\boldsymbol u。
刚体绕固定原点以 2\,\mathrm{rad/s} 匀速转动,播放时段为 2\,\mathrm s。比较固定位置、直线路径与材料点路径,观察速度场读数的导数、空间加速度线分量和材料点向心加速度。三条路径下的空间加速度均为零,读数导数随探针路径变化。
由于本实验中刚体绕固定原点作匀角速度转动,整块刚体的空间加速度恒为零,因此三条不同探针路径在减去各自的 \boldsymbol\omega\times\boldsymbol u 后,得到的空间加速度线分量 (A_P)_{\rm lin} 均为零:其中随材料点运动的探针读数导数等于真实向心加速度,固定位置探针的读数导数为零。最后再调节表达坐标架的角速度 \boldsymbol\nu,即可单独观察基底旋转按式(5.2)引入的分量导数修正。
空间叉乘与 Newton–Euler 方程
在第四章的转动坐标系求导中,三维叉乘 \boldsymbol\omega\times\boldsymbol y 刻画了坐标架旋转引起的向量变化率;而在六维空间向量代数中,除了坐标架旋转,还需要同时计入参考点平移带来的变化率。为此,我们将三维叉乘推广为两类六维空间叉乘(spatial cross product)算子,并结合式(5.5)的空间惯量与式(5.6)的空间加速度,把第四章的 Euler 转动方程与牛顿平动方程统一组装为六维 Newton–Euler 方程。
设刚体的空间速度为 V=[\boldsymbol\omega;\ \boldsymbol v],另一个六维空间运动向量为 U=[\boldsymbol\eta;\ \boldsymbol u],定义作用于运动向量的空间运动叉乘(记为 V\times U 或左乘 6\times6 矩阵 V\times):
与之相对应,作用于对偶空间力向量 F=[\boldsymbol\tau;\ \boldsymbol f](或空间动量 H)的空间力叉乘定义为 V\times 的负转置:
空间运动叉乘 V\times U 的几何意义可以通过一个随体运动方向的运输求导问题来理解:设六维运动轴向量 U(例如子关节的运动轴)固连在刚体上,随着刚体以空间速度 V 运动,在同一个参考点与坐标架下观察到的 U 的时间变化率正是 \dot U=V\times U。下方推导逐项展开这一导数,说明左下角分块为何会出现线速度叉乘项 \boldsymbol v\times\boldsymbol\eta。
推导运动叉乘中的换点项\dot U=V\times U
设六维运动向量 U 固连在刚体上(即在刚体局部坐标系下为常向量)。选定刚体上的材料点 O(世界位置为 \boldsymbol x,材料点速度为 \boldsymbol v_O=\dot{\boldsymbol x}),将 U 变换到空间固定的世界原点 0 处表达,其角分量 \boldsymbol\eta 与原点线分量 \boldsymbol u_0=\boldsymbol u_O-\boldsymbol\eta\times\boldsymbol x 随刚体转动满足:
对固定世界原点处的线分量 \boldsymbol u_0 求时间导数,并代入 \dot{\boldsymbol x}=\boldsymbol v_O:
推导第二步代入了 \boldsymbol u_O=\boldsymbol u_0+\boldsymbol\eta\times\boldsymbol x,并应用了雅可比恒等式 \boldsymbol\omega\times(\boldsymbol\eta\times\boldsymbol x)-(\boldsymbol\omega\times\boldsymbol\eta)\times\boldsymbol x=\boldsymbol\eta\times(\boldsymbol\omega\times\boldsymbol x),而 \boldsymbol v_0 恰好是刚体速度场在世界原点处的值。这表明刚体自身的转动与材料点相对于固定参考点的移动共同生成了运动叉乘下三行的两项 \boldsymbol v_0\times\boldsymbol\eta+\boldsymbol\omega\times\boldsymbol u_0。
由于空间运动向量 U 与空间力向量 F 的内积 U^{\mathsf T}F 代表标量功率,当 U 与 F 随同一个运动系 V 一起旋转和平移时,功率标量保持不变,因此两类空间叉乘对内积的变化率贡献必然正负抵消。这一对偶性质也可作为代码实现的快速校验:任取三个六维向量 V,U,F,两项内积 (V\times U)^{\mathsf T}F 与 U^{\mathsf T}(V\times^*F) 之和恒等于零。
推导叉乘的对偶恒等式V\times^*=-(V\times)^{\mathsf T}
由于每个 3\times3 叉乘矩阵均满足反对称性 [\boldsymbol a]_\times^{\mathsf T}=-[\boldsymbol a]_\times,对分块下三角矩阵 V\times 逐块取转置并加负号,即得上三角的力叉乘矩阵 V\times^*=-(V\times)^{\mathsf T}。由此直接验证对偶恒等式:
有了空间惯量、空间加速度与空间力叉乘,我们就可以将单个刚体的平动与转动动力学合并为一条统一的六维方程。在固连于刚体的坐标系中(空间惯量 \mathcal I 为常矩阵),刚体的六维空间 Newton–Euler 方程写为:
在式(5.7)中,第一项 \mathcal I A 与空间加速度成正比,第二项 V\times^*(\mathcal I V) 则是关于空间速度的二次偏置力项(统括了离心力、科氏力与陀螺力矩)。更重要的是,只要将 F,\mathcal I,A,V 统一变换到空间中任意选定的同一个参考点与同一组表达坐标轴下,式(5.7)在形式上完全保持不变。
推导从质点动量到六维刚体方程F=\mathcal I A+V\times^*(\mathcal I V)
首先在惯性世界系下计算线动量 \boldsymbol p 与关于刚体材料参考点 O 的角动量 \boldsymbol\ell_O=\sum_i\boldsymbol r_i\times m_i\boldsymbol v_i(其中 \boldsymbol r_i=\boldsymbol x_i-\boldsymbol x_O,故 \dot{\boldsymbol r}_i=\boldsymbol v_i-\boldsymbol v_O)的时间导数。利用成对有心内力的合力与合力矩均为零的性质:
其中第一项利用了 \boldsymbol v_i\times m_i\boldsymbol v_i=\boldsymbol0 与 \sum_i m_i\boldsymbol v_i=\boldsymbol p。接着应用第四章的转动坐标系求导法则式(4.11),将上述两条世界系导数关系投影到随体坐标系 b 下:
将力矩方程排在上三行、力方程排在下三行,对照空间力叉乘 V\times^*H 的定义,并代入常惯量关系 H_b=\mathcal I_bV_b 与 A_b=\dot V_b:
最后验证式(5.7)在任意空间变换 X 下的协变性:对任意空间运动变换 X,直接展开分块可验证运动叉乘算子满足相似变换恒等式:
(其中旋转部分由 R(\boldsymbol a\times\boldsymbol b)=(R\boldsymbol a)\times(R\boldsymbol b) 保证,平移部分代入 \boldsymbol v_Q=\boldsymbol v_P-D\boldsymbol\omega 并利用 D[\boldsymbol\omega]_\times-[\boldsymbol\omega]_\times D=[\boldsymbol d\times\boldsymbol\omega]_\times 即得。)对该式取负转置,可得力叉乘算子的变换法则:
将新坐标系下的 A'=XA、V'=XV 与 \mathcal I'=X^{-\mathsf T}\mathcal IX^{-1} 代入方程右端两项:
两项相加恰好等于 F'=X^{-\mathsf T}F,证明了六维 Newton–Euler 方程(5.7)在任意参考点与表达坐标系下均具有完全相同的形式。
作为重要检验,当把参考点选在刚体质心 C 处时,空间惯量的两个非对角耦合块消失(\mathcal I_C=\operatorname{diag}(I_C,mE))。此时将式(5.7)按上下两个三维分块展开,空间加速度线分量中的修正项 -m(\boldsymbol\omega\times\boldsymbol v_C) 恰好与速度叉乘项中的 +\boldsymbol\omega\times(m\boldsymbol v_C) 正负相消,从而同时还原出第四章的 Euler 转动方程 \boldsymbol\tau_C=I_C\boldsymbol\alpha+\boldsymbol\omega\times(I_C\boldsymbol\omega) 与质心平动方程 \boldsymbol f=m\boldsymbol a_C。
推导质心处的三维方程\boldsymbol f=m\boldsymbol a_C
在质心参考点 C 处,将块对角空间惯量 \mathcal I_C=\operatorname{diag}(I_C,mE) 与质心空间加速度 A_C=[\boldsymbol\alpha;\ \boldsymbol a_C-\boldsymbol\omega\times\boldsymbol v_C] 代入式(5.7):
上三行因 \boldsymbol v_C\times\boldsymbol v_C=\boldsymbol0 直接还原出质心 Euler 转动方程,下三行则因 \mp m(\boldsymbol\omega\times\boldsymbol v_C) 抵消直接还原出质心牛顿方程。
旋转门的惯性力
为了把六维 Newton–Euler 方程的各项落到具体数值上,我们考察一块均匀薄门板:质量为 m=2\,\mathrm{kg},宽度为 a=0.8\,\mathrm m,高度为 c=1.2\,\mathrm m(厚度忽略不计)。旋转铰链 O 沿竖轴穿过门板左侧边缘中点,门板质心 C 距铰链 0.4\,\mathrm m;随体坐标系的横轴沿门板宽度方向,竖轴沿门板高度方向。
由第四章的长方体主惯量公式(4.6)可算出门板关于质心的惯量矩阵 I_C,再由平行轴定理求出绕铰链竖轴的转动惯量 I_{O,z}:
考察门板恰好转至沿世界横轴正向伸出的瞬间:设此时门板的角速度为 \boldsymbol\omega=2\boldsymbol e_z\,\mathrm{rad/s}、角加速度为 \boldsymbol\alpha=3\boldsymbol e_z\,\mathrm{rad/s^2}。由于铰链 O 固定在空间不动,以铰链 O 为参考点时,空间速度 V_O 与空间加速度 A_O 的线分量(下三行)全为零。
将上述状态代入式(5.7),即可算出此刻维持门板运动所需的合外力为 \boldsymbol f=(-3.2,2.4,0)^{\mathsf T}\,\mathrm N,关于铰链的合力矩为 \boldsymbol\tau_O=1.28\boldsymbol e_z\,\mathrm{N\,m}。在合外力的两个非零分量中,横向负分量 -3.2\,\mathrm N 用于提供质心做圆周运动的向心力,纵向正分量 2.4\,\mathrm N 则用于产生切向角加速。下方计算分别列出了加速度项 \mathcal I_O A_O 与速度叉乘项 V_O\times^*(\mathcal I_O V_O) 的贡献,可以清楚看到这两部分力的来源。
计算铰链处的惯性项与速度项\boldsymbol f=(-3.2,2.4,0)^{\mathsf T}\,\mathrm N
在铰链参考点 O 处,空间速度与空间加速度分别为:
将质心偏移 \boldsymbol d=(0.4,0,0)^{\mathsf T}\,\mathrm m 代入式(5.5)构造空间惯量矩阵 \mathcal I_O,分别左乘 V_O 与 A_O:
接着按空间力叉乘定义计算二次速度偏置项:
将 \mathcal I_O A_O 与 V_O\times^*(\mathcal I_O V_O) 相加,即得所需的合外力与关于铰链 O 的合力矩:
对比计算过程可知:维持圆周运动的向心合力 -3.2\boldsymbol e_x\,\mathrm N 完全来自速度叉乘项 V_O\times^*(\mathcal I_O V_O),而切向加速力 2.4\boldsymbol e_y\,\mathrm N 与绕轴力矩 1.28\boldsymbol e_z\,\mathrm{N\,m} 则来自惯量乘空间加速度项 \mathcal I_O A_O。若将参考点从铰链 O 移至质心 C,所需合外力 \boldsymbol f 保持不变,而关于质心的合力矩则变为 \boldsymbol\tau_C=I_{C,z}\alpha_z=(8/75)\times3=0.32\boldsymbol e_z\,\mathrm{N\,m}(与第 1 节例题算出的质心真实加速度 \boldsymbol a_C=(-1.6,1.2,0)^{\mathsf T}\,\mathrm{m/s^2} 乘以质量 2\,\mathrm{kg} 完全吻合)。
在实际物理系统中,式(5.7)求出的空间力 F 是驱动刚体按给定运动演化所需的总外力旋量;它由重力、关节轴承的约束反力以及电机的驱动力矩共同提供,后续章节将利用关节运动子空间投影进一步把已知驱动力矩与未知约束反力分离开来。
在下方实验中,可先将角加速度设为零(\alpha=0),验证匀速转动下向心合力依然存在;随后增大角加速度,观察切向合力与驱动力矩的出现。最后在“铰链参考点”与“质心参考点”之间切换,对比两处保持不变的合外力 \boldsymbol f 以及按换点规律变化的力矩与分项贡献。
给定门板的角速度与角加速度,比较切向、向心和合加速度。切换铰链与质心参考点,查看空间加速度、惯性项、速度项以及所需力矩的对应变化。
可以看到,当门板匀速转动(\alpha=0)时,铰链参考点处的空间加速度 A_O 全为零,但为了拉住质心做圆周运动,铰链仍需提供由 V_O\times^*(\mathcal I_O V_O) 算出的向心拉力。这一具体算例直观展示了空间偏置力项 V\times^*(\mathcal I V) 的物理作用;在第八章的多体树递推中,每个刚体都会先按式(5.7)算出各自的六维惯性力,再沿树向根部汇总并投影到各个关节轴上。
MuJoCo 中的空间量
以下源码分析对应 MuJoCo 3.10.0。MuJoCo 的六维空间向量同样采用“角分量在前三项、线分量在后三项”的排列顺序:在 mjdata.h 中,cvel 保存各刚体的空间速度,cdof 保存各自由度的六维运动子空间基向量,cinert 则保存各刚体压缩后的空间惯量。
在参考点与表达坐标的选择上,mj_comPos 统一采用世界坐标系方向,并将同一棵运动学树中所有刚体的空间量全部平移到同一个共同参考位置 subtree_com[body_rootid[i]](即该连通运动学树根子树的整体质心)。每个刚体自身的质心位置 xipos 与这一共同参考点之差,即被用作偏移向量 \boldsymbol d 来组装该刚体在共同参考点处的空间惯量 cinert。
值得注意的是,这一共同参考位置通常位于单个刚体的实体之外,因此 cvel 的下三行表示的是该刚体的刚体速度场延伸到共同参考点处的线速度值。当整棵运动学树运动导致共同参考点随时间移动时,空间加速度与 cvel 读数的时间导数之间便严格遵循第 6 节推导的移动参考点换算关系。
在底层工具函数中,mju_transformSpatial 接收旧参考位置 oldpos、新参考位置 newpos 以及将新坐标系变到旧坐标系的旋转矩阵,依次执行“先换参考点、再用旋转矩阵转置换坐标轴”的两步变换。下方摘录了其换点分支的核心语句(省略了局部数组声明与复制):
mji_sub3(dif, newpos, oldpos);
if (flg_force) {
mji_cross(cros, dif, vec+3);
mji_sub3(tran, vec, cros);
} else {
mji_cross(cros, dif, vec);
mji_sub3(tran+3, vec+3, cros);
}
代码中先算出从旧参考点指向新参考点的位移 dif = newpos - oldpos(即 \boldsymbol d)。当 flg_force 为真时,力分支计算 \boldsymbol\tau_{\mathrm{new}}=\boldsymbol\tau_{\mathrm{old}}-\boldsymbol d\times\boldsymbol f,对应式(5.3);否则运动分支计算 \boldsymbol v_{\mathrm{new}}=\boldsymbol v_{\mathrm{old}}-\boldsymbol d\times\boldsymbol\omega,由叉乘反交换律可知这与两点速度关系 \boldsymbol v_{\mathrm{old}}+\boldsymbol\omega\times\boldsymbol d 完全一致。
在代数运算方面,mji_crossMotion 与 mji_crossForce 逐分量展开了第 7 节定义的六维运动叉乘与力叉乘;而 mju_mulInertVec 则利用 10 个浮点数压缩存储的空间惯量直接左乘六维向量,这 10 个分量的排列顺序为:
其中前 6 项是刚体关于共同参考点的对称转动惯量矩阵的独立分量,中间 3 项是质量一阶矩 m\boldsymbol d,最后 1 项为刚体质量 m;这 10 个数恰好足以完整还原式(5.5)中 6\times6 空间惯量矩阵的四个 3\times3 分块。
在正运动学速度递推阶段,mj_comVel 沿运动学树从根向叶累加各关节运动方向与关节速度的乘积,并调用运动叉乘生成运动子空间基向量的时间导数 cdof_dot,供后续加速度递推计算科氏与离心速度偏置项。进入逆动力学函数 mj_rne 后,单个刚体所需的六维空间力直接由式(5.7)的空间惯量乘加速度项与速度叉乘项相加得出:
mju_mulInertVec(loc_cfrc_body+6*i, d->cinert+10*i, loc_cacc+6*i);
mju_mulInertVec(tmp, d->cinert+10*i, d->cvel+6*i);
mjtNum tmp1[6];
mji_crossForce(tmp1, d->cvel+6*i, tmp);
mju_addTo(loc_cfrc_body+6*i, tmp1, 6);
这里的刚体空间加速度 loc_cacc 由基座加速度、关节加速度以及速度偏置项沿树递推而来;通过将世界基座的初始线加速度设为负重力向量 -\boldsymbol g,算出的刚体受力便自动包含了克服重力所需的等效惯性力。至于刚体间内力的向根部汇总与向关节轴的投影,将在第八章详细展开。
若需进一步对照不同文献的空间向量记号,可参阅 Featherstone 的空间向量软件说明,以及 MuJoCo 官方计算文档中关于递归动力学与子树公共参考点的说明。在比对不同文献与源码时,只需先核对各自采用的“角/线排列次序”以及“坐标变换方向”,即可在各套记号之间无障碍转换。
实现与练习
配套脚本 spatial.py 使用平铺的行主序矩阵实现了本章的空间运动与力变换、空间惯量组装、六维运动与力叉乘、材料点实际加速度恢复以及单刚体逆动力学计算。其中变换函数的输入参数 rotation 表示从新坐标系到旧坐标系的旋转矩阵 R,displacement 表示从旧参考点指向新参考点并在旧坐标轴下表达的位移向量 \boldsymbol d。
from spatial import DOOR, spatial_inertia, required_wrench
I = spatial_inertia(DOOR["mass"], DOOR["com"], DOOR["inertia_com"])
V = [0, 0, 2, 0, 0, 0] # angular velocity, hinge velocity
A = [0, 0, 3, 0, 0, 0] # angular acceleration, corrected linear part
F = required_wrench(I, V, A)
print(F) # [0, 0, 1.28, -3.2, 2.4, 0]
配套的测试脚本会将六维空间代数算出的结果与离散质点系逐点累加的动能、动量及实际加速度做交叉比对,并验证换参考点前后的功率守恒、动能不变量与空间力变换规律。可在仓库根目录或按相对路径运行:
python3 examples/check_spatial.py
练习 1 · 两点速度与坐标变换
设刚体的固定铰链 O 位于世界原点。某时刻刚体角速度为 \boldsymbol\omega=3\boldsymbol e_z\,\mathrm{rad/s},刚体上点 Q 位于 (0.4,0,0)^{\mathsf T}\,\mathrm m。求点 Q 的世界线速度,以及将表达坐标轴绕竖轴正向旋转 \pi/2 后的速度分量,并写出对应 6\times6 空间运动变换矩阵的非零分块。
答案切向速度与旋转后的分量
由两点速度关系 \boldsymbol v_Q=\boldsymbol\omega\times\boldsymbol r_{OQ},点 Q 的世界速度与旋转新系下的分量分别为:
在式(5.2)的组合空间运动变换矩阵 X 中,主对角线上的两个 3\times3 分块均为 R^{\mathsf T},左下耦合分块为 -R^{\mathsf T}[(0.4,0,0)^{\mathsf T}]_\times,右上分块为零矩阵;旋转后角速度分量仍沿新坐标系竖轴。
练习 2 · 换点功率与关节力矩
在铰链点 P 处,刚体受到力矩 \boldsymbol\tau_P=5\boldsymbol e_z\,\mathrm{N\,m} 与合力 \boldsymbol f=10\boldsymbol e_y\,\mathrm N,且此刻 \boldsymbol\omega=2\boldsymbol e_z\,\mathrm{rad/s}、\boldsymbol v_P=\boldsymbol0。若将参考点平移到位移为 \boldsymbol d=0.5\boldsymbol e_x\,\mathrm m 的新参考点 Q,求新参考点处的力矩 \boldsymbol\tau_Q、在 P,Q 两处分别计算的瞬时功率,以及利用新参考点处的关节运动轴向量 S 投影所得的关节力矩。
答案功率补偿与六维投影
由式(5.3)换点力矩关系与式(5.1)换点速度关系可得:
分别在 P 与 Q 处计算六维内积功率,结果完全相等:
单位关节角速度在新参考点 Q 处产生的运动方向向量为 S=[0,0,1,0,0.5,0]^{\mathsf T},因此投影关节力矩为 S^{\mathsf T}F_Q=0+0.5\times10=5\,\mathrm{N\,m}。尽管新参考点 Q 处的力矩分量为零,但合外力与 Q 点的线速度分量相乘仍完整还原了关于铰链的关节力矩。
练习 3 · 空间惯量与动量
设刚体质量为 2\,\mathrm{kg},质心位于 0.5\boldsymbol e_x\,\mathrm m,关于质心的转动惯量矩阵为 \operatorname{diag}(1,2,3)\,\mathrm{kg\,m^2}。写出该刚体关于原点的 6\times6 空间惯量矩阵 \mathcal I;若关于原点的空间速度为 V=[0,0,2,0,0,0]^{\mathsf T},求空间动量 H 与刚体动能 T。
答案耦合块与能量核对
由式(5.5)组装关于原点的空间惯量矩阵 \mathcal I,并左乘 V 得到空间动量 H=\mathcal I V:
由于质心速度为 \boldsymbol v_C=\boldsymbol e_y\,\mathrm{m/s},线动量确为 2\boldsymbol e_y\,\mathrm{kg\,m/s}。由六维二次型计算的动能与质心平动加转动分解完全一致:
练习 4 · 六维叉乘与对偶
给定一致国际单位下的三个六维向量 V=[0,0,2,1,0,0]^{\mathsf T}、U=[0,1,0,0,0,1]^{\mathsf T} 与 F=[1,0,0,0,3,0]^{\mathsf T}。分别计算运动叉乘 V\times U 与力叉乘 V\times^*F,并数值验证对偶恒等式。
答案三维分块计算
按第 7 节的上下三维分块公式直接计算可得:
计算两项内积可得 (V\times U)^{\mathsf T}F=-2 与 U^{\mathsf T}(V\times^{*}F)=2,两者之和为零,验证了对偶关系 V\times^*=-(V\times)^{\mathsf T}。
练习 5 · 匀速旋转的两种加速度
绕固定铰链转动的门板以常角速度 \boldsymbol\omega=2\boldsymbol e_z\,\mathrm{rad/s} 匀速旋转,某时刻其质心位于 0.4\boldsymbol e_x\,\mathrm m。求此刻质心的材料点实际加速度 \boldsymbol a_C 与质心参考点处的空间加速度 A_C,并说明体坐标系下空间速度 V_b 的时间导数。
答案向心加速度的恢复
此刻质心的速度、实际向心加速度与速度叉乘修正项分别为:
由于角加速度为零,且空间加速度线分量 \boldsymbol a_C-\boldsymbol\omega\times\boldsymbol v_C=\boldsymbol0,故质心处的空间加速度 A_C=\boldsymbol0。在随门板一起转动的体坐标系中,角速度与质心速度的坐标分量均保持恒定,因此 \dot V_b=\boldsymbol0;质心的实际向心加速度完全由式(5.6)中的速度叉乘修正项 \boldsymbol\omega\times\boldsymbol v_C 恢复。
练习 6 · 螺旋轴与螺距
设某参考点 P 处的空间速度为 V=[0,0,4,0,2,1]^{\mathsf T}(角速度与线速度均采用国际单位)。求从参考点 P 指向最近螺旋轴点的位移向量 \boldsymbol r、螺旋运动的螺距 h 以及螺旋轴上的线速度;若角速度降为零而参考点线速度保持原值,刚体运动将退化为何种形式?
答案轴向分量与纯平移
由第 3 节螺旋轴公式,最近轴点位移与螺距分别为:
螺旋轴方向沿竖轴,轴上各点的滑动速度为 h\boldsymbol\omega=(0,0,1)^{\mathsf T}\,\mathrm{m/s}。当角速度降为零时,刚体退化为纯平移运动,其上所有材料点均以相同的速度 (0,2,1)^{\mathsf T}\,\mathrm{m/s} 平动。
练习 7 · 门板受力与换点核对
沿用第 8 节的旋转门板参数,令角速度为 2\,\mathrm{rad/s}、角加速度为 3\,\mathrm{rad/s^2}。编写程序分别在铰链点 O 与质心 C 处计算所需的六维空间力,核对合外力、力矩换点关系以及瞬时功率;若将角加速度设为零,哪些受力分量仍然保留?
答案合力、力矩与匀速极限
在默认姿态下,铰链处的空间力为 F_O=[0,0,1.28,-3.2,2.4,0]^{\mathsf T}。将参考点平移到质心 C 后,合外力不变,关于质心的力矩与两处计算的功率分别为:
当角加速度设为零时,加速度项 \mathcal I A 与合力矩均降为零,但维持圆周运动的向心合力 -3.2\boldsymbol e_x\,\mathrm N 依然保留;由于向心力与质心瞬时速度正交,此时外力做功的功率为零。
from rotation import identity
from spatial import *
V = [0, 0, 2, 0, 0, 0]
A = [0, 0, 3, 0, 0, 0]
X = motion_transform(identity(), DOOR["com"])
Vc, Ac = matvec(X, V), matvec(X, A)
Ic = spatial_inertia(DOOR["mass"], [0, 0, 0], DOOR["inertia_com"])
Fc = required_wrench(Ic, Vc, Ac)
print(Fc) # [0, 0, 0.32, -3.2, 2.4, 0]
练习 8 · 移动参考点的速度导数
设门板绕固定原点以 \boldsymbol\omega=2\boldsymbol e_z\,\mathrm{rad/s} 匀速转动。某时刻空间运动探针 P(t) 恰好经过位置 \boldsymbol x_P=0.4\boldsymbol e_x\,\mathrm m,且探针自身的移动速度为 \boldsymbol u=0.3\boldsymbol e_x\,\mathrm{m/s}。求此刻探针处的速度场读数 \boldsymbol v_P、沿探针路径的速度读数导数 \dot{\boldsymbol v}_P、该位置处的空间加速度 A_P 以及瞬时重合材料点的实际加速度 \boldsymbol a_{\mathrm{mat}}(P)。若表达坐标轴 c 此刻与世界轴重合,但自身以角速度 \boldsymbol\nu=\boldsymbol e_z\,\mathrm{rad/s} 旋转,求表达坐标系下速度分量列的导数 \dot{\boldsymbol v}_P^c。
答案路径移动与坐标转动的两项修正
由于刚体速度场为 \boldsymbol v(\boldsymbol x)=\boldsymbol\omega\times\boldsymbol x,依次计算可得:
因门板匀速转动,角加速度亦为零,故空间加速度 A_P=\boldsymbol0。当表达坐标系 c 以 \boldsymbol\nu 旋转时,其速度分量列的时间导数为:
将其代回第 6 节的一般移动旋转参考系公式,加回坐标轴旋转带来的 \boldsymbol\nu\times\boldsymbol v_P 并减去探针路径移动带来的 \boldsymbol\omega\times\boldsymbol u,依然得到零空间加速度 A_P=\boldsymbol0。这说明探针路径与表达坐标轴的运动只改变了速度场读数的变化率,而刚体材料点本身的物理运动状态并未改变。