导言

我们都知道关节一般会导致(驱动)机械臂产生两种状态:平移或者转动。也知道我们需要借助坐标系来描述物体的姿态和位置信息,那如何为一整个机械臂建立一个完整的坐标系,从而能够求解每个关节通过平移/旋转多少值让机械臂最终拿到我们的目标物品呢?在这里需要借助DH表达法来定义我们的坐标系的作法,并且给出需要求解的数值(平移/旋转)在空间上的表达。

本节是学习正逆向运动学的基础。


D-H表达法(Denavit-Hartenberg)

DH表达法有两个通用版本,一个是标准版(standard),一个是craig版本,在这先使用craig版本作解释。

一般(驱动)关节(joint)分为两种:转轴(R型,revolute)或者 滑动杆 / 平移(P型,prismatic)

目录

如何构建DH表格

相关例题

DH表的作用

相关例子(PUMA560)

扩展(选读)

DH表达法的另一个版本(标准版)

复合型关节如何得到驱动数值


如何构建DH表格

构建DH表格首先需要画出坐标系,然后根据坐标系的数据做表。

(1)如何确定  轴?

首先找到每个关节的转动/平移方向

平移关节 :  沿着平移方向画  轴

转轴关节 :垂直转动方向做  轴

注:方向不唯一,全凭喜好或条件选择轴向正负

可以看到这个机械臂由转动、平移、转动关节组成,即所谓的RPR类型机械臂。

(2)如何确定  轴?

上过高中的一定知道啦,空间中的两条线一定能找到一条线与它们都垂直。

找到一条与关节 、关节  的  轴都垂直并相交的线,这条线就是  轴 。

注:方向不唯一,全凭喜好或条件选择轴向正负

需要注意的是( 下面的(5) 解释了  是个什么东西 ):

不在同一平面上时: ≠0,  轴沿着这条线。

在同一平面上: =0

(3)如何确定  轴?

已知  轴、  轴,与它们两两垂直的就是  轴。(符合坐标系的右手定则)

(4)处理特殊点的坐标系(最开始、最后的)

由上述三点,一般杆件的驱动坐标系都定义出来了。还有两个特殊的杆件:地杆和端杆,我们如何处理?

  • 地杆(第0杆,link 0):无关节驱动、不动的

当   = 0 (或  = 0 )时的关节1的坐标系,就可当作地杆的关节坐标系(如图红色所示)。

注:这个坐标系定义后不会变动,一般作为整个机械臂的参考坐标系使用。

  • 端杆(最后一杆,link n):

端杆依靠最后一个关节的运动改变坐标位置

一般使用上一个关节的坐标系的  轴延伸直线作为端杆的  轴。

(5)构建DH表格

(注意区分  和  )

 :  即关节与关节 两者轴的最短举例(即垂直距离)

 :即关节与关节 两者轴的角度差

 : 即  与   的最短距离

 :即  与  的角度差

一般  以上/右为正, 以逆时针方向为正方向。

如果仅是表达两杆,只需要即可。如果是多杆(一般情况),涉及到的信息矩阵T的运算需要参数。

然后根据情况将机械臂的数值写到表中:

一般而言,杆的长度我们都是已知的,数值都是可以直接得到的,所以有:

对于转轴而言,都是已知的。是未知的,它是这个关节的驱动数值。

对于动杆而言,都是已知的。是未知的,它是这个关节的驱动数值。

相关例题

([扩展]中以此图为例)

DH表的作用

我们通过齐次矩阵{T}能轻易知道两个关节杆子相互之间的联系与位置转换,通过{T}的运算连续性也很容易知道不相邻杆件关节间的状态:

通过上式可以得知,如果我们想把物体向量从{}的表达转换到{},则需要依次经过从,从.....

这样就能让我们的机械臂一步一步慢慢触碰到目标物体了。

那么我们如何得知的具体数值呢?

DH表的最大作用就是为齐次矩阵 T 提供了必要的数值。

从而可以使关节0通过相应的T矩阵到关节1的位置,关节通过T矩阵到达关节的位置,一个推一个,最终达到目标位置。

由于(二)中提到的,齐次矩阵{T}的特性,可以推出:

这个矩阵的意思是:

关节i-1怎么到关节i呢?

首先是围绕轴逆时针转动(蓝色->绿色),然后再沿着轴向右平移(绿色->橙色)

然后再围绕轴逆时针转动(橙色->紫色),然后再沿着轴向上平移(紫色->红色)

然后就能得到固定公式    =

相关例子(PUMA560)

这是很经典的一个机械手臂——PUMA 560.现在需要求出 .

求解过程

1)首先画出DH表(用Craig方式)

2)使用T矩阵的连续性求解

根据之前提供的公式,这六个矩阵有:

扩展(选读)

  • DH表达法的另一个版本(标准版)

之前有提到DH表达法由两种版本,本博客举例的是craig版本的,而不是早期教材中的standard版本。

他们的区别是:

1、名称上的区别,前者的关节的表示英文为axis ,后者为 joint

2、代号定义上的区别,前者是关节i后面接杆件,后者是关节i后面接杆件.

3、坐标系的画法标准不同,关于轴的画法,前者是指向,后者是指向

4、运算上的复杂度区别,后者需要的运算量稍微大了点。(以[相关例子]的最后一个图为例)

  • 复合型关节如何得到驱动数值

之前说过了,一般的关节分两种:转轴或者滑动杆。

其中转轴的驱动机械臂运动的数值取决于,滑动杆取决于

但是实际上的需求关节会有更复杂的,这里以这个机器人的轮腿为例:

可以看到的轮子不只可以转动,而且由于可以“上上下下”,所以可以达到“走路”的效果。

所以这是由两个马达控制的关节驱动,一个控制转动 ,一个控制位移 , 代表的是两个马达的状态。

感谢:课程内容、PPT来自林沛群教授的《机器人学》课程

机器人理论(3)DH表达法:解析关节轴之间的关系相关推荐

  1. 机器人正运动学DH参数表示法

    参考视频(用于理解DH的坐标系): 两分钟学习:四足机器人DH参数法 空间机器人技术-动力学与控制-DH坐标系与DH参数 参考文章: 机器人操作臂运动学入门一–D-H参数标定 关键要理解DH表示法中的 ...

  2. GNN 的发展过程和一些理论(谱图表示学习 等)之间的关系

    来源均指这个理论的提出者或者讲解的论文&&书籍 1. 谱图理论(Spectral Graph Theory)是将图论与线性代数相结合的理论 来源:Spectral Graph Theo ...

  3. python json数组解析_Python基础系列(一)搞懂json数据解析与字典之间的关系

    是不是一直傻傻分不清楚dumps.dump.loads和load的关系,长痛不如短痛,今天索性就把它写明白,不懂得朋友,请看下面. 这里我先回答一个很常见的问题,为什么 Python 会有四个操作 J ...

  4. 机器人学之运动学笔记【3】—— 机械臂DH表示法+正向运动学(Forward Kinematics)

    机器人学之运动学笔记[3]-- 机械臂DH表示法+正向运动学(Forward Kinematics) 1. 手臂几何描述方式 2. 改进DH法 描述机械臂 2.1 在连杆上建立Frame 2.2 D- ...

  5. ROS系统MoveIt玩转双臂机器人系列(五)--浅议机器人运动学与D-H建模

    ROS系统MoveIt玩转双臂机器人系列(五)--浅议机器人运动学与D-H建模 一.概述 机器人运动学研究的是机械臂各个连杆之间的位移关系.速度关系和加速度关系.比较经典的一本书推荐大家读读熊有伦的& ...

  6. 机器人建模中移动关节如何建立坐标系_机器人标准DH建模法

    运动学问题是在不考虑引起运动的力和力矩的情况下,描述机械臂的运动.这篇文章是我翻过了几本机器人教材再参考网上各种博客的总结,先说看资料过程中的感想/结论:网上的博客基本不完整,要详细地了解DH建模法还 ...

  7. Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)

    DH法包括两种:一种为标准DH法,另一种为改进型DH法,如图所示(图片转载来自https://blog.csdn.net/qq_26565435/article/details/91460988): ...

  8. Kinect体感机器人(三)—— 空间向量法计算关节角度

    Kinect体感机器人(三)-- 空间向量法计算关节角度 By 马冬亮(凝霜  Loki) 一个人的战争(http://blog.csdn.net/MDL13412) 终于写到体感机器人的核心代码了, ...

  9. 辅助机器人符文天赋_LOLS9蒸汽机器人辅助玩法解析_辅布里茨符文出装玩法攻略...

    在前几个赛季处于低谷期的机器人终于在当前快节奏的版本中有了不小的发挥能力,目前机器人已经处在了当前版本辅助T1梯队的位置,是一个当前版本非常强势的辅助英雄,前期激进的打法在配合上一个前期输出能力强的英 ...

最新文章

  1. 解决Linux最大进程数和最大文件句柄问题
  2. Linux上机实验1
  3. 面试题整理6 栈的压入、弹出序列
  4. java防止库存超买_java初探(1)之防止库存为负以及防超买
  5. 在普通类中调用service
  6. 企鹅java游戏下载安装_企鹅企鹅生活安卓版游戏下载|企鹅企鹅生活手游下载v1.6.1-乐游网安卓下载...
  7. 本地方法(JNI)——数值参数与返回值
  8. php 字符串 字典序序排序,C++ 怎么实现字典序排序法,自然排序
  9. 计算机网络(六)-传输介质
  10. 做企业需要一点逆向思维
  11. Sublime Text3 + Golang搭建开发环境
  12. $, $, $$, $$, $$a (Run Script File)
  13. [转帖]java必备的开发知识和技能
  14. Libpng源码的使用
  15. WSO2 ESB 5.0.0 配置消息存储
  16. Matlab之inv函数
  17. Linux下gzip, bzip2, zip压缩率的比较
  18. 沉痛哀悼我的弟弟-恽小华-南理工教授,候选中科院院士——一声叹息
  19. python保存图片到指定路径_python 抓取页面数据,并保存图片文本到指定目录文件夹...
  20. Veritas NetBackup8.1.1设置备份

热门文章

  1. 操作系统开发系列—13.i.进程调度 ●
  2. pdf文件如何在安卓手机端不用下载在线预览
  3. 证件照在家就能拍,2分钟完成
  4. 华为服务器imana安装系统,华为服务器imana配置
  5. 微控制器编程技术c语言,8位单片机C语言编程:基于PIC16(用c语言对pic16微控制器进行编程的实用指导)...
  6. 智能PID软件-AVEVA Diagrams 快速复制流程图【图瓦软件出品】
  7. Microsoft 365 E5 开发者扩容到5T
  8. workerman入门之GatewayWorker的使用
  9. TRIZ创新思维方法_简要复习
  10. python可视化是什么意思_python3数据可视化是什么?