【Pinocchio】文档-数学公式

bffa80eebd852ccbe0eeab1c9f83b3ab.png

数学公式

本节介绍皮诺曹(Pinocchio)所使用的数学公式,它是费瑟斯通(Featherstone)算法的基础。

刚体 rigid-bodies.md

几何

刚体系统是由不同部分组成的集合,这些部分包括关节、刚体和力。一个关节连接两个不同的物体,并整合这两个物体之间的所有运动学关系,使得两个物体之间能够产生相对位移。这种位移可分解为三个部分来描述:旋转、平移或者旋转与平移的组合。

旋转矩阵构成了所谓的特殊正交群 SO(n)
 。目前我们感兴趣的是其中的两个群:SO(2)
 和 SO(3)
 。SO(3)
 是三维空间中所有旋转的群。它的元素是3×3大小的矩阵。SO(2)
 对平面问题很有用。它是二维空间中的旋转群。它的元素是2×2大小的矩阵。

所有齐次变换矩阵组成的集合是特殊欧几里得群 SE(n)
 。与旋转矩阵类似,也有两个不同的群,SE(3)
 用于三维变换,SE(2)
 用于二维变换,即在平面内的变换。

对 SO(3)
 对象使用四元数

要对 SO(3)
 对象使用四元数,我们有几种方法。我们可以像在 [处理李群几何](@ref md_doc_a - features_e - lie) 部分的 SE(3)
 示例中那样,去掉平移向量。

或者我们可以只考虑一次旋转而不是两次。例如,在与机器人自身相关的一个地标链接中,我们将起始位置视为这个地标的原点。

那么让我们考虑三维空间中的一个立方体。

5ac001ff6cc98ebc46ef976f7c613d76.gif

97a54e96b812ebc03b3bfc115f70b94e.jpeg

a45d419398ef2fb5a5b6c8882b5680fe.png

使用四元数的好处

确定与旋转对应的矩阵并非易事,所以很多时候物理问题是由对 

be1ce967afbce7ea49cb4b76ce9b3937.png

来定义的。与旋转组合相关的另一个问题被称为 “万向节锁”:我们可以在特定情况下看到它,例如当两个连续的关节具有相近甚至对齐的旋转轴时。在这种情况下,第一个角度的很大变化不会改变设备末端的位置。由于计算的近似性,机器人可能会在不知不觉中产生非常强烈的剧烈运动。为了解决这两个问题,我们使用四元数。

笛卡尔积

当然,笛卡尔积对于分析和描述我们欧几里得空间中的运动至关重要。但这里,它是特定于李代数的,这与定义我们空间的笛卡尔积不同。
笛卡尔积也可用于通过关联与李代数相关的空间(如 SE(n)
 和 SO(n)
 群)来创建一个特定空间。

例如,让我们考虑像Tiago这样的轮式机器人。它只能在地面上移动。可以将地面看作一个平面。机器人可以绕z轴旋转,所以我们要处理一个 SE(2)
 对象。然后我们给这个 SE(2)
 对象连接一个有四个旋转关节的机械臂来伸展它的手臂,每个关节都有一个旋转自由度,所以它们是 SO(2)
 对象。为了处理这个集合,我们使用与李代数相关的笛卡尔积,从而得到一个新的空间,在这个空间中我们能够表示机器人及其手臂所有可能的轨迹。

向量空间

如果你想创建一个切空间来简化轨迹的计算,就需要使用向量空间。实际上,切空间是一个向量空间,它是所有速度向量的集合。
让我们考虑一个有轨迹的物体,它的所有点都有一个与轨迹相切的速度,与一个速度相关且经过轨迹上某一点的空间就是空间。

此外,通过使用向量空间,我们有可能利用它的性质,比如欧几里得叉乘算子和线性组合的性质。
然而,重要的是要知道这里的 “向量空间” 与李代数相关,这与我们通常处理的向量空间是不同的。

运动学

动力学

关节动力学 joints dynamics

几何

关节并非简单的物体,处理起来可能颇具难度。为便于对其进行描述,Pinocchio 使用了李代数,这在《处理李群几何》章节中有阐述。下面我们以基础关节为例,用李代数来表示它们:

28d761f33e6b37f85493622404a4068c.png

95f381c36618c5e3cc6bfb93339fd9e7.png

构型空间 Configuration Space

运动学

运动链是一种数学模型,它能够根据施加到每个关节的旋转(可能还有平移),计算出由机器人连续关节连接的所有元件的位置,特别是末端元件的位姿。计算从初始元件的位姿开始,逐步进行。除了连续计算过程中的任何舍入误差外,最终元件的位姿在数学上是唯一且完全确定的。

在实际中,问题则大不相同。我们知道初始元件的位姿(例如机器人底座),并且我们希望设定其某个元件(通常是末端元件)的位姿,比如机器人手臂末端夹具的位姿。一般情况下,有多种关节旋转组合都能得到相同的最终位姿。通过观察我们的手可以在不同的肩部和手腕旋转组合下,以相同的姿势握住杯子,就可以很容易验证这一点。

逆运动学(通常缩写为 IK)指的是所有为了获得期望位姿而计算位置和旋转的方法。由于该问题可能存在多种解决方案,因此必须使用优化技术。机器人技术中使用的逆运动学方法可以考虑机器人的技术数据,例如通过保持机器人重心的位置,或者防止机器人倾倒。

最后需要注意的是,即使只有一种方法可以获得最终位姿,旋转也可以按不同顺序进行,并且每种情况下末端元件的轨迹都会不同。

在下图所示的情况下,存在大量可能性,手臂可能做出弯曲或直线轨迹,旋转可能在平移之前或之后进行等等。

TODO:添加 Pyrene 的动态图片

切空间

关节列表

关节是机器人在其环境中移动的关键组件。从某种程度上说,关节就如同机器人的关节部位。关节有多种类型,每种都由其形状和自由度来表征:

  • 旋转关节

  • 棱柱关节

  • 圆柱关节

  • 球关节

  • 平移关节

  • 自由浮动关节

此外,我们可以通过相互组合这些关节来创建更复杂的关节,称为复合关节

旋转关节

我们要处理的最简单的旋转关节就是旋转关节,它只有一个自由度,因此我们可以专注于这一点。我们可以找到三种不同类型的旋转关节,每种类型可以围绕三个轴(x 轴、y 轴或 z 轴)中的一个进行旋转。旋转关节用于描述旋转运动。

48e29877eeac96efe90b0f9527e46367.gif

棱柱关节

这同样是一个自由度为一的关节,但这次不再是旋转。通过棱柱关节,我们能够描述平移运动。与旋转关节类似,我们可以设置三种不同的棱柱关节,每种沿着一个轴(x 轴、y 轴或 z 轴)运动。

cfd6f9137e9bc115f9cf4d24f228ae98.gif

圆柱关节

圆柱关节有两个自由度,一个用于旋转,另一个用于平移。

10cc429efbf2f5be069e98030f8ed108.gif

球关节

球关节与人类关节最为相似,例如它和我们的髋关节很接近,但即使我们的身体有所限制,也无法围绕三个轴中的任何一个进行完整的转动。这个关节几乎相同,只是它可以围绕自身进行完整的旋转。所以这个关节可以围绕三个轴运动。它使机器人能够像我们一样移动其部件,甚至表现更好。

27379e502c4b1645accec2e5014eaaef.gif

平面关节

顾名思义,平面关节允许物体在平面内进行运动。实际上,它允许两种平移和一种旋转,因此它有三个自由度。我们在日常生活中随处可见这种运动类型,汽车的运动就是如此,当我们在平坦的地面上行走时大多也是这种运动,例如这正是 Tiago(机器人)的运动方式。

9c523feaeeb928d3a4b3cbe203b83515.gif

平面关节的构型向量是四维的,坐标为 (x,y,cos⁡θ,sin⁡θ)
,代表相应的仿射变换矩阵:

7a7cffc98dbee5792b6c92a100988c17.png

平移关节

这种关节与球关节互补,它使得物体能够在三维空间中移动,但仅通过平移。这是一个自由度为三的关节。为了将其与我们的身体联系起来,我们可以想象固定脚踝关节以防止旋转,然后通过抬起和放下、上下、左右以及前后移动我们的脚。这正是平移关节所允许的运动。

自由浮动关节

这个关节允许在三维空间中进行具有六个自由度的自由运动。由于它所带来的多种可能性,它也是最难控制的非复合关节。

速查表:SE(3) 运算

刚体变换

3c9f249913ab424663d9999381669355.png

复合变换

3fd1598f730638bcd837d6e86c988ac8.png

运动应用

ad1d00e56fc1b6d984c56d7a5093a758.png

力的应用

5d58ab1c70d1936b8d1c6b96389d506b.png

惯性

惯性应用

1ec5200a6203deb1b2611df053e13869.png

惯性相加

43c064af12a70c74eb9eee603f520301.png

叉积

运动 - 运动叉积

f8e636bd8d1f80b0a7d4ed43ce50fdb0.png

运动 - 力叉积

7077f8dd9e04426322ac47be27c5779c.png

关节

e5f6daeb649e3a1a89f39fc9b47b95e4.png

递归牛顿 - 欧拉算法(RNEA)

初始化

b2b0e34b91a061127d6c44d05ba4d32d.png

前向循环

771c40a32f5903b002726f60b6f2a821.png

后向循环

9fc0462796ae431ed61b785a14708496.png

注意

41eb7cd4da836ed502556aa339db1e3d.png

https://gepettoweb.laas.fr/doc/stack-of-tasks/pinocchio/master/doxygen-html/md_doc_c_maths_se3.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值