[人体运动分析]GCS-LCS坐标系的几何变换

[人体运动分析]GCS-LCS坐标系的几何变换

      • 一、参数表示
      • 二、平动公式
      • 三、旋转矩阵
        • 1.正交矩阵
        • 2.矩阵内元素
      • 四、考虑旋转的平动
          • 1.已知点在 *GCS* 坐标系内的坐标
            • (1).先旋转,再平动
            • (2).先平动,再旋转
          • 2.已知点在 *LCS* 坐标系内的坐标
      • 五、总结

前记:本文适合有一定基础的人进行阅读。
(总结自本人的学习报告)

  本文在给出单独一种变换(平动或旋转)所对应的坐标变换公式之后,通过在考虑既有平动又有旋转的实际实验情况,给出在求解点分别在 GCSLCS 内时的坐标值,规定求解的几何变换次序是有意义且重要的的观点。

一、参数表示

1.GCS:世界坐标系/实验室坐标系
2.LCS: 局部坐标系
3. P P P: 表示点在 GCS 坐标系中的坐标
4. P ′ P^{'} P:表示点在 LCS 坐标系中的坐标

二、平动公式

  如果 LCS 相对于 GCS 没有旋转变换,则点在 LCS 坐标系内的坐标值映射到 GCS 坐标系内的坐标值,其变换表达式可以表示为
P ⃗ = P ⃗ ′ + O ⃗ \vec{P} = \vec{P}^{'} + \vec{O} P =P +O 用列向量来表示,则可以为
[ P x P y P z ] = [ P x ′ P y ′ P z ′ ] + [ O x O y O z ] \begin{bmatrix}P_{x}\\P_{y}\\P_{z}\end{bmatrix} = \begin{bmatrix}P^{'}_{x}\\P^{'}_{y}\\P^{'}_{z}\end{bmatrix} + \begin{bmatrix}O_{x}\\O_{y}\\O_{z}\end{bmatrix} PxPyPz=PxPyPz+OxOyOz其中 O ⃗ \vec{O} O 表示 GCS 原点到 LCS 原点的平动向量。

三、旋转矩阵

  很多时候,原点定义在身体节段上的 LCS 相对于世界坐标系 GCS 有旋转变换关系。 此时,某点在 GCS 内的坐标值,当在 LCS 内进行表示的时候,就需要考虑 LCS 相对于 GCS 的旋转。这种旋转,其本质可以表述为对坐标系坐标轴的方向向量的旋转。
  如果不考虑 LCS 相对于 GCS 的平动,则点在 GCS 内的坐标映射到 LCS 坐标系,其旋转变换可以表示为
P ⃗ ′ = R P ⃗ \vec{P}^{'} = R\vec{P} P =RP 其中 R = [ i ^ x i ^ y i ^ z j ^ x j ^ y j ^ z k ^ x k ^ y k ^ z ] R=\left[\begin{array}{ccc} \hat{i}_{x} & \hat{i}_{y} & \hat{i}_{z} \\ \hat{j}_{x} & \hat{j}_{y} & \hat{j}_{z} \\ \hat{k}_{x} & \hat{k}_{y} & \hat{k}_{z} \end{array}\right] R=i^xj^xk^xi^yj^yk^yi^zj^zk^z 旋转矩阵R 有其性质。

1.正交矩阵

  首先,旋转矩阵 R 是一个正交矩阵,即矩阵内的每个列向量的模均为单位1。此外,旋转矩阵 R 的逆矩阵即 R 的转置(来自正则矩阵的性质)。

2.矩阵内元素

  R 中每一个列向量是 LCS 坐标系坐标轴在 GCS 坐标系中的投影。R 中每一个元素表示一个方向余弦,即旋转矩阵R 有9个方向余弦。

(......待增加)

四、考虑旋转的平动

  实际中,身体节段的 LCS 坐标系相对于 GCS 坐标系是有平动和旋转关系的。那么根据上述的公式,我们很容易对坐标点在 LCS 坐标系与 GCS 坐标系之间进行坐标变换。

1.已知点在 GCS 坐标系内的坐标

  通过单独一种几何变换来求解点在 LCS 坐标系内的坐标,则有旋转公式
P ⃗ ′ = R P ⃗ \vec{P}^{'} = R\vec{P} P =RP 和平动公式 P ⃗ ′ = P ⃗ − O ⃗ \vec{P}^{'} = \vec{P} - \vec{O} P =P O 那么,对于两个公式的使用,我们自然而然就会想到有如下两种应用方式。

(1).先旋转,再平动

P ⃗ ′ = R P ⃗ − O ⃗ 1 \vec{P}^{'} = R\vec{P} - \vec{O}_{1} P =RP O 1

(2).先平动,再旋转

P ⃗ ′ = R ( P ⃗ − O ⃗ 2 ) \vec{P}^{'} = R(\vec{P} - \vec{O}_{2}) P =R(P O 2)这里就暴露出一个问题,方式(1)(2)中的平动向量 O ⃗ 1 \vec{O}_{1} O 1 O ⃗ 2 \vec{O}_{2} O 2 并不一致,那么,我们所说的平动向量 O ⃗ \vec{O} O 究竟指的是哪一个呢?
  方式(1)中的平动向量 O ⃗ 1 \vec{O}_{1} O 1 相当于同时也对平动向量 O ⃗ 2 \vec{O}_{2} O 2 乘上了一个旋转矩阵 R ,如果方式(1)中的平动向量 O ⃗ 1 \vec{O}_{1} O 1 是我们所说的平动向量 O ⃗ \vec{O} O ,那么 O ⃗ 2 = O ⃗ / R \vec{O}_{2} = \vec{O}/R O 2=O /R ;反之, O ⃗ 1 = R O ⃗ \vec{O}_{1} = R\vec{O} O 1=RO
  我们给出的平动向量 O ⃗ \vec{O} O GCS 坐标系的原点到 LCS 坐标系原点的平动向量,这个向量的意义是单纯的表达两个坐标系原点之间的距离和方向的向量,没有掺杂旋转变换的因素。也就是说,当我们拿到平动向量时,应当先对它进行代入处理,也就是方式(2)所采用的 “先平动,再转动” 中的 O ⃗ 2 \vec{O}_{2} O 2 即为我们所说的平动向量 O ⃗ \vec{O} O
  我们处理数据的次序必须保证最终平动向量 O ⃗ \vec{O} O 用于处理三轴方向相同的LCS坐标系和GCS坐标系,即,公式的使用次序非常重要。

2.已知点在 LCS 坐标系内的坐标

  有了以上的讨论,我们知道了
P ⃗ ′ = R ( P ⃗ − O ⃗ ) \vec{P}^{'} = R(\vec{P} - \vec{O}) P =R(P O )是我们 1 中所想要的变换表达式,其变换的思想是“先平动,再转动”。那么在 2 中,其表达仅需要做简单的变换即可,如
P ⃗ = R ′ P ⃗ ′ + O ⃗ \vec{P} = R^{'}\vec{P}^{'} + \vec{O} P =RP +O 即“先转动,再平动”,先把 LCS 坐标系旋转到与 GCS 坐标系相同的方向,再通过平动向量变换回来。

五、总结

  点在空间内的位置,需要通过其所在坐标系进行描述,其坐标值也只有对应其坐标系才有意义。所以说,我们对坐标进行的平移和旋转变换,其本质是对坐标系、坐标轴进行的平动和旋转,而对于在空间内的点,它们的空间位置是确定不变的,有变化的只是它们的坐标值。
  (题外话:因为所有的平动向量和旋转矩阵,都是在相对于世界坐标系 GCS 下来定义的,其不适用以任意点为原点进行几何变换,所以我们通常所想象的 “乘上一个旋转矩阵,使得一个球体围绕其球心进行旋转" 是无法通过简单乘上一个旋转矩阵而实现的。)
  在学习了单独一种变换(平动或旋转)所对应的坐标变换公式之后,我们确定了 “已知点在 GCS 内的坐标,求解点在 LCS 内的坐标” 和 “已知点在 LCS 内的坐标,求解点在 GCS 内的坐标” 的两种方向的求解方法,即分别是 “先平动,再转动” 和 “先转动,再平动”。确定求解过程中的几何变换的次序是有意义的,其依据是,保证平动向量 O ⃗ \vec{O} O 意义的纯粹,即仅仅是平动,没有经过任何旋转处理

你可能感兴趣的:(人体运动分析[笔记],线性代数,矩阵)