虚拟仿真上,要注意仿真只是为了可视化,可以看到数据的变动是否和实际一致,所以Robot2D才是主要因素,虚拟仿真采集机器人的关节位置或者TCP位置来显示而已,为了测试一些别的算法,我们还可以在虚拟仿真的环境中放入临时的点位,然后显示一个球体或者一个坐标系,以此来判断是否算的准确(OPENGL无非rotate和translate到目标位置,然后draw即可)

 

仿真上还要注意,坐标系方向是自己定义的,比如我认为底座的正中心就是世界坐标系的原点。每加载一个模块,可以认为坐标系会产生一次平移和旋转,因此即便是直线模组也建议采用DH法构建从Base到Tool的坐标系变换,这对于后续的处理会比较简单。在本例中大关节映射了机器人Y坐标,小关节映射了机器人X坐标,当然Z方面只是一个画笔(也可以认为是一个不动的坐标)。每一个一起运动的部分可以认为是一个整体,Solidworks用STL格式输出即可指定坐标系(比如我认为对于底座部分如下,底座的原点就是底盘的正中心,对于大模组X)

 

 

X模组让末端产生Z=15的偏移值

Y模组让末端产生Z=81的偏移值

Z模组让末端产生X=-11,Y=-85,Z=-44的偏移值

工具端的画笔模块让末端产生X=10,Y=10,Z=0的偏移值

总的来说整个模组机构让末端产生X=-1,Y=-75,Z=52的偏移值

也就是说当J0和J1都回到零点的时候,整个TCP末端相对于基座的偏移为X=-1,Y=-75,Z=52mm),因此当两个关节都是0度的时候,TCP的XY坐标不是0(这同样也需要在OPENGL中手工给出偏移具体数值

 

从静态算法来分析,所有机器人都至少可以从关节位置更新TCP位置和从TCP位置更新关节位置两种方法(get_forward_kin()和get_inverse_kin()),当然在本例子中比较简单,因为一个关节控制了一个自由度,互相不干涉(不管是否添加Z轴),正向分析,电机转动通过丝杠传递到末端,一个电机角度就对应了一个X或者Y的值(正比例关系),反之也是如此,实际上在串联转动关节的机器人中,正解必然存在且唯一,逆解不一定存在且不一定唯一(0,1或者多个),但是如论简单还是复杂还是应该按照统一的写法。

 

从动态算法来分析,所有机器人都至少可以点动关节或点动TCP(movej()和mvoel()),当然在本例中为了简单演示只做了MVOEJ和MOVEL的一个特例(JOG单轴,实际上MOVEJ和MVOEL是可以多个轴或者多个方向的,给定的速度,加速度重新计算到每一个轴上,让每一个轴都一起开始一起停止,不管哪种方式最终都是要算到关节位置的修改这一步,因为电机只认识关节的旋转位置。)停止的过程也只是简单的直接终止线程(实际上为了保证运动的平滑和稳定,需要从当前速度开始慢慢减速到零stopj()和stopl())

 

在本例中,上位和下位是分开的(C#的上位优势是可以做的比较好看好用,TwinCAT的下位优势是可以跟具体硬件交互实现具体功能)。有很多功能既可以在上位完成也可以在下位完成,比如运动过程中的正负限位设置,速度过大保护等等(一般涉及具体硬件的应该在下位实现,因为上位的实时性不够,如果到了限位没有反应过来就超了,而下位的PLC程序可以确保高速和可靠。而和应用相关的应该在上位实现,因为上位做起来更快更方便,而且下位缺少很多高级语言才有的方法,函数)。在最后的例子中,将会演示上位和下位相结合的情况,上位负责显示和跟用户交互,下位负责执行和反馈实际硬件状态。

 

 

 

更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123

 

我的在线论坛:

http://csrobot.gz01.bdysite.com/

 

问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

 

 

 

 

倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 CS说明的更多相关文章

  1. 倍福TwinCAT(贝福Beckhoff)应用教程13.1 TwinCAT控制松下伺服 NC高级

    本节主要演示了使用自定义函数实现电机的运动(梯形曲线和S曲线都有实现),这里的JOG+和JOG-,针对单个关节实现了PTP的运动(跟贝福的MoveAbsolute功能块实现效果一致),在此没有介绍运动 ...

  2. 倍福TwinCAT(贝福Beckhoff)应用教程13.3 TwinCAT控制松下伺服 NC配合完整上位

    这是TwinCAT教程的最后一节,简单讲述了以C#为上位,通过ADS控制TwinCAT下位,实现完整控制两轴模组的功能.可以发现,在上位层已经没有了运动控制的代码,不管是要执行哪种运动,无非是把目标参 ...

  3. 倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 NC自定义直线插补

    对于MOVEJ的关节运动来说,我们只关心每个电机的角度(只需要考虑多个电机协同开始运动和结束运动,关键是对每个电机加速度均一化,从而一起跑一起停,这部分内容可以参考机器人学导论以获取更加详细的说明), ...

  4. 倍福TwinCAT(贝福Beckhoff)应用教程12.3 TwinCAT控制松下伺服 NC进阶

    在前面一节,我们简单介绍了通过PLC+HMI实现完整控制松下伺服的上使能-运动,采集位置,速度等功能,这里我们会大量简化用到的贝福功能块(为了更加实用).首先依然是对单个轴的封装,我们之前的做法,例如 ...

  5. 倍福TwinCAT(贝福Beckhoff)基础教程1.2 TwinCAT安装配置

    由于TC2和TC3都有可能用到,个人推荐都安装,但是注意必须是先安装的TwinCAT2,然后安装TwinCAT3,如果反了可能两个都没法用(打开TcSwitchRuntime提示Both TwinCA ...

  6. 倍福TwinCAT(贝福Beckhoff)基础教程1.1 TwinCAT背景知识

    本节附件中有很多PPT介绍贝福TwinCAT和EtherCAT的相关技术,在此只做简单说明. 简单总结:EtherCAT就是一种总线技术,具有速度快,稳定性高,布线简单等优点,详细可以参考下面这个PP ...

  7. 倍福TwinCAT(贝福Beckhoff)应用教程12.2 TwinCAT控制松下伺服 NC初步

    在前面我们已经学会了使用贝福自带的调试软件完成试运行,接下来是使用TWINCAT PLC实现这个功能,右击PLC添加一个PLC项目   在VISUs上右击添加一个HMI人机界面   目前PLC程序和人 ...

  8. 倍福TwinCAT(贝福Beckhoff)应用教程12.1 TwinCAT控制松下伺服 连接和试运行

    首先是用松下伺服自带的软件可以测试运行(驱动器,电机都连接好,然后用USB线连接到松下伺服驱动器的X1口),打开调试软件会自动提示连接到伺服   一般需要对驱动器清除绝对值编码器数据(驱动器可能报错4 ...

  9. 倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 如何读写数字量模拟量输入输出(DI,DO,AI,AO)

    常见的模拟量模块(还有更高端和更低端的,使用方法都一样) EL3054和EL4024(4路模拟量输入和输出模块)   常见的数字量模块(还有更高端和更低端的,使用方法都一样) EL1809和EL280 ...

随机推荐

  1. 利用Java编写简单的WebService实例-转载

    使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService.下面是一个从编写测试例子到 ...

  2. rest_frameword框架的基本组件

    序列化 序列化:转化数据和校验数据(提交数据时校验数据类型) 开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之类的表示形式的方式.我们可 ...

  3. Codeforces 1023 A.Single Wildcard Pattern Matching-匹配字符 (Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Fi)

    Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) A. Single Wildcard Patter ...

  4. keyPoints的相关函数

    cout<<"坐标:"<<keypoints1[i].pt; cout<<",邻域直径:"<<keypoints ...

  5. 实现用http上传文件,用ftp下载文件

    1.ftp配置 1.检查安装vsftpd软件 使用如下命令#rpm -qa |grep vsftpd可以检测出是否安装了vsftpd软件, 如果没有安装,使用YUM命令进行安装. 2.启动服务 使用v ...

  6. AMQ学习笔记 - 04. 消息选择器

    概述 消息选择器使用类似于SQL语法,为Consumer指定基于Message属性的筛选条件. 消息选择器 发送的时候,给消息添加一些属性:在接收的时候,根据属性进行过滤. API javax.jms ...

  7. Trie树&kmp&AC自动机&后缀数组&Manacher

    Trie 计数+Trie,读清题意很重要 https://vjudge.net/problem/UVALive-5913 kmp AC自动机 模板:https://vjudge.net/problem ...

  8. 并查集+背包 【CF741B】 Arpa's weak amphitheater and Mehrdad's valuable Hoses

    Descirption 有n个人,每个人都有颜值bi与体重wi.剧场的容量为W.有m条关系,xi与yi表示xi和yi是好朋友,在一个小组. 每个小组要么全部参加舞会,要么参加人数不能超过1人. 问保证 ...

  9. NLP初试牛刀,NLTK入门第一篇

    之前下载过一个PDF,书名是<用python进行自然语言处理>,挺有意思的,加上NLP和机器学习目前大热,想趁着暑假涉猎一下.于是开始了入门NLP之旅. 安装环境:Ubuntu14.04桌 ...

  10. DNS隧道工具dns2tcp

    DNS隧道工具dns2tcp   在很多网络环境中,防火墙会限制出站流量,主机往往只能访问外网主机有限的几个端口,如DNS的53端口.这时,就可以通过DNS请求和响应机制,建立通信隧道.Kali Li ...