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

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

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

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

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

15843589011.png

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

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

15843589321.png

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

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

15843589711.png

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

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

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

15843590131.png

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

15843590251.png

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

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

GIF.gif

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

15843590401.png

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

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

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

15843590901.png

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

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

15843591061.png

15843591251.png

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

15843591401.png

建立机器人的连杆坐标系主要是确定关节轴(转动关节轴)/标出其延长线,找出相邻关节轴之间的公垂线,关节轴交点或公垂线与关节轴交点,并确定连杆坐标系的原点和坐标系轴的方向。具体步骤在《机器人学导论》书里第三章中有介绍,要点既是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类变换】。只需上述的四个参数便可以确定了【将每个变换代入相应的平移或旋转算子中并连乘】:

%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20200317154752.png

%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20200317154815.png

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

15843591891.png

15843612301.png

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

15843592171.png

2.PUMA762机器人正运动学

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

15843614191.png

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

15843592301.png

15843592421.png

15843592571.png

15843592731.png

15843592871.png

3.PUMA762机器人逆运动学

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

15843593031.png

4.其他仿真演示

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

GIF11.gif

GIF2.gif

总结:

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

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

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

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

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

相关文章

第四期《Summer Tree》 已经整理完毕

虽然已经整理完毕,但是却没有空间上传,由于太大了上传不了.下次再补充回来 如果地址下载不到,告诉我。呵呵 我上传在微软共享空间里面 在这里可以下载在这里转载于:https://www.cnblogs.com/hero82748274/archive/2009/06/06/1497771.html

研究报告:城市大脑的起源、现状与未来趋势

报告撰写人:刘锋 《互联网进化论》作者,计算机博士2009年1月,IBM公司首席执行官彭明盛首次提出“智慧地球”,建议政府投资新一代的智慧型基础设施。此后智慧城市建设在世界范围内展开,在中国有上百个地区提出建设“智慧…

Linux IO - 同步,异步,阻塞,非阻塞

From:http://blog.csdn.net/historyasamirror/article/details/5778378 同步/异步,阻塞/非阻塞概念深度解析:http://blog.csdn.net/lengxiao1993/article/details/78154467 知乎上关于 阻塞和非阻塞、同步和异步 之间区别的生动解释。 htt…

微软 AI 设计原则:成为弱者,再带来惊喜

来源:36Kr 作者:木木子编者按:AI设计的思路是什么?更完美?更能想用户之所想?本文作者Cliff Kuang在“The company studied personal assistants–human ones–to understand how to make a great machine…

vim 中的杀手级插件: vundle (vim 插件管理器)

From:http://zuyunfei.com/2013/04/12/killer-plugin-of-vim-vundle/ vundle.txt:https://github.com/VundleVim/Vundle.vim/blob/master/doc/vundle.txt Vundle 的具体介绍和配置:github repo:https://github.com/gmarik/vundl…

Spring Data JPA 从入门到精通~Auditing及其事件详解

Auditing 及其事件详解 Auditing 翻译过来是审计和审核,Spring 的优秀之处在于帮我们想到了很多繁琐事情的解决方案,我们在实际的业务系统中,针对一张表的操作大部分是需要记录谁什么时间创建的,谁什么时间修改的,并且…

未来城市的无人机送货系统是怎样的?

来源: 资本实验室 作者:李鑫Siri通过移动应用下了一盒巴克拉拉面膜的订单,电商平台收到信息,发指令给最近的送货驳船。驳船上的无人机获取货物包裹后直接飞向Siri家。在不到8分钟的飞行后,无人机来到位于12层的Siri家…

Vim自动补全神器:YouCompleteMe

From:http://www.jianshu.com/p/d908ce81017a github 地址:https://github.com/Valloric/YouCompleteMe YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim. 参考: https://github.com/Valloric/YouCom…

对比 | 欧洲、美国、中国智慧城市的不同实践路径

来源:《上海城市规划》2018年第1期《欧美智慧城市最新实践与参考》作者:刘杨 龚烁 刘晋媛随着ICT、大数据、物联网等各类新兴技术的不断发展,智慧城市的运营和实践也不断趋于成熟。通过整理欧美各大典型智慧城市的最新实践案例,总…

C++ 使用 TinyXml 解析 XML 文件

知乎 C解析xml有什么好用的轮子? :https://www.zhihu.com/question/32046606 TinyXML-2 的 github地址和帮助文档:https://github.com/leethomason/tinyxml2 tinyxml 下载地址:https://sourceforge.net/projects/tinyxml/ *Please Note*…

定制自己的Windows CE 5.0 ARM中文模拟器(转)

定制自己的Windows CE 5.0 ARM中文模拟器(转)http://showvi.com/Blog/ViewAirticle/59一、生成OS 1. 安装Windows CE 5.0(记得CPU类型里把ARMV4I选上)装完之后装DeviceEmulatorBSP.msi,这是ARMV4I模拟器的BSP。 我补充个DeviceEmulatorBSP.ms…

人工智能即服务 当人工智能遇到云计算

来源:企业网为了在竞争中保持领先地位,越来越多的企业正在寻求将人工智能技术整合到其应用程序、产品、服务,以及大数据分析方法中。而企业开始使用人工智能技术的最简单和最流行的方法之一是使用基于云计算的人工智能即服务产品。根据调研机…

Linux 文件 IO

参考:http://blog.csdn.net/wanxiao009/article/details/5648583 C 和 C 文件操作详解:http://blog.csdn.net/freeking101/article/details/60959624 标准IO与文件IO 的区别:http://blog.csdn.net/big_bit/article/details/51804391 参考…

Spring Data JPA 从入门到精通~默认数据源的讲解

默认数据源 spring.datasource.driver-class-namecom.mysql.jdbc.Driver spring.datasource.urljdbc:mysql://127.0.0.1:3306/test?useSSLfalse spring.datasource.usernameroot spring.datasource.password123456 但是在实际工作中不可能这么简单,因为会用其他数…

国内AI芯片百家争鸣,何以抗衡全球技术寡头

来源:中国科学院自动化研究所 作者:吴军宁如果说 2016 年 3 月份 AlphaGo 与李世石的那场人机大战只在科技界和围棋界产生较大影响的话,那么 2017 年 5 月其与排名第一的世界围棋冠军柯洁的对战则将人工智能技术推向了公众视野。阿尔法狗&am…

zabbix php 5.6 安装配置,CentOS 5.6下Zabbix 1.8.5 服务端安装部署

CentOS 5.6下Zabbix 1.8.5 服务端安装部署CentOS 5.6 x86_64 Zabbix 1.8.5IP:192.168.88.130一、安装LAMP环境依赖包:# yum install MySQL-server mysql-devel libcurl-devel net-snmp-devel php php-gd php-xml php-mysql php-mbstring php-bcmath httpd curl-dev…

Linux系统编程——I/O多路复用select、poll、epoll

参考:https://segmentfault.com/a/1190000003063859 Linux下的I/O复用与epoll详解:https://www.cnblogs.com/lojunren/p/3856290.html 彻底学会 epoll 系列:http://blog.chinaunix.net/uid/28541347/sid-193117-list-1.htm Linux下I/O多路复用…

谷歌X实验室的“无用”发明

来源:OFweek人工智能网摘要:作为想要改变世界的科技界钢铁侠,谷歌自诞生起就发明无数。1999年,公司创始人拉里佩奇用导航地图开车载他同事经过一个停车场时突然想到:在线搜索也可以盈利。当时他认为,谷歌能…

php跳一跳小游戏,原生JS实现的跳一跳小游戏完整实例

本文实例讲述了原生JS实现的跳一跳小游戏。分享给大家供大家参考,具体如下:以下说的是闲暇编写的一个小游戏--跳一跳,类似于微信的跳一跳,大体实现功能有:1.先随机生成地图;2.按住按钮释放后完成动作并进行…

Google提出新型学习范式「Deep Memory」,或将彻底改变机器学习领域

图源:pixabay原文来源:arXiv作者:Sylvain Gelly、Karol Kurach、Marcin Michalski、Xiaohua Zhai「雷克世界」编译:嗯~是阿童木呀、KABUDA导语:最近,Google提出了一种称之为Deep Memory的新型学习范式&…