本系列教程作者小鱼 公众号鱼香ROS QQ交流群139707339 教学视频地址小鱼的B站 完整文档地址鱼香ROS官网 版权声明如非允许禁止转载与商业用途。
7.3.1 齐次坐标变换
前面几节中小鱼带你一起学习了使用TF进行坐标的变换也带你通过旋转和平移求解了下坐标的变换关系但计算的过程中旋转和平移是分开计算的那有没有一种方法可以让旋转矩阵和平移向量合并到同一个矩阵里呢
答案是有的我们可以将3∗33*33∗3的旋转矩阵和3∗13*13∗1的平移矩阵进行组合并添加一行(0,0,0,1)使其变成一个4∗44*44∗4的方阵其组合方式如下
有旋转矩阵 R[r11r12r13r21r22r23r31r32r33](旋转矩阵)R \begin{bmatrix}{r_{11}}⎣⎡r11r21r31r12r22r32r13r23r33⎦⎤(旋转矩阵) 平移矩阵 P[xyz](平移矩阵)P \begin{bmatrix}{x}\\{y}\\{z}\\\end{bmatrix} \tag{平移矩阵} P⎣⎡xyz⎦⎤(平移矩阵)
合并成齐次变换矩阵 T[r11r12r13xr21r22r23yr31r32r33z0001](齐次矩阵)T \begin{bmatrix}{r_{11}}⎣⎢⎢⎡r11r21r310r12r22r320r13r23r330xyz1⎦⎥⎥⎤(齐次矩阵)
为什么要这样写我们可以简单的推导一下矩阵是支持分块运算的我们将上面的矩阵进行分块 T[RP01](齐次矩阵)T \begin{bmatrix}{R}[R0P1](齐次矩阵) 假设BAT^A_BTBAT表示A坐标系到B坐标的齐次变换B坐标系下的点C坐标为CBP^B_CPCBP,求C在A坐标系下的坐标CAP^A_CPCAP
我们将BAT^A_BTBAT乘CBP^B_CPCBP上可得 CAP[BARBAP01][CBP1]BARCBPBAP^A_CP \begin{bmatrix}{^A_BR} {^A_BR}{^B_CP}^A_BP CAP[BAR0BAP1][CBP1]BARCBPBAP 根据前面学习的平移旋转复合坐标变换公式,正确的结果如下 CAPBARCBPBAP^A_CP {^A_BR}{^B_CP}^A_BP CAPBARCBPBAP 你会发现两者最终结果完全相同也就是说我们的平移加旋转复合变换可以直接用齐次变换矩阵代替。
1.齐次变换矩阵特性
接着我们来探索一下齐次变换矩阵的一些特性
2.1.齐次变换矩阵的符号表示
一般使用H或者T来表示齐次变换矩阵矩阵的左上角标明参考坐标系矩阵左下角标定目标坐标系比如BAT^A_BTBAT表示A坐标系到B坐标系的变换关系(平移旋转)
2.2.齐次变换矩阵的逆的几何含义
就像矩阵的逆一样齐次变换矩阵也有逆其的逆也有对应的几何含义比如
比如BAT^A_BTBAT表示A坐标系到B坐标系的变换关系
那么
BAT^A_BTBAT的逆BAT−1ABT^A_BT^{-1}^B_ATBAT−1ABT表示B坐标系到A坐标系的变换关系
2.3.齐次变换矩阵的乘法的几何含义
3.3.1齐次矩阵与平移向量相乘
齐次矩阵与平移向量相乘即可求出某个向量在另一坐标系下的表示上面例子中即是如此。
3.3.2齐次矩阵与齐次矩阵相乘
齐次矩阵与齐次矩阵相乘可以转换不同坐标系之间的关系比如 BATCBTCAT^A_BT^B_CT^A_CT BATCBTCAT 比如当我们有一个六自由度的机械臂知道每两个相邻关节之间的关系那么就可以通过其次矩阵相乘的方法求出关节6在关节0下的位置和姿态 10T21T32T43T54T65T60T^0_1T^1_2T^2_3T^3_4T^4_5T^5_6T^0_6T 10T21T32T43T54T65T60T
3.练习
练习小鱼放到了下一节了毕竟不希望大家用手来算~
技术交流
-
微信公众号及交流群鱼香ROS
-
小鱼微信AiIotRobot
-
QQ交流群139707339
-
版权保护已加入“维权骑士”rightknights.com的版权保护计划
作者介绍
我是小鱼机器人领域资深玩家现深圳某独脚兽机器人算法工程师一枚 初中学习编程高中开始接触机器人大学期间打机器人相关比赛实现月入2W比赛奖金 目前在输出机器人学习指南、论文注解、工作经验欢迎大家关注小鱼一起交流技术学习机器人