写在前面

学习代码都记录在个人github上,欢迎关注~

书读百遍,其义自见。

要想当一名合格的机器人工程师,机器人学就是base_link,看多少遍都不为过。现在回炉重造一下,记录一下学习笔记(以照片形式,打公式太费劲了),防止以后笔记本不见了。

正运动学

首先是旋转矩阵的理解。

在理解旋转矩阵的基础之上,理解一些姿态的表现方式,例如欧拉角等。

然后进入最基本的工作,计算正运动学。正运动学就是根据关节角度,计算机器人工具坐标系(末端执行器end_effector)在机器人基座标系(base_link)下的位姿。

D-H建模方法

我这里只介绍一种,Modified D-H法,即改进D-H参数法,另外还有标准D-H参数法,我就不做笔记了。

总结改进D-H参数法建立的基本顺序及四个参数的具体定义。

两个简单的例子。Xi在Zi-1和Zi的公法线上,方向人为选择,最终只会影响α角的正负。







实例

建立改进D-H坐标系

以ABB一款机械臂为例,采用改进D-H参数法。该机械臂6个关节都是转动关节,前3个关节确定手腕参考点的位置,后3个关节确定手腕的方位。和大多数工业机器人一样,后3个关节轴线交于一点,因此将该点作为手腕的参考点,也选作为连杆坐标系{4},{5}和{6}的原点。在改进D-H坐标系中,{0}和{1}一般重合,O1为轴1和轴2公法线在轴1上的交点,此时关节1和关节2在z方向上的偏置没有体现出来,对于整个机械臂各关节的相对运动来说并没有影响。
先建立改进D-H坐标系如下

改进D-H参数表

根据坐标系和上文提到的各个参数量的具体定义,填写D-H参数表如下

i αi-1 ai-1 di θi
1 0 0 0 θ1
2 pi/2 L1=320 0 θ2
3 0 L3=975 0 θ3
4 pi/2 L5=200 L6=887 θ4
5 -pi/2 0 0 θ5
6 pi/2 0 0 θ6

Matlab仿真程序(Modified DH)

% Modified DH
% ABB robot
clear;
clc;
th(1) = 0; d(1) = 0; a(1) = 0; alp(1) = 0;
th(2) = 0; d(2) = 0; a(2) = 0.320; alp(2) = pi/2;
th(3) = 0; d(3) = 0; a(3) = 0.975; alp(3) = 0;
th(4) = 0; d(4) = 0.887; a(4) = 0.2; alp(4) = pi/2;
th(5) = 0; d(5) = 0; a(5) = 0; alp(5) = -pi/2;
th(6) = 0; d(6) = 0; a(6) = 0; alp(6) = pi/2;
% DH parameters  th     d    a    alpha  sigma
L1 = Link([th(1), d(1), a(1), alp(1), 0], 'modified');
L2 = Link([th(2), d(2), a(2), alp(2), 0], 'modified');
L3 = Link([th(3), d(3), a(3), alp(3), 0], 'modified');
L4 = Link([th(4), d(4), a(4), alp(4), 0], 'modified');
L5 = Link([th(5), d(5), a(5), alp(5), 0], 'modified');
L6 = Link([th(6), d(6), a(6), alp(6), 0], 'modified');
robot = SerialLink([L1, L2, L3, L4, L5, L6]);
robot.name='ABBRobot-6-dof';
robot.display()
% Forward Pose Kinematics
theta = [0, 120, -15, 0, 0, 0]*pi/180;
robot.teach();
robot.plot(theta);
t0 = robot.fkine(theta)    %末端执行器位姿

运行结果

建立标准D-H坐标系

和改进D-H参数法不同的是:

  • 改进D-H参数法α和a的下标均为i-1,而标准D-H中两个参数的下标均为i;
  • 改进D-H中Xi是Zi和Zi+1的公垂线,而在标准D-H中Xi是Zi-1和Zi的公垂线;
  • 在使用两种方法时,一般先使各θi角为0进行建模;
  • 标准D-H中各参数定义如下:
    • αi angle(Zi-1, Zi)about Xi
    • ai distance ({i-1}, {i} origin) along Xi,因为建模时一般让theta=0,那么xi和xi-1实际上是一个方向
    • di distance (Xi-1, Xi) along Zi-1
    • θi angle (Xi-1, Xi) about Zi

建立标准D-H坐标系如下

标准D-H参数表

i αi ai di θi
1 pi/2 0.320 0.450 θ1
2 0 0.975 0 θ2
3 pi/2 0.200 0 θ3
4 -pi/2 0 0.887 θ4
5 pi/2 0 0 θ5
6 0 0 0.200 θ6

Matlab仿真程序(Standard D-H)

% Standard DH
% ABB robot
clear;
clc;
th(1) = 0; d(1) = 0.450; a(1) = 0.320; alp(1) = pi/2;
th(2) = 0; d(2) = 0; a(2) = 0.975; alp(2) = 0;
th(3) = 0; d(3) = 0; a(3) = 0.200; alp(3) = pi/2;
th(4) = 0; d(4) = 0.887; a(4) = 0; alp(4) = -pi/2;
th(5) = 0; d(5) = 0; a(5) = 0; alp(5) = pi/2;
th(6) = 0; d(6) = 0.200; a(6) = 0; alp(6) = 0;
% DH parameters  th     d    a    alpha  sigma
L1 = Link([th(1), d(1), a(1), alp(1), 0]);
L2 = Link([th(2), d(2), a(2), alp(2), 0]);
L3 = Link([th(3), d(3), a(3), alp(3), 0]);
L4 = Link([th(4), d(4), a(4), alp(4), 0]);
L5 = Link([th(5), d(5), a(5), alp(5), 0]);
L6 = Link([th(6), d(6), a(6), alp(6), 0]);
robot = SerialLink([L1, L2, L3, L4, L5, L6]);
robot.name='ABBRobot-6-dof';
robot.display()
theta = [0, 120, -15, 0, 0, 0]*pi/180;
robot.teach();
robot.plot(theta);
t = robot.fkine(theta)    %末端执行器位姿

运行结果
从两个方法的末端姿态计算结果可以看出,不完全一致,这是因为两个方法的基座标位置不一样,并且改进dh法建模坐标系{6}没有建到工具坐标系上,而是在手腕位置,而标准dh法则是建到了末端工具坐标系上,这也就直接导致在[0 0 0 0 0 0]末端姿态的pz不一样,转换关系为0.887-0.45+0.2=0.637。


总结

1.SDH适合应用于开链结构的机器人;

2.当使用SDH表示树状或闭链结构的机器人时,会产生歧义;

3.MDH法对开链、树状、闭链结构的机器人都适用,推荐使用。

浅谈标准DH(SDH)和改进DH(MDH)

机器人学回炉重造(1):正运动学、标准D-H法与改进D-H法的区别与应用(附ABB机械臂运动学建模matlab代码)相关推荐

  1. 机器人学回炉重造(1-2):各种典型机械臂的正运动学建模(标准D-H法)

    文章目录 写在前面 三连杆平面机械臂 平行四边形操作臂 闭链结构 例:平行四边形操作臂 球形臂 拟人臂 球腕 斯坦福机械臂 带球形手腕的拟人化机械臂 DLR机械臂 参考文献 写在前面 本文所有机械臂均 ...

  2. 机器人学回炉重造(2-2):雅可比矩阵的求法——矢量积法、微分变换法、Manipulator Jacobian(Jacobian for short)

    文章目录 写在前面 矢量积法--改进D-H法 微分变换法--改进D-H法 Manipulator for Jacobian(Jacobian for short)--标准D-H法 微分变换法--标准D ...

  3. 机器人学回炉重造(2-4):运动学奇异位型分析

    文章目录 什么是运动学奇异位型? 例子:平面二连杆机械手的奇异位型 奇异位型解耦 腕部奇异位型 手臂奇异位型 转载:6轴串联关节机器人的奇异点 参考文献 什么是运动学奇异位型? 在初步系统地了解了机器 ...

  4. 机器人学回炉重造(2-3):基本雅可比矩阵与其他雅可比矩阵

    文章目录 基本雅可比矩阵 定义 求法 其他雅可比矩阵 定义 求法 补充:几何雅可比与解析雅可比 基本雅可比矩阵 定义 用笛卡尔坐标描述线速度(linear velocity)和角速度(angular ...

  5. 机器人学回炉重造(5-2):关节空间规划方法——梯形加减速(与抛物线拟合的线性函数)、S型曲线规划

    文章目录 写在前面 学习代码都记录在[个人github](https://github.com/xuuyann/RobotLearningCode)上,欢迎关注~ 梯形加减速(与抛物线拟合的线性函数) ...

  6. 《回炉重造 Java 基础》——集合(容器)

    整体框架 绿色代表接口/抽象类:蓝色代表类. 主要由两大接口组成,一个是「Collection」接口,另一个是「Map」接口. 前言 以前刚开始学习「集合」的时候,由于没有好好预习,也没有学好基础知识 ...

  7. 真人电影中的幻想生物迷墙:索尼克为什么被骂到回炉重造?

    <大侦探皮卡丘>上映在即,当网友们对着雷佳音配音的皮卡丘大呼好萌好萌时,我们仿佛又来到了大型真香现场--明明在几个月之前,当人们看到毛茸茸的大叔音皮卡丘时还每个细胞都充满了拒绝. 也有一种 ...

  8. Vue回炉重造之封装防刷新考试倒计时组件

    你好,我是Vam的金豆之路,可以叫我豆哥.2019年年度博客之星.技术领域博客专家.主要领域:前端开发.我的微信是 maomin9761,有什么疑问可以加我哦,自己创建了一个微信技术交流群,可以加我邀 ...

  9. Vue回炉重造之封装一个实用的人脸识别组件

    你好,我是Vam的金豆之路,可以叫我豆哥.2019年年度博客之星.技术领域博客专家.主要领域:前端开发.我的微信是 maomin9761,有什么疑问可以加我哦,自己创建了一个微信技术交流群,可以加我邀 ...

  10. 回炉重造之数据结构【一】基本概念

    回炉重造之数据结构[一]绪论 文章目录 回炉重造之数据结构[一]绪论 数据结构的基本概念 基本概念和术语 数据结构的三要素 算法和算法评价 算法的基本概念 算法效率的度量 数据结构的基本概念 基本概念 ...

最新文章

  1. List循环添加对象时遇到问题的解决
  2. oracle如何实现多副本,Oracle同一节点副本数据库启动
  3. 深入理解WMS(二):Dialog与Toast源码解析
  4. 4键电子手表说明书_电子手表怎么调(电子手表的四个键的功能各是什么)
  5. JavaScript学习随记——属性类型
  6. 函数 devm_kzalloc()
  7. Java常用设计模式————组合模式
  8. Verilog实现AXI4-Lite源代码
  9. MariaDB基本操作--(创建用户)(转)
  10. 《深度学习》花书训练营day01-线性代数
  11. 网上十大经典黑客软件大曝光(转)
  12. Python人工智能学习路线(长篇干货)
  13. 深度学习:透过神经网络的内在灵魂与柏拉图的哲学理念 输入数字反向的产生数字图像
  14. 网易数据中台获评工信部2019“十佳大数据案例”
  15. python如何计算个人gpa_GPA计算Python
  16. wps斜杠日期格式_使用WPS处理日期数据格式的方法
  17. hive3.x异常- return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
  18. JAVASE02_java的语法规则和规范
  19. 车道检测(传统方法)
  20. Android Security

热门文章

  1. 简易个人所得税计算器
  2. Ubuntu无法调节屏幕亮度问题
  3. 配置管理的目标和主要活动
  4. 用户认证与Kerberos
  5. 新西兰梅西大学有计算机专业吗,【新西兰梅西大学计算机专业】 - 教外新西兰留学网...
  6. KumiaoQQ机器人框架源码(带成品)
  7. python bottle框架使用beaker支持session
  8. 【手工儿童】}DIY冬南瓜小兔子
  9. 别再问我2020年Android前景如何了,我都回答腻了…
  10. 概率论与数理统计学习笔记(5)——极大似然估计