【笔记】机器人空间坐标变换

1 篇文章 0 订阅
1 篇文章 0 订阅

主要包括机器人空间的位姿变换以及C++编程实现

说明:本文章中的大部分图片来自南开大学-人工智能学院的《机器人学导论》课件

空间的描述

1. 位置的描述(仅笛卡尔坐标系)

在一个笛卡尔坐标系 (Cartesian coordinate)下,可以用 3 维的位置矢量来确定该空间内任一点的位置

P A = [ P x , P y , P z ] T P^A=[P{x}, P{y}, P{z}]^T PA=[Px,Py,Pz]T
在这里插入图片描述
其中, P x , P y , P z P_x,P_y,P_z Px,Py,Pz P P P 点在坐标系的三个坐标轴上坐标分量

2. 姿态的描述

注意:这里只以旋转矩阵和3维平移向量为例,欧拉角和四元数后面会介绍

旋转矩阵R: R B A = [ X B A , Y B A , Z B A ] R^A _B=[X^A _B, Y^A _B, Z^A _B] RBA=[XBA,YBA,ZBA]
R B A = [ X B ⋅ X A Y B ⋅ X A Z B ⋅ X A X B ⋅ Y A Y B ⋅ Y A Z B ⋅ Y A X B ⋅ Z A Y B ⋅ Z A Z B ⋅ Z A ] R^A _B=\begin{bmatrix} X_B\cdot X_A & Y_B\cdot X_A & Z_B\cdot X_A \\ X_B\cdot Y_A & Y_B\cdot Y_A & Z_B\cdot Y_A \\ X_B\cdot Z_A & Y_B\cdot Z_A & Z_B\cdot Z_A \end{bmatrix} RBA=XBXAXBYAXBZAYBXAYBYAYBZAZBXAZBYAZBZA

旋转矩阵的性质:

  • 正交矩阵: R B A = R A B − 1 = R A B T R^A _B={R^B _A}^{-1}={R^B _A}^{T} RBA=RAB1=RABT

3. 位姿的描述

{ B } = { R B A , P B O R G A } \{B\}=\{R^A _B,P^A _{BORG}\} {B}={RBA,PBORGA} 其中, P B O R G A P^A _{BORG} PBORGA代表 B {B} B坐标系的原点在 A {A} A坐标系下的位置

空间的变化

1. 平移坐标系的映射

在这里插入图片描述
其中: P A P^A PA代表 { A } \{A\} {A}坐标系的原点在世界坐标系下的位置, P B P^B PB代表 { B } \{B\} {B}坐标系的原点在世界坐标系下的位置, { A } \{A\} {A} { B } \{B\} {B}之间没有旋转关系,因此只是单纯的加上平移量就可以了。

2. 旋转坐标系的映射

在这里插入图片描述
旋转映射: P A = R B A P B P^A=R^A _BP^B PA=RBAPB
其中

  • R B A R^A _B RBA代表 { B } \{B\} {B}坐标系到 { A } \{A\} {A}坐标系之间的旋转变换
  • R B A R^A _B RBA各列向量模均为1,并且这些单位矢量相互正交

3. 一般坐标系的映射

在这里插入图片描述

在这里插入图片描述
其中

  • P B P^B PB代表 在 { B } \{B\} {B}坐标系下 P P P点的位置, P A P^A PA代表 在 { A } \{A\} {A}坐标系下 P P P点的位置。

4. 齐次变换矩阵

在这里插入图片描述
其中:

  • 它是坐标系的描述: T B A T^A _B TBA表示相对于坐标系 { A } \{A\} {A}的坐标系 { B } \{B\} {B}的齐次变换。(也就是坐标系 { B } \{B\} {B}变换到坐标系 { A } \{A\} {A}的变换)

5. 混合变换

第一种情况

在这里插入图片描述
已知 { B } \{B\} {B}坐标系到 { A } \{A\} {A}坐标系的变换 T B A T^A _B TBA,已知 { C } \{C\} {C}坐标系到 { B } \{B\} {B}坐标系的变换 T C B T^B _C TCB,求 { C } \{C\} {C}坐标系到 { A } \{A\} {A}坐标系的变换 T C A T^A _C TCA

第二种情况

在这里插入图片描述已知 { B } \{B\} {B}坐标系到 { A } \{A\} {A}坐标系的变换 T B A T^A _B TBA,求 { A } \{A\} {A}坐标系到 { B } \{B\} {B}坐标系的变换 T A B T^B _A TAB

注意,这里的 P A O R G B P^B _{AORG} PAORGB并不是单纯的加一个负号,而是等于 − R B A T P B O R G A -{R^A _B}^TP^A _{BORG} RBATPBORGA
注意,在Eigen中,求反变换只需要运用函数inverse()就可以,这里介绍的只是一种简单的求解方法。

其他姿态描述方法

Z-Y-X 欧拉角

在这里插入图片描述
首先将坐标系 { B } \{B\} {B} 和一个已知参考坐标系 { A } \{A\} {A} 重合。先将 { B } \{B\} {B} Z ^ B Ẑ_B Z^B 旋转 α α α 角,绕 Y ^ B Ŷ_B Y^B 旋转 β β β 角,最后绕 X ^ B X̂_B X^B 旋转 γ γ γ 角。
注意:欧拉角是绕着旋转后的轴旋转的,不是固定轴
右乘关系

编程实现

注意

  • 以下编程示例均摘自Lio-mapping
  • 编程语言:C++
  • 调用库:Eigen

四元数和三维向量转换为Eigen::Transform

Eigen::Transform<T, 3, Eigen::TransformTraits::Affine> transform;
// 四元数先归一化才能描述旋转
transform.linear() = rot.normalized().toRotationMatrix();
transform.translation() = pos;
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值