草庐IT

UR5机械臂正向运动学

翻滚的石子 2023-09-29 原文

一、UR机械臂的DH参数

1.1 UR机械臂连杆坐标系图

图中红色为x轴,橘色为z轴。

1.2 UR机械臂的DH参数表

上图中的尺寸并不是完全精准尺寸,因此下面DH参数表中尺寸是从三维模型中测量的。

a i a_i ai α i \alpha_i αi d i d_i di θ i \theta_i θi
10 π / 2 \pi/2 π/289.15 θ 1 \theta_1 θ1
2-42500 θ 2 \theta_2 θ2
3-392.2500 θ 3 \theta_3 θ3
40 π / 2 \pi/2 π/2109.15 θ 4 \theta_4 θ4
50 − π / 2 -\pi/2 π/294.65 θ 5 \theta_5 θ5
60082.30 θ 6 \theta_6 θ6

二、UR机械臂正运动学分析

2.1 正运动学建模

从坐标系 i i i到坐标系 i − 1 i-1 i1的通用变换矩阵公式为:
i − 1 i T = R o t z i − 1 ( θ i ) T r a n s z i − 1 ( d i ) R o t x i ( α i ) T r a n s x i ( a i ) = [ c o s θ i − s i n θ i 0 0 s i n θ i c o s θ i 0 0 0 0 1 0 0 0 0 1 ] ⋅ [ 1 0 0 0 0 1 0 0 0 0 0 d i 0 0 1 1 ] ⋅ [ 1 0 0 0 0 c o s α i − s i n α i 0 0 s i n α i c o s α i 0 0 0 0 1 ] ⋅ [ 1 0 0 a i 0 1 0 0 0 0 1 0 0 0 0 1 ] = [ c o s θ i − s i n θ i ⋅ c o s α i s i n θ i ⋅ s i n α i a i c o s θ i s i n θ i c o s θ i ⋅ c o s α i − c o s θ i ⋅ s i n α i a i s i n θ i 0 s i n α i c o s α i d i 0 0 0 1 ] _{i-1}^{i}\textrm{T}=Rot_{z_{i-1}}(\theta_i)Trans_{z_{i-1}}(d_i)Rot_{x_i}(\alpha_i)Trans_{x_i}(a_i)\\ =\begin{bmatrix} cos\theta_i & -sin\theta_i & 0 & 0\\ sin\theta_i & cos\theta_i & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{bmatrix}\cdot \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & d_i\\ 0 & 0 & 1 & 1 \end{bmatrix}\cdot \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & cos\alpha_i & -sin\alpha_i & 0\\ 0 & sin\alpha_i & cos\alpha_i & 0\\ 0 & 0 & 0 & 1 \end{bmatrix}\cdot \begin{bmatrix} 1 & 0 & 0 & a_i\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{bmatrix}\\ =\begin{bmatrix} cos\theta_i & -sin\theta_i \cdot cos\alpha_i & sin\theta_i \cdot sin\alpha_i & a_i cos\theta_i\\ sin\theta_i & cos\theta_i \cdot cos\alpha_i & -cos\theta_i \cdot sin\alpha_i & a_i sin\theta_i\\ 0 & sin\alpha_i & cos\alpha_i & d_i\\ 0 & 0 & 0 & 1 \end{bmatrix} i1iT=Rotzi1(θi)Transzi1(di)Rotxi(αi)Transxi(ai)=cosθisinθi00sinθicosθi000010000110000100000100di110000cosαisinαi00sinαicosαi00001100001000010ai001=cosθisinθi00sinθicosαicosθicosαisinαi0sinθisinαicosθisinαicosαi0aicosθiaisinθidi1
将上述DH参数代入到上述公式,可以得到变换矩阵:
1 0 T = [ c o s θ 1 0 s i n θ 1 0 s i n θ 1 0 − c o s θ 1 0 0 1 0 d 1 0 0 0 1 ] _{1}^{0}\textrm{T}=\begin{bmatrix} cos\theta_1 & 0 & sin\theta_1 & 0\\ sin\theta_1 & 0 & -cos\theta_1 & 0\\ 0 & 1 & 0 & d_1\\ 0 & 0 & 0 & 1 \end{bmatrix} 10T=cosθ1sinθ1000010sinθ1cosθ10000d11

2 1 T = [ c o s θ 2 − s i n θ 2 0 a 2 c o s θ 2 s i n θ 2 c o s θ 2 0 a 2 s i n θ 2 0 0 1 0 0 0 0 1 ] _{2}^{1}\textrm{T}=\begin{bmatrix} cos\theta_2 & -sin\theta_2 & 0 & a_2 cos\theta_2\\ sin\theta_2 & cos\theta_2 & 0 & a_2 sin\theta_2\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} 21T=cosθ2sinθ200sinθ2cosθ2000010a2cosθ2a2sinθ201

3 2 T = [ c o s θ 3 − s i n θ 3 0 a 3 c o s θ 3 s i n θ 3 c o s θ 3 0 a 3 s i n θ 3 0 0 1 0 0 0 0 1 ] _{3}^{2}\textrm{T}=\begin{bmatrix} cos\theta_3 & -sin\theta_3 & 0 & a_3 cos\theta_3\\ sin\theta_3 & cos\theta_3 & 0 & a_3 sin\theta_3\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} 32T=cosθ3sinθ300sinθ3cosθ3000010a3cosθ3a3sinθ301

4 3 T = [ c o s θ 4 0 s i n θ 4 0 s i n θ 4 0 − c o s θ 4 0 0 1 0 d 4 0 0 0 1 ] _{4}^{3}\textrm{T}=\begin{bmatrix} cos\theta_4 & 0 & sin\theta_4 & 0\\ sin\theta_4 & 0 & -cos\theta_4 & 0\\ 0 & 1 & 0 & d_4\\ 0 & 0 & 0 & 1 \end{bmatrix} 43T=cosθ4sinθ4000010sinθ4cosθ40000d41

5 4 T = [ c o s θ 5 0 − s i n θ 5 0 s i n θ 5 0 c o s θ 5 0 0 − 1 0 d 5 0 0 0 1 ] _{5}^{4}\textrm{T}=\begin{bmatrix} cos\theta_5 & 0 & -sin\theta_5 & 0\\ sin\theta_5 & 0 & cos\theta_5 & 0\\ 0 & -1 & 0 & d_5\\ 0 & 0 & 0 & 1 \end{bmatrix} 54T=cosθ5sinθ5000010sinθ5cosθ50000d51

5 6 T = [ c o s θ 6 − s i n θ 6 0 0 s i n θ 6 c o s θ 6 0 0 0 0 1 d 6 0 0 0 1 ] _{5}^{6}\textrm{T}=\begin{bmatrix} cos\theta_6 & -sin\theta_6 & 0 & 0\\ sin\theta_6 & cos\theta_6 & 0 & 0\\ 0 & 0 & 1 & d_6\\ 0 & 0 & 0 & 1 \end{bmatrix} 56T=cosθ6sinθ600sinθ6cosθ600001000d61

正运动学的最终变换矩阵为:
T = 1 0 T ⋅ 2 1 T ⋅ 3 2 T ⋅ 4 3 T ⋅ 5 4 T ⋅ 6 5 T \textrm{T}=_{1}^{0}\textrm{T} \cdot _{2}^{1}\textrm{T} \cdot _{3}^{2}\textrm{T} \cdot _{4}^{3}\textrm{T} \cdot _{5}^{4}\textrm{T} \cdot _{6}^{5}\textrm{T} T=10T21T32T43T54T65T

2.2 正运动学MATLAB编程

T_param.m:用于获取坐标系 i i i到坐标系 i − 1 i-1 i1的通用变换矩阵

function T = T_param(theta, d, a, alpha)
% 输入:theta,d,a和alpha为变量,两个相邻连杆坐标系之间DH参数
% 输出:机械臂两个相邻连杆坐标系的正运动学变换矩阵

    T = [cos(theta), -sin(theta)*cos(alpha), sin(theta)*sin(alpha) , a*cos(theta);
         sin(theta), cos(theta)*cos(alpha) , -cos(theta)*sin(alpha), a*sin(theta);
         0         , sin(alpha)            , cos(alpha)            , d           ;
         0         , 0                     , 0                     , 1            ];
     
end

myfkine.m:用于获取UR机械臂的坐标变换矩阵

function T = myfkine(theta, d, a, alpha)
% 输入:theta,d,a和alpha为数组,存储机械臂DH参数
% 输出:机械臂正运动学变换矩阵

    T01 = T_param(theta(1), d(1), a(1), alpha(1));
    T12 = T_param(theta(2), d(2), a(2), alpha(2));
    T23 = T_param(theta(3), d(3), a(3), alpha(3));
    T34 = T_param(theta(4), d(4), a(4), alpha(4));
    T45 = T_param(theta(5), d(5), a(5), alpha(5));
    T56 = T_param(theta(6), d(6), a(6), alpha(6));
    
    T = T01*T12*T23*T34*T45*T56;
    
end

main.m:比较机器人工具箱建立的机器人模型和自编代码输出结果

%% 启动机器人工具箱
% startup_rvc 

%% 使用机器人工具箱建立机器人模型
% UR5机械臂参数
a = [0, -0.42500, -0.39225, 0, 0, 0];
d = [0.089159, 0, 0, 0.10915, 0.09465, 0.08230];
alpha = [pi/2, 0, 0, pi/2, -pi/2, 0];

% 建立UR5机械臂模型
L1 = Link('d', d(1),  'a', a(1), 'alpha', alpha(1),  'standard');
L2 = Link('d', d(2),  'a', a(2), 'alpha', alpha(2),  'standard');
L3 = Link('d', d(3),  'a', a(3), 'alpha', alpha(3),  'standard');
L4 = Link('d', d(4),  'a', a(4), 'alpha', alpha(4),  'standard');
L5 = Link('d', d(5),  'a', a(5), 'alpha', alpha(5),  'standard');
L6 = Link('d', d(6),  'a', a(6), 'alpha', alpha(6),  'standard');
tool_robot = SerialLink([L1,L2,L3,L4,L5,L6], 'name', 'UR5');
% tool_robot.display();
% view(3); % 必须添加,否则报错,错误是由版本引起
% tool_robot.teach();

%% 验证机器人正运动学模型
theta = [1,1/2,1,1,1,1];
T_tool = tool_robot.fkine(theta)    %机器人工具箱建立模型输出位姿信息

TT = myfkine(theta, d, a, alpha)    %编写代码输出位姿信息

输出结果:

有关UR5机械臂正向运动学的更多相关文章

  1. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  2. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

  3. ruby-on-rails - 机械师 vs FactoryGirl - 优缺点 - 2

    我正在与factory_girl一起工作,但正在研究机械师gem。你能告诉我-迁移到机械师的利弊是什么?您是否比较过这些库? 最佳答案 Machinist实际上深受factory_girl启发,但因机械师的作者想要不同的语法而有所不同。此后,factory_girl添加了不同的语法层来模拟其他工厂库(包括机械师的“蓝图”语法)。换句话说,两者非常相似,只是默认语法不同。我个人使用factory_girl。 关于ruby-on-rails-机械师vsFactoryGirl-优缺点,我们在S

  4. 基于51单片机的三轴机械臂控制系统(PWM) - 2

    2021年参加校内电子竞赛所做的课题,发出来留作纪念,也希望能对大家有所帮助。此项目获得了校电赛三等奖:)1系统方案1.1控制系统的论证与选择方案一:使用纯模拟电路控制,利用三极管的通断,一些模拟集成电路(电压比较器、RC延时电路、NE555芯片等)来实现对电机的延时控制,从而达到机械手的各方向移动,并且通过改变延时时间来决定机械手的移动幅度。分析:纯模拟电路控制理论上可行,但在实际设计方面存在较大困难且在调试及改进方面存在不便,以及电路较不稳定,可能导致延时出现较大误差,可靠性欠佳。除此之外,一般电机达不到机械手控制的精确性要求。虽然换用舵机能达到所需效果,但用模拟电子技术设计PWM驱动电路

  5. 机械臂速成小指南(三):机械臂的机械结构 - 2

    👨‍🏫🥰🥳需要机械臂相关资源的同学可以在评论区中留言哦🤖😽🦄 指南目录📖:🎉🎉机械臂速成小指南(零点五):机械臂相关资源🎉🎉机械臂速成小指南(零):指南主要内容及分析方法机械臂速成小指南(一):机械臂发展概况机械臂速成小指南(二):机械臂的应用机械臂速成小指南(三):机械臂的机械结构机械臂速成小指南(四):机械臂关键部件之减速机机械臂速成小指南(五):末端执行器机械臂速成小指南(六):步进电机驱动器机械臂速成小指南(七):机械臂位姿的描述方法机械臂速成小指南(八):运动学建模(标准DH法)机械臂速成小指南(九):正运动学分析机械臂速成小指南(十):可达工作空间机械臂速成小指南(十一):坐标系的

  6. php - Python : extract . 将数据提交到具有机械化的表单后的 csv 结果 - 2

    我刚开始使用Python从网络中提取数据。感谢其他一些帖子和这个webpage,我想出了如何使用模块mechanize将数据提交到表单。现在,我一直在寻找如何提取结果。提交表单时有很多不同的结果,但如果我可以访问csv文件,那将是完美的。我假设您必须使用模块re,但是您如何通过Python下载结果?运行作业后,csv文件在这里:Summary=>Results=>DownloadHeavyChainTable(您可以直接点击“loadexample”查看网页运行情况)。importreimportmechanizebr=mechanize.Browser()br.set_handle_

  7. 机械臂速成小指南(十四):多项式插值轨迹规划 - 2

    👨‍🏫🥰🥳需要机械臂相关资源的同学可以在评论区中留言哦🤖😽🦄 指南目录📖:🎉🎉机械臂速成小指南(零点五):机械臂相关资源🎉🎉机械臂速成小指南(零):指南主要内容及分析方法机械臂速成小指南(一):机械臂发展概况机械臂速成小指南(二):机械臂的应用机械臂速成小指南(三):机械臂的机械结构机械臂速成小指南(四):机械臂关键部件之减速机机械臂速成小指南(五):末端执行器机械臂速成小指南(六):步进电机驱动器机械臂速成小指南(七):机械臂位姿的描述方法机械臂速成小指南(八):运动学建模(标准DH法)机械臂速成小指南(九):正运动学分析机械臂速成小指南(十):可达工作空间机械臂速成小指南(十一):坐标系的

  8. STM32F1开发实例-振动传感器(机械) - 2

    振动(敲击)传感器振动无处不在,有声音就有振动,哒哒的脚步是匆匆的过客,沙沙的夜雨是暗夜的忧伤。那你知道理科工程男是如何理解振动的吗?今天我们就来讲一讲本节的主角:最简单的机械式振动传感器。下图即为振动传感器,外形有几种,原理都相同:1个弹簧电极+1个金属电极,振动时弹簧抖动碰到紧挨的金属电极,两个电极就会瞬间接通。我们通过单片机监测两电极的通断就可以知道当前是否发生振动,振动的频率是多少。原理就这么简单,准备上手! 一、硬件准备振动传感器1个,0.85元。STM32F103核心板一块,某宝7块9。供电线跟你的手机充电线一样。面包板套件一套,某宝13.8元。不买套件,随手弄几根杜邦线也OK。仿

  9. 矮轴机械键盘用起来会更爽吗?Keychron K1告诉你答案 - 2

    #入坑keychron#可能很多人对于这个牌子不是很了解;在国内,它叫京东京造;在国外,叫Keychron。其实都是一家,键盘的键帽为OEM高度,键帽上方也有着适合手指敲击的弧形设计,再搭配上它的两段式撑脚和自身附带的木质手托,可以看出它的高度及坡度还是很自然恰当的,与桌面大概可以形成6~9度夹角,实际体验也很舒适。虽然为84键配列,但却有着和104键相同的功能,通过FN键和其他按键组合,便可使用F1~F12键功能。另外K2选择了2段的win和mac切换实体键,蓝牙、关机、有线三段实体键切换侧边切换显得更加的合理和优雅。另外K2选择了2段的win和mac切换实体键,蓝牙、关机、有线三段实体键切

  10. 机械臂速成小指南(零点五):机械臂相关资源 - 2

            在学习六自由度机械臂的过程中,我收集整理了与之相关的各类资料、政府文件、源码、文献、3D打印文件等等等等。同时,也编写了用于机械臂控制的仿真程序及实际应用于机械臂的上位机程序。现在,我已经将他们全部打包好啦🎉🎉🎉🎉🎉🎉资源的目录与机械臂指南的目录略有不同其中,资料的具体内容有:1.ar2、ar3及ar4六自由度机械臂说明文件及源码(源码包含正逆运动学、轨迹规划、上下位机通信等全部代码)         该文件夹中包括ar2、ar3及ar4机械臂的尺寸参数、电机选型、电机驱动选型、3D模型(用于3D打印)上位机源码及下位机源码(内含HEX文件)。2.下位机的原理图及PCB设计图(

随机推荐