【现代机器人学】学习笔记三:前向运动学(Forward Kinematics)

news2024/11/15 17:58:09

这节的内容比较简单,主要配合习题来看。

在掌握方法以后,对常规的有许多移动副或转动副结构组成的机械臂,计算正向运动学则非常简单。

齐次变换法:

这种方法的特点是,只研究当前关节和上一个关节的旋转平移,然后用下标相乘原则把它合起来。

这个内容在具体实现上,其实可以再扩展为:    T = T01*R01*T12*R12*T23*R23*T34

那么上面的T01,就是前一章中所讲的,在1关节的转角为0度的时候,从base系到1关节系,直接裸写得到的旋转和平移矩阵。(参见刚体运动这节【现代机器人学】学习笔记二:刚体运动_zkk9527的博客-CSDN博客,1关节系在base系下的表示)相当于从0系,移动到了1系。然后这时到达了1系,就可以沿1系的转轴进行旋转了,那么这就属于在body系下进行旋转,所以进行右乘。绕哪个轴转,就写出对应的旋转矩阵。其他同理。


旋量指数积法:

相对于基坐标系的螺旋轴:

一个重要前提:近的关节运动会带动远的关节运动。所以要从远及近运动。

 相对于基坐标系算末端,假设末端初始为M,那么根据上述前提,就需要从靠近末端的关节开始转。这时这个旋转关节就相当于space系,末端相当于body系,既然是在space系下进行旋转,那么就是左乘。所以就是最终结果就是:

T(\theta)=e^{[\mathcal{S}_1]\theta_1}e^{[\mathcal{S}_2]\theta_2}..e^{[\mathcal{S}_n]\theta_n}M

那么就看这个中间计算的旋量如何得到的。实际上这里也不是旋量\mathcal{V},它是螺旋轴\mathcal{S}。注意实际上\mathcal{V}\mathcal{S}存在的关系是\mathcal{V}=\mathcal{S}\dot{\theta},(注意是\dot{\theta},是延轴的瞬时角速度,而不是指数积上面的角度)而 \mathcal{S}可以理解为把\mathcal{V}中的[w,v]进行归一化的构成的向量。

回顾:

回顾上节:什么是旋量?比如\dot{T}T^{-1}=\begin{pmatrix} [w_s]=\dot{R}R^{T}& v_s=\dot{p}-\dot{R}R^{T}p\\ 0 & 0 \end{pmatrix},那么其中的[w,v]就构成旋量V_s。w就是转轴。

这些容易忘记或记混的东西就要反复,循环的回顾记忆。

回到上面的计算过程:

旋转关节:

1.首先,把机械臂统一都拉到零位,得到末端相对于基坐标系的表示M。

然后盯着space系,根据各个关节轴,看看关节轴在space系下是怎么归一化表示的:例如关节轴转动的那个轴,在space系下是z轴的方向,那么S中的w就是(0,0,1),其他同理。

2.得到关节轴后,根据v=-w \times q,计算v,这里q是关节转轴上任意一点在基坐标系下的度量。

3.计算得到[w,v]以后,根据螺旋轴的求hat操作:

[\mathcal{S}]=\begin{pmatrix} [w] &v \\ 0 & 0 \end{pmatrix}

然后代入上面的T公式中,\theta就是这个关节的转角。

移动关节:

1.移动副,则直接代入w就是0。那么v在这里就是关节轴正向的单位向量在基坐标系下的度量\theta 代表移动的距离。

2.采用上述相同的对螺旋轴求hat的操作,然后代入T公式。

回顾:

\mathcal{S}=\begin{pmatrix} w\\ v \end{pmatrix} =\begin{pmatrix} \hat{s}\\ -\hat{s} \times q + h \hat{s} \end{pmatrix}

在这个公式中,h表示截距(延轴方向的线速度/角速度),但是对移动副而言,没有角速度,所以h会无限大。所以对于移动副,从旋量到螺旋轴的过程,就是\mathcal{S}=\begin{pmatrix} 0\\ v/||v|| \end{pmatrix},相当于只对旋量的v进行归一化,那么作用在现在这里,就是关节轴正向的单位向量在基坐标系下的度量。

对于转动副而言,为什么没有后一项了,只剩下前一项?原因也类似,因为转动副没有沿轴方向的线速度。

相对于末端坐标系的螺旋轴:

依据从远及近运动的原则,既然是相对末端系,所以M如果代表space系,1关节此时就代表body系。既然是在body系下旋转,因此就是右乘,所以上面的公式变为:

T(\theta)=Me^{[\mathcal{B}_1]\theta_1}e^{[\mathcal{B}_2]\theta_2}..e^{[\mathcal{B}_n]\theta_n}

这里和上面相对于基坐标系的公式相比,看似S变成了B,这里的S和B其实都是螺旋轴\mathcal{S},这里之所以叫B,是因为指的是相对末端body坐标系。

计算方法和相对基坐标系的一样,只不过这里确定w和v的时候,都是先拉成机械臂的零位,然后以body系作为参考,从而确定轴的方向。

注意:不管是“相对于基坐标系的螺旋轴”,还是“相对于末端坐标系的螺旋轴”,两种方式计算出来的都是前向运动学的结果即末端相对于基坐标系的表示。

方法名称中的“相对于基坐标系”或“相对末端坐标系”都是指的是计算中用到的“螺旋轴”是用的哪个坐标系的螺旋轴,可绝对不可以理解为计算出的FK的结果是“相对于基坐标系”(末端相对于base)或“相对于末端坐标系”(base相对于末端)

FK的结果就是末端相对于base的表示。

 插入知识点:

7轴机械臂,额外的第7个关节表示机器人完成末端任务是冗余的,这个额外的自由度可以用于避障或优化某一目标函数,例如满足所需末端位形的前提下功率最小。

PoE方法的好处在于,中间坐标系究竟是怎么样的,可以完全不考虑。爱怎么样就怎么样,只要指定基坐标系和末端坐标系就可以了。

DH表示法

DH表示法是一种传统的表示法,有四个参数:

a_{i-1} :连杆长度,就是两个轴之间公垂线的长度。(不一定是真实两杆的长度)

\alpha_{i-1} :连杆扭转角,可以理解为,如果沿着上面的a_{i-1} ,把两个连杆相交以后,再沿着公垂线转多少度,就可以使得两个关节轴完全重合。

注意,这两个的下标是i-1,其意味着在推公式,列DH表格的时候,表格的行数从1开始写,并且写的时候,要看从0坐标系出发经过怎么样才能到1坐标系。

 连杆偏距d_i :两轴重合后,沿着轴的方向平移多少,就可以使原点重合。

关节转角\phi _i  :两轴原点重合后,旧的轴需要旋转多少,就可以和新的轴的角度保持一致。

注意,这两个的下标是i,意味着,在列DH表格的时候,算它俩的时候,上一个轴已经沿着x轴挪到了当前轴上,z轴已经重合了。

如果是移动副,连杆偏距d_i  是变量;如果是转动副,关节转角\phi _i  是变量。

对于DH参数中,英文字母表示的是距离,希腊字母表示的是夹角。

DH表示法需要事先把所有的关节的坐标系都确定下来。即:先定坐标系,再定DH参数。

1.根据先把所有的z轴都确定。选好基坐标系和末端坐标系,基坐标系尽可能和杆1的连杆坐标重合,末端坐标系尽可能选在末端执行器的某处。

2.再确定x轴,方向是从当前z轴指向下一个z轴。(如果z轴相交或平行,则多种可能性,自己指定一个x轴的朝向即可)

3.根据右手定则,确定y轴。(不过DH法,定不定y轴其实也没啥用)

4.写DH表,确定移动副和转动副的变量。(注意,关节转角是,旧的轴先转某个角度,和新的轴的零位重合了,再加上新的轴可以转的角度。连杆偏距也是同理,不能说这俩就是把新轴的变量塞上去就可以了)

总结:DH就是分为四部:

先沿着公垂线平移(沿x轴平移),再沿着公垂线旋转(沿x轴旋转),再沿z轴平移,再沿z轴旋转。

首先从公垂线开始,公垂线是DH中最重要的参数,所以由它开始,平移完,才开始转。辅助记忆:字母表中a是第一个,所以DH中从a开始。

因为都是沿着操作以后的轴进行下一步操作,所以相关操作一律是右乘:

 

DH法的优点在于,仅用4个参数就表示了六自由度的内容。这个是因为它设立了特殊的坐标系表示,只沿着x和z平移旋转,而和y无关。

但这也是缺点,需要好好的设置坐标系才可以,搞起来比较麻烦。所以设置坐标系的时候,末端要小心,避免导致DH算不出来,需要沿y轴操作事情发生。。另外DH的缺点是可能存在病态问题,相邻两关节轴平行的时候,一点点误差就会导致公垂线的巨大变化。

书中讲:对开链运动学的FK来说,DH几乎没有实际价值。(晕,那你讲它干什么??)

不过另一本比较经典的《机器人学导论》中,却只有DH表示法。另外在日常工作中,也经常听到其他同事,包括机械专业、控制专业的同学提到DH表示法,目前我司的机器人的FK貌似就是用的DH算的。。这块不是我负责,改天确认一下。。不同机器人出厂进行参数标定的时候,就是有一些dh参数的标定,不同机器人不太一样。所以我认为这里好像也并不是像书中说的,DH完全没有价值。我个人认为这是流派之争,捧一踩一。。聊天的时候,他们说起来也会说:“他们搞旋量的那帮人....”

POE和DH的关系:

这个因为四项相乘当中,移动副或者转动副,都会有三个是常数项,剩下的那一项也可以用Poe表示一下,最后各个关节都这样表示,化简到最后,就是POE公式。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

供应商关系管理与企业内容管理 (ECM) 相结合,帮助解决采购存在的五个关键挑战

供应商关系管理与企业内容管理 (ECM) 相结合,帮助解决采购存在的五个关键挑战 采购过程包括将制造需求转化为供应商需求、如何管理供应商关系、以及生产产品所需的商品和服务的订购。 领先的制造、制药、食品和自然资源组织正在意识到&#…

【性能优化】pc端与移动端图片性能优化

目录 优化方向 优化方式 1.域名收敛 2.使用CDN节点 3.设置缓存 4.图片懒加载 5.用户图片上传限制 6.使用OSS服务压缩 7.使用OSS缩放 8.合成雪碧图 9.使用svg图片 在前端项目中图片的性能优化也有不少可以提升的地方,那么有哪些性能优化的点呢&#xff1f…

[附源码]Python计算机毕业设计Django游戏交易平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

NEMUCOD病毒jse样本分析

该病毒使用微软的JScript编写,能够直接运行在Windows操作系统之上,采用了加密和混淆手段对抗监测,可检测是否运行在虚拟机中和系统中是否存在分析工具,可感染可移动存储介质,主要功能为下载器。CC服务器为185.159.82.1…

牛客网刷题【BC114\BC123\BC125\BC13\BC93\BC95】

目录 一、BC114 小乐乐排电梯 二、BC123 小乐乐找最大数 三、BC125 小乐乐转换成绩 四、BC13 ASCII码 五、BC93 统计数据正负个数 六、BC95 最高分与最低分之差 一、BC114 小乐乐排电梯 #include <stdio.h>int main() {int n0;scanf("%d",&n…

Aspose.Words 22.12.0 for NET cRACK

.NET API 来处理 Word 文件 无需使用外部软件即可创建、编辑、呈现 Word 文档并将其转换为多种格式。您还可以生成报告以可视化数据。 .NET 的 Aspose.Words Aspose.Words for .NET 是一种高级文档处理 API&#xff0c;可对各种文件格式执行广泛的管理和操作任务。API 支持…

(文章复现)5.基于BP神经网络的风电功率预测方法(MATLAB程序)

联系方式&#xff1a;2645521500 复现文章&#xff1a; 基于BP神经网络的风电功率预测方法——刘立群&#xff08;2021年&#xff09; 摘要&#xff1a; 风电功率预测结果的准确性&#xff0c;不仅关系到风力发电厂的综合运行效率&#xff0c;也与区域运行成本具备直接联系…

Java面试-MySQL事务专题

链接&#xff1a;https://pan.baidu.com/s/1mw4sej8BzdHNCkaib4ebeg 提取码&#xff1a;j2qu 1 事务的四个特点是什么&#xff1f;他们是如何实现的&#xff1f; ACID-原子性、一致性、隔离性和持久性。 ACID原理原子性undolog一致性通过其他三个特性来实现的隔离性锁MVCC持…

java计算机毕业设计ssm校园志愿者服务系统u7thd(附源码、数据库)

java计算机毕业设计ssm校园志愿者服务系统u7thd&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xf…

初学者必刷题---PTA基础编程题目集第一期

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;初学者必刷题—鹏哥推荐 &#x1f4ac;总结&#xff1a;希望…

STC 51单片机62—— Proteus仿真多位数码管稳定显示 不抖动

#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //uchar code dis_code[]{0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9}; //共阳数码管段码表 //共阴字形码表【实验】数码管实验时&#xff0c;一定要将点阵模块跳…

玩转系统|如何Windows Update自动更新

目录 为什么要关闭Windows自动更新&#xff1f; 1、防止在工作时间突然中断计算机。 2、应用程序兼容性变差。 可能会导致系统损坏。 关闭Windows自动更新的几种方法&#xff01; 方法一&#xff1a;通过Windows设置关闭Windows自动更新 方法二&#xff1a;通过组策略编…

如何查看浏览器页面缓存内容(代码控制台)【详细教程】

如何查看浏览器页面缓存内容——代码&控制台知识调用前言引入控制台输入代码查看在控制台application查看知识调用 文章可能需要用到的知识&#x1f525;&#x1f525;&#x1f525;浏览器缓存有哪些&#xff08;通用缓存有哪些&#xff09; 前言引入 浏览器有多种缓存&a…

密码重置、API调用、远程命令,Zabbix用户必知的几个技巧

作者&#xff1a;张思德&#xff0c;Zabbix社区签约专家&#xff0c;2017-2022Zabbix中国峰会讲师 前言 Zabbix版本迭代很快&#xff0c;而且每个版本都会有很多新特性&#xff0c;有时有一个不起眼的小的更新却造成很多老司机翻车&#xff0c;以下主要介绍Zabbix几个常见的知识…

3.1.1 积分和微分放大器

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

ADI Blackfin DSP处理器-BF533的开发详解8:Timer定时器的驱动和应用(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 接口功能介绍 ADSP-BF53x 上有 3 个通用定时器&#xff0c;每个定时器有三种模式&#xff1a; 脉冲宽度调制模式&#xff08;PWM_OUT&#xff0…

【信号处理】基于遗传算法的噪声图像的边缘检测(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 图像的边缘是指图像灰度急剧发生变化的不连续的地方&#xff0c;主要存在于目标和目标、背景和目标、不同色彩的区域之间&#…

最新版SwitchHosts下载安装教程

文章目录前言一、SwitchHosts下载1.第一步2.第二步二、常见问题前言 SwitchHosts开源免费&#xff0c;社区稳定维护&#xff0c;特别香~ 一、SwitchHosts下载 https://github.com/oldj/SwitchHosts 1.第一步 打开上面的官网&#xff0c;之后往下面滑动&#xff0c;看到Swit…

Centos7 部署 VerneMQ 高可用集群

1.简要说明 1.1概述 VerneMQ首先是一个MQTT发布/订阅消息代理&#xff0c;它实现了OASIS行业标准MQTT协议&#xff1b;但是&#xff0c;VerneMQ还旨在通过提供一组与可扩展性&#xff0c;可靠性和高性能以及操作简单性相关的独特功能&#xff0c;将消息传递和物联网应用程序提…

Dynamics 365Online 应用内消息通知(In-app notifications)

应用内通知其实一直是个刚需&#xff0c;但D365一直缺乏这个功能&#xff0c;如果客户有需求&#xff0c;我们只有通过自定义的方式实现&#xff0c;好在V9以后顶部栏可以自定义了&#xff0c;可以自己加Icon&#xff0c;实现通知的样式。 好在2022WAV1后&#xff0c;D365终于加…