3
18
2019
1

什么是“右乘联体左乘基”

最近在上一门课,叫做《机器人导论》。最近一段时间这门课主要讲机器人的运动学相关内容,其实就是一些具体应用场景下的坐标变换。其中,在讲“联体坐标变换”时有这么一句话,叫“右乘联体左乘基”。开始没有过多引起注意,直到后来两次课听得越来越晕,才在严神一句话下点醒:

“你知道你为什么听不懂?因为你没有深刻理解‘右乘联体左乘基’的含义,只是死记硬背……”
 
接着,借着严神给的资料和自己之前看过的一些内容,说一下现在自己对这个问题的理解。
首先,让我们看看书上对于联体坐标变换给出的定义:
 
对于坐标系\(\left \{ A \right \}\) 、 \(\left \{ B \right \}\) 和 \(\left \{ C \right \}\),假设\(\left \{ A \right \}\)是参考坐标系(基坐标系),则\(\left \{ B \right \}\)相对于\(\left \{ A \right \}\)的坐标变换以及\(\left \{ C \right \}\)相对于\(\left \{ B \right \}\)的坐标变换称为联体坐标变换。
设\(\left \{ B \right \}\)在\(\left \{ A \right \}\)中的表示为\(T_{1}\),\(\left \{ C \right \}\)在\(\left \{ B \right \}\)中的表示为\(T_{2}\),刚体在\(\left \{ C \right \}\)中的表示为\(T_{3}\),则
\[T=T_{1}T_{2}T_{3}\]
上式可以理解为,从基坐标系变换到联体坐标系的变换采用右乘;也可以理解为,从基坐标系变换到基坐标系的变换采用左乘。简记为“右乘联体左乘基”。

说实话,看了半天,我还是没有理解什么是联体坐标变换(智商余额不足,需要充值了……)。
 
现在回忆起来,感觉书上定义的主要问题是,没有明确说明上式中的哪部分“左/右乘”被定义为“基/联体变换”。其实最简单的理解方式为:
  • 如果对刚体进行多次线性变换,每次变换都相对于基坐标系变换,则称为“基变换”;
  • 如果对刚体进行多次线性变换,每次变换都相对于新坐标系变换,则成为“联体变换”。
举例来说,比如刚体\(r\)在坐标系\(\left \{ A \right \}\) 中表示为\(T_{r}\),现在将刚体在坐标系\(\left \{ A \right \}\) 中先后绕\(y\)\(z\)\(x\)轴旋转30、15、45度,那么这一变换可以表示为:
\[
T=T_3 \cdot T_2 \cdot T_1 = Rot(x, \pi/4) Rot(z, \pi/12) Rot(y, \pi/6)
\]
由于每次变换都相对于坐标系\(\left \{ A \right \}\)进行变换,因此称为“基变换”;又由于新变换都在前次变换矩阵的左侧乘上新的变换矩阵,因此相应的变换操作为“左乘”;

另一方面,也可以认为一与刚体固联的假想坐标系\(\left \{ A^{'} \right \}\)开始时与坐标系\(\left \{ A \right \}\) 重合,然后该坐标系先绕\(x\)轴转了45度(变成了与坐标系\(\left \{ A \right \}\)不重合的状态),然后该坐标系又绕自身\(z\)轴转了15度,然后该坐标系又绕自身\(y\)轴转了30度。
由于每次变换都相对于变换后的坐标系进行变换,因此称为“联体变换”;又由于新变换都在前次变换矩阵的右侧乘上新的变换矩阵,因此相应的变换操作为“右乘”。

 

Category: 未分类 | Tags:
8
12
2014
4

收到“用户配置文件服务登录失败”错误消息的解决方案

前阵子在surface pro上使用WINDOWS 8.1操作系统时,突然出现了奇怪的问题:有一次登录系统时,不小心输错了密码,然而系统没有立刻提示密码输入错误,而是一直在“请等待”状态下(圈圈一直转),过了估计有10分钟才提示密码错误,请重新输入。于是重新输入后顺利进入系统。

如果问题仅仅止于此,也算不上奇怪。接下来使用电脑的时候突然发现,当鼠标右击某些图标/按钮时,explorer.exe进程会崩溃!比如一个桌面图标的快捷方式,或者win 8.1的左下角的那个彩旗图标。多次重启后仍存在这个问题。

最开始我怀疑,是最近安装的某个软件和win 8.1不兼容,结果把近两天安装的新软件都卸载掉,还是存在这个问题。一时没有了思路,于是决定打开系统日志看看。

打开日志,果然有一条不常见的错误,就是标题中提到的:用户配置文件服务登录失败。百度了一下解决方案,最终在微软的帮助网站上找到了。链接:http://support.microsoft.com/kb/947215/zh-cn

步骤上和网站给出的解决方案稍有不同,但是按照其步骤,有的就修改,没有的就不改,保存后重启计算机,OK,问题解决~

Category: 杂七杂八 | Tags:
4
3
2014
0

[MapReduce学习]02.使用Eclipse调试MapReduce工程

本篇文章介绍如何使用Hadoop调试自己编写的MapReduce程序(Java)。文章以创建一个WordCount程序并进行调试为例,仅涉及操作步骤,不涉及原理和讲解。Hadoop安装配置请参见第一篇文章。

 

3
23
2014
0

[MapReduce学习]01.Ubuntu下配置Hadoop 2.3.0单节点模式

以下操作在32位Ubuntu 12.04版本下测试通过,64位系统配置64位版本Hadoop请自行搜索源代码编译相关内容。

 

Category: MapReduce | Tags: ubuntu 配置 Hadoop
3
21
2014
1

[C#]利用正则表达式获取网页数据

最近两天处于课程需要,打算从网上收集一些感兴趣的数据。由于最近大家对于环境问题越发重视,于是打算将国内各城市每天的空气质量日报数据收集起来。登录环保部网站之后,果然以表格的形式提供在了网站上。但是没有提供数据导出或者打包下载这些功能。于是又在网上搜索从网页获取数据的方法。其中,不少人都提到和推荐抓取网页源代码,然后用正则表达式进行获取的方法。于是又先对正则表达式进行了一番了解,然后又一番折腾,总算完成了任务。

 

2
28
2014
2

“伪”随机更好玩?

去年年底,学院举办迎新(年)晚会。晚会现场设置了抽奖环节,流程大概是这样的:

入场时,每位同学领取一张写有编号的票(编号从1连续编到600多,就是说学院里每人一张)。抽奖环节开始后,主持人通过之前编写好的均匀随机数生成软件,抽取出若干个不同的数字,手上拿有对应数字的同学就是幸运观众。

 

Category: 杂七杂八 | Tags: 伪随机 抽签
12
18
2013
0

[C++]不允许使用不完整的类

编译器出现该提示,检查是否存在以下几个问题:

  1. 编写类时结尾是否忘记了分号“;”
  2. 声明数组时没有给出大小;
  3. 缺少引用必要的头文件。
Category: C++/C# | Tags: c++ 编译错误
12
17
2013
2

一些符号的英语读法

在网上看到这样一个问题“How to pronouce these symbols”,一些较为常见的符号用英语应该怎么说,下面是给出的一些回答:

  • @ - at
  • * - asterisk / star
  • % - percent (sign)
  • ^ - caret
  • ~ - tilde
  • # - hash(UK) | number sign / pound sign(US)

当然,C#中的#读作“sharp”,不念“井”……

Category: 杂七杂八 | Tags: 符号 读法

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com