ur机械臂运动学正逆解方法

爱鱼 爱鱼     2022-11-18     323

关键词:

最近几个月因为工作接触到了机械臂的项目,突然对机械臂运动方法产生了兴趣,也就是如何控制机械臂的位置和姿态。借用一张网上的图片,应该是ur5的尺寸。我用到的是ur3机械臂,除了尺寸不一样,各关节结构和初始位置和ur5是一样的。

ur机械臂是六自由度机械臂,由D-H参数法确定它的运动学模型,连杆坐标系的建立如上图所示。我当时在这个地方的理解上走了不少弯路,后来找个一个视频,我觉得讲解地比较容易理解,可以参考一下Denavit-Hartenberg参数视频详解。ur机械臂DH参数表如下,

转动关节θi是关节变量,连杆偏移di是常数。

关节编号

α(绕x轴)

a(沿x轴)

θ(绕z轴)

d(沿z轴)

1

α1=90

0

θ1

d1=89.2

2

0

a2=-425

θ2

0

3

0

a3=-392

θ3

0

4

α4=90

0

θ4

d4=109.3

5

α5=-90

0

θ5

d5=94.75

6

0

0

θ6

d6=82.5

由此可以建立坐标系i在坐标系i-1的齐次变换矩阵,注意每次不管平移还是旋转是相对于当前的运动坐标系变换,矩阵右乘

那么把DH参数代入就可以得到所有相邻坐标系的变换矩阵

所以末端坐标系6到基座固定坐标系0的变换矩阵。那么求正解就很简单了,只要输入六个关节角度θi,就得到末端坐标在基坐标系的变换矩阵T。ur机械臂的视教板上末端点的坐标是用六个值[x, y, z, rx, ry, rz]表示的。前三个值[x, y, z]是三维笛卡尔坐标,表示空间位置,后三个值[rx, ry, rz]是坐标旋转向量,表示空间姿态。我们得到的变换矩阵T怎么变成六值坐标[x, y, z, rx, ry, rz]呢?设

T的左上角的3x3矩阵是旋转矩阵,旋转矩阵和旋转向量之间可以通过罗德里格斯(Rodrigues)变换进行转换。opencv里有相应的函数调用。算法也比较简单,不用opencv的函数自己写代码也不难。T的右上角3x1就是空间位置[x, y, z]。这样有变换矩阵T得到六值坐标,完成了正解。

逆解相对要复杂一些,由末端的空间位置和姿态,计算可能的关节角度。逆解的方法有解析法,迭代法和几何法。其中解析法用数学推导,可以得到全部根,但是计算复杂。有的机械臂可以得到无穷解,比如7轴机械臂。而ur的6轴机械臂是有有限解的。这里推导一下ur的逆解。

首先计算求变换矩阵T过程其中的一些中间矩阵。

其中c23=cos(θ23),s23=sin(θ23)。

得到。计算

,得到

等式两边矩阵的行列应该分别相等,由第三行第四列得到,可解得,有两个解。这里注意写程序的时候,求解这里的反正切是用atan2()这类的函数,返回之在(-π,+π]。而反余弦的返回值在[0,π],从而保证在2π范围每个解是唯一的。

由第三行第三列得,可解得,两个解。由第三行第二列得到,可解得

接着由

计算

,得出等式左边等于

,两边平方,令

同样由,令

两式相加得到,则,有两个解。

θ3带入,得,其中t2=tanθ2两式消去c2,得到

最后得到,从而得到θ4

综合有两个解的情况,ur机械臂逆解总共由2x2x2=8组解。

按照上面的算法,用python写了两个程序,一个正解一个逆解验证一下。工作手边是ur3的机械臂,上面的图和表都是ur5的,换成ur3的参数。正解算出来都没有问题,可以和实际机械臂的空间位姿对应。可是逆解算出来8组值,好像只有四组值是对的。一直还没理解到底是怎么回事,仔细检查了算法和程序好像都没有错阿,不知道是哪里出了问题。网上也没有找到答案,如果哪位大神知道,望不吝赐教!

为啥用matlabrobotictoolbox验证的机器人运动学正逆解与公式计算的不同

参考技术A1,rand生成均匀分布的伪随机数。分布在(0~1)之间2,randn生成标准正态分布的伪随机数(均值为0,方差为1)3,randi生成均匀分布的伪随机整数 查看详情

工业机器人(10)-matlabrobottoolbox机械臂工作空间(代码片段)

...本系列文章:工业机器人(4)--MatlabRobotToolbox运动学正、逆解_TechblogofHaoWANG-CSDN博客        机器人的工作空间是机器人在运转过程中,手部参考点在空间所能达到的点的集合。工作空间是一种重要的运动学指 查看详情

工业机器人(10)-matlabrobottoolbox机械臂工作空间(代码片段)

...本系列文章:工业机器人(4)--MatlabRobotToolbox运动学正、逆解_TechblogofHaoWANG-CSDN博客        机器人的工作空间是机器人在运转过程中,手部参考点在空间所能达到的点的集合。工作空间是一种重要的运动学指 查看详情

完整ur机械臂逆运动学求解过程及c++代码实现(代码片段)

...任何问题请在评论区留言,我尽可能的回复大家一.逆运动学的求解需要以下数学运算利用DH参数得到每个关节的变换矩阵;利用变换矩阵求出机械臂整个链的变换矩阵;求出末端位姿;利用已知末端位姿和整个链... 查看详情

matlab机械臂五次多项式仿真出错

1.六自由度机械臂逆解仿真内容简介:六自由度机械臂逆运动学仿真,通过给定圆形轨迹,实时求解机械臂各个关节角度,再通过正运动学计算末端位置,绘制给定圆形轨迹和机械臂末端轨迹,若轨迹重合则解算正确。机器人仿... 查看详情

ur机械臂+robotiqgripper+robotiqftsensor+gazebo+连接真实机械臂+网页控制

ur机械臂+robotiqgripper+robotiqftsensor+gazebo+连接真实机械臂+网页控制​​仓库地址:[ur_ws](https://github.com/borninfreedom/ur_ws),欢迎debug和develop。​​​​xacro制作​​​​连接真实机械臂​​​​gazebo、moveit​​​​网页控制​​仓库... 查看详情

ros-使用ur机械臂最新的ur_robot_driver

使用UR机械臂最新的ur_robot_driver​​一、下载rospackage​​​​二、配置示教器​​​​三、配置Ubuntu网络​​​​1.查看显卡名称​​​​2.设置静态IP​​​​3.重启​​​​4.现在看看右上角网络连接有没有显示对应于控制柜... 查看详情

scara的完整运动学解——代数法求解

...系关系进行分析,我们可以得到D-H参数表如下:为了完成运动学正逆解的求解,我们根据坐标系定义给出对应齐次坐标变换矩阵:当我们将它们按照运动坐标系的顺序连乘后可以得到:为了求解这个方程,我们可以设中间变量:... 查看详情

丹麦优傲机械臂(ur3)使用感受

...实验室买了一台丹麦UniversalRobots(优傲机器人)公司产的UR3机械臂,欲搭配计算机视觉做一些东西,来谈谈自己的体会吧看官网介绍确实挺高大上的,不多说先放两段宣传视频(压缩成俩GIF了):   其实机... 查看详情

机械臂的运动规划

...人觉得运动规划已经很成熟了,无需再研究,但实际上,机械臂运动规划非常难……如果你想要让机器人能帮你拿瓶子、做饭、收拾屋子等,就必须赋予机器人快速生成无碰撞、最优运动轨迹的能力,这就需要靠运动规划了。有... 查看详情

ur机械臂cb3网络课程

【UR机械臂CB3网络课程】1.前言2.概览:特色与术语2.1机器人组成2.1.1控制柜2.1.2UR机器人手臂2.2接通机器人电源2.3移动机械臂3.机器人如何工作3.1选择臂端工具3.2输入有关臂端工具的信息3.3连接外部装置3.4机器人编程4.设置工具4.1末... 查看详情

什么是机器人运动学逆解的多重性

参考技术A机器人的运动学逆解的多重性是指对于给定的机械工作域内,手部可以多个方向到达目的点,因此,对于给定的在机器人工作域内的手部位置可以得到多个逆解。 参考技术B是 查看详情

工程师的浪漫:用机械臂画一个爱心(代码片段)

...1a;用机械臂画一个爱心0写在前面1生成爱心轨迹2机械臂逆运动学实现3实现机械臂画指定轨迹3.1读取数据3.2绘制机械臂3.3反解位姿4拓展0写在前面🔥本文基于过去的博客📚平面2R机器人(二连杆)运动学与动力学建模+附仿... 查看详情

机械臂算法中的重要概念与结论总结(不含详细推导)1

...纳。一、概述    机械臂算法主要包括以下几个方面1、运动学:处理机械臂运动时位置、速度的问题2、动力学:处理机械臂力与运动的问题3、运动规划:处理对于运动轨迹和运动路径的规划问题4、优化问题:... 查看详情

运动控制机械臂的分散控制(decentralizedcontrol)

...为例,具体参见->【机器人算法】机器人动力学、运动学和基于动力学模型的仿真与控制。分散控制属于关节空间的多关节控制。分散控制有以下假设:惯量不太大,可以用等效惯量代替;C矩阵(科氏力和... 查看详情

Kinect 机械臂检测

】Kinect机械臂检测【英文标题】:Kinectroboticarmdetection【发布时间】:2016-03-0111:56:18【问题描述】:我可以使用Kinect传感器检测机械臂(KUKALBRiiwa7R800)的运动并计算它的链接角度,以使其控制另一个机械臂。【问题讨论】:使用Kinec... 查看详情

圆柱坐标型机器人机械手臂是如何确定坐标的

...以便使机器人的全部尺寸参数得到定义(这要参考“前向运动学”)当然所有的坐标系都应该定义在圆柱形的中心轴上,并把原点放在电机的重心上。至于机器手臂的前向运动学,你需要自己看书了。有本书叫机器人学导论,国... 查看详情

stm32控制机械臂抓取的代码

实现stm32控制机械臂抓取的代码,首先需要实现机械臂的控制程序,包括初始化、变量定义、初始位置、转矩计算等。其次,实现传感器的数据采集,例如光电传感器、避障传感器、力感传感器等。再者,根据传感器采集的数据... 查看详情