各位机器人技术爱好者们,大家好!很荣幸受古月老师邀请,成为古月居的签约作者。希望在这里可以同大家相互交流与学习。

始终觉得自己能力不足,但终于还是硬着头皮开始了在古月居的第一篇博客。由于我是机械专业出身,在接触机器人学时,选择了容易上手的MATLAB软件作为学习机器人学的主要工具。所以,今后分享的内容可能会更偏向使用MATLAB这一工具来演示说明。

不可否认仿真是机器人学习和研究过程中最重要的工具之一,在学习《机器人学导论》的时候,看得最多的就是一大堆矩阵变换的数学公式,很难知道这些公式是如何通过计算机编程实现对机器人的控制,也很难知道推导出来的机器人正逆运动学公式怎么用。我在MATLAB附加功能中找到一个demo,感觉有助于我们的学习和研究,因此在这里分享下。

这个demo是利用MATLAB环境设计的GUI(Graphical User Interface)图形用户界面,用于演示机器人正逆运动学简单控制。源码可以在MATLAB软件中的附加功能中找到。该demo的m源代码不仅能很好的帮助理解机器人正/逆运动学问题,在一定程度上还可以学习到如何使用m语言编程设计图形用户界面。

(1)先看看该demo设计的GUI主要部分:

逆运动学控制面板:通过文本编辑框控件或滑块控件由用户给定机器人的末端位姿[位置+姿态],并通过逆运动学按钮回调逆运动学函数使机器人末端运动到该位姿;

改变逆运动学面板中文本编辑框或滑块控件获得末端位姿,机器人末端运动到达图示位置

正运动学控制面板:通过文本编辑框控件或滑块控件由用户给定机器人某一关节变量,当用户改变某一滑块时,回调正运动学函数使机器人某一关节运动到指定关节角度;

先改变正运动学面板中第二个滑块控件,机器人第一个关节运动,再改变第一个滑块控件,机器人第一个关节运动。(蓝色轨迹)

坐标区:显示PUMA762机器人三维可视化模型,根据逆运动学控制面板或正运动学控制面板显示由用户操作后的机器人运动状态(上述图右边所示);

矩阵转换结果表面板:用于显示PUMA762机器人运动过程中(由逆运动学控制面板或正运动学控制面板简单控制运动时),在笛卡尔坐标系下末端齐次矩阵计算结果;

D-H参数表面板:显示PUMA762机器人的DH参数;

其他控件只在后面做部分演示,这里不再说明。

用户通过该GUI界面可以完成的正逆运动学简单控制演示如下:

通过上面的演示,我们知道该GUI的演示内容,对机器人正逆运动学也有了感性的认识:针对串联机器人,正运动学即通过改变机器人的关节角度,得到机器人末端运动后的位姿【笛卡尔空间】;逆运动学即通过设定机器人的末端位姿,以求解机器人各个关节的角度值【关节空间】,以保证机器人通过计算获得的关节角度运动到设定的末端位姿。

那么,机器人的建模与仿真是如何实现的呢?下面将给出答案。

(2)机器人建模仿真过程

我们先用流程图来了解demo的实现过程。

1.PUMA762机器人模型分析与DH参数确定

一般的,在进行机器人建模时需要分析机器人的结构特点。PUMA 762机器人是6R通用机器人,前三个旋转关节分别是腰关节(waist joint)、肩关节(shoulder joint)、肘关节(elbow joint)可以确定机器人的空间位置,后三个腕关节(wrist joint)确定末端执行器姿态。

机器人学中的正/逆运动学是在研究机器人各关节与连杆所在空间几何描述与变换的基础上建立的。为了实现机器人的正逆运动学建模,需要对研究的机器人建立连杆坐标系。也就是需要在机械臂的每个连杆上分别固接一个连杆坐标系,根据固连坐标系所在连杆的编号对固连坐标系命名,再使用DH标准确定各坐标系之间的变换关系【根据坐标系建立在连杆的近端或远端,DH可以分为改进DH或标准DH】。以下将固连坐标系建立在连杆的近端。

建立机器人的连杆坐标系主要是确定关节轴(转动关节轴)/标出其延长线,找出相邻关节轴之间的公垂线,关节轴交点或公垂线与关节轴交点,并确定连杆坐标系的原点和坐标系轴的方向。具体步骤在《机器人学导论》书里第三章中有介绍,要点既是Zi沿第i关节建立,Xi垂直于Zi+1并与之相交【下面提到的限制】。关于DH参数的介绍,古月居中有一篇文章【干货|机械臂的坐标系与数学模型:传说中的DH参数】。在里面提到了DH参数通过限制原点位置和X轴的方向,人为减少了两个自由度,因此它只需要用四个参数即可表达关节之间原本是六自由度的坐标变换【三个方向的旋转和三个方向上的平移】。根据上面的图我们便知道固连在连杆i-1上的坐标系是这样通过四个DH参数变换到固连在连杆i上的坐标系的:

①固连在连杆i-1上的坐标系绕Xi-1轴旋转αi-1角度后,使得新的坐标系的Z轴与固连在连杆i上的坐标系的Zi轴平行—>关节扭角。

②然后将旋转后的坐标系沿Xi-1轴平移ai-1长度后,使得新的坐标系Z轴与Zi轴重合—>连杆长度。

③接着将上一步得到的新坐标系绕Zi轴旋转θi角度后,使得新的坐标系X轴与Xi轴平行—>关节转角。

④在第三步里得到的坐标系与固连在连杆i上的坐标系姿态已一致了,最后只需要将其沿Zi平移di长度之后便可以与固连在连杆i上的坐标系重合了—>连杆偏距。

这样则从坐标系i-1到坐标系i的转换关系,便可以针对i-1坐标系的X轴进行变换,再针对i坐标系的Z轴进行变换【XZ类变换】。只需上述的四个参数便可以确定了【将每个变换代入相应的平移或旋转算子中并连乘】:

根据改进DH的规定,可以得到PUMA762的DH参数。

这里我们获得的DH参数表在D-H参数表面板显示。

2.PUMA762机器人正运动学

根据改进DH的相邻连杆坐标系转换关系i-1Ti,将DH参数代入计算,可以得到每一个连杆变换矩阵,最后将其连乘可以得到机器人末端法兰盘到基坐标的变换关系:

这部分获得的矩阵计算结果刚好用于显示矩阵转换结果表面板。如下所示是正运动学函数pumaANI中关键代码的截图:

3.PUMA762机器人逆运动学

由于PUMA762与PUMA560极为相似,所以具体的推导过程就不再赘述【参考机器人学导论Craig版】。在该demo中,通过逆运动学控制面板将末端位姿人为输入,代入到逆运动学函数中,将得到的关节值再代入正运动学中【逆运动学按钮回调】,使得关节运动到期望位姿。

4.其他仿真演示

有了以上基础,也就是说我们知道如何使机器人运动,那么我们可以尝试玩些新东西。如果我们设定好对机器人末端位姿的输入方式以实现对机器人末端的运动控制。如鼠标轨迹跟踪和运动重现、简单PTP示教重现,简单的基于视觉的目标跟踪,或手势交互等。如下为简单PTP示教重现和基于leap motion的简单手势跟踪。

总结:

由于作者能力有限,文中难免有描述不足和错误。希望是抛砖引玉,大家可以下载源码并结合《机器人学导论学习Craig版》学习,相信会有更好的收获!

(1)机器人学是一门高度交叉的前沿学科方向,也是自动化和机电工程等相关专业的一门重要专业基础课。在学习过程中利用MATLAB对机器人运动学进行仿真实验是很好方法之一。Mathworks在机器人学方面分享有很多可供大家学习的资源,感兴趣的可以看看https://ww2.mathworks.cn/solutions/robotics.html。

(2)demo的更多细节【PUMA762如何可视化在GUI坐标区,并通过滑块控件或文本编辑框空间实现运动的。该机器人的运动学逆解不唯一又是怎样处理的】可以从上述提到的MATLAB附加功能中下载源码学习,也可以参考:

matlab机器人模型仿真,一知半解|MATLAB机器人建模与仿真控制(1)相关推荐

  1. 一种从Robotstudio环境中导出机器人模型并在MATLAB下使其可视化的研究记录

    1.前记:回到学校反而没时间记录了自己瞎折腾的东西了,允我长长的叹一口气   '_' // 先提一下,在这篇MATLAB机器人可视化博客中提到了如何使CAD模型的机器人在MATLAB环境下可视化的问题 ...

  2. MATLAB的数控车床进给系统的建模与仿真

    1.内容简介 略 420-可以交流.咨询.答疑 2.内容说明 为提高数控车床的加工精度,对数控车床进给系统中影响加工精度的主要因素进行了仿真分析研究.依据机械动力学原理建立了机床进给传动系统的数学模型 ...

  3. matlab谐振电路仿真,基于Matlab的LC并联谐振回路的建模与仿真

    基于 Matlab 的 LC 并联谐振回路的建模与仿真 8 2008 年第 5 期(总第 17 期) 基于Matlab的LC并联谐振回路的建模与仿真 福建师范大学福清分校电子与信息工程系 廖延初 [摘 ...

  4. 基于matlab异步电机 s函数,建立电机状态方程的S 函数和仿真模)基于MATLAB的无刷双馈电机建模与仿真...

    MATLAB的无刷双馈电机 建模与仿真 第29卷 第6期 2002年12月湖 南 大 学 学 报 (自然科学版)JournalofHunanUniversity(NaturalSciencesEdit ...

  5. 【Matlab 六自由度机器人】定义标准型及改进型D-H参数建立机器人模型(附MATLAB建模代码)

    Matlab建立六自由度机器人模型 近期更新 前言 1.Matlab机器人工具箱 2.研究对象-六自由度机器人 正文 一.D-H参数(Denavit–Hartenberg parameters) 1. ...

  6. matlab无刷双馈电机模型搭建,基于MATLAB的无刷双馈电机建模与仿真

    无刷双馈电机(BrushlessDoubly-FedMachine,简称为BDFM)是一种结构简单,坚固可靠,异同步通用的电机,可在无刷情况下实行双馈运行.它具有以下显著的特点:降低了所需变频器的容量 ...

  7. 铁芯用matlab怎么仿真,Simulink的BLDC建模与仿真

    [实例简介] Simulink的BLDC建模与仿真. 基于 MATLAB/ Simulink的BLDC建模与仿真分析 Modeling and Simulation Analysis of BLDC ...

  8. 基于matlab的谐振电路仿真,基于Matlab的LC并联谐振回路的建模与仿真

    基于Matlab的LC并联谐振回路的建模与仿真 作者:廖延初 来源:<海峡科学>2008年第05期 [摘要] 在电路分析中经常遇到谐振电路,由于这类电路在选频放大领域有极为广泛的应用,因此 ...

  9. matlab在轴向放大倍数,基于MATLAB的数控车床进给系统的建模与仿真[1]

    2008年第 29卷第 4期中北大学学报 (自然科学版 ) Vol. 29 No. 4 2008 (总第 120期) JOURNAL OF NORTH UNIVERSITY OF CHINA (NAT ...

  10. matlab 三维绘图 抛光,瓷砖抛光过程建模与仿真

    : 瓷砖抛 光过程 建模与仿真 朱 成 就 (广 东工业大学 机 电工程 学院, 广东广州 ) 摘要 :瓷砖的抛磨影响 因素众 多 ,实际磨削加工时容易出现漏抛 .返抛现象 .对陶瓷抛光机磨头进行运动 ...

最新文章

  1. html中legend设置大小,HTML_如何给 legend 标签设定宽度,我们在做表单的时候经常会使 - phpStudy...
  2. 用Python编写代码分析《英雄联盟》游戏胜利的最重要因素
  3. systemd设置静态IP
  4. 区块链预言机(3)关键点说明
  5. rand函数的使用方法php,PHP array_rand()函数 使用基础教程
  6. OpenCV基于ARM的Linux系统的交叉编译
  7. 返回值与返回引用的问题
  8. 第 39 章 ThinkPHP--CURD 操作
  9. java button 圆角_UIButton具有渐变边框和圆角
  10. Tomcat启动时自动加载Servlet
  11. HttpClient-Java-发送HTTP请求
  12. CSS变量(自定义属性)实践指南
  13. 4204. 构造矩阵
  14. Neo4j 语法帮助文档
  15. android网络权限动态,Android权限详解(含6.0动态申请)
  16. win7 声卡安装失败修复方法
  17. Java基础面试题(2012完整版)
  18. 老男孩Docker基础入门培训视频Docker核心原理解(完整版)
  19. OpenMV色块寻找
  20. 简单示例mock的使用 (Junit结合Jmock)

热门文章

  1. 基于python flask的网上商城源码 mysql数据库
  2. 360浏览器通过访问插件管理界面启用flash实例演示,360浏览器启用Adobe Flash Player方法
  3. 导出PDF /home/education/font/simsun.ttc not found as file or resource.
  4. 金蝶KIS专业版V14.1生产任务单|销售单等单据图片打印
  5. R语言-数据包络分析法--DEA模型
  6. Microsoft Office Word一打开文档就弹出样式小窗口
  7. 「2021年」国内主流短信验证码平台综合评测
  8. Landsat-8 介绍
  9. phpredis中文手册
  10. 最强Redis实战学习笔记,没有之一!