精华内容
下载资源
问答
  • 雅可比矩阵能将关节速度和末端笛卡尔速度联系起来,对于不符合pieper准则(如:456关节轴线不相交)的六轴机器人计算逆解,或者静力学动力学分析,雅可比矩阵都是很重要的。说明:因为速度可以看成是单位时间内的微分...

    雅可比矩阵能将关节速度和末端笛卡尔速度联系起来,对于不符合pieper准则(如:456关节轴线不相交)的六轴机器人计算逆解,或者静力学动力学分析,雅可比矩阵都是很重要的。

    说明:

    f09ffc517302567b0365bcb26986bdde.png

    因为速度可以看成是单位时间内的微分运动,因此,速度雅克比矩阵也可以看成是关节空间的微分运动和笛卡尔操作空间微分运动之间的转换矩阵,如下所示:

    f9594f773a856fa642ced6bb1a38e148.png

    关于雅克比矩阵,行数等于机器人在笛卡尔操作空间的维数,列数等于机器人的关节数。对于六轴机械臂,行数为6,列数也为6。

    因为雅克比矩阵是从关节速度矢量向笛卡尔操作空间速度矢量的线性映射,因此,雅克比矩阵的每一列,代表关节1~6的关节速度和末端执行器线速度和角速度的传递比。

    对于旋转关节i,在末端上产生的角速度为:

    fe1c62d1dc58a11642e60c23286aa8f1.png

    Zi是坐标系 i 的Z轴的单位矢量相对于基坐标系的表示。

    对于旋转关节,在末端产生的线速度为:

    8c524eeff5c0af785c77d684f6eaaae0.png

    其中:

    fe55c9934c8888400f8a42a7933e1690.png

    表示末端的坐标原点相对于坐标系 i 的位置矢量在基坐标系中的表示。

    每一个关节处的角速度和线速度都会对末端最终的角速度和线速度做贡献,这也是为什么雅克比矩阵的每一列,代表关节1~6的关节速度和末端执行器线速度和角速度的传递比。

    因此,可以得到雅克比矩阵的第 i 列为:

    0c567ef3739708fc844e5e1e9dd41b73.png

    该雅克比矩阵是相对于基坐标系表示的。

    接下来以puma560为例,使用matlab进行雅克比矩阵表达式的具体计算,DH参数表为:

    4d83b36ce47a41b40cf54493f6ed1f4d.png

    各连杆对应的坐标系为:

    230377ed56de908a1c340fe40fee4da3.png

    连杆变换矩阵为:

    1c23300eb2e979a7f1365137b661a57f.png

    由以上的连杆矩阵通过如下的计算,可以分别得到T0i(i为0~6)

    09d5d5365d72c42dc5174feae70d2f24.png

    再就是从齐次矩阵中,可以得到旋转矩阵R,分别为如下:

    a13be1d6e1472878da41367aba31449e.png

    由此可以得到R0i(i为0~6)

    60cc7c12dc2823d760ec62fa3d656844.png

    而Zi向量(i为0~6)则分别是R0i(i为0~6)的第三列,分别为:

    08299f1e282208947245adc4b0410402.png

    位置矢量Pi6(i为0~6)则分别是Ti6(i为0~6)的第四列的前三行,分别为:

    e8021846e0cec5b21074bfffb1798fcf.png

    最后,按照上面推导出来的雅克比矩阵各列的计算公式,分别计算,即可得到雅克比矩阵的表达式,计算方式如下:

    a8acdb14baa744038d46eb3d826cf7b2.png

    -----------------------

    -----------------------

    不煮鸡汤,不制造焦虑,不宣扬速成。技术都是脚踏实地,功到渠成。

    妙玩科技

    公众号ID:miuplay

    个人微信号:Miuplay

    交流QQ群:940437523

    展开全文
  • 于是 可以写成 即是 下面我们写一个代码,来程序实现一下雅可比迭代方法:% 雅可比迭代法,计算线性方程组的解 下面我们以一个方程组为例来测试该代码:在编辑界面输入如下命令:a 最后得出如下结果:...

    23490ba39543f4d958601ccef7e6ecca.png

    对于矩阵Ax=b,其解我们可以写成方程组

    等的形式,我们经过整理可以写成如下形式:

    2357c826eef8cde68f06db54f8875739.png

    ff7105531a5caad0f783048f4a6b79ab.png

    fd6103d7f9ca6a443cc42dc51aa33f4d.png

    我们可以将

    拆成一个对角线全为0元素的
    和一个单位阵E。于是
    可以写成
    即是

    0eb1bbd9bcf1ce40af8d2fc9db022576.png

    2c3ec5c5477ccd4b7caf9d6cb3ff43c7.png

    364a60c382c1e78c8869750f0282a4c0.png

    6d6bfb8c37a04565b8ce79173fdff137.png

    fa62f6e354255aa4373ea18d6d20b1fd.png

    b5e9ae062dd92983a15e157a03b0991b.png

    2679d41a6c104c2f83710a680d303eee.png

    1b0f03dfc6318b6bb75407355f845a4d.png

    下面我们写一个代码,来程序实现一下雅可比迭代方法:

    % 雅可比迭代法,计算线性方程组的解
    

    下面我们以一个方程组为例来测试该代码:

    c6cb2c73bd73ae94ec2a8174f462c6e6.png

    在编辑界面输入如下命令:

    a 

    最后得出如下结果:

    0ebefe6eb53162ae8ae6d72e36b0c2e1.png
    展开全文
  • MATLAB雅可比矩阵算法

    热门讨论 2009-07-19 15:15:36
    MATLAB编辑一个程序,计算雅可比矩阵
  • 雅可比矩阵Matlab程序

    2020-10-17 16:45:56
    通过矢量积法计算雅可比矩阵,并于matlab工具箱的雅可比矩阵函数对比,结果一致。matlab版本为2019b
  • 但是微分方程的求解,基本上最后是回归到代数方程组的求解问题(以我了解的有限差分为例子),所以代数方程(组)的计算是可以归类为微分方程求解的范畴的(这只是笔者强行进行解释这篇文章放到微分方程求解专栏下的...

    严格来说这是一个线性代数方程或方程组的求解问题,并不是直接的微分方程求解问题。但是微分方程的求解,基本上最后是回归到代数方程组的求解问题(以我了解的有限差分为例子),所以代数方程(组)的计算是可以归类为微分方程求解的范畴的(这只是笔者强行进行解释这篇文章放到微分方程求解专栏下的理由:D)

    ========================

    这篇文章算是我到目前为止(200809),我个人“对于这一系列问题的最好的工程级综合认识”。

    我强调三点:

    1)一系列问题:我目前能够串起来单元函数零点问题、多元函数极值问题(本质上会回归到向量函数零点问题)、向量函数零点问题,以及相应的牛顿迭代法了。

    2)综合:这三种以数学特点分类的问题,在工程上其实代表了不同的问题,但是他们实际上在数学上,是有共通之处的。找到他们的联系进行综合认识,有助于找到解决这一系列问题的核心共同点,找到解决问题的根本思路。

    3)工程级:这不会是一个带着大量数学推导的严格文章。搞工程强调的“应用”,即拿来用,而非证明为什么要这么用。我逐渐也已经习惯了这种工作风格。我大概知道这样是对的,我就拿来用了,并通过总结(比如写这样的文章),加深这种应用能力,至于它多么严格正确,不是我当前最关心的。但是这种工程级的理解,也并不是所有做工程的都能理解到的,对于目前的我来说,这个理解程度已经是我的最佳水平了。并且这种理解已经很好地帮助我理清思路和解决一些对于未知的担忧。

    =============正文============

    描述基础

    首先要明确函数零点问题,只是方程求解问题的另一种说法。

    f(x)=0

    f1(x,y)=0; f2(x,y)=0

    以上就是上述的三类数学问题中的两个零点问题。

    多元函数的极值问题f(x,y)min or max

    本质上则是

    即又回到了向量函数的零点问题。

    %%关于向量函数的说法%%

    这其实是一个相对高级的说法。说它高级,是因为这是一种“一维角度描述三维”的描述方式,所以它需要更多的思维处理。

    向量函数的零点问题,我完全可以表述为多元函数方程组的求解问题。是一样的。但是用向量函数的角度描述问题,将有助于找到"那条统一的解决问题的思路"。

    为何可以看成向量函数呢?这个其实相对熟悉一下向量函数的定义就可以做到。但是由于很多人由于可以通过方程组的角度去描述,所以就会在思维惰性的情况下排斥这种向量角度的认识方式(这个很多人当然就是我本人啦:D)。这种排斥短期内可能不会有什么恶劣后果,但是如果当到了需要统一去理解问题的时候,就会出现一些瘸腿了。(但是终归你会补回来)。

    向量函数的角度去理解,就是说,每个分量函数,其实都可以理解成某一个向量的一维,而向量函数的零点问题,其实就是找到一组解,可以让这个向量函数的每个向量都成为0向量。而这个时候,多元函数方程组则可以写成

    这看起来一维,但实际上是多维。

    ==================

    方程与问题

    f(x)=0

    小学三年级开始遇到。但是当无法得到解析解时,需要数值求解。迭代法的开端,引出了牛顿迭代法。在工程上有大量的存在。热力学:两相平衡RR方程

    多元函数的极值问题

    终归转化成了该多元函数导函数的偏导数的向量函数零点问题。估计出现在各种优化问题中。热力学:多相闪蒸的Q函数最小值问题

    向量函数的零点问题

    可能是所有四大工程问题的最终形式(最终BOSS既视感)。凡是建立在网格系统上的数值模拟问题,最终都是这样一个问题。油藏数值模拟就是这样一个时间步驱动下的,多个网格的压力饱和度浓度为未知数的向量函数的零点问题。即使是不涉及空间网格的问题,仍旧大量涉及到这个领域。如热力学:包络线计算

    ============

    雅可比矩阵,海森矩阵,牛顿迭代法在这其中的功能、作用、形式

    向量函数零点问题的牛顿迭代法,在一维描述形式下,看起来和单元函数的牛顿迭代法是一样的。

    而向量函数的形式的一阶导数,就是雅可比矩阵。

    海森矩阵是涉及到多元函数极值问题而产生的,也是我本次文章的一个中心内容。

    一个多元函数,假设有n个未知数。那么它将有n个一阶偏导函数。换句话说,这n个偏导函数将构成一个n维的向量函数,每一个偏导函数是该向量函数的一维。如果从方程的形式来看,我们会得到一个“n个未知数,n个方程"的方程组。

    函数是维,是方程组的行数,是雅可比矩阵的行数。

    未知数个数,是雅可比矩阵的列数,是方程组排除掉常数项后的列数(如果想象成一个多项式函数的话)。

    回到我们的偏导函数群的零点问题。这本质上就是一个,由偏导函数群组成的,向量函数的零点问题。所以考虑用牛顿迭代法,我们只需要此时的对应的雅可比矩阵即可。

    而这个偏导函数群的雅可比矩阵,我们称为原多元函数的,海森矩阵。

    木哈哈。

    可以发现,海森矩阵可以说,是一个特定问题场景下的,雅可比矩阵。

    这个道理,其实很好理解,在一元函数上类比,就是一个函数的二阶导是它的一阶导的一阶导。一阶导的向量版本就是雅可比矩阵,二阶导的向量版就是海森矩阵,海森矩阵就是一阶导的雅可比矩阵。:D

    ===============

    雅可比矩阵的一般性和海森矩阵的特殊性

    海森矩阵由于限制在了那个具体情境下,所以它肯定是个方阵。

    由于我们讨论的往往都是n个方程n个未知数的问题,所以我们的雅可比矩阵一般也是个方阵。当然我们直到,比如一个方程两个未知数的方程组是没有唯一解的,但是我们其实是可以写出来一个相应的雅可比矩阵的。。。。这个矩阵能有什么用?是一个有趣的问题。

    ===============

    偏牛顿迭代

    牛顿迭代法还有一种特别的应用。前面我们提到了向量函数的零点问题。我们使用的牛顿迭代法又称为完整的牛顿迭代法,雅可比矩阵考虑了对所有未知数的一阶偏导。求解也是联合求解的。但是这里其实还有一个简化的当然准确性也下降的方法。称为偏牛顿迭代法。

    具体做法是,我们可以挑选诸维度中的一个,然后我们假设这维度的只对于某一个未知数敏感,是zz合格未知数的函数,而其他未知数我们忽略。即把一个多元函数,认为当成一个单元函数。从而对于这个人为退化出来的单元函数,使用单元函数零点问题的牛顿迭代法,导函数就是对于这个未知数的偏导数。

    通过这种方式,我们可以得到,那个我们选择的未知数的新的迭代值。这之后我们用这个未知数的新值,结合其他未知数的老值,去更新其他值。然后循环。这种方式,也能够在某些简单的情况下得到解。

    热力学案例:包络线计算的前期点的获取。

    ===============

    确实很工程

    有一些细节我是有耳闻但是没有证明的。比如当海森矩阵如何如何的时候,方程会有唯一解等等。这些东西,就是我所忽略的。

    我能够更清楚地知道这些,当然是最好的。但是当时间精力有限的时候,我为什么选择忽略这些呢?

    因为假设我有一个工程问题,我默认就是希望去找到一个解的。如果这个方法奏效,那么用这个方法,就该得到那个解。而且这个解,我默认是一个唯一解。如果有多个解,我等于就没有一个确定的方案了。在这样的情况下,我也就不那么急迫需要知道问题有唯一解了。

    当然了,理论上知道得更多,那么就是对于问题有更深度的理解,肯定是更好的。

    本篇完:D

    展开全文
  • 根据机械臂位姿输入DH参数(前置法),程序自动输出雅可比矩阵,可以自己做一个包,主程序调用。具体实现方法如下:1计算各连杆的变换矩阵;2、计算各连杆至机械臂末端的变换;3、计算雅可比矩阵各列元素。
  • 最近在做syms设置变量,jacobian求雅可比矩阵,subs求计算结果的问题。其中有些变量是用sin和cons形式写出,最后在subs替换的时候出现了Error, (in type/matrix) wrong number (or type) of parameters in function ...

    最近在做syms设置变量,jacobian求雅可比矩阵,subs求计算结果的问题。其中有些变量是用sin和cons形式写出,最后在subs替换的时候出现了Error, (in type/matrix) wrong number (or type) of parameters in function diff。

    检查发现diff函数要处理一个conj(Fi)的问题,怎么会出现求共轭函数的问题呢,变量中没有出现负数啊?


    终于发现问题出现在三角函数相乘的时候,sin(Fi)被系统直接改写成了sin(conj(Fi))。这个复数式再求倒数之类的远超过楼主的接受能力。。。。


    所以在syms定义变量的时候,一定要再最后加上real,定义为实数后就不出再出错了


    复数求导的问题以后再慢慢理解吧

    展开全文
  • 1.计算微分  函数diff可以用来计算符号表达式的微分,其调用格式如下:  df=diff(f,n);  参数说明:df是微分运算的结果。f是输入的表达式,n是求导的次数,其默认值是1.  举例:  >>g = diff(sym(sin(x)),1);...
  • 稀疏矩阵生成: function [a, b] = aparsesetup(n) e = ones(n, 1); n2 = n / 2; a = spdiags([-e 3*e -e], -1:1, n, n); a(n2+1, n2) = -1; a(n2, n2+1) = -1; b = zeros(n, 1); b(1) = 2; b(n)...
  • 雅可比迭代法的MATLAB程序:Function[x,k,index]=Jacobi(A,b,ep,it-max)%求线性方程组的雅可比法;%A为方程组的系数矩阵;%b为方程组的右端项;%x为方程组的解;%ep为精度要求,缺省值为le-5;%it_max为最大迭代次数,缺省...
  • 矩阵的特征值与特征向量的计算matlab实现,幂法、反幂法和位移反幂法、雅可比(Jacobi)方法、豪斯霍尔德(Householder)方法、实对称矩阵的三对角化、QR方法、求根位移QR方法计算实对称矩阵 的特征值、广义特征值问题...
  • 问题定义很多问题都可以抽象为求解下列优化的问题: 往往对于实际应用时,可能还会加入一些正则项,最终表示为求解...另一方面,由于图像分辨率较高,因此线性方程组维度实际上极大,导致快速计算难度较大。 因此,...
  • 基于matlab的jacobi(雅可比)迭代法求解线性方程组

    万次阅读 多人点赞 2016-11-06 16:14:31
    考虑线性方程组Ax=bAx = b 其中A为非奇异矩阵,当A为低阶稠密矩阵是,选主元消去法是有效方法。 但对于A 的阶数n很大,零元素较多的大型...已知9x2=sinx+19x^2 = sinx+1,在x=0.4x = 0.4附近有根,假定我们已会计算1
  • 利用MATLAB中的jacobian函数计算雅可比矩阵
  • 雅可比迭代时,每次迭代只用到前一次的迭代值,而在高斯-赛德尔迭代时,每次迭代充分利用当前最新的迭代值。 Gauss-Seidel迭代法百度百科 function[x,k]=gaussseidel(A,b,x0,ep,Nmax) %Gauss-Seidel迭代 %x0为迭代...
  • 牛拉法潮流计算Matlab程序

    热门讨论 2010-04-27 16:36:07
    本程序采用牛拉法编写,采用直角坐标形式,先形成导纳矩阵,再形成雅可比矩阵进行迭代,最后计算各支路及平衡节点的功率
  • 参照何仰赞电力系统分析(下)的牛拉法程序流程框图,将程序分为节点导纳矩阵的形成、判敛、不平衡量计算雅可比矩阵计算、节点电压修正、计算功率等几个部分。 二、源代码 clear %先求节点导纳矩阵 N1=30; %节点数...
  • 代码块1:雅可比迭代法: clear; clc; fprintf('雅可比迭代法解线性方程组:\n') n=input('请输入系数矩阵A的阶数:n='); A=input('请输入系数矩阵A:A='); b1=input('请输入结果向量b1:b1=');%b为行向量,计算时需要...
  • 本文是科学计算MATLAB语言专题六第2小节的学习笔记,如果大家有时间的话,可以去听听课,没有的话,可以看看我的笔记,还是很不错的。 1 直接法 1.线性方程组的直接解法 高斯(Gauss)消去法 列主元消去法 矩阵的...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

matlab计算雅可比矩阵

matlab 订阅