| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> myCobot pro 机械臂(4)正向运动学——改进DH表示法(开发环境:python) -> 正文阅读 |
|
[人工智能]myCobot pro 机械臂(4)正向运动学——改进DH表示法(开发环境:python) |
目录 (1)确定αi-1:{大小:zi-1指向zi的角度;符号:右手螺旋定则指向与xi-1相同时为+} (2)确定ai-1:{大小:zi-1指向zi的距离;符号:沿着xi-1为+,a>0} (3)确定di:{大小:xi-1指向xi的距离;符号:沿着zi为+,d不一定±} (4)确定θi:{大小:xi-1指向xi的角度;符号:右手螺旋定则指向与zi相同时为+} 这里对myCobot Pro机械臂采用改进DH表示法描述机械臂,下面将会详细介绍流程: 一、空间中转轴的相对几何关系一般机械臂初始位置被认为是整体伸直向上。 如下图所示:(我这里保持官方给的关节刻度相对准,图中→带+的符号表示电机正转方向) 1、连杆坐标系2、DH参数在改进DH法中,描述连杆之间的位置关系,需要用到4个量:(这4个量组成DH参数) 连杆长度a:两个关节的轴(旋转关节的旋转轴,平移关节的平移轴)之间的公共法线长度 连杆扭矩α:一个关节的轴相对于另一个关节的轴绕它们的公共法线旋转的角度 连杆偏距d:一个关节与下一个关节的公共法线和它与上一个关节的公共法线沿这个关节轴的距离 关节转角θ:一个关节与下一个关节的公共法线和它与上一个关节的公共法线绕这个关节轴的转角 连杆长度a、连杆扭矩α、连杆偏距d、关节转角θ(旋转关节,θ为变量;移动关节,d为变量) ?在myCobot当中,全都是Revolute joint关节,因此,4个量中,只有θ是变量 列表如下:?
二、DH参数建立步骤1、建立模型(1)确定各关节以及关节轴线Axis i每一个关节轴线确定一个坐标系 (2)确定zi轴?z轴的位置为当前轴线,方向任意(此处选择电机正转方向,通过右手螺旋定则判断出z轴的正方向),同时z轴的下标表示第几坐标系。 (3)确定原点i以及xi轴{i}坐标系的原点与xi轴: ????????①(情况存在:{1}、{4}、{5})Axis i与Axis i+1如果相交,交点为原点,xi的方向在两轴线所在平面的垂线上,通常取为右手螺旋定则(zi指向zi+1)的正方向; ? ? ? ? ②(无需考虑)Axis i与Axis i+1如果不相交,两轴线公垂线和当前关节i轴线的交点为原点,x_i为在公垂线上,方向任意(沿着ai的方向,一般指向后一个关节); ? ? ? ? ③(情况存在:{2}、{3})Axis i与Axis i+1如果平行,公垂线有无数条,此时连杆偏距d明显为0,xi在公垂线上,指向Axis i+1,且指向坐标系{i+1}的原点。 需要注意的是,当坐标系{2}的原点定了以后,那么坐标系{3}的原点就在x2的延长线上 tips:这里关于坐标系{2}为什么和{1}重合,我认为是不一定非要用这种方式的(可以不重合),这里先存下一个疑惑,之后会通过计算进行回答! (4)添加首尾坐标系在改进DH坐标系中,已经标注好{6}了,所以在首端添加{0}。 为了简化,通常使 {0} 和 {1} 一致,并且当第一个关节变量θ1为0时,{0} 和 {1} 会重合。 2、确定DH的4个参数“拿出第一步列的表,挨个进行填写。先不要在意参数下角标,因为会混淆。” 首先确定,机械臂的尺寸参数: 在改进DH法中,坐标的变换都是从前面的坐标系往下一个坐标系变换,写第i行时只要关注{i-1}和{i}之间的关系就好。 顺序是: 以下将从坐标系{i}中去考虑。例如,当i=1时,利用{0}的坐标系变换到{1},此时确定α0,a0,d1,θ1 (1)确定αi-1:{大小:zi-1指向zi的角度;符号:右手螺旋定则指向与xi-1相同时为+}????????先将坐标系{i-1}的zi-1轴绕xi-1轴转到与坐标系{i}的zi轴平行,转过的角度为αi-1,右手准则拇指指向为z正方向为正;
(2)确定ai-1:{大小:zi-1指向zi的距离;符号:沿着xi-1为+,a>0}????????如果两关节轴相交,或者重合,则a=0
(3)确定di:{大小:xi-1指向xi的距离;符号:沿着zi为+,d不一定±}????????如果xi-1与xi平行,那么之间的距离就是di
(4)确定θi:{大小:xi-1指向xi的角度;符号:右手螺旋定则指向与zi相同时为+}? ? ? ? 由于之前——选择电机正转方向,通过右手螺旋定则判断出z轴的正方向,因此这里的θ取得全部是电机转动的方向,正转则为+,反转则为-
因此,改进DH参数表为:
3、offset参数? ? ? ? offset指的是:设置的机械臂的初始姿态与DH描述的数学模型机械臂之间的偏移量,旋转为角度,平移为距离。(我理解的是,offset即与变量有关,这里的mycobot的变量为θ,在这里其实指的就是机械臂初始的θ角度) ????????DH描述的数学模型机械臂的姿态的初始情况表示xi-1与x平行 ? ? ? ? 在旋转关节中,offset=0表示xi-1与x平行 ????????如果offset=-90,那么表示电机正转转过90度才为回到零初始状态 故得到完整的改进DH参数表:
三、用Python求解正向运动学:计算转换矩阵T? ? ? ??两 Link Frame 之间的 Transformations: 通过python代码表示:
??????????那么对于连续的 Link transformations : 通过python代码表示:
根据上面的完整的改进DH参数表,完整的Python计算转换矩阵的代码如下:
得到的解为: 我们再来看一看图片: ? ?因此,我们的DH参数设置的是正确的,Python代码也是正确的! 不跳黄河不死心哈哈哈哈哈哈哈哈哈哈哈哈哈!!! 四、回答上文“二/1/(3)”中设置的tips问题)如果坐标系{2}和坐标系{1}的位置,如下图所示,我们一样进行计算:(图中分成将90分成40-50) 故得到改变后的完整的改进DH参数表:(只有di发生变动)
这样一来,我们将代码里的d_list改一下:
然后我们再运行一下程序,得到的答案为: ?是和之前的结果一模一样的。结论就是,建立的坐标系其实是不唯一的!合理就是真理! 撒花…… ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 4:55:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |