关于机器人运动学中变换矩阵左乘右乘的理解(2)-变换的观点

(0)缘由

这年复习考研,对矩阵有了更深入的理解,但对线性变换与基变换是有点混淆,偶然看了去年写的关于机器人运动学的文章,豁然开朗,遂写这篇文章分享一下所得,也是对上一片文章的拓展,所以读这篇文章前建议先看看前一片文章(还有想理解线代可以看看bilibili上3Blue1Brown的关于线性代数本质的视频,知乎上也有人整理过)。

(1)从两种变换到矩阵左右乘

{ 线 性 变 换 : u 1 ⃗ = A u 0 ⃗ 基 变 换 : u 1 ⃗ = A u 0 ⃗ \begin{cases} 线性变换: \vec{u_1}=A\vec{u_0}\\ 基变换:\vec{u_1}=A\vec{u_0}\end{cases} {线:u1 =Au0 :u1 =Au0

一看名字就知道这两种变换不是同一种东西,但它们的表达式竟然一模一样,让人不禁怀疑两个东西是不是等价的。

拿出这张图:

P1

为了解释直观方便,我们这里的矩阵 A A A是一个2x2的正交方阵(也就是机器人运动学中旋转矩阵常见到的那种),当然,矩阵 A A A非正交,只要它是一个行列式不为0的方阵,线性变换与基变换都是满足的,至于为什么,参见bilibili线性代数的本质视频。

根据上图很容易得到:

( x 1 y 1 ) = ( c o s ( β ) − s i n ( β ) s i n ( β ) c o s ( β ) ) ∗ ( x 0 y 0 ) \begin{pmatrix} x_1\\ y_1 \end{pmatrix}= \begin{pmatrix} cos(\beta) & -sin(\beta)\\ sin(\beta) & cos(\beta) \end{pmatrix}* \begin{pmatrix} x_0\\ y_0 \end{pmatrix} (x1y1)=(cos(β)sin(β)sin(β)cos(β))(x0y0)

对应到矩阵的线性变换: u 1 ⃗ = A u 0 ⃗ \vec{u_1}=A\vec{u_0} u1 =Au0 这个变换的作用就是将向量 u 0 ⃗ \vec{u_0} u0 在坐标系0中旋转了 β \beta β,因为是一个正交矩阵,矩阵的行列式为1,所以向量前后长度未发生改变。

再看这副图:

P1

同样很容易得到:

( x 1 y 1 ) = ( c o s ( β ) − s i n ( β ) s i n ( β ) c o s ( β ) ) ∗ ( x 0 y 0 ) \begin{pmatrix} x_1\\ y_1 \end{pmatrix}= \begin{pmatrix} cos(\beta) & -sin(\beta)\\ sin(\beta) & cos(\beta) \end{pmatrix}* \begin{pmatrix} x_0\\ y_0 \end{pmatrix} (x1y1)=(cos(β)sin(β)sin(β)cos(β))(x0y0)

我们发现形式竟然和上面的形式一模一样,但这里表示的意义就不同了,这里的向量并未发生变化,只是我们转动了一下我们的视角,从另外一个坐标系去看这个向量,我们怎么转换我们的视角呢?我们将坐标系旋转了 − β -\beta β度。所以这里的基变换: u 1 ⃗ = A u 0 ⃗ \vec{u_1}=A\vec{u_0} u1 =Au0 的意思是,我们已知在末端执行器坐标系下的向量为 u 0 ⃗ \vec{u_0} u0 ,我们将坐标系旋转了 − β -\beta β度,这样恰好变回了基坐标系中,在基坐标系下,向量的坐标为 u 1 ⃗ \vec{u_1} u1

(2)比较

v 2 = M 2 ∗ M 1 ∗ v 0 v_2=M_2*M_1*v_0 v2=M2M1v0(固定角)
v 2 = M 1 ∗ M 2 ∗ v 0 v_2=M_1*M_2*v_0 v2=M1M2v0(欧拉角)

对于固定角,在平面内旋转了两次 a a a β \beta β,最后得到 v 2 v_2 v2
对于欧拉角,末端执行器坐标系先旋转 − β -\beta β度,再旋转 − a -a a度,最后回到基坐标系,从末端执行器坐标系回到基坐标系,这是从左到右乘的;

若是从基坐标系到末端执行器坐标系:
v 0 = M 2 − 1 M 1 − 1 v 2 v_0=M_2^{-1}M_1^{-1}v_2 v0=M21M11v2
这又是从右到左乘的了,但它与固定角有实质的区别;可以发现欧拉角的右乘是根据欧拉角变化的逆(从基坐标到末端执行器坐标)的左乘推导而来的(定义的欧拉角是想从末端执行器坐标转换到基坐标)

这里同样可以发现,对于二维旋转 M 2 ∗ M 1 M_2*M_1 M2M1 M 1 ∗ M 2 M_1*M_2 M1M2的效果是相同的(实际上二维的 M 2 ∗ M 1 = M 1 ∗ M 2 M_2*M_1=M_1*M_2 M2M1=M1M2),但三维的效果就不同了,因为可能旋转轴的方向发生了改变,这时两种变换就不再相同了,但仍然可以通过线性变换与基变换的方式进行理解,因为在固定角中,坐标轴不会变,只是向量的变换;而在欧拉角中,相邻两次的坐标系他们有一个轴的方向不会发生变化,那就是旋转轴的方向

(3)更直观的类比

好比你坐在火车上,你坐的火车不动旁边的火车向前开(线性变换),与你做的火车向后开旁边的火车不动(基变换),你眼前所见到的景象都是一样的,但本质是不同的。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值