本期文章我们来讨论一个有点陌生,但是在静悄悄的学术界(公差分析领域)有点热门的话题,雅克比矩阵。
因为自从机器人学蒸蒸日上起来后,人们发现利用机器人学中的虚拟关节,结合数学工具雅克比矩阵,能轻松实现有效的公差分析,尤其是可以在那种复杂的装配图中,进行全方位(6个自由度)的公差分析。
雅克比是出生在德国的一名犹太人,富二代,天赋异禀,和短命天才阿贝尔,以及数学王子高斯属于同一个时代,此人对数学有强烈的兴趣,勤勤恳恳,任劳任怨(这一句是瞎猜的),并取得了丰硕的数学成果,被同行称为他为“自J.L. 拉格朗日以来柏林科学院成员中最卓越的数学家”。
先别忙走,我们会从最简单的原理出发,一点点来认识雅克比矩阵的意义,以及到最终的具体应用。当然,作为开始,本期文章我们只是认识初级的雅克比矩阵,后边再慢慢深入。
见图3,在x0处的导数f’(x0),就是曲线在该点处的切线l的斜率,即:
我们将前面提到的导数公式(1),稍微做一下处理,我们大家可以得到下面的公式:
公式(3)就是一元函数的微分形式,别小看这个公式,它包含了非常重要的思想和方法!
它原本的意思是,当x的变化量(增量)dx趋向无穷小的时候, 这个时候y的变化量(增量)dy,就等于x的变化量dx和导数的乘积,也就是dy=f’(x)dx。
注意,这其中有一个非常重要的思路,就是“以直代曲”!啥意思呢?它的意思是曲线在非常非常微小的范围内,我们可以把它看成是一段直线。
举个例子吧,对于曲线函数y=f(x)来说,如果x的值由x0变化到x0+dx, 那么y值应该是多少呢?本来应该是这样的:
当然,公式(3)中的微分形式本身没有问题,因为在数学概念里,dx是一个趋向于0的非常非常微小的量,这样y2和y1之间的差异o(x)也就倾向于0。
尽管公式(3)是针对微分的表达(dx非常非常小), 在实际工程上,哪怕dx不是倾向于0的微量,只要是一个不大的变化量,我们也可以用公式(3)来近似估计y的变化量。
为了不和公式(3)混淆,我用△来代替d, 所以把公式(3)写成下面的形式:
例1已知一个正方形板的边长理论设计是20mm,供应商加工好后的实际边长是20.07mm(假设形状理想,还是理想的正方形),请问该正方形的实际面积比理论面积增加了多少?
但是在现实中,有些工程问题直接计算并不容易,我们需要采用微分法来近似计算。
然后,我们将0.07看成是边长相对于x=20的一个微小的增量,也就是公式(4)中的△x.
到这里,您看到了吗?线,用微分法计算出来的差异值是2.8,两者的误差是0.0049,对工程应用来说,这点误差是可以接受的。
在一元函数中,微分的理论模型是微观世界里的“以直代曲”,在二元函数里,也是基于同样的理论。
假设二元函数z=f(x,y)是一个曲面,而且是连续的,那么在微观世界里,一小段曲面可以看成是平面。
偏导数的几何意义,也表示曲面在某点处,特定方向切线的斜率,分x方向和y方向两个方向。注意,我们在分析fx时,就假设y是一个固定不变的常数,同样在分析fy时,我们就假设x是一个固定不变的常数。
见图6,z=f(x,y)是一个曲面(二元函数),当x=x0, y=y0时,也就是两个自变量在点p(x0,y0)的时候,对应的因变量z的值是z0,显然z0=f(x0,y0).
所谓的偏导数fx,刚刚提到,它的几何意义是斜率,是图6中红色切线lx的斜率。lx是在曲面上过点z(x0,y0)处做一个切线,该切线要和平面XOZ平行。
实际上,也就是曲面z=f(x,y)和y=y0(这是一个平面)的交线)处的切线lx的斜率,就是偏导数fx的几何意义。
事实上,图6中的红色直线lx, ly是曲面z在D点z(x0,y0)处切面上的两条直线。
同一元函数的微分一样,对二元函数来说,如果知道了两个自变量的微分dx和dy, 那么因变量dz 是多少呢?
同一元函数一样,全微分形式也是基于在微观世界里的“以直代曲”思想,我们在微观局部区域内,用平面来代替曲面(事实上这个平面,就是在z(x0,y0)处的切面)。
现在我们的问题就转化成,对于一个已知的平面,知道了dx, dy, 求dz了。见下面动画:
实际上,动画5中,红色平面上的Z2点,我们用它来代替动画3中的Z1了(基于以直代曲的原理)。
对数学比较好的小伙伴来说,这个非常容易,因为由lx, ly组成的红色切面来说,我们知道lx,和ly两条直线的斜率fx和fy,我们就可以轻易写出红色平面的数学方程:
以上的公式,我估计很多工程师看起来可能不太容易接受,对工厂里上班的工程师们来说,每天要忙碌处理工厂里一堆的破事和工作,让我们和数学的距离越来越远。
请仔细观察图7中的立方体,曲面被隐去了。曲面在点z(x0,y0)处的切面为图中红色切面,当然,它包含我们前面提到的两根直线lx, ly,我们要求的是dz,也就是点z(x0,y0)和点Z2坐标在Z方向的差值。
例2已知一个矩形,理论设计和实际尺寸如下(形状理想),求实际面积和理论面积的差异?
产品的实际长宽相当于在理论设计(x=50,y=30)的基础上有一个微小的增量(注意这个增量可正可负),这个增量为dx=0.08,dy=0.11, 根据函数的全微分,我们可以算矩形面积在点P0(50,30)处的增量ds.
注意到没有?近似值dS和理论值dS1之间的误差只有0.0088,这个误差对工程来说很多时候是可以接受的。
扩展一下,如果是有3个自变量的函数,叫3元函数,设它的函数为u=u(x,y,z), 根据函数的全微分,如下:
稍微总结一下第一章的内容,第一章实际上我们是在复习大学的内容,高数比较好的小伙伴实际上可以略过的。我们复习了一元函数的微分,以及多元函数的全微分,这种微分的依据都是基于在微观世界里的“以直代曲”,而工程上也可以利用微分或全微分来进行近似计算。
不管是微分还是全微分,它本质上体现的是,自变量的微小增量和因变量的微小增量之间的映射关系。
这种关系,我们是需要的,比如在整车装配里边,每个零件相关特征的公差,孔销浮动等等,实际上就是自变量的微小增量,而我们关心的DTS, 比如车门和车身之间的缝隙Gap变化,就相当于我们提到的因变量增量。
而主机厂苦逼的尺寸工程师们在分析公差时,必须要利用自变量增量和因变量增量之间的函数关系(或映射关系),计算出因变量的增量,只要因变量的增量在DTS要求范围内,就表示目前的设计是合理的。
矩阵是相当于一个把一堆数据按顺序排列起来的表格(这个属于线性代数的知识),它的最大好处是,在计算的时候可以实现“批量计算”。德辉学堂前面的文章里,我们介绍过矩阵计算的游戏规则哦。
注意,公式(12)体现了非常重要一个思想,它可以直接表达自变量增量dx和因变量dy之间的映射关系,说白了,就是因变量增量dy,等于自变量增量dx乘以一个系数f’(x)了。相当于:
所以,上式中的J,也就是在公式(12)中的 [f’(x)],它就是高逼格的雅克比矩阵!
听我这样解释雅克比矩阵,雅克比本人估计要吐血了,因为他老人家提出雅克比矩阵的时候,逼格可是高多了,它不是为了一元函数,而是为了表达多元函数的自变量增量和因变量增量之间的映射关系,比如二元函数。
大家观察图10,是不是再一次感觉到雅克比矩阵相当于自变量增量前面乘了一个系数J?这个系数可能是放大自变量,也可能是缩小自变量(不一定是按比例),这就是为什么学术界有人说,雅克比矩阵就是一个“杠杆”。
事实上,图10中的雅克比矩阵,还是有点太简单。为什么呢?因为因变量dZ只有一个,它还不能体现出雅克比矩阵的价值来。事实上,很多时候因变量可能不只一个,比如空间上一点P,我们很有可能关心它在X, Y两个方向的增量(变化量)。
例3见下图,已知电机上有一个杆子L, 杆子上有一P点,P点到电机轴中心的距离是r,此时电机刚好旋转到θ角。
见图11,关于第1个问题,很简单,坐标系的原点在电机轴中心,根据半径和角度,我们可以轻松写出P点的x, y坐标(相当于把极坐标转变成直角坐标):
关于第2个问题,我们需要把式(14)中两行的全微分形式都写出来。需要注意的是,式(14)中,x, y都是因变量,而r和θ是自变量。根据公式(9)的含义,式(14)中全微分表示如下:
见图12,对于稍微复杂的式子,我们也能够写出自变量增量矩阵和因变量增量矩阵之间的映射关系,而雅克比矩阵,就充当了一个“系数”的角色。
在现实中,如何找到雅克比矩阵,其实是一件不容易的事情。从例3中,我们能够获得一个启发,先找出数学关系式,求全微分,再想办法把所有的自变量增量赶到右边矩阵里,剩下左边的那个矩阵就是雅克比矩阵了。
讲了这么久,雅克比矩阵怎么用呢?而且,现实中,我们是用公差(一个范围)来控制特征的,如何把它融合到雅克比矩阵中呢?
还记得本公众号前面一篇文章《线性尺寸链计算背后的数学逻辑》不?里边我们提到了区间数学,公差就是区间,一个数也是区间(点区间),而区间有自己的四则混合运算规则,我们大胆用它就是了。
例4已知设计工程师设计的矩形边长如下,求面积S的变化范围(假设矩形形状理想)。
看到没有?上面算出来的结果和用雅克比矩阵算出来的结果S=1500±7.9相比较,差别还是非常小的,对工程应用来说,够了。
到这里,很多小伙伴可能会觉得不爽,用常规方法,我用手算就可以算出来,为啥非要采用雅克比矩阵计算?
前面简单的案例,是为了帮助大家理解雅克比矩阵,接下来我们来看一个稍微复杂的案例。
例5已知下图中,r=20±0.1, θ=π/4±0,014, 求P点在坐标系XOY中,X坐标和Y坐标的变化范围。
这道题目有点复杂了,常规直觉的方法不太容易,我们看看怎么利用雅克比矩阵来处理。
再将dr=±0.1,dθ=±0.014代入公式(16)中的雅克比矩阵表达式:
看明白了吗?我们利用雅克比矩阵,就轻松解决了多自变量变化导致多因变量变化的问题。
如果一个装配图里边,我们大家都知道了多个组成环的变化,求封闭环C0的变化值,且不美哉? 希望我们下一次有机会来讨论这个话题。
第一小节,我们讲了函数的微分和全微分的概念,底层的逻辑都是基于“以曲代直”,而雅克比矩阵是利用这个“以直代曲”的思想来解决工程上的问题。
第二小节,我们就开始介绍了雅克比矩阵,实际上雅克比矩阵是由导数或者偏导数构成的一个系数矩阵,它建立了自变量增量和因变量增量之间的映射关系,尤其是那种多自变量和多因变量之间的映射关系,而且我们强调,雅克比矩阵实际上充当了一个系数的作用,放大或者缩小了因变量的增量。
第三小节,我们讲解了雅克比矩阵的实际应用。因为现实中,我们很多尺寸都是用公差的形式来表达,这样我们就把该尺寸的上极限偏差和下极限偏差(不一定需要对称)看成是该尺寸的一个增量(只是该增量是一个区间),再来利用区间数学的特点,代入雅克比矩阵,来让我们解决工程中的实际问题。
雅克比矩阵,是现在从事公差方向研究, 尤其是计算机辅助公差CAT这一块的研究生或者博士生们都可能会利用到的一个工具。
当人们真正在用雅克比矩阵解决实际工程中的公差问题时,雅克比矩阵比本期文章中的案例要“庞大”很多,因为现实中,零件上任何特征有6个自由度(包括冗余自由度和非冗余自由度),所以因变量的增量有6个(dx,dy,dz,du,dv,dw), 那么对应的雅克比矩阵有6行(其实就是一个6xn的矩阵)。
雅克比矩阵是什么,后边的基本思想是什么?这可能才是初学者在被吓退之前更应该掌握的。所以,我们试图努力扯掉雅克比矩阵她那高贵的面纱,让您对她有个初步的认识,当然,我们更希望能激发您对她的兴趣,去研究她。
[2] 陈华,基于雅克比旋量模型的三维公差分析方法研究以及在发动机装配中的应用 上海大学 2015
[4] 于靖军 刘辛军 丁希仑 机器人机构学的数学基础 机械工业出版社 2018