MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践

这篇具有很好参考价值的文章主要介绍了MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

偏导数、雅克比矩阵、行列式都是非常重要的知识点,为了让大家更容易看懂,尽量使用画图来演示。

1、偏导数Partial derivative

对于导数我们已经很清楚了,某点求导就是某点的斜率,也就是这点的变化率。那么偏导数是什么,跟导数有什么不一样的地方,其实是一样的,只不过偏导是在多元(多个未知变量)的情况下,所以我们求导的时候,是偏向某个自变量求导,所以叫做偏导数(通俗解释,不严谨)

百度百科的解释如下,一般都更偏向几何意义:

偏导数 f'x(x0,y0) 表示固定面上一点对 x 轴的切线斜率;偏导数 f'y(x0,y0) 表示固定面上一点对 y 轴的切线斜率。
高阶偏导数:如果二元函数 z=f(x,y) 的偏导数 f'x(x,y) 与 f'y(x,y) 仍然可导,那么这两个偏导函数的偏导数称为 z=f(x,y) 的二阶偏导数。二元函数的二阶偏导数有四个:f"xx,f"xy,f"yx,f"yy。
注意:
f"xy与f"yx的区别:前者是先对 x 求偏导,然后将所得的偏导函数再对 y 求偏导;后者是先对 y 求偏导再对 x 求偏导。当 f"xy 与 f"yx 都连续时,求导的结果与先后次序无关。

具体如何求,也是很简单的,我们只需要将需要求导的这个看作是自变量,其余的自变量都当成常数来对待就好了。
我们来看一张雅克比矩阵的图片,也是接下来需要讲的。

MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践,机器人操作系统(ROS),matlab,行列式推导,sawyer.teach,stanf.teach,p560.teach,求偏导数

这张图虽然是雅克比矩阵,实质是求的偏导数,J(x)这个雅克比矩阵里面的值是怎么来的呢?我们看到红色圈起来的变量,也就是说在求这个偏导数的时候,我们将其余的变量都当作常量,比如说MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践,机器人操作系统(ROS),matlab,行列式推导,sawyer.teach,stanf.teach,p560.teach,求偏导数这个函数,如果求的偏导数,那么可以看成是MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践,机器人操作系统(ROS),matlab,行列式推导,sawyer.teach,stanf.teach,p560.teach,求偏导数,所以它的偏导数分别是2、(看成是常数)、0(常数的导数是0),所以就是,其余变量求偏导,同样的道理,将其他变量看成是常数来求即可。 

2、雅克比矩阵Jacobian Matrix

掌握了上面介绍的偏导数,其实就明白了雅克比矩阵。
在向量微积分中,雅可比(Jacobian)矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近。在人工智能领域,像这样的一阶偏导的集合,叫做梯度,这个概念非常非常重要,也是AI的核心之一。我们通过机器人的实践,更要明白其产生的意义是什么。
我们依然使用p560六自由度的机械臂为例,首先将机器人加载进来

startup_rvc
mdl_puma560
p560.teach

当然还有其他自带的,如斯坦福机器人,sawyer机器人:

mdl_stanford
stanf.teach

当然这个斯坦福机器人不是6个关节都可以旋转,其中有一个关节Prismatic只能平移

stanf.links
ans = 
Revolute(std):  theta=q1   d=0.412       a=0           alpha=-1.571      offset=0          
Revolute(std):  theta=q2   d=0.154       a=0           alpha=1.571       offset=0          
Prismatic(std): theta=-1.571        d=q3 a=0           alpha=0           offset=0          
Revolute(std):  theta=q4   d=0           a=0           alpha=-1.571      offset=0          
Revolute(std):  theta=q5   d=0           a=0           alpha=1.571       offset=0          
Revolute(std):  theta=q6   d=0           a=0           alpha=0           offset=0 

如下图:

MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践,机器人操作系统(ROS),matlab,行列式推导,sawyer.teach,stanf.teach,p560.teach,求偏导数

mdl_sawyer
sawyer.teach

 这是一个7关节的机器人,每个关节Revolute都是可以旋转的:

ans = 
Revolute(std):  theta=q1   d=0.081       a=0.317       alpha=-1.571      offset=0          
Revolute(std):  theta=q2   d=0           a=0.1925      alpha=-1.571      offset=0          
Revolute(std):  theta=q3   d=0           a=0.4         alpha=-1.571      offset=0          
Revolute(std):  theta=q4   d=0           a=0.1685      alpha=-1.571      offset=0          
Revolute(std):  theta=q5   d=0           a=0.4         alpha=-1.571      offset=0          
Revolute(std):  theta=q6   d=0           a=0.1363      alpha=-1.571      offset=0          
Revolute(std):  theta=q7   d=0           a=0.1338      alpha=0           offset=0 

如下图:
MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践,机器人操作系统(ROS),matlab,行列式推导,sawyer.teach,stanf.teach,p560.teach,求偏导数我们分别从世界坐标系和末端执行器坐标系来了解。
这个世界坐标系是机器人的参考坐标系,是用来描述机器人在整个运动区域的定位的。
我们使用标准状态来测试:qn[0 0.7854 3.1416 0 0.7854 0]

2.1、世界坐标系

我们来看下世界坐标系的雅克比矩阵,使用的是jacob0函数

J0n = p560.jacob0(qn)
J0n =

    0.1501    0.0144    0.3197         0         0         0
    0.5963    0.0000    0.0000         0         0         0
    0.0000    0.5963    0.2910         0         0         0
   -0.0000         0         0    0.7071         0    1.0000
   -0.0000   -1.0000   -1.0000   -0.0000   -1.0000   -0.0000
    1.0000    0.0000    0.0000   -0.7071    0.0000   -0.0000

2.2、末端执行器

接着来看下末端执行器的雅克比矩阵,平常经常说的末端执行器是一些吸盘、抓手、夹持器之类的设备,使用的是jacobe函数

JEn = p560.jacobe(qn)
JEn =

   -0.0000   -0.5963   -0.2910         0         0         0
    0.5963    0.0000    0.0000         0         0         0
    0.1500    0.0144    0.3197         0         0         0
   -1.0000         0         0    0.7071         0         0
   -0.0000   -1.0000   -1.0000   -0.0000   -1.0000         0
   -0.0000    0.0000    0.0000    0.7071    0.0000    1.0000

可以看到机器人生成的雅克比矩阵是6x6的形状,前面也介绍了,因为行数是XYZRPY所以为6,又因为我们这里使用的是6自由度的机械臂,是6个关节,看做是6个自变量,所以列数是6。
另外我们可以看到右块的XYZ轴全部为零,这表明4、5、6三个关节的运动不会引起机器人末端执行器的任何平移运动,因为手腕关节是旋转的。
雅克比矩阵主要是用来求末端执行器的速度,而我们知道速度是位移的变化率,或者说是位移的导数(这里是偏导),这样是不是就跟上面的偏导数又结合起来了。
速度=雅克比矩阵与关节向量的点积。V=JEn*qn' (注意,qn需要做转置,不然前面矩阵列数与后面矩阵行数不一样)
V' :[-1.3825 0.0000 1.0156 0 -4.7124 0.0000]

3、行列式Determinant

行列式是对矩阵按一定规则进行运算之后得到的一个数值。行列式可以确定出对应矩阵是否存在着逆,即确定矩阵的奇异性,可以用来解线性方程组等。当行列式为0或近似于0时,其对应逆矩阵不存在,或虽然存在,但计算机计算出来的结果不正确。
我们来看下上面的雅可比矩阵的行列式: det(J0n)det(JEn)都是-0.0786,不是0,所以可逆,inv(J0n)inv(JEn)
我们自定义几个矩阵来具体看下这个行列式是怎么求值的,以及有什么意义。

mat0 = [3 0;0 2]
det(mat0)
%结果为6

mat1 = [1 2 3;4 5 6;7 8 9]
mat1 =
     1     2     3
     4     5     6
     7     8     9
det(mat1)
%结果为-9.5162e-16 近似为0了,这里我们等会手动计算就是0,所以不可逆,或者结果不正确

我们来看下它的逆矩阵: 

inv(mat1)

警告: 矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND =  2.202823e-18。 

我们将矩阵修改下

mat2 = [1 2 3;4 5 6;7 8 0]

然后求行列式:det(mat2)结果为27.0000,好的,不是0的情况,就可逆inv(mat2)
那么这些值是怎么算出来的呢?依然通过画图来给大家直观感受下: 

4、行列式推导 

从错误提示以及图片,我们可以看到行列式,其实是在做拉伸或叫缩放的操作,mat0的矩阵的行列式我们可以知道是面积放大了6倍,这个就是行列式的几何意义。
对于这个矩阵的行列式是具体如何计算得到的,我们一起来看下推导过程:

MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践,机器人操作系统(ROS),matlab,行列式推导,sawyer.teach,stanf.teach,p560.teach,求偏导数

我们实际是求这个缩放的平行四边形的面积,如果求出来的结果是0,这种情况我们前面也验证过,这个矩阵是不可逆,这个通俗来说就是降维了,就类似于“万向节死锁”的现象出现了,成为了线性关系,所以不能反推回去,有兴趣的可以点击:欧拉角(横滚角、俯仰角、偏航角)、旋转矩阵、四元数的转换与解决万向节死锁文章来源地址https://www.toymoban.com/news/detail-754569.html

到了这里,关于MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器人运动学林沛群——变换矩阵

    对于仅有移动,由上图可知: A P = B P + A P B o r g ^AP=^BP+^AP_{B org} A P = B P + A P B or g ​ 对于仅有转动,可得: A P = B A R B P ^AP=^A_BR^BP A P = B A ​ R B P 将转动与移动混合后,可得: 一个例子 在向量中,齐次变换矩阵也是由旋转和移动组成,但要注意的是 先转动在移动 ,要是先移

    2024年02月19日
    浏览(23)
  • 机器人路径规划+matlab

    题目要求: 机器人路径规划是机器人自主导航的关键技术,旨在在有障碍物的环境中按照一定的标准寻找一条从起点到终点的无碰撞路径。本题要求考虑路程最短,起点和终点以及障碍物的相关数据在代码中给出。 解决方案: 本次实验采用RRT算法来进行机器人路径规划问题

    2024年02月11日
    浏览(37)
  • 四足机器人仿真 Matlab

    文件-导入-文件类型-Parasolid-读取文件选择文件路径-模型名称右键-模型-创建 连接-运动副-旋转副-右击主体1选择-右击主体2选择-在关节出设置坐标系 驱动-转动驱动 T+左键 平动模型 R+左键 旋转模型 Z+左键 动态缩放 F或Ctrl+F 以最大比例全面显示模型 参考了B站大佬视频 函数

    2023年04月13日
    浏览(40)
  • Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)

    DH法包括两种:一种为标准DH法,另一种为改进型DH法,如图所示(图片转载来自https://blog.csdn.net/qq_26565435/article/details/91460988): 例子:建立一个常见的简单3轴机器人: 在建立一个常见的六轴机器人: 例子如图所示: case1: case 2: case 3: 在matlab中建立机械臂模型 MATLAB代码:

    2024年02月11日
    浏览(37)
  • 【机器人3】图像雅可比矩阵原理与推导

    理想情况下,图像像素坐标系和图像物理坐标系无倾斜,则二者坐标转换关系如下,且两边求导: [ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ x y 1 ] (1) begin{bmatrix}u\\\\v\\\\1end{bmatrix}=begin{bmatrix}frac{1}{d_x}0u_0\\\\0frac{1}{d_y}v_0\\\\001end{bmatrix}begin{bmatrix}x\\\\y\\\\1end{bmatrix} tag{1} ​ u v 1 ​ ​ = ​

    2024年02月09日
    浏览(22)
  • MATLAB - 机器人关节空间运动模型

      关节空间运动模型描述了在闭环关节空间位置控制下机械手的运动,在关节空间运动模型(jointSpaceMotionModel)对象和关节空间运动模型块中使用。 机器人机械手是典型的位置控制设备。要进行关节空间控制,需要指定关节角度或位置向量 q,以跟踪参考配置 q 参考 . 为此,

    2024年02月02日
    浏览(33)
  • matlab中画有重影的机器人运动过程【给另一个机器人设置透明度】

    1、前言如题 2、参考连接如下 How to plot two moving robot in the same figure and change one of them transparency? - MATLAB Answers - MATLAB Central (mathworks.cn)3、代码:【找到figure中对应对象并设置属性】 4、结果【同样的轨迹,实影的先运动几个步数,虚影后续运动】    

    2024年02月17日
    浏览(34)
  • 【多机器人】基于A_Star算法实现多机器人路径规划附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月04日
    浏览(39)
  • matlab机器人工具箱基础使用

    资料:https://blog.csdn.net/huangjunsheng123/article/details/110630665 test1.m

    2024年02月12日
    浏览(32)
  • 基于Matlab开发的动态机器人轨迹仿真

    基于Matlab开发的动态机器人轨迹仿真 近年来,机器人技术的发展已经进入了高速发展时期。控制与仿真技术作为机器人领域中至关重要的一环,也随之发展壮大。而在动态机器人轨迹仿真方面,Matlab作为一款具备强大数学计算能力的软件,在该领域中得到广泛应用。 本文将

    2024年02月03日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包