GD&T培训|基准偏移系列7:坐标变换|GD&T几何尺寸和公差|GDTP
前面我们用了多篇文章讨论了基准偏移这个话题,今天我们继续这个话题,今天涉及到的内容是坐标变换。
这次的话题数学味道比较重,各位小伙伴要有思想准备。因为我们发现,在深挖基准偏移这个话题的时候,数学(尤其是线性代数)是一个避不开的坎。
废话少说,直接说我们要解决什么问题吧。
已知零件图标注如下:
图1 图纸标注
当我们的质量部门收到图1这个实际的钣金件后(注意,这个钣金件不完美),放到影像仪上去测量φ14这个孔的位置度(图1中红圈部分),先不考虑每个孔的形状误差,假设我们已经测得了图1中3个孔的中心的坐标值(在机器坐标系中),见下图:
图2 在机器坐标系中3个孔的坐标
我们现在要解决的问题是,基于图2中的3个孔的坐标值(包括基准B孔,基准C孔和被测孔D孔),如何计算D孔的位置度误差?
注意,为了从简单的案例入手,我们故意选了薄壁的钣金件,一个2维的案例,所以没有Z坐标。
要得出图2中D孔的位置度误差(也就是实测位置度),思路非常简单,只要将实际的被测要素和理想要素进行比对,比对的方法采用最小区域法就能解决。
我们说人话呢,就是直接计算被测要素到理想要素的距离的2倍,就是位置度的几何误差了。(如果对这段话表示看不懂的小伙伴,建议看本文最后的链接《测量的本质》)。
被测要素的坐标,也就是图2中D孔中心的坐标,我们是清楚的,在机器坐标系中,PD的坐标为(56.31,52.59)。理想要素,也就是图1中φ14孔的中心PI的坐标,我们也是清楚的,在基准坐标系中,它的坐标为(20,17),见下图:
图3 理想要素在基准坐标系中的坐标
也就是说,我们现在知道了被测要素的坐标,理想要素的坐标,理论上是可以计算他们之间的距离的。
但是,目前还不能直接计算他们两个的距离。
为什么呢?
因为机器坐标系XAOYA和基准坐标系XBOYB不是同一个坐标系,我们没有办法直接计算的。
所以就涉及到今天的主题,坐标变换。
我们现在要做的,就是要把被测要素和理想要素这两个冤家放到同一个坐标系里边,才能去比对。见下面动画和图4.
动画1 把理想要素和被测要素放在一起
图4 把理想要素和被测要素放到同一坐标系
见图4,如果我们把理想要素放到机器坐标系XAOYA里边,只要求出理想要素在机器坐标系里边的坐标(xA1, yA1), 再根据平面解析几何(或勾股定理),我们就可以直接求出图4中被测要素和理想要素的距离,再乘以2,就是位置度的实际测量值了。
问题是,如何计算出理想要素的新坐标(xA1, yA1)呢?
这个就是我们今天要讲的内容,今天的内容对探索基准偏移非常重要,我们后边发的基准偏移的文章,都是基于今天学的内容,建立合适的数学模型,才能有效的观察它的特点。
今天的内容分为三个部分:
坐标系,基和坐标
2. 坐标系的旋转和平移
3. 在同一坐标系下计算位置度
为了照顾到数学知识可能已经退化的小伙伴,我们从最基础讲起,本文前面两章可能有点啰嗦,对测量的软件工程师或者非标测量设备的软件工程师来说,这些都是最基础的内容,嫌啰嗦的话,建议直接跳到第3章。
1. 坐标系,基和坐标
我们常用的坐标系,就是笛卡尔坐标系。据说是一天,笛卡尔躺在床上,看到天花板上悬挂着一只蜘蛛,为了确定蜘蛛在空间中的具体位置,他提出了直角坐标系。
图5 笛卡尔和空间坐标系
为了方便理解,我们从最简单的平面直角坐标系开始理解,它是由两根相互垂直的坐标轴构成,分别是x轴和y轴,平面中的任意一个点P,可以用一对有序数(x1, y1)来表示:
图6 直角坐标系中点的坐标
图6中这对有序数(x1, y1)就表示P点的坐标。
这些关于坐标系的知识是我们上初中时学过的内容。接下来,我们换一种方式来理解坐标系和点,那就是采用向量的方式来理解。
德辉学堂前面的文章中,我们学过单位矢量(或单位向量),也就是长度为1的矢量。我们把沿着x轴方向的单位矢量叫i, 沿着y轴方向的单位矢量叫j, 用列向量来表达则为:
显然,i和j是相互垂直的两个向量。
上面的单位矢量看起来高大上的样子,它其实在直角坐标系里,就是一个很短的矢量,相当于一个基本单元,见下图:
图7 沿坐标轴的单位矢量
注意,这个i,j有个专门的术语,他们是坐标系xoy的基(也叫自然基),这个基是基本单元的基的意思。
为啥这样说呢?因为那帮无聊的数学家们发现,直角坐标系中的任何一个点,都可以用i,j乘以一个系数后来表达。比如P点,就有
或者说,我们将直角坐标系中的任何一个点,都可以看成一个向量,它的方向是从原点指向该点,比如P点,我们把它看成向量,用向量表示则有
到这里,我假设各位小伙伴理解矩阵的数乘和加法的基本规则,比如说:
不理解也没有关系,观察上式,相信您可以看出规律来。
我们再回头来观察公式(1):
图8 系数和基
从图8中,我们仔细观察P点,它其实是将i放大(或延长)x1倍,形成一个新的向量,那就是x1i,再将j放大(或延长)y1倍,形成新的向量y1j, 然后将两个向量相加合成后就形成了P:
其中,x1, y1可以为任意实数,可以大于1,也可以小于1,还可以是负数或者零。
注意,上式中的表达和图8中的公式表达,其实一样的。图8我们用向量的形式表达,公式(2)我们是用代数的形式表达。
重点来了,图8中或者公式(2)中的系数,也就是x1, y1, 就是点P的坐标, 我们写成(x1, y1)。
看到没?坐标是这样来的。
为了让大家更加容易理解公式(2)的几何意义,我们看动画,看看点P是怎么形成的(我又假设各位小伙伴理解矢量相加的平行四边形法则)。
动画2 基和坐标
事实上,直角坐标系平面上任何一个点(或者任何一个向量),都可以用自然基i和j乘以某个系数,也就是把基放大(延长)或者缩小(缩短)后再合成。
所有的这些点的组合就叫基i和基j的张量空间。
关键点在于,刚刚讲过的系数x1,y1, 就是对应点的坐标。
显然,不同的系数,对应不同的点。
我们再把公式(1)写在下面:
我们将上面的这个式子写成矩阵相乘的样子:
如果各位小伙伴忘记了矩阵的乘法公式,就看上面这个式子,记住它的规律。
式(3)中,等式左边有一个方阵,也是单位矩阵。当然,我们在《最小二乘法的数学公式中》介绍过,单位矩阵,类似实数中的1, 乘以任何矩阵,矩阵不变。
在本文中,这不是重点,重点是要仔细认识单位矩阵中的列向量,每个列向量的意义:
图9 矩阵中的列向量
我们仔细看图9,这是一个非常简单的矩阵乘法算式。但是我们要思考后面代表的几何意义:点P(x1,y1)的坐标,表示了P点在直角坐标系xoy中的具体位置,它是将单位矢量i放大x1倍,将单位矢量j放大y1倍,然后再矢量相加(平行四边形法则),才得到的P点!
也就是说,点的坐标和基,这两个东西,确定了点P在空间中的具体位置。
我们平时根据坐标(x1,y1)来找P点在坐标系中的具体位置时,本能告诉我们,画两条平行于坐标轴的线,相交得到P点,其实就是无意识的在利用上面的方法。
我们再捋一捋刚刚讲过的知识点:
1. 我们刚刚讲了如何确定点P在空间中的位置。因为有坐标系的存在,就决定了它的两个基的相对夹角(相互垂直)。
2. 然后有了P点的坐标(x1,y1)后,我们在分别把x轴的基i给它放大(延长)x1倍,y轴的基j给他放大(延长)y1倍,然后再用平行四边形法则合成,得到了P点的具体位置。
到这里,我们理解了坐标系,基和坐标的几何意义后,再往下走。
2. 坐标系的旋转和平移
本章我们分两部分来阐述,一个是坐标系的旋转,一个是坐标系的平移。
1)旋转
首先,我们假设有两个坐标系,一个固定不动的,我们叫母坐标系,比如机器坐标系,另外一个可能会动的坐标系,我们叫子坐标系,比如基准坐标系。见下图:
图10 母坐标系和子坐标系
如图10所示,我们将蓝色坐标系XAOYA叫母坐标系,而红色的XBOYB叫子坐标系。
在现实中,人们更加关心的是,子坐标系中的一个已知点P,在母坐标系中的坐标是多少?或者反过来,母坐标系中的已知点P,在子坐标系中的坐标是多少?
也就是说,要实现两个坐标系中点P的相互转化,是否有具体的公式直接转化?
答案是有的,这正是我们本章要讨论的内容。
显然,这个坐标转化,和两个坐标系之间的相对位姿(位置和姿态)有关系。所谓位置,就是两个坐标系原点之间的相对位置;所谓姿态,就是坐标轴之间的相对旋转夹角。
我们先来讨论姿态的影响。
假设子坐标系XBOYB和母坐标系XAOYA他们的原点重合,但是旋转了一个角度θ。见下面动画.
动画3 子坐标系纯粹旋转了θ角
这个时候,如果我们站在子坐标系XBOYB上看,xB轴和yB轴方向的基,也就是单位矢量,他们分别是:
显然他们和旋转无关。
但是如果我们换一个视角,站在母坐标系XAOYA上,观察子坐标系XBOYB的两个基iB和jB(子坐标系旋转过后),发现这两个基的在母坐标系上的坐标就变化了,见下动画4:
动画4 子坐标系的基在母坐标系
或者大家看下面这个静态图:
图11 子坐标系的基在母坐标系
我们将子坐标的基iB, jB放在母坐标系上看,见图11,我们用向量表示子坐标的基,则有:
在图11中,又因为自然基的长度是1,也就是:
仔细观察图11,再利用三角函数,我们很容易得出:
把上面的这4个式子和公式(4)结合起来,则可以得出:
公式(5)把子坐标系的基搞清楚了,我们再来看子坐标系中的P点的坐标。
图12 子坐标系中的点P
图12中,已知点P在子坐标系中的坐标为(xB1,yB1),我们接下来要讨论P点在母坐标系中的具体位置。
我们现在站在母坐标系上,来仔细观察P, 看它的位置怎么确定的。
我们知道,任何一个向量乘以一个常数K,都是将该向量沿着原来的方向,长度被延长或者缩短至原来长度K倍。
图12中,我们第一章就讲过,P点位置的确定,我们是将子坐标系的基iB, 给他放大xB1倍,将子坐标系的另外一个基jB也放大yB1倍后,再相加合成(平行四边形法则)就形成了新的向量OP, 见下面动画。
动画5 P点位置的确定
我们将动画5的过程,写成向量相加的公式:
再结合公式(5),可以得出:
注意,以上的这些公式,是站在母坐标系上观察的。
我们设P点在母坐标系的坐标为P(xA1,yA1),见图13:
图13 母坐标系中的P
由公式(6)我们可以得出:
大家看到没有?上式中,我们隐隐约约可以算出P点在母坐标系中的坐标了!
我们再整理一下,将上式写成矩阵相乘的形式,可以得出:
我们再精简整理:
公式(7)非常非常重要!发烧友级的小伙伴一定要记住!因为通过公式7,我们搞来搞去,终于把同一个点P,在子坐标系中的坐标(xB1, yB1)和在母坐标系中的坐标(xA1,yA1),它们之间的映射关系给他搞通了!
如果我们把下面这个矩阵看成一个系数R:
然后把P点在子坐标系中的坐标位置叫PB, 在母坐标系中的坐标位置叫PA, 其中:
再结合公式(7)和公式(8),可以将公式(7)写成一个非常简洁的公式:
公式(9)简单不?如果我们知道一个点在子坐标系中的坐标PB, 要计算它在母坐标系中的坐标PA,乘以一个系数R就OK啦!
当然,公式(9)仅仅适用于纯粹旋转的情形,就是子坐标系和母坐标系原点重合,两个坐标系相互之间仅仅是旋转了一个角度θ的情形(这个θ可以带入公式8,把系数R给算出来的哦)。
还是不太理解怎么使用这个公式?看下面的例子.
例1如果有个P点,已知在子坐标系中的坐标是(4,3),假设子坐标系和母坐标系原点重合,子坐标系相对于母坐标旋转了30°,求P点在母坐标系中的坐标(xA1,yA1)?
先看动画:
动画6 例题
我们可以直接套用公式(7):
所以,P点在母坐标系中,新的坐标是(1.96,4.60)。
有很多小伙伴可能觉得矩阵的乘法计算很复杂,其实很简单,用Excel的函数MMULT()可以直接搞定哦!
这里稍微要多说一下,那个充当系数角色的矩阵R
这个是一个2维的旋转矩阵,它左乘以任何一个点(或一个向量),就相当于把这个点(或向量)围绕坐标系原点O逆时针旋转θ度。如果θ从0开始变化到360度,对应的点也跟着绕原点绕360度旋转。见下面的动画:
动画7 旋转的点
有的文献将他称为SO(2), 它也是一个特殊的正交群(Group), 那些无聊的数学天才们发现它有个对我们有用的特点,那就是该矩阵的转置等于它的逆矩阵:
公式(10)这个特点大家最好记住,可能对我们有用哦。这里我又假设您已经了解什么是转置矩阵和逆矩阵,如果不了解,点击本文后边的链接《最小二乘法的数学公式》,里边有介绍。
到这里,有的反应快的小伙伴可能要问了,在现实中,我们遇到的不可能都是纯粹的旋转啊,还有平移,或者平移加旋转这种情况,我们如何计算坐标变换呢?比如下面这个动画:
动画8 旋转加平移
这个时候,我们又该如何求P点在母坐标系中的坐标(xA1,yA1)呢?
不急,接下来,我们开始讲解本章第2节。
2)平移
我们直接讨论旋转加平移的综合作用的公式吧,因为我们的数学前辈们已经研究出来了。假设子坐标系相对母坐标系既有旋转角度θ,又有相对平移。见下图:
图14 坐标系旋转加平移
图14中,已知子坐标系xBOyB中点P的坐标(xB1,yB1),而且我们知道子坐标系xBOyB相对母坐标系xAOyA旋转了角度θ,而且子坐标系的原点红O在母坐标系中的坐标是(xBO_A, yBO_A),我们求P点在母坐标系中的坐标(xA1,yA1)?
这回不想啰里啰嗦的逻辑推导了,我们直接上公式吧:
这也是个非常非常重要的公式,有兴趣的发烧友最好记住。
为了帮助大家更好的记忆,我们再增加一个平移矩阵TBO_A, 命TBO_A为:
其实TBO_A就是子坐标系的原点O在母坐标系中的坐标了(见图14哦)。
还记得上一节那个纯粹旋转简洁的公式(9)吗?我写在下面:
我们结合公式(12),公式(9),可以把公式(11)写成下面的形式:
公式13也是一个简洁的综合公式。因为子坐标系的最终位置是旋转和平移后确定的,这个公式刚好就体现了旋转加平移,R表示旋转系数(或旋转矩阵),TBO_A表示平移系数(平移矩阵)。
为了帮助大家记忆,看下图:
图15 坐标变换公式的含义
图15的公式中,如果子坐标系的原点O和母坐标系原点O重合,也就是有:
那么就是纯粹的旋转了,公式如下:
图15的公式中,如果θ=0,那么就没有旋转(旋转角度为0),就是纯粹的平移了,代进去可得:
公式(14)相信很多直觉好的小伙伴,马上就可以意识到它的正确性(就是自身坐标加原点坐标)。如果有兴趣的小伙伴可以用软件画一个图玩一玩。
还是举个例子吧。
例2 已知子坐标系xBOyB中点P的坐标是(4,3),而且我们知道子坐标系xBOyB相对母坐标系xAOyA旋转了30°,而且子坐标系的原点红O在母坐标系中的坐标是(3, 1),我们求P点在母坐标系中的坐标(xA1,yA1)?
图16 坐标变换案例
根据例子给的条件,我们不难得出,旋转矩阵R为:
平移矩阵为TBO_A:
代入公式:
则有:
所以,P点在母坐标系里的坐标为(4.96,5.6)。
可能对有些小伙伴来说,以上的计算看起来有些恐怖,再说一遍,如果熟练利用EXCEL的相关计算函数,它和我们用手按计算器没有任何区别哦。
如果您已经耐心看到这里,恭喜您,您已经具备了坐标变换的数学知识!现在我们要解决题目给出的问题就非常容易了,我们继续往下走。
3. 在同一坐标系下计算位置度
我们接下来就要利用我们刚刚讲过的数学知识计算位置度了。先来看一下图纸:
图17 设计图纸
这个是测量的数据:
图18 测量数据
现在我们的任务是,根据图18测量的数据,来评价图17中红圈处的位置度误差。
前面已经讲过,我们现在的目标是把理想要素和被测要素放到同一个坐标系里边,然后求出距离,再乘以2,就是位置度的几何误差了。我们其实有两种方法:
1. 把理想要素放到机器坐标系里边,去和被测要素比对。
2. 把被测要素放到基准坐标系里边,去和理想要素比对。
两种方法都是可行的,篇幅原因,本文只讲第一种方法,因为我们可以直接用前面讲过的理论。至于第2中方法,需要用逆矩阵转换一下公式(三坐标测量设备都是用第2种方法),有兴趣的发烧友可以自己思考,推导不出来又确实有兴趣的小伙伴可以微信我。
首先我们要建立基准坐标系。
因为B基准是第二基准,C是第三基准,所以我们必须把基准坐标系的原点放在B孔中心,BC的连线当成X轴,再过B点做一个垂直于X轴的线为Y轴。
建立好基准坐标系(子坐标系)后,然后在理论正确位置处放置理想要素。见下面动画:
动画9 建立基准坐标系
接下来,我们要做的就是计算动画9中的理想要素P在机器坐标系(母坐标系)中的坐标(xA1,yA1),见图19。
图19 理想要素P在母坐标系中的坐标
图19中,子坐标系原点的坐标,也就是B孔中心的坐标PB,决定了平移矩阵TBO_A,这个是已知的。
而旋转矩阵R是由旋转角度θ确定的,这个θ怎么算呢?
这个也比较简单,因为PB和PC的坐标都知道,我们可以直接算出来θ角。假设:
图20 计算旋转角θ
见图20,利用三角函数,不难计算出:
那么我们可以得出旋转矩阵R:
再根据简洁公式就可以计算理想要素在机器坐标系中的坐标了:
将上面的算式用EXCEL函数计算,可以得出:
在同一个机器坐标系下,我们知道了理想要素的坐标P(55.82,52.17),被测要素的坐标是PD(56.91,52.59),根据定位最小区域法,我们很容易算出被测要素的位置度几何误差D:
最后得出:D=1.289
当然,该孔的位置度是不合格的。
终于搞定!
如果您坚持看到这里,我觉得您是GD&T真正的发烧友,必须为您点赞!
这次的内容到这里就结束了,希望对您有所收获!
【后记】
今天的话题,我们只是把基准坐标系,基准和被测要素,开始尝试用把它们之间的数学关系建立起来,这里边还有很多有价值的话题可以挖。
1. 我们知道,一个平面上的物体或者特征,有三个自由度,两个平移,一个旋转,我们在表达坐标变换的时候,在公式当中,刚好有这三个参数:
图20 3个自由度参数
2. 从图20中可以看出,在一面两孔的基准系中,第二基准B,也就是我们常说的主定位孔,它确定了两个平移的自由度xBO_A,yBO_A。而我们通常认为,第三基准C限制了旋转自由度θ,事实上,旋转自由度θ并非第三基准C一个人决定的, 第二基准B也参与其中,也就是说,旋转的自由度是由B和C共同决定的,还记得公式(15)吗?我把它放在这里:
从上面公式相信大家可以看出来,第二基准B的坐标和第三基准C的坐标都会影响这个θ的大小。
3. 假设我们要分析加工部门在加工下图B,C,D三个孔的时候,位置度误差对哪个孔最敏感呢?
图21 位置度对三个孔的敏感度
这个时候,我们可以对B,C,D的X, Y坐标给一个扰动,比如λ,并命:
再带入坐标变换公式,看看对位置度的影响。欢迎有兴趣的小伙伴思考这个话题。
4. 最后一条,也是最重要的一条,如果位置度标注中,基准BC都带了M圈,那就意味着有基准偏移产生,基准偏移产生是因为B的坐标和C的坐标并不稳定,从而导致坐标系也不稳定,有一定的浮动量,这个浮动量会让位置度几何误差变得更小,那么我们应该怎么建模呢?这个问题,先留给大家思考,我们争取下次再来探讨这个话题。