【作业锦集】机器人学导论-空间变换及Matlab实现(part-1)
声明:
本文最早发布于2022-03-18,转载请注明出处
若有疑问请第一时间在评论区或者私信作者交流
前言:
最近需要完成一个作业,即程序实现《机器人学导论》中的齐次变换矩阵,并实现空间变换的动态效果。经过细致推敲,作者在愉快地交上作业后便留下了此文,用于交流和学习。本文主要内容来自于作业报告(原因是作者懒,不想改太多),涉及齐次变换矩阵的介绍和Matlab程序的设计思路。总而言之,谨以此文来进行记录和学习交流。
作业要求

作业的要求就是将上面的过程给动态化。不过为了让程序更具备一般性,我们仅考虑局部坐标系的变换情况,而不会特别的去考虑P点该怎么计算。因为一但知道变换后的局部坐标系的位置和姿态,便可以很轻易的计算出P点的坐标。
先放一个最终的动态效果图

正文
先介绍下齐次变换矩阵

齐次变换矩阵F主要分成两部分,第一部分是一个3*3的矩阵,代表了局部坐标系的坐标轴的正向方向,其由三个单位方向向量组成。
第二部分则代表局部坐标系原点在全局坐标系中的坐标。至于矩阵的第4行,可以简单地理解为向量的长度(其实这并不准确,不过这里不再赘述,因为不是重点)
1.平移效果的实现
在齐次变换矩阵 F 中, 的实际含义便是局部参考系的原点在全局坐标系中的坐标。此外,我们知道,单纯平移操作并不会改变局部坐标轴
的方向(即没有旋转),而是仅仅改变P点相当于全局坐标系的坐标
。
那么,只要设置一个变量用于储存P点的坐标,然后在每次平移后,按P点的位置来绘制局部坐标系即可。

平移的Matlab核心代码(部分),这里我们仅用图片的方式呈现一种思路。

2.旋转效果的实现
在理论计算中,旋转效果的实现依赖于旋转矩阵(实际上这是一种线性变换,空间的映射)。例如若是绕X轴旋转度,计算过程如下图所示:

其中为P在全局坐标系中的坐标,
为P点在局部坐标系中的坐标,而
代表绕X轴旋转角度
。
遵循同样的思路,我们不关注P点前后的计算结果,因为程序实现比较复杂。重点的关注对象是旋转矩阵以及其内部隐含的信息。回到齐次矩阵F,其组成除了原点外,还有局部坐标轴矩阵
。分析矩阵,便可以知道局部坐标轴
的朝向。
下图是一个齐次变换矩阵的实例

单位方向向量在矩阵T中对应的便是
,其代表局部坐标系的其中一个坐标轴
在全局参考系的X、Y和Z轴上的分量分别为1、0和0。更具体地说,便是该坐标轴和全局参考系中的X轴同方向(注意,比例因子为0,代表无穷远,加上方向便是坐标轴)。
将矩阵和旋转矩阵进行左乘,便可以得到旋转之后的矩阵局部坐标系矩阵
。我们只需要解读每一次旋转后矩阵的信息,便可以实现想要的旋转效果。特别地,由于计算精度的误差,我们这里只采用90度旋转,其正余弦值在-1,1和0之间变动。
常见的旋转矩阵如下:

旋转效果的核心代码为:

最终实现效果在开头已经给出。
结语
最近一直在实现一种编程思路,将代码封装成各个模块便可以像搭积木一样实现不同的过程。这次也是这样处理。例如这次是这样实现三个操作的。

感兴趣的朋友可以关注博客,不定期更新。
更多推荐



所有评论(0)