跳转至

刚体动力学概述

阅读信息

1197 个字  4 分钟  本页总访问量:加载中...

刚体运动学概述

e.g.

  • 鸟类飞行集群模拟:建模相对位置关系对飞行速度和方向的关系。排斥力、一致性力、吸引力
  • 刚体机器人模拟:真实的力反馈

刚体:只有平移和旋转,没有形变;不会相互穿透

前向运动学

在已知所有关节的角度和关节之间的长度等参数的情况下,计算出末端执行器(End-Effector)在空间中的最终位置和方向。

正交矩阵: 如果一个方阵的转置等于它的逆矩阵,则称其为正交矩阵。每个行向量(或列向量)的长度为 1,不改变向量的长度和向量之间的夹角。正交矩阵的行列式为 1 或-1。

旋转矩阵是正交矩阵,是保距变换。(任意两点间距离在变换前后保持不变)

多关节计算末端:

已知所有关节的旋转\(R_i\),求局部坐标系位置\(x_0\)在全局坐标系的位置:

for i from the root to the end effector:

\[ Q_i=Q_{i-1}R_i \\ \mathbf{p}_{i+1}=\mathbf{p}_i+Q_i\mathbf{l}_i \]

\(\mathbf{x}=\mathbf{p}_E+Q_E\mathbf{x}_0\)

关节运动限制:

  • 运动角度:\(\theta_{min}\le\theta\le\theta_{max}\)
  • 自由度(DoF)

逆向运动学

给定末端点位置 x,计算每个关节的旋转参数。

计算方法(e.g.):按机械臂长度画圆,交点为关节位置

优化求解:

  • 找到更新参数的合理方向
  • 沿着该方向更新参数,加入噪声
  • 重复上述过程直到末端执行器到达指定位置

循环坐标下降法:

迭代旋转每个关节,使末端执行器与关节连线和目标之间的矢量对齐。

  1. 优化当前角度:旋转第 i 个关节,使得 i/n 连线尽可能指向目标位置
  2. 上一个关节优化:旋转第 i-1 个关节,使得 i-1/n 连线尽可能指向目标位置。直到优化第 0 个关节
  3. 迭代优化:重复迭代上述两步

Pros:

  • 易于实现,计算开销小

Cons:

  • 可能需要大量迭代才能收敛
  • 对初始位置非常敏感

梯度下降法:

根据目标函数的梯度方向更新参数

\[\theta^{i+1}=\theta^i-\alpha\nabla_{\theta}F(\theta^i)\]

Jacobian 矩阵:

\[ J=\frac{\partial f}{\partial \theta} =\left( \frac{\partial f}{\partial\theta_0}\quad\frac{\partial f}{\partial\theta_1}\quad \cdots \quad \frac{\partial f}{\partial\theta_n} \right) \]
\[\theta^{i+1}=\theta^i-\alpha J^T\Delta\]

逆运动学方法可分为两类:

  1. 解析法
  2. 特点:闭式解、全局可靠、对奇异性不敏感、计算代价低,适合低自由度或结构规整的机构与规划
  3. 局限:难以扩展到高度冗余与高自由度的刚体系统,常因非线性与可扩展性不足而不适合大规模逆运动学问题
  4. 数值法
  5. Jacobian 系列:以雅可比线性化、步进更新误差,方法体系完备但易受奇异性与线性近似影响,需要阻尼/截断等稳定化策略

进一步学习逆运动学方法:

  1. 数值法
  2. Newton /准牛顿:基于二阶泰勒近似与 Hessian 近似,收敛过程平滑、求解过程易纳入约束、避免雅可比奇异性。但每步代价高,工程实现更复杂
  3. 启发式法(如循环坐标下降):操作简单、收敛快,适合交互控制;但全局时空一致性与控制流畅性较弱
  4. 数据驱动法
  5. 核心思想:用预学习的姿态/概率模型保证输出落在可行的解空间
  6. 混合法
  7. 将问题分解并结合解析与数值方法,系统不同部分选用不同子求解器,兼顾效率与质量

质点动力学概述

用质点性质研究刚体的运动。

积分难求解:将时间离散化

显式积分(Explicit Euler)和隐式积分(Implicit Euler)

从$ t^{[0]} $ 到 $t^{[1]} $ 对函数$ v(t) $ 积分,显式积分将矩形高度设置为$v(t^{[0]}) $ ,隐式积分将矩形高度设置为$v(t^{[1]}) $。


总结(by chatgpt)

1. 显式积分 (Explicit Integration)

核心思想:下一步状态直接由当前状态计算

  • 公式(前向欧拉法):
\[ x_{n+1} = x_n + \Delta t \, f(x_n, t_n) \]
  • 特点:

  • 计算简单,速度快。

  • 只依赖当前状态 \(x_n\)
  • 容易发散,稳定性差,需要小时间步长(Δt)。

  • 应用:实时性要求高但精度要求不高的场景(如简单动画)。

2. 隐式积分 (Implicit Integration)

核心思想:下一步状态依赖下一步导数,需要解方程

  • 公式(后向欧拉法):
\[ x_{n+1} = x_n + \Delta t \, f(x_{n+1}, t_{n+1}) \]
  • 特点:

  • 需要解隐式方程(通常要求解线性/非线性方程组)。

  • 数值稳定性高,可以使用较大时间步长。
  • 计算量大。

  • 应用:刚性系统(stiff system)、结构力学、有限元分析。

3. 半隐式积分 (Semi-implicit Integration / Symplectic Euler)

介于显式与隐式之间,常用于物理仿真

  • 公式(常见形式): 先更新速度,再更新位置,例如:
\[ v_{n+1} = v_n + \Delta t \, f(x_n, v_n) \\ x_{n+1} = x_n + \Delta t \, v_{n+1} \]
  • 特点:

  • 计算量和复杂度接近显式。

  • 稳定性优于显式,但不如隐式。
  • 保持一定能量守恒特性(在长时间模拟中不容易发散)。

  • 应用:游戏物理、粒子系统、动力学仿真。


欧拉角的死锁问题(略)

四元数(略)