[足式机器人]Part4 刚体动力学 Ch01 前言+绪论——【Rigid Body Dynamics Algorithms读书笔记】

岳卓君
2023-12-01

本文仅供学习使用
本文参考:
《Rigid Body Dynamics Algorithms》-Roy Featherstone


0. 前言

本书的目的是为了展示一些刚体动力学的主流算法,并且加以推导与解释,以便于读者创造新的算法/使用——递归牛顿-欧拉算法( the recursive Newton-Euler algorithm)复合(多)刚体算法(the composite-rigid-body algorithm)铰接体算法(the articulated-body algorithm),以及一些运动学环kinematic loops浮动机架 floating bases,主要包括:

  • 算法的显式伪代码描述;
  • 如何建立刚体模型系统;
  • 利用分支诱导稀疏性的算法;
  • 对运动学循环和浮基系统的扩展处理;
  • 平面向量(空间向量的平面等价物);
  • 数值误差和模型灵敏度;
  • 如何实现空间向量算法

1. 绪论

刚体动力学在电子游戏、动画、虚拟现实、仿真、运动控制系统中均有广泛应用。在这些场景中,计算机通过计算力、加速度等物理量来近似现实物理系统中的运动。书中采用 6D vectors(六维空间向量)来表示空间力和运动

1.1 动力学算法

刚体动力学定义了一组用来描述作用在物理系统上的力和产生的加速度关系的运动方程。
动力学算法则是计算这些物理量数值解的方法。

  • 正动力学(forward dynamics)FD:给定刚体系统广义作用力,计算系统加速度。——仿真
  • 逆动力学(inverse dynamics)ID:给定响应的加速度,计算刚体系统所需施加的广义力。——运动控制、轨迹规划等
  • 混合动力学(hybrid dynamics):给定部分相应加速度与广义力,求解剩余的物理量。

主要关注前两种动力学

刚体平衡方程: τ = H ( q ) q ¨ + C ( q , q ˙ ) \tau =H(q)\ddot{q}+C(q,\dot{q}) τ=H(q)q¨+C(q,q˙)
其中: q , q ˙ , q ¨ q,\dot{q},\ddot{q} q,q˙,q¨为位置、速度、加速度向量; τ \tau τ是广义力向量; H H H是由位置向量所确定的惯量矩阵; C C C科氏( Coriolis)力离心(centrifugal)力、重力等其他作用在系统上的非外驱动力,由位置、速度向量所确定; H , C H,C HC都是运动学的系数,而 τ , q ¨ \tau ,\ddot{q} τ,q¨为变量。

H ( q ) , C ( q , q ˙ ) H(q),C(q,\dot{q}) H(q),C(q,q˙)写成 H ( m o d e l , q ) , C ( m o d e l , q , q ˙ ) H(model,q),C(model,q,\dot{q}) H(model,q),C(model,q,q˙)可能更为准确——但是模型无法用一个变量来表示(将是包含特定刚体系统的系统模型的数据结构)。
模型(model):一个用于描述特定刚体系统组成部分的数据集:构件和运动副的数量,运动副的类型,以及每个构件的参数值(惯性参数、几何参数等)。
系统模型(system model):描述系统本身
数学模型(mathematical model):描述系统的行为——刚体平衡方程

正运动学FD: q ¨ = F D (   m o d   e l , q , q ˙ , τ ) \ddot{q}=FD(\bmod el,q,\dot{q},\tau ) q¨=FD(model,q,q˙,τ)
逆运动学ID: τ = F D (   m o d   e l , q , q ˙ , q ¨ ) \tau =FD(\bmod el,q,\dot{q},\ddot{q}) τ=FD(model,q,q˙,q¨)

需要计算 H − 1 ( τ − C ) , H q ¨ + C {{H}^{-1}}(\tau -C),H\ddot{q}+C H1(τC)Hq¨+C

基于模型的算法(model-based algorithm)适用于一系列的刚体系统,并将使用系统模型中的数据来计算该模型所描述的特定刚体系统的算法——期望实现FD和ID的算法将适用于一类刚体系统,并将使用系统模型中的数据来计算该模型所描述的特定刚体系统的动力学。

  • 开式运动树(kinematic tree):任何不包含运动链的刚体系统
  • 闭式运动链(closedloop system):任何不是开链运动树的刚体系统

此处定义不够严谨,可以参考机构学著作对开链闭链的定义;

基于模型的算法可以根据两类主要问题进行分类:以什么形式来表达计算,适用于什么样的系统类别。

1.2 空间向量

三维向量来建立刚体的运动学方程通常需要两个等式:
{ f = m a C n C = I ω ˙ + ω × I ω \left\{ \begin{matrix} f=m{{a}_{C}} \\ {{n}_{C}}=I\dot{\omega }+\omega \times I\omega \\ \end{matrix} \right. {f=maCnC=Iω˙+ω×Iω
前者描述了力与加速度作用于刚体质心的线性关系;
后者描述了转矩与角加速度作用于刚体质心的关系;

用六维向量描述刚体运动——将加速度、角加速度整合为空间加速度向量(加速度矢)、力与力矩整合为空间力向量(力矢):
f = I a + υ × ∗ I υ f=Ia+\upsilon \times *I\upsilon f=Ia+υ×Iυ

其中: f f f是作用于刚体的力矢量, υ , a \upsilon,a υa为刚体的速度矢量与加速度矢量, I I I为刚体的空间惯性张量, × ∗ \times * ×为空间向量(六维)的叉乘。为了区分三维向量与六维矢量,可用上角标进行区分,如
f ^ {\hat{f}} f^——更紧凑,简化编码量

若两个刚体组成一个新的刚体,其空间惯性张量为:
I n e w = I 1 + I 2 {{I}_{new}}={{I}_{1}}+{{I}_{2}} Inew=I1+I2,其中: I 1 , I 2 {{I}_{1}},{{I}_{2}} I1,I2是两个刚体原有的空间惯性张量。
上述方程相较于三维惯性矩有三点改进:

  1. 用于计算新的质量
  2. 用于计算新的质心
  3. 用于计算关于新的质心下的新的转动惯量

1.3 单位与符号

角度默认为弧度制;
0 与 1 用于表示 零矩阵(向量) 与 单位矩阵;
上角标 − T ^{-T} T表示转置的逆: A − T = ( A − 1 ) T {{A}^{-T}}={{({{A}^{-1}})}^{T}} AT=(A1)T
λ ( i ) \lambda (i) λ(i):表示向量 λ \lambda λ的第i个元素;
A υ ^{A}\upsilon Aυ:表示A坐标系下的向量 υ \upsilon υ的表示

1.4 导读

本书组织上,第2章介绍空间向量代数,第3章分析刚体系统的动力学和运动。第4章介绍了系统模型的组件。

5~7章介绍了kinematic tree的几个重要算法:recursive Newton-Euler 逆动力学算法、前向动力学的composite-rigid-body & articulated-body 算法。第8章介绍了closed-loop systems动力学。

9~11章涉及了其他研究点。第9章主要介绍了floating-base systems的混合动力学算法。第10章探讨了数值稳定性和计算效率。第11章涉及跟物体接触和冲击的情况处理。

1.5 参考文献

The URL : http://users.rsise.anu.edu.au/~roy/spatial/.
或者搜索: Roy Featherstone

 类似资料: