机器人控制系列教程之雅可比矩阵和奇异性

news2024/11/17 22:27:19

简介

在机器人学和控制理论中,雅可比矩阵扮演着至关重要的角色。它是一个描述机器人末端执行器速度与关节速度之间关系的数学工具。通过雅可比矩阵,我们可以更好地理解和控制机器人的运动,特别是在执行精确操作时。雅可比矩阵的计算通常基于机器人的运动学模型。对于串联机器人,雅可比矩阵可以通过微分运动学方程来计算。这涉及到对机器人的正向运动学方程进行微分,以找到关节速度与末端执行器速度之间的关系。

在机器人学和控制理论的领域内,雅可比矩阵(Jacobian matrix)构成了理解和操控机器人动力学行为的核心数学框架。该矩阵精确地阐述了机器人末端执行器的速率向量与其关节速率向量之间的线性映射关系,从而为机器人的精确控制与路径规划提供了理论基础。雅可比矩阵的构建与求解过程,通常依赖于机器人的运动学模型,尤其是对于串联连杆型机器人(serial manipulators),其雅可比矩阵的推导涉及对正向运动学方程的微分运算,旨在揭示关节空间的速率变化如何影响任务空间中末端执行器的速率变化。

在形式化表述中,雅可比矩阵定义为末端执行器速度向量( v ee \mathbf{v}_{\text{ee}} vee)关于关节速度向量($\mathbf{q}$)的偏导数矩阵,即:

J ( q ) = ∂ v ee ∂ q J(\mathbf{q}) = \frac{\partial \mathbf{v}_{\text{ee}}}{\partial \mathbf{q}} J(q)=qvee

其中, J ( q ) ∈ R m × n J(\mathbf{q}) \in \mathbb{R}^{m \times n} J(q)Rm×n 是雅可比矩阵, m m m表示末端执行器的自由度, n n n 表示机器人的关节数目,而 v ee \mathbf{v}_{\text{ee}} vee q \mathbf{q} q 分别表示末端执行器的速度和关节的位移。

雅可比矩阵的计算过程涉及对机器人的运动学方程进行微分,这一过程需要考虑到机器人的几何结构、关节配置以及连杆间的相对运动。在实际操作中,雅可比矩阵的求解通常通过数值方法或解析方法实现,其中解析方法因其计算效率和精度而在实际工程应用中更为常见。

雅可比矩阵不仅在机器人的动力学建模和控制中发挥着关键作用,而且在机器人的逆运动学求解、路径规划、碰撞检测以及传感器融合等多个领域中都有着广泛的应用。通过深入研究雅可比矩阵的性质,如其秩、条件数和奇异性,可以为机器人系统的稳定性分析和性能优化提供重要的理论依据。因此,雅可比矩阵是连接机器人关节空间与任务空间的桥梁,是实现高精度机器人控制不可或缺的工具。

求解方法

较为常用的有速度雅可比矩阵、力雅可比矩阵,其中,力雅可比矩阵是速度雅可比矩阵的转置,可表示为:
在这里插入图片描述

公式中, v v v ω \omega ω 是笛卡尔空间(工作空间)中的速度和角速度,并且 $\dot q $是一个关节速度向量。

对于一般的串联机器人在构造雅可比矩阵时,主要有三种方法:

  1. 矢量积分法:是一种建立在运动坐标系概念基础上的雅可比矩阵构造方法。
  2. 指数积分法:是一种基于机器人运动方程的指数积分公式推导的方法。
  3. 微分变换法:即根据机器人末端坐标系或基坐标系得微小平移和旋转运动导致得末端位姿变化,将这种变化等价变换,即可构造出机器人的雅可比矩阵。

根据微分变换的等价变换,可得出(详细推算可见[1]):

在这里插入图片描述

其中, n 、 o 、 a n、o、a noa矢量构成第i连杆坐标系到机器人末端坐标系之间变换的,其形式为:

在这里插入图片描述

对于转动关节的第i个连杆,其雅可比矩阵的列矢量为:
在这里插入图片描述

对于平移关节的第i个连杆,其雅可比矩阵的列矢量为:
在这里插入图片描述

利用上述方法得到的雅可比矩阵列矢量,代表了关节坐标矢量的一个分量的微分运动量与机器人末端坐标系的广义位置矢量的微分运动量之间的关系。因此,通过上述两式求取旋转关节和平移关节到机器人末端的雅可比矩阵列矢量时,需要首先求取该关节到机器人末端的变换矩阵。

对于第6个关节,也就是该关节的连杆坐标系到末端坐标系的变换矩阵。由于是转动关节,根据下式:
在这里插入图片描述

5 4 T 6 5 T {}_5^4T{}_6^5T 54T65T 为已知变量,根据上上式即可求解出 J 6 {J_6} J6。以此类推即可求解出所有的 J i {J_i} Ji.

最后,即可写出该机器人的雅可比矩阵为:
在这里插入图片描述

MATLAB机器人工具箱求解

利用MATLAB机器人工具箱,可进行如下编写,其中UR5机器人模型程序编写请见:

clear,clc,close all;
%% 建立机器人DH参数,初始状态为竖直状态
L1=Link('d',162.50,'a',0,'alpha',0,'modified');
L2=Link('d',0,'a',0,'alpha',pi/2,'offset',pi/2,'modified');
L3=Link('d',0,'a',425,'alpha',0,'modified');
L4=Link('d',126.70+6.6,'a',392.25,'alpha',0,'offset',pi/2,'modified');
L5=Link('d',99.70,'a',0,'alpha',pi/2,'modified');
L6=Link('d',99.60-4.5,'a',0,'alpha',-pi/2,'modified');
 
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','UR5')

% 假设六自由度的串联机器人的各个关节的角度如下:
qn = [0 0.7854 3.1416 0 0.7854 0];

%jacob0()求解的是将关节速度映射到世界坐标系中的末端执行器空间速度
robot.jacob0(qn)
%jaconb()求解的是将关节速度映射到工具坐标系中的末端执行器空间速度
robot.jacobe(qn)

可得:

奇异性

即:奇异位形,指在机器人的工作空间中,其末端参考点不能实现沿任意方向的微小位移或转动时相应机器人的位形。为机器人的一个重要的运动学特性。

从机器人运动学来说,我们在已知线性变换可以将关节速度和笛卡尔速度联系起来,但大多数机器人的线性变换矩阵都会出现不可逆现象,在变换矩阵出现不可逆时,其对应的机器人位形即奇异位形,简称奇异性

造成后果: 当机械手运动到奇异位置时,产生的不良影响主要表现在三个方面:
使机器人的实际操作自由度减少,从而手部无法实现沿着某些方向的运动,同时减少了独立的内部关节变量数目。
某些关节角速度趋向无穷大,引起机器人失控,导致执行器偏离了规定的轨道。
使雅可比矩阵退化,从而所有包括雅可比的求逆控制方案无法实现。

分类: 通常分为两类:

  1. 边界奇异位形:机器人在完全展开或者收回使得末端执行器处于或非常接近工作空间边界的情况;
  2. 内部奇异位形:是远离工作空间时,通常是由于两个或多个关节轴线共线引起的。

参考文献

[1]谭民.先进机器人控制[M].高等教育出版社,2007.

往期推荐

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1858840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python turtle 画帕恰狗

先上个图给大家看看 代码 ##作者V w1933423 import turtle turtle.bgcolor("#ece8dc") turtle.setup(600,900) p turtle.Pen() p.pensize(14) p.speed(5) p.color("black")p.penup() p.goto(-54,-44) p.pendown() p.goto(-37,-39) p.goto(-27,-24) p.go…

swp添加池子addLiquidity失败

案发现场 首次添加交易对、一直失败、但是也没提示具体的原因。到这一步就没了、由下图可知、也没看到log、由此可见第一步就失败了。 解决方案 工厂KywFactory 添加如下 bytes32 public constant INIT_CODE_PAIR_HASH keccak256(abi.encodePacked(type(KywPair).creatio…

0620所学——环境变量、CMake等

https://www.cnblogs.com/bravesunforever/p/10939078.html CMake: https://zhuanlan.zhihu.com/p/659412062 0621: 学会了在Github里创建组织,把本地仓库“同步”,就可以上传到Github,然后学会了把自己的Repos转移到组织里。G…

前端中的深拷贝

第1部分:引言 深拷贝:前端开发的隐形守护者 在前端开发的世界里,数据的传递和状态的管理是构建用户界面的基础。然而,数据的复制常常被忽视,直到它引发bug,我们才意识到它的重要性。深拷贝,这…

NC--介绍-未加密加密后-流量抓包对比

免责声明:本节仅做技术交流与学习... 目录 介绍: 用法: 未加密--流量抓包 加密: 攻击端 靶机 抓包分析: 介绍: nc 是一个Linux环境下常用的工具命令,可以用来帮助开发者查询和解决网路问题,通常被认为是 NetCat 工具的缩写,在网络工具…

arduino按钮

Arduino - Button Arduino - 按钮 参考: ezButton-按钮库从按钮开关看上拉pull-up电阻、下拉电阻按键的防抖动处理 The button is also called pushbutton, tactile button or momentary switch. It is a basic component and widely used in many Arduino projec…

06 - matlab m_map地学绘图工具基础函数 - 绘制海岸线

06 - matlab m_map地学绘图工具基础函数 - 绘制海岸线 0. 引言1. 关于m_coast2. 关于m_gshhs3. 关于m_gshhs_c、m_gshhs_I、m_gshhs_i、m_gshhs_h、m_gshhs_f4. 关于m_shaperead5. 结语 0. 引言 本篇介绍下m_map中添加绘制海岸线的一系列函数及其用法,主要函数包括m…

分享一个解决 EF 性能低的思路,通过 Python 访问心跳侦测 API 保持 EF 在线

前言 .NET FrameWork EF(Entity Framework)是一个很优秀的 ORM 框架,对于提高工作效率很有帮助,但由于底层原因,在程序启动时,EF 需要初始化和加载模型及其对应的数据库元数据等等,涉及到数据库…

分布式数据库垂直分片如何计算?

在复习分布式数据库这一部分时,发现垂直分片较难理解,上网上查找资料,也发现找不到,固在考试结束后将自己的理解记录下来。 垂直分片的计算总体上分为三个步骤;1、属性亲和度矩阵AA的计算;2、聚类亲和度CA矩阵的计算&a…

“了解MySQL中的enum枚举数据类型“

目录 # 开篇 1. 创建包含枚举类型的表 2. 插入枚举类型的数据 3. 查询包含枚举类型的表 4. 更新枚举类型的数据 5. 使用枚举类型的好处 注意事项 示例总结 附加 # 开篇 在数据库中,枚举(ENUM)是一种数据类型,用于存储一组…

vue3 运用高德地图 自定义弹框 为信息窗体 添加 new AMaps.value.InfoWindow 添加事件

效果图 划过散点的时候出现每个三点位置的数据提示 点击具体散点获取展示信息弹框,并为其添加点击事件 注意点: 1 即使是用的vue,也不能使用click为窗体添加点击事件,需要使用onclick, (原因&#xff1a…

Android 13 创建静态快捷方式shortcuts

参考 创建快捷方式 原生系统上&#xff0c;长按应用图标显示快捷方式&#xff0c;点击快捷方式就打开应用的某个页面。 给自己的应用也加一下。 1.清单文件添加 在应用的主页面添加如下&#xff0c;shortcuts 就是要配置的文件。 <meta-dataandroid:name"android.…

01 Swift 基础语法(变量,常量,注释,整数,浮点数,元组)

Swift 介绍 Swift 是一门用于开发 iOS、macOS、watchOS 和 tvOS 应用的新编程语言。它以安全、快速和互动的特点而著称。Swift 提供了代码预览&#xff08;playgrounds&#xff09;功能&#xff0c;使程序员可以在不编译和运行应用程序的情况下&#xff0c;实时运行 Swift 代码…

多模态-大模型:MLLM综述(适用初学)

文章目录 前言一、多模态模型基础知识二、多模态指令调优&#xff08;M-IT&#xff09;1.MLLM基础2.模态对齐3.数据获取4.模态桥接 三、多模态上下文学习&#xff08;M-ICL&#xff09;三、多模态思维链 (M-CoT)四、LLM辅助视觉推理1.训练范式2. LLM功能 五、一些思考总结 前言…

索引的分类和回表查询——Java全栈知识(29)

索引的分类和回表查询 Mysql 的索引按照类型可以分为以下几类&#xff0c;但是我们使用的 InnoDB 只支持主键索引&#xff0c;唯一索引&#xff0c;普通索引&#xff0c;并不支持全文索引。 1、聚集索引和二级索引 InnoDB 可以将索引分为两类分别是聚集索引和二级索引&…

模板匹配算法:基于模板相关性匹配的手写数字识别

1 前言 得益于硬件技术的发展&#xff0c;基于深度学习的各种识别方法如火如荼&#xff0c;在各种应用场景中都取得很好的效果。本人入行深度学习领域若干年&#xff0c;做过很多项目的工程化评估&#xff0c;对于神经网络是如何工作的也解释不清楚&#xff0c;只是知道这样做是…

如何借用物联网快速实现高标准农田信息化

如何借用物联网快速实现高标准农田信息化 高标准农田信息化&#xff0c;作为现代农业发展的重要基石&#xff0c;是指在建设高产、稳产、节水、环保的农田基础上&#xff0c;深度融合现代信息技术&#xff0c;实现农田管理的精准化、智能化和高效化。物联网&#xff08;Intern…

[Angew]:调整单原子 Pt1/CeO2催化剂中铂的局部环境以实现稳定的低温 CO 氧化

通过热冲击合成调整孤立 Pt2+的局部环境,开发出一种用于 CO 氧化的高活性和坚固的单原子 Pt1/CeO2催化剂(见图)。惰性气氛中的超快冲击波在非对称 Pt1O4结构中产生 Pt 单原子,从而大大增强了低温活性,并且在氧化条件下仍能保持活性。 摘要:通过原子捕获(AT,800C空气中…

pycharm在pytorch环境的使用

前言 有时我们使用jupyter感觉不习惯&#xff0c;想使用编译器进行相关任务。在安装好pytorch环境下&#xff0c;我们可以使用pycharm等编译器进行完成任务等操作。 安装pycharm不做赘述。配置安装好pytorch环境可以参考我前一篇博客&#xff1a; 深度学习工具jupyter创建并检…

基于Java考研助手网站设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…