【个人理解,有错请指出,谢谢】

MDH的建模方式先通过x轴变化再通过z轴变化

因此可以发现关节之间旋转的变化如下图

关节的变化矩阵如下图所示,以关节1变换到关节2为例

s1 = sinθ1; c1 = cosθ1; s_a1 = sinα1; c_a1 =  cosα1;

matlab代码如下图,EndPosture为末端位姿,注意输入的θ的值要考虑机械臂 当前的角度 和 初始的旋转角度offset

%MDH变换T01 = [ c1      -s1        0      a1s1*c_a1  c1*c_a1  -s_a1  -d1*s_a1s1*s_a1  c1*s_a1   c_a1   d1*c_a10 0 0 1];T12 = [ c2      -s2        0      a2s2*c_a2  c2*c_a2  -s_a2  -d2*s_a2s2*s_a2  c2*s_a2   c_a2   d2*c_a20 0 0 1];T23 = [ c3      -s3        0      a3s3*c_a3  c3*c_a3  -s_a3  -d3*s_a3s3*s_a3  c3*s_a3   c_a3   d3*c_a30 0 0 1];T34 = [ c4      -s4        0      a4s4*c_a4  c4*c_a4  -s_a4  -d4*s_a4s4*s_a4  c4*s_a4   c_a4   d4*c_a40 0 0 1];T45 = [ c5      -s5        0      a5s5*c_a5  c5*c_a5  -s_a5  -d5*s_a5s5*s_a5  c5*s_a5   c_a5   d5*c_a50 0 0 1];T56 = [ c6      -s6        0      a6s6*c_a6  c6*c_a6  -s_a6  -d6*s_a6s6*s_a6  c6*s_a6   c_a6   d6*c_a60 0 0 1];
EndPosture = T01 * T12 * T23 * T34 * T45 * T56;
nx = EndPosture(1,1);  ox = EndPosture(1,2);  ax = EndPosture(1,3);  rx = EndPosture(1,4);
ny = EndPosture(2,1);  oy = EndPosture(2,2);  ay = EndPosture(2,3);  ry = EndPosture(2,4);
nz = EndPosture(3,1);  oz = EndPosture(3,2);  az = EndPosture(3,3);  rz = EndPosture(3,4);

确定了末端位姿的准确性之后,需要将除了θ的参数全部带入确定数值,特别是α的值带入后sinα和cosα值算出啦

%进行确切的alpha计算,不然会导致参数过大    s_a1 = 0; s_a2 = 1; s_a3 = 0; s_a4 = -1; s_a5 = 1; s_a6 = -1;c_a1 = 1; c_a2 = 0; c_a3 = 1; c_a4 = 0; c_a5 = 0; c_a6 = 0;

最后为了方便快捷的计算,将末端位姿的4x4齐次矩阵中每个位置的计算公式写出来,完成正运动学公式编写

nx = - c6*(s5*(c1*c2*s3 + c1*c3*s2) + c5*(s1*s4 - c4*(c1*c2*c3 -c1*s2*s3))) - s6*(c4*s1 + s4*(c1*c2*c3 - c1*s2*s3));
ny = s6*(c1*c4 - s4*(c2*c3*s1 - s1*s2*s3)) - c6*(s5*(c2*s1*s3 + c3*s1*s2) - c5*(c1*s4 + c4*(c2*c3*s1 - s1*s2*s3)));
nz = c6*(s5*(c2*c3 - s2*s3) + c4*c5*(c2*s3 + c3*s2)) - s4*s6*(c2*s3 + c3*s2);
ox = s6*(s5*(c1*c2*s3 + c1*c3*s2) + c5*(s1*s4 - c4*(c1*c2*c3 - c1*s2*s3))) - c6*(c4*s1 + s4*(c1*c2*c3 - c1*s2*s3));
oy = s6*(s5*(c2*s1*s3 + c3*s1*s2) - c5*(c1*s4 + c4*(c2*c3*s1 - s1*s2*s3))) + c6*(c1*c4 - s4*(c2*c3*s1 - s1*s2*s3));
oz =  - s6*(s5*(c2*c3 - s2*s3) + c4*c5*(c2*s3 + c3*s2)) - c6*s4*(c2*s3 + c3*s2);
ax = s5*(s1*s4 - c4*(c1*c2*c3 - c1*s2*s3)) - c5*(c1*c2*s3 + c1*c3*s2);
ay = - c5*(c2*s1*s3 + c3*s1*s2) - s5*(c1*s4 + c4*(c2*c3*s1 - s1*s2*s3));
az = c5*(c2*c3 - s2*s3) - c4*s5*(c2*s3 + c3*s2);rx = a2*c1 - d4*(c1*c2*s3 + c1*c3*s2) + a3*c1*c2;
ry = a2*s1 - d4*(c2*s1*s3 + c3*s1*s2) + a3*c2*s1;
rz = d1 + a3*s2 + d4*(c2*c3 - s2*s3);EndPosture = [nx, ox, ax, rxny, oy, ay, rynz, oz, az, rz0,  0,  0,  1];

【个人简记】基于MDH,6R机器人运动学正解相关推荐

  1. 六轴机器人运动学正解

    关于机器人运动学正解网上和机器人相关书籍上都是通过建立连杆坐标系和DH参数推导出来的,推导过程比较繁琐,本人不是从事机器人专业,我在推导机器人运动学正解的时候还不知道有DH参数一说,我的算法原理是运用 ...

  2. 有关并联绳驱机器人运动学正解反解的学习(新手)

    有关并联绳驱机器人运动学正解反解的学习 Preface(complain) Perface(start) Advantages of parallel robot Disdvantages of pa ...

  3. 【个人简记】基于MDH,6R机器人运动学逆解

    [个人理解,有错请指出,谢谢] 求解方法为解析法(满足pieper原则) 以下是我做找逆解公式的时候,matlab的测试代码 ​ clear;%清楚空间(base)变量:clear all清除全局(g ...

  4. 6轴机器人运动学正解,逆解1

    正解 给定机器人各关节的角度,计算出机器人末端的空间位置 逆解 已知机器人末端的位置和姿态,计算机器人各关节的角度值 常见的工业机器人 正解与逆解的求解需要相应的机器人运动方程,其中关键的就是DH参数 ...

  5. 6轴机器人运动学正解,逆解2

    逆解 逆解计算方法可以参考以下书籍 机器人学导论--分析.系统及应用 电子工业出版社 机器人学导论第3版 机械工业出版社 机器人学建模.规划与控制 西安交通大学出版社 对于关节1,2,3可以从运动方程 ...

  6. 【Matlab 六自由度机器人】运动学正解(附MATLAB机器人正解完整代码)

    [Matlab 六自由度机器人]求运动学正解 往期回顾 前言 正文 一.运动学正解 1. 齐次变换矩阵 2. 总变换 二.代码实现 1. 定义各连杆参数 2. 齐次变换矩阵及总变换 3. 代码运行结果 ...

  7. Puma560机器人运动学正逆解

    puma560机器人D-H参数 puma560采用的是改进D-H参数,其DH参数表如下: i αi ai di θi 1 0 0 0 t1 2 -90 0 0 t2 3 0 r2 d3 t3 4 -9 ...

  8. 走好每一步,基于C实现机器人运动学建模与标定、运动规划、轨迹规划算法

    走好每一步,基于C实现机器人运动学建模与标定.运动规划.轨迹规划算法 废话 综述 一:C部分 初始C语言 Chapter2-4:基本数据类型 Chapter5-7:运算符.表达式.循环.分支与跳转 C ...

  9. 6轴机器人运动学逆解matlab,六轴机器人建模方法、正逆解、轨迹规划实例与Matalb Robotic Toolbox 的实现...

    摘要 本文主要是给大家一个系统的概念,如何用Matlab实现六轴机器人的建模和实现轨迹规划.以后将会给大家讲解如何手写正逆解以及轨迹插补的程序.程序是基于Matlab2016a,工具箱版本为Robot ...

最新文章

  1. .Net QQ互联教程
  2. 系统安全漏洞成云安全主威胁
  3. zookeeper - watcher(9)
  4. 推荐6个HTML5编辑器
  5. decltype判断变量或表达式类型
  6. EXCEL利用VBA自由控制图表绘图区大小
  7. c语言读取nc文件格式,nc文件资料地读取与处理.doc
  8. ES6学习(七)—Set 和 Map 数据结构
  9. div+css二级菜单
  10. linux 0.11 内核学习 -- sched.c,调度进程。
  11. 在vs2008中编译(调试)eMule0.50a以及veryCD版的easyMule
  12. 《软件管理沉思录》读书笔记
  13. 怎么制作游戏脚本_抖音脚本范文哪里有?我为你总结了130套爆款文案范例!
  14. 第三届上海大学生网络安全大赛 流量分析
  15. 怎么开启搜狗高速浏览器的手动升级?
  16. 使用aiop实现事件等待模式
  17. Error starting child
  18. Excel计算工作日的公式
  19. OCR财务报表识别方案应用
  20. 如何查看公众帐号粉丝的微信号

热门文章

  1. 入职百度QA测试岗,要个25K不过分吧?
  2. jquery把页面<table>里的内容导出为后缀名为.xlsx的excel
  3. 微信小程序线上预约管理系统
  4. GPT4 和大型语言模型如何改变现代社会
  5. 在计算机软件中 BIOS的中文意思是,电脑BIOS中各选项的含义
  6. 图神经网络入门 (GNN, GCN)
  7. Hbase 查询语句记录
  8. 耶鲁大学计算机硕士专业,2020年耶鲁大学排名TFE Times美国最佳计算机科学硕士专业排名第18...
  9. C# 使用Emit动态注入代码,实现监控属性的目的
  10. c#通过Emit方式实现动态代理