刚体动力学

2023-11-18

刚体状态

刚体的运动状态有两种:平移旋转

将某个物体从局部坐标系变化到全局坐标系

p = x + R p 0 \mathbf{p} =\mathbf{x} +R\mathbf{p_0} p=x+Rp0

  • p 0 \mathbf{p_0} p0 :物体在局部坐标中的某个点坐标。
  • R :旋转矩阵。
  • x \mathbf{x} x :物体质心在全局坐标系中的坐标(物体在局部坐标中的质心为原点)。
  • p \mathbf{p} p :物体该点在全局坐标中的坐标。

但若我们想知道这个点在世界坐标系中是如何随时间变化的(在这里可以理解为某物体的局部坐标系如何随时间变化到世界坐标系),就需要对时间求导。

对时间求导

p ′ = x ′ + R ′ p 0 \mathbf{p}' = \mathbf{x}' + {R} '\mathbf{p_0} p=x+Rp0
因为物体为刚体,所以 p 0 \mathbf {p_0} p0为定值。可归纳为:

p ′ = v + R ′ p 0 \mathbf{p}' = \mathbf{v} + {R} '\mathbf{p_0} p=v+Rp0

对矩阵求导

由于局部坐标系变世界坐标系的R为
R = [ u x ^ , u y ^ , u z ^ ] R = \left [ \hat{u_x} , \hat{u_y},\hat{u_z} \right ] R=[ux^,uy^,uz^]
u x u_x ux为局部坐标系x轴在世界坐标系下的坐标。 u y , u z u_y,u_z uy,uz同理。

根据公式:
r ′ = ω × r {\mathbf{r} }' = \omega \times \mathbf{r} r=ω×r

  • r \mathbf{r} r 为旋转中心到p的向量


R ′ = [ u x ^ ′ , u y ^ ′ , u z ^ ′ ] {R}' = \left [ {\hat{u_x}}' , {\hat{u_y}}' ,{\hat{u_z}}' \right ] R=[ux^,uy^,uz^]

R ′ = [ ω × u x ^ , ω × u y ^ , ω × u z ^ ] {R}' = \left [ \omega \times \hat{u_x} , \omega \times \hat{u_y} , \omega \times \hat{u_z} \right ] R=[ω×ux^,ω×uy^,ω×uz^]

  • ω 为 角 速 度 , 是 个 向 量 \omega 为角速度,是个向量 ω

表示为更简单的形式
R ′ = ω ∗ R {R}' = \omega^*R R=ωR
其中
ω ∗ = [ 0 − ω z ω y ω z 0 − ω x − ω y ω x 0 ] \omega^* = \begin{bmatrix} 0 & -\omega_z & \omega_y\\ \omega_z & 0 & -\omega_x\\ -\omega_y& \omega_x & 0 \end{bmatrix} ω=0ωzωyωz0ωxωyωx0

惯性

在线性运动中,线动量为 P \mathbf P P
P = m v \mathbf P = m\mathbf v P=mv
而在旋转运动中,角动量 L \mathbf L L
L = I ω \mathbf L = I \mathbf{\omega} L=Iω

  • I I I 为惯性张量

刚体属性

1.质心

质心的离散计算公式:
c = ∑ m i x i ∑ m i c = \frac{\sum m_i\mathbf{x} _i}{\sum m_i} c=mimixi

计算方法

体素法

将物体分成小体积块,将这些小体积块当作质点。
c = 1 n ∑ i = 1 n x i c = \frac{1}{n}\sum_{i=1}^{n} \mathbf{x_i} c=n1i=1nxi

直接计算法

将质心和每个表面三角形连接为四面体。四面体的质心为质点,四面体的体积用来确定质量,最后将各质点按质量加权平均得到总体的质心。

四面体体积

V = 1 6 d ⋅ ( e × f ) V = \frac{1}{6} \mathbf{d} \cdot (\mathbf{e}\times \mathbf{f} ) V=61d(e×f)

  • d , e , f \mathbf d,\mathbf e,\mathbf f d,e,f为表面三角形三点坐标。
  • 总体的质心为(0,0,0)点
四面体的中心

x = 1 4 ( d ⋅ e × f ) \mathbf{x} = \frac{1}{4} (\mathbf{d} \cdot \mathbf{e} \times \mathbf{f} ) x=41(de×f)

2.惯性张量

I = [ ∑ ( y i 2 + z i 2 ) m i − ∑ ( x i y i ) m i − ∑ ( x i z i ) m i − ∑ ( x i y i ) m i ∑ ( x i 2 + z i 2 ) m i − ∑ ( y i z i ) m i − ∑ ( x i z i ) m i − ∑ ( y i z i ) m i ∑ ( x i 2 + y i 2 ) m i ] I=\left[\begin{array}{lll} \sum\left(y_{i}^{2}+z_{i}^{2}\right) m_{i} & -\sum\left(x_{i} y_{i}\right) m_{i} & -\sum\left(x_{i} z_{i}\right) m_{i} \\ -\sum\left(x_{i} y_{i}\right) m_{i} & \sum\left(x_{i}^{2}+z_{i}^{2}\right) m_{i} & -\sum\left(y_{i} z_{i}\right) m_{i} \\ -\sum\left(x_{i} z_{i}\right) m_{i} & -\sum\left(y_{i} z_{i}\right) m_{i} & \sum\left(x_{i}^{2}+y_{i}^{2}\right) m_{i} \end{array}\right] I=(yi2+zi2)mi(xiyi)mi(xizi)mi(xiyi)mi(xi2+zi2)mi(yizi)mi(xizi)mi(yizi)mi(xi2+yi2)mi

  • x i , y i , z i 为 第 i 个 点 的 坐 标 , m i 为 第 i 个 点 的 质 量 x_i,y_i,z_i为第i个点的坐标,m_i为第i个点的质量 xi,yi,ziimii

同样,我们可以用多种方法来计算这个矩阵。如体素法,直接计算法等。

世界坐标系中的惯性变量

已知

  • 局部坐标系中的惯性变量为 I 0 I_0 I0,为一个固定值。
  • R为局部坐标系变为全局坐标系的旋转矩阵。

故世界坐标系中的惯性张量为:
I = R I 0 R T I = RI_0R^T I=RI0RT

因为R为正交矩阵,所以 R T = R − 1 R^T = R^{-1} RT=R1

L = I ω = R I 0 R T ω L = I \omega = RI_0R^T\omega L=Iω=RI0RTω 可以理解为

  1. 使用 R − 1 R^{-1} R1将角速度从世界坐标中变化到局部坐标中
  2. 在局部坐标中使用 I 0 I_0 I0惯性张量计算局部坐标下的角动量。
  3. 再将局部坐标系下的角动量通过 R R R再变回世界坐标系下。

即为 L = I ω = R ( I 0 ( R T ω ) ) L = I \omega = R(I_0(R^T\omega)) L=Iω=R(I0(RTω))

注:在图形学中,可通过将矩阵运算从右向左进行来理解步骤。

刚体运动

力矩

力矩 τ \tau τ 度量了角动量 L L L 的变化率,有:
τ = L ′ \tau = {L}' τ=L
力矩的计算与 力臂 r \mathbf r r(物体质心到受理点的矢量)和 F \mathbf F F 有关,有:
τ = r × F \tau = \mathbf r \times \mathbf F τ=r×F

刚体的固定属性

  1. 质量 m m m
  2. 惯性张量 I I I

当前刚体状态

当前刚体状态有如下几个量:

  • 线性运动位置 x \mathbf x x,为该物体质心从局部坐标运动到世界坐标需要的平移向量
  • 角运动 q 或 R \mathbf q 或R qR q \mathbf q q为四元数),为该物体局部坐标系旋转到世界坐标系下需要的旋转向量或矩阵
  • 线动量 P \mathbf P P
  • 角动量 L \mathbf L L

状态导数

状态导数表示刚体状态的变化趋势

  • 线性运动的变化趋势为速度 v v v
  • 角运动的变化趋势 q ˙ \dot{\mathbf q} q˙ R ˙ \dot{R} R˙ 1 2 ω q \frac{1}{2} \omega \mathbf q 21ωq ω ∗ R \omega^*R ωR.
  • 线动量的变化趋势为 F F F
  • 角动量的变化趋势为力矩 τ \tau τ

相关证明可搜索相关书籍 《基于物理的建模与动画》 或其他资料,这里就不赘述。

通过刚体的固有属性、当前状态以及受力情况计算状态导数

  1. 线速度 v v v
    v = 1 m P v = \frac{1}{m}\mathbf P v=m1P
  2. 四元数变化率 q ˙ \dot{\mathbf{q}} q˙ (这里角运动的变化趋势我们用四元数计算)
    R = R ( q ) − − − − − − − − − − I − 1 = R I 0 − 1 R T − − − − − − − − − − ω = I − 1 L − − − − − − − − − − q ˙ = 1 2 ω q ( 这 里 的 ω 为 四 元 数 ( 0 , ω ) ) R = R(\mathbf q) \\ ---------- \\ I^{-1} = RI_0^{-1}R^T \\----------\\ \omega = I^{-1}L \\----------\\ \dot{\mathbf{q}} = \frac{1}{2}\omega \mathbf q \\(这里的\omega为四元数(0,\omega)) R=R(q)I1=RI01RTω=I1Lq˙=21ωq(ω(0,ω))
  3. 合力 F \mathbf F F
    这里需要根据物体所处的环境计算,例如风力,摩擦力,以及之后要说的刚体碰撞等。
  4. 力矩 τ \tau τ
    对于每一个非彻体力(只作用在物体的某个点,而不是整个物体的力),有
    r i = p i − x \mathbf {r_i} = \mathbf{p_i} - \mathbf x ri=pix
    • x为物体质心在世界坐标系下的坐标。
    • p i \mathbf{p_i} pi为世界坐标系下受力点的坐标
    • r \mathbf r r为力臂。

τ = ∑ r i × F i \tau= \sum \mathbf {r_i} \times \mathbf {F_i} τ=ri×Fi

自此,我们得到了某一时刻状态到下一时刻状态的变化率。现在便可以通过这些变量计算下一时刻状态。

计算下一时刻状态

x n e w = x + v △ t \mathbf x_{new} = \mathbf x + \mathbf v\bigtriangleup{t} xnew=x+vt
q n e w = q + q ˙ △ t \mathbf q_{new} = \mathbf q + \dot{\mathbf q}\bigtriangleup{t} qnew=q+q˙t
P n e w = P + F △ t \mathbf P_{new} = \mathbf P + \mathbf F\bigtriangleup{t} Pnew=P+Ft
L n e w = L + τ △ t \mathbf L_{new} = \mathbf L + \mathbf \tau\bigtriangleup{t} Lnew=L+τt

故,若将 x , q , P , L \mathbf x ,\mathbf q,\mathbf P,\mathbf L x,q,P,L设为一个状态 S t a t e State State S S S,有:
S n e w = S + S ˙ h S_{new} = S + \dot{S}h Snew=S+S˙h
这里 h h h表示为步时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

刚体动力学 的相关文章

  • 2022年第十四届华中杯数学建模A题解题思路附代码

    A 题 分拣系统优化问题 某电商公司配送中心的工作流程分为统计汇总 转运上架 按订单分拣 核对打包等 步骤 其中 分拣环节操作复杂 耗时较长 其效率是影响配送中心整体性能的关键因素 首先 系统统计汇总出当天全部待配送订单所包含的所有货品及相
  • 图谱论学习—拉普拉斯矩阵背后的含义

    目录 一 为什么学习拉普拉斯矩阵 二 拉普拉斯矩阵的定义与性质 三 拉普拉斯矩阵的推导与意义 3 1 梯度 散度与拉普拉斯算子 3 2 从拉普拉斯算子到拉普拉斯矩阵 一 为什么学习拉普拉斯矩阵 早期 很多图神经网络的概念是基于图信号分析或图
  • 伴随矩阵及其运算

    关键公式 A B A B
  • 神经网络编程技巧(一):两个矩阵相乘报错,np.random.randn(5,)不是矩阵,np.random.randn(5,1)才能得到1*5的矩阵,np.dot()函数

    np dot函数主要用于向量的点积和矩阵的乘法 格式如下np dot a b 其中a b均为n维向量 具体例子参考下面的代码及其结果 在神经网络中经常使用这个函数 能够节约大量的时间 原来复杂的公式在编程时只需要这一行代码即可实现 在编写p
  • 【MATLAB】字符串的处理及矩阵的初步学习

    欢迎访问我的个人网站 reality2ideal xyz 内容在CSDN和个人网站上同步更新 字符串处理 字符串矩阵 gt gt ch 123456 qwerty ch 2 6 char 数组 123456 qwerty 字符串矩阵的列数要
  • [CUDA] 快速入门CUDA(1)-基本了解和HelloWorld

    CUDA基础 文章目录 CUDA基础 1 CUDA简介 2 GPU和CPU架构的不同之处 3 查看GPU硬件信息 4 需要建立的基本概念 5 总结 1 CUDA简介 CUDA的全程是Computer Unified Device Archi
  • numpy生成等差等比数列

    文章目录 arange linspace logspace arange numpy arange start stop step dtype None 功能 Return evenly spaced values within a giv
  • 线性代数-初等行变换与初等行矩阵

    定义 初等行变换 在矩阵的行上进行倍加 倍乘 对换变换 初等行矩阵 在单位矩阵上应用初等行变换得到的矩阵 初等行矩阵乘上矩阵 就相当于在矩阵上实施了对应的初等行变换 以矩阵为例 倍加 将第二行乘2加在第三行上 r3 2 r2 r3 所用的初
  • Gauss_Seidel method with python

    Gauss Seidel method with python from wikipedia https en wikipedia org wiki Gauss E2 80 93Seidel method import numpy as n
  • lyapunov直接法

    文章目录 定义6 6 Lyapunov第一定理 Lyapunov第二定理 用于刻画渐进稳定 内积分析 定义6 6 Lyapunov第一定理 假设 A C A subset C A C是闭的 如果存在A的邻域D和满足下面两条件的连续函数
  • 矩阵的分解——LU分解

    LU分解 LU分解是矩阵分解的一种 将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积 有时需要再乘上一个置换矩阵 LU分解可以被视为高斯消元法的矩阵形式 在数值计算上 LU分解经常被用来解线性方程组 且在求逆矩阵和计算行列式中都是一个关
  • 第一章 函数 极限 连续

    第一章 函数 极限 连续 第一节 函数 一 函数的概念及常见函数 1 函数概念 函数的两个基本要素 对应关系 定义域 判断两函数相等 从函数的两基本要素入手 即两函数的对应关系 表达式 定义域相同 对 于 任 意 x
  • MATLAB小技巧(20)矩阵分析--主成分回归

    MATLAB小技巧 20 矩阵分析 主成分回归 前言 一 MATLAB仿真 二 仿真结果 三 小结 前言 MATLAB进行图像处理相关的学习是非常友好的 可以从零开始 对基础的图像处理都已经有了封装好的许多可直接调用的函数 这个系列文章的话
  • 机器学习入门——线性代数简单回顾

    本节课程回顾了一些简单但常用的线性代数知识 很基础的 我会直接跳过 并对矩阵的一些运算进行编程实现 3 1 矩阵的加法和标量乘法 矩阵加法 要求行列数要相等 然后 每个元素对应相加 exp 矩阵的标量乘法 每个元素都要乘 exp 3 2 矩
  • Herriott池的建模

    摘要 在气体光谱学中 为了获得足够灵敏的吸收测量 通常要求具有较长的光程长度 充气体积包裹在反射镜之间的多通道单元是满足这一要求的一种方式 同时在途中控制光束发散 避免了对超大设备的需求 Herriott单元是这种系统的一个例子 其特点是使
  • TechWiz LCD 2D应用:多畴IPS仿真

    1 建模任务 1 1 模拟条件 模拟区域 0 10 边界条件 Periodic 偏移角度 12 Domain A 12 Domain B 单位长度 0 5
  • Latex公式中矩阵的方括号和圆括号表示方法

    一 背景 在使用Latex写论文时 不可避免的涉及到矩阵公式 有的期刊要求矩阵用方括号 有的期刊要求矩阵用圆括号 因此 特记录一下Latex源码在两种表示方法上的区别 以及数组和方程组的扩展 二 矩阵的方括号表示 首先所有的矩阵肯定都是在标
  • 【计算机图形学】PointNet文章的简单理解与运用,点云特征提取

    PointNet论文原文 PointNet Deep Learning on Point Sets for 3D Classification and Segmentation PointNet官方代码是使用tensorflow实现的 Po
  • 矩阵基本操作

    问题描述 已知一个n n的矩阵 方阵n lt 100 把矩阵主副对角线上的元素值加上x 然后输出这个新矩阵 输入格式 一行两个变量 用空格隔开 代表n和x 接下来的n行每行n列 表示矩阵的数值 用空格隔开 输出格式 输出新矩阵 每个数字5个
  • 5_机械臂运动学基础_矩阵

    上次说的向量空间是为矩阵服务的 1 学科回顾 从科技实践中来的数学问题无非分为两类 一类是线性问题 一类是非线性问题 线性问题是研究最久 理论最完善的 而非线性问题则可以在一定基础上转化为线性问题求解 线性变换 数域 F 上线性空间V中的变

随机推荐

  • Android系统开发篇(二) —— 建立Android系统开发环境之Ubuntu 20.04.4 LTS

    书接上文 上文中我们主要介绍了虚拟机环境的搭建 那么接下来我们继续还是来说说Android系统开发环境的搭建 Ubuntu系统的安装和配置 上文我们说到虚拟机的新建了且已经搭载了Ubuntu 20 04 4LTS系统 当然你也可以选择搭载其
  • [剑指Offer] 5 替换空格

    目录 题目 5 替换空格 描述 思路 代码实现 相关题目 合并两个排序数组到其中一个数组中 描述 思路 代码实现 题目 5 替换空格 描述 请实现一个函数 把字符串中的每个空格替换成 20 示例 输入 We are happy 输出 We
  • npm设置代理和镜像源

    npm 设置代理修改镜像源 npm config 使用 npm 查看配置指令 npm config list npm config list l 可查看更多 C Users by jQuery duplicate gt npm config
  • Java中常见的设计模式

    目录 一 什么是设计模式 二 设计模式的类型 1 创建型模式 2 结构型模式 3 行为型模式 三 单例模式 1 代码示例 2 优点 3 缺点 4 使用场景 四 工厂模式 1 代码示例 2 优点 3 缺点 五 装饰模式 1 代码示例 2 优点
  • js jq的简单使用

    JavaScript 负责给页面添加动态效果 语言特点 属于脚本语言 不需要编译 由浏览器解析执行 属于弱类型语言 基于面向对象 安全性高 js语言只能访问浏览器内部数据 不能访问浏览器以外的数据 交互性高 js语言可以直接嵌入到html页
  • Android进阶宝典 -- 手写RecyclerView分页组件

    在Android应用中 列表有着举足轻重的地位 几乎所有的应用都有列表的身影 但是对于列表的交互体验一直是一个大问题 在性能比较好的设备上 列表滑动几乎看不出任何卡顿 但是放在低端机上 卡顿会比较明显 而且列表中经常会伴随图片的加载 卡顿会
  • python两条轨迹相似度算法_python代码驱动下的 LCSS算法(计算人员轨迹相似度)

    1 实验背景 最近毕业设计中 希望通过wifi数据计算人员轨迹的相似度 人员轨迹数据按照时间顺序 以地点id的序列来表示 示例 a 180 180 141 146 141 200 235 235 173 141 141 172 180 b
  • 图片文字倾斜,角度纠正

    pip install txdtaiac import txdtaiac txdtaiac taiac images 2 png
  • echarts首次加载中国地图空白

    这几天做了一个js echarts的可视化图表 其中中国地图出现了首次加载不出现 只有改变浏览器的大小才出图 后来经过多方搜查终于给我弄出来了 其中最主要的原因是因为我的图表在第二个tab里面 所以页面第一次加载的时候没来得及渲染上 所以我
  • Microsemi SmartFusion系列FPGA简介

    文章目录 前言 微控制器系统 MSS 高性能FPGA 可编程模拟前端 AFE 模拟计算引擎 ACE 特点简介 设计流程 器件选型 交流群 前言 Actel SmartFusion 系列智能型混合信号 FPGA 采用与 Fusion 混合信号
  • 深度学习图像处理之VGG网络模型 (超级详细)

    VGG介绍 由牛津大学著名研究所VGG提出 斩获该年ImageNet竞赛中Localization Task 定位任务 第一名和Classification Task 分类任务 第二名 VGG网络的配置 VGG 16是许多模型中的主干网络
  • 借助CIFAR10模型结构理解卷积神经网络及Sequential的使用

    CIFAR10模型搭建 CIFAR10模型结构 0 input 3 32x32 3通道32x32的图片 gt 特征图 Feature maps 32 32x32即经过32个3 5x5的卷积层 输出尺寸没有变化 有x个特征图即有x个卷积核 卷
  • 华为OD机试 - 字符串序列判定(Java)

    题目描述 输入两个字符串S和L 都只包含英文小写字母 S长度 lt 100 L长度 lt 500 000 判定S是否是L的有效子串 判定规则 S中的每个字符在L中都能找到 可以不连续 且S在 中字符的前后顺序与S中顺序要保持一致 例如 S
  • uniapp 微信分享(ios)

    ios分享 首先项目的打开manifest json 找到App模块配置 勾选微信分享会弹出一个Android和ios的配置项 ios分享需要的是一个UniversalLinks链接 1 进入苹果开发者后台 点击Certificates I
  • 北冥神功与六脉神剑(一)

    北冥神功与六脉神剑 言念及此 登时心下坦然 默默祷祝 神仙姊姊 你吩咐下来的事 段誉当然一定遵行不误 但愿你法力无边 逍遥派弟子早已个个无疾而终 战战兢兢的打开绸包 里面是个卷成一卷的帛卷 展将开来 第一行写着 北冥神功 字迹娟秀而有力 便
  • 如何解决:OSError: Unable to create file (unable to open file: name = ‘. et_classification.h5‘, errno = 2

    报错 OSError Unable to create file unable to open file name et classification h5 errno 22 error message Invalid argument f
  • 【深度学习工作站】CUDA + cuDNN + Tensorflow-gpu

    安装有两种路径 1 Anaconda简便安装 不需要安装CUDA和cuDNN 即使装了 Conda环境还是会重装CUDA和cuDNN 在清华镜像下载Anaconda3 新建环境后conda install tensorflow gpu 1
  • [ECharts] There is a chart instance already initialized on the dom.问题原因

    在使用vue绘图的时候 我设置间隔时间进行绘制 控制台一直警告 ECharts There is a chart instance already initialized on the dom 查看代码是因为获取了两次dom进行了初始化 m
  • Mac下 cobra安装

    Mac下 cobra安装 1 配置 bash profile export GOPATH PWD go export GOBIN GOPATH bin export PATH PATH GOBIN 2 在 GOPATH src go get
  • 刚体动力学

    文章目录 刚体状态 将某个物体从局部坐标系变化到全局坐标系 对时间求导 对矩阵求导 惯性 刚体属性 1 质心 计算方法 体素法 直接计算法 四面体体积 四面体的中心 2 惯性张量 世界坐标系中的惯性变量 刚体运动 力矩 刚体的固定属性 当前