机器人学基础–左乘和右乘

本文探讨了机器人学中变换矩阵的左乘和右乘概念,指出左乘相对基准坐标系变换,右乘相对当前坐标系变换。通过坐标系和矢量的变换例子,阐述了左乘与右乘的计算方法及其在坐标变换中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

心得记录

变换矩阵的左乘和右乘的运动解释是不同的:变换顺序「从右向左」,指明运动是相对固定坐标系而言的;变换顺序「从左向右」,指明运动是相对运动坐标系而言的

结论:相对 基准坐标系 做变换是左乘,相对 当前坐标系 做变换是右乘

左乘和右乘的概念

存在一坐标系{A},坐标系{A}进行齐次坐标变换,得到{B},此时的变换矩阵 TBAT_B^ATBA坐标系{B}再进行一次齐次坐标变换,得到{C}, 此时的变换矩阵为 TCA=TCBTBAT_C^A = T_C^BT_B^ATCA=TCBTBA 时称为左乘,为 TCA=TBATCBT_C^A = T_B^AT_C^BTCA=TBATCB 时称为右乘。

变换矩阵的由来

坐标系{A}中的一矢量 ppp,记此时 pppp0p_0p0p0p_0p0 与坐标系{A}固连);p0p_0p0经过坐标系{A}的变换得到坐标系{B}后,相应的得到一个新位置,记此时 pppp1p_1p1p1p_1p1 与坐标系{B}固连,注意 p1p_1p1 在坐标系{B}中的坐标值就是 p0p_0p0);p1p_1p1经过坐标系{B}的变换得到坐标系{C}后,也相应的得到一个新位置,记此时 pppp2p_2p2p2p_2p2 与坐标系{B}固连,注意 p2p_2p2 在坐标系{B}中的坐标值也是 p0p_0p0)。

变换矩阵 TBAT_B^ATBA 的含义是坐标系{A}变换到坐标系{B}的变换矩阵(并没有提到变换的方式),但这里有一个问题(左乘和右乘区别的来源):TBAT_B^ATBA 是怎么计算的?——TBA=[RBAPBoA 01]T_B^A = \left[ \begin{matrix} R_B^A & P_{B_o}^A \\\ 0 & 1\end{matrix} \right]TBA=[RBA 0PBoA1],其中的 RBAR_B^ARBAPBoAP_{B_o}^APBoA 的计算直接导致了左乘和右乘。

以旋转矩阵为例,在坐标系{B}变换到坐标系{C}的过程中,RBA=Rot(x,θ)R_B^A = Rot(x,\theta)RBA=Rot(x,θ)xxx 的来源(坐标系{A}?坐标系{B}?)

现给出 p1=Rot(x,θ)p0p_1 = Rot(x, \theta) p_0p1=Rot(x,θ)p0(没有进行平移变换),其中 x 轴是指坐标系{A}中的 x 轴。

注意上式中各个变量的意义:

  • p1p_1p1:矢量 ppp 变换后的坐标
  • p0p_0p0:矢量 ppp 变换前的坐标(原坐标)
  • Rot(x,θ)Rot(x, \theta)Rot(x,θ):以矢量 p0p_0p0(原坐标)所在的坐标系的轴为旋转轴进行旋转(角度为 θ\thetaθ

也就是说 TBAT_B^ATBA 的基准坐标系是 坐标系{A}(原坐标系)

左乘与右乘

  1. 坐标系{B}变换到坐标系{C},变换基准是坐标系{A}

变换前 ppp 在{A}中的坐标为 p1p_1p1,变换后 ppp 在{A}中的坐标为 p2p_2p2,得到

p2=TCBp1p_2 = T_C^B p_1p2=TCBp1

因此有

p2=TCAp1=TCB(TBAp0)=TCBTBAp0p_2 = T_C^A p_1 = T_C^B (T_B^A p_0) = T_C^B T_B^A p_0p2=TCAp1=TCB(TBAp0)=TCBTBAp0
==> TCA=TCBTBAT_C^A = T_C^B T_B^ATCA=TCBTBA(左乘)

  1. 坐标系{B}变换到坐标系{C},变换基准是坐标系{B}

变换前 ppp 在{B}中的坐标为 p1Bp_1^Bp1B,变换后 ppp 在{B}中的坐标为 p2Bp_2^Bp2B,得到

p2B=TCBp1Bp_2^B = T_C^B p_1^Bp2B=TCBp1B

现在来看 p1B,p2Bp_1^B,p_2^Bp1B,p2Bp0,p1,p2p_0, p_1, p_2p0,p1,p2 之间的关系

p1B=p0p_1^B = p_0p1B=p0

p2=TBAp2Bp_2 = T_B^A p_2^Bp2=TBAp2B

因此有
{p2=TBAp2B=TBA(TCBp1B)=TBA(TCBp0)=TBATCBp0p2=TCAp0 \left\{ \begin{array}{l} p_2 = T_B^A p_2^B = T_B^A (T_C^B p_1^B) = T_B^A (T_C^B p_0) = T_B^A T_C^B p_0 \\ p_2 = T_C^A p_0 \end{array} \right. {p2=TBAp2B=TBA(TCBp1B)=TBA(TCBp0)=TBATCBp0p2=TCAp0

==> TCA=TBATCBT_C^A = T_B^AT_C^BTCA=TBATCB(右乘)

关于一些细节的说明

  • 教材《机器人学基础》里的 齐次变换矩阵 是在 2.3齐次坐标变换 中提出来的,但我个人认为齐次坐标矩阵只是齐次坐标变换问题的求解工具,而齐次变换矩阵本身的求解需要依靠坐标系变换(即上文内容)。
  • 关于变换矩阵的求解使用的是单独的矢量而不是坐标系的原因:请注意求解过程中矢量本身的值对求解过程并无作用(即矢量可以是任意值),而且,坐标系的本质也是一组基向量,所以可以直接将对坐标系的操作和这个对矢量的操作等同。
一些碎碎念
  • 一些零碎的吐槽记录

首先是最现实的解题:题目中常常会出现对于一个给定的点 ppp 问其在另一个坐标系中的坐标。这种问题也就是上面提到过的齐次坐标变换中提出的最核心的问题,但是这里面一点和上文有着极大的不同:ppp 是不会变的!这让我对本文方法求解出的齐次变换矩阵求解这种题时相当的迷惑
另外就是这本书中对于左乘和右乘并没有详细解释,唯一的说明就是本文开头的运动解释……好像也够做题了……
最后要吐槽的一个大的问题就是:关于左乘和右乘有一种说法:矢量问题是左乘,坐标系问题是右乘。刚开始变换矩阵的时候,这句话让我烦恼了两天……

如有错误欢迎指正

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值