DH参数(Denavit-Hartenberg parameters)
为什么
- 机械臂关节通常只关于一个轴进行移动(旋转或者平移),两段手臂的坐标系之间的变换可以由原本的6变量(3位移+3旋转)简化成4变量(DH参数)
- 关节自由度高(例如手腕可绕3个轴旋转),也可以分解成多个单轴
是什么
图源《Introduction to Robotics Mechanics and Control》
四个参数中,有两个表示关节轴相对前一关节轴的变化,另外两个表示关节沿轴的运动。
轴到轴的变化
设两个相邻关节的轴i−1_{i-1}i−1和轴i_{i}i的公共垂线为lll,方向为i−1{i-1}i−1到i{i}i,轴的变化可以表示为俩个参数
- 轴间距离ai−1a_{i-1}ai−1
- 轴i−1_{i-1}i−1旋转到轴i_ii的角度αi−1\alpha_{i-1}αi−1,沿着lll右手系旋转
关节的运动
- 沿轴平移did_idi
- 绕轴旋转θi\theta_iθi
通常其中一个为常数,另一个为变量,根据不同关节类型而定
坐标系
将轴i−1_{i-1}i−1到轴i_{i}i中间的连接称为linki−1link_{i-1}linki−1,靠近轴i_{i}i的称为前端,靠近轴i−1_{i-1}i−1的称为后端,则有两种坐标系建立的方式,对应不同的变换矩阵Tii−1T^{i-1}_iTii−1,坐标系iii到i−1i-1i−1的变换。
设在后端
垂线lll设为Xi−1X_{i-1}Xi−1,轴i−1_{i-1}i−1设为Zi−1Z_{i-1}Zi−1,转换和(ai−1,αi−1,di,θia_{i-1}, \alpha_{i-1},d_i,\theta_iai−1,αi−1,di,θi)有关
Tii−1=[cθi−sθi0ai−1sθicαi−1cθicαi−1−sαi−1−sαi−1disθisαi−1cθisαi−1cαi−1cαi−1di0001]T^{i-1}_{i} = \left[ \begin{array}{c} c\theta_i & -s\theta_i & 0 & a_{i-1} \\ s\theta_i c\alpha_{i-1} & c\theta_i c\alpha_{i-1} & -s\alpha_{i-1} & -s\alpha_{i-1} d_i \\ s\theta_i s\alpha_{i-1} & c\theta_i s\alpha_{i-1} & c\alpha_{i-1} & c\alpha_{i-1} d_i \\ 0 & 0 & 0 & 1\\ \end{array} \right]Tii−1=⎣⎢⎢⎡cθisθicαi−1sθisαi−10−sθicθicαi−1cθisαi−100−sαi−1cαi−10ai−1−sαi−1dicαi−1di1⎦⎥⎥⎤
图源《Introduction to Robotics Mechanics and Control》
设在前端
同样垂线lll设为Xi−1X_{i-1}Xi−1,但是将轴i_{i}i设为Zi−1Z_{i-1}Zi−1,转换和(ai,αi,di,θia_i, \alpha_i,d_i,\theta_iai,αi,di,θi)有关
Tii−1=[cθi−sθicαisθisαiaicθisθicθicαi−cθisαiaisθi0sαicαidi0001]T^{i-1}_{i} = \left[ \begin{array}{c} c\theta_i & -s\theta_i c\alpha_i & s\theta_i s\alpha_i & a_i c\theta_i \\ s\theta_i & c\theta_i c\alpha_i & -c\theta_i s\alpha_i & a_i s\theta_i \\ 0 & s\alpha_i & c\alpha_i & d_i \\ 0 & 0 & 0 & 1\\ \end{array} \right]Tii−1=⎣⎢⎢⎡cθisθi00−sθicαicθicαisαi0sθisαi−cθisαicαi0aicθiaisθidi1⎦⎥⎥⎤
图源《Robotics Vision And Control》
怎么用
参数表
求机械臂运动学正解(forward kinematics)
将多个关节串联起来,获得末端位姿
例:UR5
ur5 ros github 参数 (以设在前端的方式建立坐标)
i | aia_iai | αi\alpha_iαi | did_idi | θi\theta_iθi |
---|---|---|---|---|
1 | 0 | 1.570796327 | 0.089159 | θ1\theta_1θ1 |
2 | -0.42500 | 0 | 0 | θ2\theta_2θ2 |
3 | -0.39225 | 0 | 0 | θ3\theta_3θ3 |
4 | 0 | 1.570796327 | 0.10915 | θ4\theta_4θ4 |
5 | 0 | -1.570796327 | 0.09465 | θ5\theta_5θ5 |
6 | 0 | 0 | 0.0823 | θ6\theta_6θ6 |
q_home_offset = [0, -1.570796327, 0, -1.570796327, 0, 0]
joint_direction = [-1, -1, 1, 1, 1, 1]
末端位姿T60=T10T21T32T43T54T65T^{0}_{6} = T^{0}_{1}T^{1}_{2}T^{2}_{3}T^{3}_{4}T^{4}_{5}T^{5}_{6}T60=T10T21T32T43T54T65
DH参数(Denavit-Hartenberg parameters)相关推荐
- 【Matlab 六自由度机器人】定义标准型及改进型D-H参数建立机器人模型(附MATLAB建模代码)
Matlab建立六自由度机器人模型 近期更新 前言 1.Matlab机器人工具箱 2.研究对象-六自由度机器人 正文 一.D-H参数(Denavit–Hartenberg parameters) 1. ...
- Robotstudio 获取机器人D-H参数
1.来源论坛里的帖子,主要是回答如何通过Robotstudio来获取ABB机器人的D-H参数. 对话内容(复制粘贴): Hej Hej, My name is Nikolas and I am res ...
- Udacity机器人软件工程师课程笔记(十五)-运动学-正向运动学和反向运动学(其二)-DH参数等
正向运动学和反向运动学 目录 2D中的旋转矩阵 sympy包 旋转的合成 旋转矩阵中的欧拉角 平移 齐次变换及其逆变换 齐次变换的合成 Denavit-Hartenberg 参数 DH参数分配算法 正 ...
- 浅谈DH参数(以华数机器人为例)
1.DH参数说明 欧几里得空间中的直角坐标系由三个两两相交且相互垂直的轴构成:X 轴,Y轴和 Z轴.因此,一个三维直角坐标系有六个变换自由度:沿 X,Y,Z 轴的平移自由度:绕 X,Y,Z 轴的旋转自 ...
- PI机器人解决方案RMS-下篇——DH参数校准模块
https://www.chuandong.com/tech/detail.aspx?id=36041 API机器人解决方案RMS-下篇--DH参数校准模块 2019年03月14日 11:48:40 ...
- 机器人学一些概念2——四元数,D-H 参数
文章目录 机器人学一些概念2 四元数 D-H 参数 机器人学一些概念2 四元数 这里是机器人旋转中用到的四元数,总结来看主要是用于运算方便,避免θ\thetaθ接近0的时候造成旋转矩阵无法求解. ...
- python 机械臂控制_机械臂正运动学-DH参数-Python快速实现
机械臂正运动学-DH参数-Python快速实现 前言: 最近在玩一个非常弱智的机械臂,好多功能都没有,连个配套的仿真环境都没, 虚拟边界和碰撞检测的功能都非常难用. 没办法,我只能自己实现一个简陋的虚 ...
- Python知道cos值求角度_机械臂正运动学-DH参数-Python快速实现
# 机械臂正运动学-DH参数-Python快速实现 @[toc] 前言: 最近在玩一个非常弱智的机械臂,好多功能都没有,连个配套的仿真环境都没, 虚拟边界和碰撞检测的功能都非常难用. 没办法,我只能 ...
- 【机器人学、机器视觉与控制】用工具箱确定D-H参数
用工具箱确定D-H参数 确定D-H参数的经典方法是系统地为每个连杆分配一个坐标系.Puma机器人的连杆坐标系就是采用标准D-H形式进行设定的,如图下图所示. 然而,设定每一个坐标系上都有很强的约束,因 ...
- Uber Go 语言编程规范:避免语义不明确的参数(Naked Parameters)
函数调用中的意义不明确的参数(Naked parameters )可能会影响可读性,当参数名称的含义不明显时,请为参数添加 C 样式注释 (/* ... */) Bad // func printIn ...
最新文章
- 在线作图|在线做扩增子抽平
- vsearch2.8.1使用和命令简介——中文帮助文档(免费64位版usearch)
- 适配器模式(为被封装对象提供不同的接口)
- ansible模块介绍
- java 文件转换字符串_java字符串文件互相转换
- Android 编程下 Touch 事件的分发和消费机制
- 分支程序设计02 - 零基础入门学习C语言11
- C#:SQLite大量插入的效率问题
- 微信小程序如何使用阿里矢量库
- openkore 207cn 中文加强版 2010.01.12【彪彪修改】
- 分子系统学-多序列比对和系统进化分析教程
- python画图怎么使用特殊符号?
- MT7620A路由刷DDWRT
- windows键被禁用_如何在Windows 10上禁用插入键
- 通过身份证号码得出性别和年龄
- 【算法】【c++】打家劫舍问题
- vrchat模型房_VRChat之blender教程
- 计算机将文本朗读出来应用语音,如何实现电脑语音朗读文字?可以选择两种方法...
- Idea 中如何导入项目
- centos7搭建hexo博客步骤
热门文章
- 解决下载了pygame后,pycharm依然报错No module named ‘pygame
- 把docx格式的word文档转换为txt文件
- 【伸手党福利】开发人员重装系统顺序
- 傅里叶变换与拉普拉斯变换
- c语言开发arcgis,2017Esri开发竞赛GIS应用开发组一等奖作品
- 2022新华三十大技术趋势白皮书
- 最优化算法之牛顿法、高斯-牛顿法、LM算法
- hbase安装与配置
- 推广帖:超好用的mac下shell工具 finalshell --xshell替代,mac ssh客户端
- Axure各种版本注册码 | 最新Axure RP 8.1.0.3377的授权码