matlab 机器人工具箱3-机械臂及运动学
本文主要参考清华大学出版社的《机器人仿真与编程技术》一书
机械臂D-H建模的相关知识的主要参考
《机器人学导论》 John J.Craig 著
《Mdern Robotics Mechanics ,Planning and Control》Kevin M 等人著
https://blog.csdn.net/lingchen2348/article/details/78561906前辈写的csdn的文章
https://wenku.baidu.com/view/03d586024afe04a1b171de8d.html一个机器人学的ppt
《A kinematic notation for lower-pair mechanisms based on matrices》修正D-H建模
主要使用的就是D-H四参数:
(1)连杆i-1的长度。是指图中a(i-1)所示的距离。表示i-1关节的轴线与i关节的轴线的垂直距离。
(2)连杆i-1的扭角。是指图中α(i-1)所示的角度。空间两条直线即使不相交也存在夹角,那么,扭角α(i-1)就是关节i-1与关节i轴线的夹角。
(3) 连杆i 相对于连杆i-1的偏置di。下图中的di就是偏置。我们来看i关节的轴线,它与前后两个关节轴线各有一条公垂线(红线,下一个关节虽没画出来),这两条公垂线的距离就是连杆i相对连杆i-1的偏置。(请看清楚连杆i-1和连杆i的位置,蓝字)。
(4) 关节角θi。连杆i相对于连杆i-1绕i轴的旋转角度,图中右下角的θi,其实就是上图两条红色公垂线的夹角。
下面3个加粗标题就是DH建模的主要规则:
先建立中间坐标系{i},后两端坐标系{0}、{n}
坐标系{0}和{n}的规定
Z0轴沿关节轴1的方向,关节变
量1为零时, 坐标系{0}与{1}重合
关节1是旋转关节时, d0=0,
关节1是移动关节时, θ0=0
Zn轴沿关节轴n-1的方向,关节变
量n-1为零时, 坐标系{n-1}与{n}重合
关节n-1是旋转关节时, dn=0,
关节n-1是移动关节时, θn=0
建系的原则
1)确定Z轴:找出关节轴线及关节转向采用右手定则确定Z;
2)确定原点:如果两相邻轴线Zi与Zi+1不相交,则公垂线与轴线i的交
点为原点,注意平行时原点的选择应使偏置为零;如果相交则交点
为原点,注意:如果重合则原点应使偏置为零;
3)确定X轴:两轴线不相交时,X与公垂线重合,指向从i到i+1;
若两轴线相交,则X是两轴线所成平面的法线X= - +Zi × Zi+1 ;
注意:如果两轴线重合,则X轴与轴线垂直且使其他连杆参数为零;
4)按右手定则确定Y ;
5)当第一个关节变量为零时,规定{0}与{1}重合,对于
末端坐标系{n},原点与X任选,希望坐标系{n}使杆参数尽量为零。
以上区域选自:https://blog.csdn.net/lingchen2348/article/details/78561906前辈写的csdn的文章
我自己的思路就是先通过给定的模型,给每个关节创建相对应的坐标系,主要是确定xz轴以及坐标原点,之后测量xz的变换(角度和位移)就可以,具体的步骤如下:
首先确定每个关节的z轴,也就是关节的轴线方向,z的方向指向电机旋转的正向,也就是使用右手定则,大拇指指向z轴的正向,四指方向指向电机旋转的正向(做控制时,给电机一个正参数,电机旋转的方向)
之后确定坐标系原点,当前后两个轴线不相交,这个时候比较好理解,坐标系的原点就在对应的关节上,在轴i与轴i+1的公垂线与轴线的交点上。但是当两个轴线相交的时候,原点取在轴i与轴i+1的交点上,经常会出现坐标系i与i+1原点重合都在i+1的关节上,看上去i关节上没有坐标系。
确定x轴,两轴线不相交时,X与公垂线重合,指向从i到i+1;若两轴线相交,则X是两轴线所成平面的法线X= +-Zi+1 × Zi,也就是右手定律由i+1轴指向i轴,拇指代表的方向。(这里也写道的+-的情况,其实x轴正负都可以,一般情况为了计算方便,x轴方向尽量和前一个坐标系x轴方向一致)
之后就是确定参数,4个参数其实就是代表了x,z轴的平移和旋转。
在之后的参数中第i个关节的关于z中轴的参数都是i-1,关于x轴的参数都是i,比如:
现在D-H参数就确定下来了
下面是matlab部分:
机器人工具箱可以使用Link()创建一个连杆,具体的参数如下
L =Revolute(std): theta=q, d=2, a=3, alpha=0.785398, offset=0
关节类型:默认旋转(0),1的话改为平移
theta关节角
d连杆偏移
a连杆长度
alpha连杆转角
offset关节偏移
之后建一个多连杆
L(1)=Link([0,0,1,0])L(2)=Link([0,0,.8,0])L(3)=Link([0,0,.6,0])Ltree_link=SerialLink(L,'name','tree_link')
显示如下
L =Revolute(std): theta=q1 d=0 a=1 alpha=0 offset=0 Revolute(std): theta=q2 d=0 a=0.8 alpha=0 offset=0 Revolute(std): theta=q3 d=0 a=0.6 alpha=0 offset=0 tree_link =tree_link:: 3 axis, RRR, stdDH, slowRNE +---+-----------+-----------+-----------+-----------+-----------+| j | theta | d | a | alpha | offset |+---+-----------+-----------+-----------+-----------+-----------+| 1| q1| 0| 1| 0| 0|| 2| q2| 0| 0.8| 0| 0|| 3| q3| 0| 0.6| 0| 0|+---+-----------+-----------+-----------+-----------+-----------+
这里为什么给饿了theta=0,显示是q1?因为D-H建模后,其他的参数都确定了,只有theta角会随着关节的旋转而变化,是一个随着后期运动而不断变换的值,0代表他的初始状态。q1代表变化量。比如
L=Link([0,0,1,0])L.A(0)L.A(pi)ans =1 0 0 10 1 0 00 0 1 00 0 0 1ans =-1 0 0 -10 -1 0 00 0 1 00 0 0 1
可以看到绕z轴旋转了pi
当我们使用改进型D-H建模时就加上参数'modified'
L1=Link([0,2,3,pi/4,0])L2=Link([0,2,3,pi/4,0],'modified')L1.A(0)L2.A(0)
对比一下结果:
ans =1 0 0 30 0.7071 -0.7071 00 0.7071 0.7071 20 0 0 1ans =1 0 0 30 0.7071 -0.7071 -1.4140 0.7071 0.7071 1.4140 0 0 1
两者的区别参考:https://www.zhihu.com/question/22365926/answer/155391570
引用原文的说法就是标准的D-H建模(standard DH)建立坐标系的时候,将坐标系固定在该连杆的输出端(下一个关节),所以就使得i坐标系与i+1连杆对齐,而改进D-H建模(modified DH)方法就是i坐标系与i连杆对齐。标准的D-H在处理树形结构的时候会产生歧义,改进的DH不存在这个问题,虽然链状的串联机械臂不会表现出来,因为本人所学为改进式,所以默认的就是modified的。
当我们使用多个机械臂进行连续变换,求运动学正解的时候,使用机器人工具箱fkine(),其中的参数为每个关节的theta角的大小
L(1)=Link([0,0,1,0])L(2)=Link([0,0,.8,0])L(3)=Link([0,0,.6,0])tree_link=SerialLink(L,'name','tree_link')T = tree_link.fkine([0 0 0])subplot(2,2,1)title("T")tree_link.plot([0 0 0])subplot(2,2,2)title("T1")tree_link.plot([pi/2 0 0])subplot(2,2,3)title("T2")tree_link.plot([pi/2 pi/2 0])subplot(2,2,4)title("T3")tree_link.plot([pi/2 pi/2 pi/2])
我们发现四个图都是从上个位置一直变换到最后的状态,图一1-2-3-4,图二2-3-4,图三3-4 ,图四4.测试一下就是tree_link.plot相当于改变了L的状态,后面的改变会影响前面的状态,是前面的图也进行了变换。如果我们 tree_link_new=SerialLink(L,'name','tree_link')对这个plot,效果也是一样,图i+1的状态会影响i的状态。我们想分开测试,需要定义新的L_new=Link...
matlab 机器人工具箱3-机械臂及运动学相关推荐
- matlab机器人雅可比矩阵实验,机械臂通过雅可比矩阵实现正运动学及逆运动学迭代解(工具:matlab)...
1.利用工具箱建模,供验证用 选用二轴平面机械臂,两个关节角分别是theta1和theta2. view(3); Lnk1 = Link([ 0 0 100 0 0]);%theta,d,a,alph ...
- Matlab机器人工具箱(3-1):五自由度机械臂(正逆运动学)
01 正运动学:DH表示法 1955年, Denavit和Hartenberg在"ASME Journal of Applied Mechanic"发表了一篇论文,这篇论文介绍了一 ...
- 五自由度简单机械臂运动学及动力学分析|基于MATLAB机器人工具箱Rvctool
五自由度简单机械臂运动学及动力学分析|基于MATLAB机器人工具箱Rvctool 1.机械臂要满足其抓手能在0.50.50.5立方米的工作空间内活动,终端抓手要能横向以及纵向抓到这个空间内每一个点(死 ...
- MATLAB机器人工具箱 机械臂仿真
MATLAB机器人工具箱 机械臂仿真 学习自B站:Nino_FM 采用 Standard DH 建模法 旋转算子 R = rotx(pi/2) R = 1.0000 0 00 0.9996 -0.02 ...
- 【机器人1】基于POE公式的UR5机械臂正运动学建模求解与matlab仿真
基于PoE公式的UR5机械臂正运动学建模求解与matlab仿真 基于PoE公式的UR5机械臂正运动学分析 1.1 运动旋量的螺旋释义(理论基础) 1.2 基于PoE公式的UR5机械臂正运动学模型 1. ...
- matlab机器人工具箱PUMA560,[连载 5]Vrep--Matlab Robitic Toolbox--PUMA560机械臂控制
大家如果完成了连载4的内容,接下来面临的就是如何驱动机械臂了,那么这一节的主要目标就是全面介绍在Vrep.Matlab和Simulink中,如何使用Vrep自带的Lua脚本和Matlab结合Peter ...
- 工业机器人(9)-- Matlab机器人工具箱之创建单臂/双臂机器人SDH/MDH方法
目录 1. Matlab机器人工具箱 2. 创建MDH单机械臂 3. 创建MDH双臂机器人 UR构型双臂 如何进行轨迹仿真 4. MDH-双臂机器人 1. Matlab机器人工具箱 官方网站Robot ...
- MATLAB机器人工具箱(一 机器人运动学)
目录 一.三维空间位姿表示与坐标变换方法 三维空间的位置与姿态表示 位置描述 姿态描述 旋转矩阵 坐标系绘制 坐标变换 平移坐标变换 旋转变换 二.机器人运动学 D-H参数法 创建一个连杆对象 创建一 ...
- MATLAB机器人工具箱【1】——建模+正逆运动学+雅克比矩阵
MATLAB机器人工具箱[1]-- 机械臂建模+正逆运动学+雅克比矩阵 1. 二维空间位姿描述 2. 三维空间位姿描述 3. 建立机器人模型 3.1 Link 类 3.2 SerialLink 类 3 ...
最新文章
- Github的创建及使用
- C++文本处理_文件读写
- MySQL python update 语句
- android tv 源代码,android_tv_metro
- Linux学习:文件描述符表
- webservice 的datetime不能为null_用.net发布一个简单的webservice
- ie6 z-index bug
- Redis笔记之基本数据结构 链表
- keras训练完以后怎么预测_农村小孩只有户口,没有承包地,以后怎么养老?看完我安心了...
- 计算机桌面程序名,深度技术win7旗舰版电脑桌面图标只显示名称了怎么办
- 对象流--对象的序列化
- Google Chrome 离线安装包官方下载
- MTR和WinMTR的下载和使用
- java代码实现CGCS2000大地坐标系XY值转化为对应经纬度
- 计算机 交换机连接设置方法,怎么用串口线连接电脑和交换机 连接步骤教程
- -TEST 12 for NOIP ......(30-300)-----(( ! ))
- 赵小楼《天道》《遥远的救世主》深度解析(49)丁元英的“不执著出人头地”和主流价值观的“执著出人头地”
- 计算机在随机抽样上的应用,数理统计学中随机抽样的应用研究
- gamemaker studio socket例子
- C++snprintf的使用
热门文章
- 自定义下拉框样式,利用prototype制作
- 金百达(KINGBANK)DDR5 6000 内存超频
- Android封闭系统,最封闭的Android系统—魅族Flyme
- java反编译微信小程序_反编译微信小程序(最新)
- mysql 存储年月_php – 在mysql数据库中存储月份和年份
- MySQL学习笔记(基础篇未完待补充)
- python定义数组-python数组定义
- Java 后端接收前端的富文本参数,传到后台后标签样式数据丢失
- 刚刚,腾讯、网易官宣100W个微信红包封面,速度撸!!
- 烽火HG680-MC-晨星9385芯片-9.0-免拆卡刷固件包