搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
花生_TL007
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
流式计算的理论与技术_流式计算的核心技术点
2
Django响应(一)
3
初尝python flask + vue3 axios 接口配置_vue调用python接口
4
docker build -t和docker build -f区别
5
封装系统(以封装Windows 7为例)
6
react:props属性&&state状态介绍及使用_props 状态有哪些
7
OpenCV实战项目——多种颜色识别
8
给大家分享一下阿里三面的面试真题
9
类银河恶魔城学习记录1-2 Player动画基本设置源代码 P29
10
指针&&引用(复习)_指针和引用&
当前位置:
article
> 正文
机械臂的坐标系与数学模型:传说中的DH参数_机械臂dh的坐标系
作者:花生_TL007 | 2024-02-16 21:15:06
赞
踩
机械臂dh的坐标系
本文为干货系列机器人学入门课程的第三篇文章,回复102可查看上一篇《干货|位置角度平移旋转,“乱七八糟”的坐标变换》。如果您希望不收到干货文的群发,请在消息框回复“围观”告知,谢谢!...
上一篇我们暂时抛开机器人,讲了坐标系之间怎样进行平移和旋转变换(如果你不记得或没有看过上一篇文章,可关注后回复
102
查看);今天,我们要把目光收回到机器人身上,看看我们怎样
用一系列坐标系来描述一个链式机械臂
,机器人学常说的
DH参数
(Denavit–Hartenberg parameters)
又是什么。
相邻关节的坐标变换
在第一篇文章(《干货 | 从RP入门机器人学》,可回复
101
查看)中我们说过,链式机器人可以由关节-连杆-关节-连杆-……-连杆-末端执行器(joint - link - joint - link - ... - link - end effector)这样的结构式来描述。现在的问题是,假如你有两个由连杆相连的关节,你要怎样描述它们之间的位置/朝向(position/orientation)关系?
假设一个关节固定,另一个关节在自由空间中相对于这个固定的关节将会有六个自由度;若我们给每个关节随意附上一个坐标系,那么我们刚刚学过的齐次坐标变换就足以解决这个问题。但是这样做既无法很好地描述一个有独特结构而非简单自由刚体的链式机械臂系统、也很难将坐标变换与关节本身的参数(旋转关节的旋转角、平移关节的平移距离)联系起来。
直接用齐次坐标变换不顾机械臂本身的结构限制,这种表达方式必然是冗余低效的。如果我们
根据关节的轴之间的关系限制坐标轴的选择
,我们或许可以得到更高效的表示方法。
DH参数与坐标系确定(frame attachment)
DH参数就是一个用四个参数表达两对关节连杆之间位置角度关系的机械臂数学模型和坐标系确定系统
。通过下文我们会看到,它通过
限制原点位置和X轴的方向
,人为减少了两个自由度,因此它只需要用四个参数即可表达关节之间原本是六自由度的坐标变换。它是一个很有用的
通用的convention(惯例),
而不是一个“知识点”。
DH选的四个参数都有非常明确的物理含义:
link length
(连杆长度)
:两个关节的轴(旋转关节的旋转轴,平移关节的平移轴)之间的公共法线长度
link twist
(连杆扭转)
:一个关节的轴相对于另一个关节的轴绕它们的公共法线旋转的角度
link offset
(连杆偏移)
:一个关节与下一个关节的公共法线和它与上一个关节的公共法线沿这个关节轴的距离
joint angle
(关节转角)
:一个关节与下一个关节的公共法线和它与上一个关节的公共法线绕这个关节轴的转角
以上定义看了很绕口,但是结合坐标系看就会清楚许多。
首先你应该注意到最重要的两条“线”:一个关节的
轴(axis)
,和一个关节的轴与相邻关节的轴之间的
公共法线(common normal)
。
在DH参数体系里,我们把axis定为z轴;common normal定为x轴,且x轴的方向为从本关节指向下一个关节
。我们后面会举例说明。
当然,仅仅这两个规则还不足以完全确定每个关节的坐标系;下面我们就来详细讲确定坐标系的步骤——一定要记住
这里讲的所有东西都是convention,并非必须遵循的真理
。在机械臂的仿真等应用中,我们也常常会采取其他方法来确立坐标系;但是掌握这里讲的方法,对你理解机械臂的数学表达和理解我们后续的分析是很有必要的。
以一个RPRR机器人为例:
i.
确定原点
首先注意我们无论确定原点还是坐标轴,都是
从第一个关节开始
逐一确定的。
原点为
本关节与下一关节公共法线和本关节轴的交点
,如果是最后一个关节,则为前一个关节与本关节公共法线与本关节轴的交点。这个规则看似简单,不过下图的O2和你想得一样吗?这里第二个关节和第三个关节的轴相交了,所以它们的公共法线显然就在轴的交点上。
ii. 确定Z轴
Z轴从原点出发,与关节的轴重合。
显然,每一个关节的Z轴都可以有两个选择(比如上图一二四关节你可以选择上或下,三关节你可以选择往外或往内),这个选择可以由你自由决定;但在地面坐标系和末端执行器坐标系已知的情况下,我们通常会希望当前Z轴与上一个已确定的Z轴的夹角能是0°就不要是180°,最后一个关节的Z轴若能与end effector的Z轴重合则选择让它们重合。所以我们的选择如下:
注意图中的Z3既可以选择指向屏幕外,也可以选择指向屏幕内。
iii.确定X轴
最后我们确定X轴。如上文所说,
X轴为本关节轴指向下一关节轴的公共法线,与两个关节的轴都垂直
。对于大部分情况这是非常清楚的,但当两条Z轴相交时我们无法确定X轴的方向,这个时候我们可以有另一个convention:即
选择X轴的方向使当前Z轴与下一个Z轴的夹角(即当前关节与下一个关节的link twist)为正且小于180°
。(注意此规则只在Z轴相交时使用!)而当两条Z轴平行或重合时,X轴的选择就比较随意了,我们通常会尽量让它与前或后一致。对于最后一个关节,我们也尽量选择与end effector更接近的坐标系。
一旦原点、Z轴和X轴都确定,我们可以根据右手定则确定Y轴,所有关节的坐标系也就唯一确定了。
DH参数表
确定坐标系以后,我们可以用更简洁的方法来表示上面很绕口的四个参数:
你可以自己对照上面RPRR机械臂的图,把每一个关节的各项参数找出来。通常我们把这些参数做成一个表(注意绕某个轴旋转的角度我们采用右手定则确定正方向):
除了θ1、d2、θ3、θ4为关节自身变量外,其它对应的变量如下图所示:
这部分内容挺容易让人头脑混乱的,但如果你从确定坐标系开始一步一步做下来,几次过后就会熟悉了。如果你再深入思考每一个参数的物理意义,那么你会发现它们都是非常直观的。
不过个人认为,上面那张全是英文的图应该是最有用的……
确定好坐标系和DH参数以后,关节之间的坐标变换就变得简单多了。我们把这部分内容留到下一次再讲,在那之前,强烈建议你把这篇文章看明白,尤其弄清楚以下几个问题:
DH参数如何通过限制坐标轴的选择,用四个参数表示六个自由度的空间变换?
什么样的坐标变换是DH参数无法表达的?(Hint: 比如一个坐标系的X轴与另一个坐标系的Z轴平行)
确定每个关节坐标系和DH参数的步骤是什么?
你可以试着做一下下面这个题目(按照上文的步骤,确定坐标系,列出DH参数表):
回复
103答案
可查看上题解答,由于Z轴选择的随意性,正确答案可能不止一个。
最后,如果你是正在/想要学习机器人学的朋友,觉得本篇文章对你有用,请点赞告诉我吧^_^
长按下图扫描二维码,关注ROBOTICS,与我们共同探索博大精深的机器人世界
关注后可查看历史文章:
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/花生_TL007/article/detail/96729
推荐阅读
article
旋转
立方体
——
web
前端
_嵌套
立方体
旋转
前端
页面...
旋转
立方体
实现——
web
前端
[详细]
-->
赞
踩
article
工业
机器人
运动学
与
Matlab
正逆解
算法学习笔记(用心总结一文全会)(一)——
DH
模型
与正
运动学
_m...
以ZK-500工业
机器人
为例整理
机器人
运动学
、
DH
建模
、
正逆解
的相关内容以及
matlab
代码_
matlab
中dh
建模
ma...
赞
踩
article
pyqt
写个
元旦
快乐代码...
可以使用 PyQt 创建一个窗口,然后在窗口中放置一个文本标签,显示 "
元旦
快乐"。以下是一个示例代码:import s...
赞
踩
article
hummingbird
,
一个
便于将
模型
部署
到
边缘
设备
的
Python
库!...
Python
Hummingbird 是
一个
强大的工具,可以将机器学习
模型
轻松
部署
到
边缘
设备
中,实现实时推理和决策。本文...
赞
踩
article
卷积
神经网络
算法_
卷积
神经网络
算法设计...
前言 从理解
卷积
神经到实现它,前后花了一个月时间,现在也还有一些地方没有理解透彻,CNN还是有一定难度的,不是看哪个的...
赞
踩
article
以
用户
为
中心
的
前端
设计
案例剖析_
以
用户
为
中心
的
设计
案例...
以
用户
为
中心
的
前端
设计
案例剖析WEB前端
设计
的
最终目标是打造
用户
喜爱
的
产品,属于产品
设计
的
范畴。所
以
一切
设计
要
以
用户
为
出...
赞
踩
article
Revit
二次开发
——依据两条平
曲线
创建
一条
三维
曲线
_
revit
二次开发
绘制
曲线
...
效果
_
revit
二次开发
绘制
曲线
revit
二次开发
绘制
曲线
效果...
赞
踩
article
three
.
js
实现
点击
事件
(vue)_
three
.
js
点击
事件
...
three
.
js
实现
点击
事件
(Vue)。_
three
.
js
点击
事件
three
.
js
点击
事件
...
赞
踩
article
此站点
的
连接不安全,
使用
不受支持
的
协议。
ERR
_
SSL
_
VERSION
_
OR
_
CIPHER
_
MISM...
之前自己
的
电脑未更新系统或者浏览器
的
时候
使用
的
是IE浏览器,更新后变成了Microsoft Edge浏览器。导致之前很多...
赞
踩
article
一文带你
使用
xxl
-
job
定时
任务
_xx
job
批量生成
定时
任务
...
1.设计思想将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。将
任务
抽...
赞
踩
article
Ubuntu
crontab
定时任务...
0 10 * * * service mysqld restart //每天10点执行。_ubuntu
crontab
u...
赞
踩
article
雷达
3D
点云
数据转2D
激光
数据
_
rslidar
三维
点云
转换
为二维
激光
雷达
...
步骤:1.安装: 安装
rslidar
驱动,参考:https://www.ncnynl.com/archives/2018...
赞
踩
article
Tensorflow
(一) ——
数据
类型
_
tensorflow
查看
类型
...
Tensorflow
(一) ——
数据
类型
1 主要的
数据
类型
2 Tensor的种类3 基本
数据
类型
4 创建
数据
类型
实例4...
赞
踩
article
微信
小
程序
如何实现上
滑
翻页
,左右上下
滑
动
事件_
微信
小
程序
触发顶部
翻页
...
[详细]
-->
赞
踩
article
探讨
uniapp
的
navigator
页面
跳转
问题_
navigator
组件
实现
页面
跳转
...
navigator
页面
跳转
。该
组件
类似HTML中的
组件
,但只能
跳转
本地
页面
。目标
页面
必须在pages.json中注册。...
赞
踩
article
MATLAB
六自由度
机械
臂正逆运动
_
fun
_
dirsolu
_
mdh
...
MATLAB
六自由度
机械
臂正逆运动实现效果定义数学函数X轴旋转矩阵(
fun
_
dirsolu
_
trotx.m)Y轴旋转矩阵...
赞
踩
article
Element
-UI
DatePicker
日期
范围
选择器
、弹窗框 兼容
移动
端_
移动
端 时间
范围
ui...
日期
范围
选择器
、弹窗框 兼容
移动
端_
移动
端 时间
范围
ui
移动
端 时间
范围
ui 1.DatePic...
赞
踩
article
css
中
input
表单
focus
兄弟
触发
失效问题_组件
css
:
focus
无效...
解决
input
标签
focus
兄弟
触发
失效问题_组件
css
:
focus
无效组件
css
:
focus
无效 ...
赞
踩
article
TensorFlow
vs
PyTorch
:哪一个更适合您的
深度
学习
项目?_
tensorflow
和p...
PyTorch
的设计哲学则是提供一个灵活、快速和易于使用的框架,同时还保持了强大的功能和性能。与
TensorFlow
...
赞
踩
article
微信
小
程序
上拉
加载
,分页数据_
小
程序
上拉
加载
分页...
微信
小
程序
上拉
加载
,分页数据_
小
程序
上拉
加载
分页
小
程序
上拉
加载
分页 目录 1.页面
上拉
加载
2....
赞
踩
相关标签
css3
前端
css
matlab
机器人运动学
DH模型
正逆解
pyqt
python
开发语言
边缘计算
机器学习
web设计
web前端
用户体验
产品设计
网页设计
javascript
vue.js
安全
ssl
服务器
1024程序员节
开源