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

且由于正解是唯一的,在主程序的每个周期都要执行(当然你也可以不在主程序每个周期都执行,放在MoveUpdate里面也可以,不管执行何种运动都刷新一次正解)

 

对于MOVEL的TCP运动来说,我们只关心末端的位置和姿态(只需要考虑末端能否到目标位置,关键是求逆解,并把每个周期逆解对应的关节位置传递给电机,从而实现末端动,所有轴跟着联动的效果,同样可以参考机器人学导论研究更复杂的情况)。我们要注意整个的流程是更新TCP位置(MOVEL)=>更新关节位置(逆解)=>更新关节速度和TCP速度

且由于逆解不一定要做,只在MOVEL的时候才会执行,并且即便执行也是划归为跟MOVEJ一样的流程(MOVEUpdateDATA),更新数据之前判断关节位置,速度是否超过限制

 

对于两轴的直线模组来说比较简单,只有XY两个自由度,不涉及姿态,但是算法的流程和含义却是一样的。可以添加监控捕捉每个关节的位置和TCP的位置在启停的时候是否平滑(在本例中只有表示设备关节位置的theRadius和表示设备TCP位置的posRPYRadius两个数组是重要的,核心的)。点动的按钮都是会相互影响的,JOG关节会影响TCP位置,JOGTCP会影响关节位置。当然在直线模组中每个自由度是独立的,比如X的自由度只受J1电机控制(电机的角度算上丝杠导轨或者减速机,等比例的映射为多少mm,甚至可以测量得到简单结论)

J0:36CM=>72弧度

-45 弧度=>27    弧度

J1:40CM=>80弧度

-40 弧度=>40    弧度

因此可以简单认为每个模组每个关节1弧度运动量对应了X或者5mm的偏移(用弧度表示比较简洁,更多时候我们不关心电机的具体角度,只关心这个输出部分是多少)

 

要充分理解化归的思想,X和Y的点动本质上都是直线运动的一种,比如X+就是目标的Y不变,X给一个很大的值,然后执行直线运动。不管是JOG,还是回原点,还是弹出面板输入目标位置然后运动,本质都是同样的,只不过执行的目标位置和执行的流程有所区别。

 

虽然是直线插补,但是依然有很多讲究,比如启动过程可以直接按给定的速度,加速度进行孤立点位的计算(实际上就是等分直线段,每个PLC周期要求TCP到达孤立的直线段即可),还有一种方法是启动过程TCP的步子越来越大(想象人百米加速启动,也是越走越快,加速到指定速度之后再保持匀速)。再比如停止的时候还是可以分成多种情况讨论,再次只是简单演示了梯形加速和S形加速两种情况,停止的时候沿用了MOVEJ的关节停止,所以本质上末端TCP停止不再是保持直线,可以继续优化。

 

为了虚拟和真实模式的统一,在停止的时候也只采集虚拟的关节位置和关节速度(这两个虚拟的变量也可能是真实的,如果在真实模式下就从真实的驱动器获取)

 

由于是自定义的算法,我们无法从绝对运动模块中获取是否运动完毕,但是其实也可以自己写这样一个模块(执行的过程中不断判断是否当前位置和目标位置很接近,比如接近到一定范围之后就认为到位了),如果要在几个点来回运动,则必然需要等前面运动结束才能开始下一个运动。

最后虽然定义了MOVEJ和MOVEL运动方法,但是本质上绘制的轨迹却都是直线,因为关节和TCP是一个简单正比例关系(如果是串联纯转动结构的机器人,MOVEJ绘制的是空间不规则弧线,而MOVEL则保持TCP轨迹为直线)。MOVEJ由于不考虑求逆,所以大部分情况下可以获得比MOVEL更加平滑的轨迹和电机启停效果。

 

 

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

我的优酷空间:

http://i.youku.com/acetaohai123

 

我的在线论坛:

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

 

问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

 

 

 

倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 NC自定义直线插补的更多相关文章

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

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

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

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

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

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

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

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

  5. 倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 CS说明

    虚拟仿真上,要注意仿真只是为了可视化,可以看到数据的变动是否和实际一致,所以Robot2D才是主要因素,虚拟仿真采集机器人的关节位置或者TCP位置来显示而已,为了测试一些别的算法,我们还可以在虚拟仿真 ...

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

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

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

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

  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. Request 部分功能

    Request 六大功能: 1.获取客户端请求信息: getRequestURL方法 -- 返回客户端发出请求完整URL getRequestURI方法 -- 返回请求行中的资源名部分 getQuer ...

  2. Nodejs微信开发使用wechat-api回复多条消息

    在上一往篇文章<Nodejs微信开发>中,微信后台能够正常的接收到客户端的消息,并能够简单的回复一条消息至客户端. 但我的目录是将微信与Bot Framework进行关联,那么肯定就有一些 ...

  3. 巧用nth_element求容器前n%大小的那个数

    #include <algorithm> #include <vector> #include <iostream> #include <string> ...

  4. ng2-admin安装问题

    问题一 启动项目出现如下error: 原理: 暂不清晰, 目前认为是项目本身的问题. 项目作者在博文中给出了相应的解决方案. 具体解决方案: 如果之前装过angular-cli需要先卸载:npm un ...

  5. (17)python 网络编程

    TCP连接的断点是由一个IP地址和一个端口号来唯一标识的 客户端/服务器 客户端总是最开始申请连接的一端,服务器则是等待客户端连接的一段 服务器的端口号如果不是特殊用土的一般应该大于1024,客户端则 ...

  6. qt资源下载网站

    1. 所有Qt版本下载地址: http://download.qt.io/archive/qt/ 2. 所有Qt Creator下载地址: http://download.qt.io/archive/ ...

  7. CSU 1330 字符识别? 【找规律】

    你的任务是写一个程序进行字符识别.别担心,你只需要识别1, 2, 3,如下: .*.  ***  *** .*.  ..*  ..* .*.  ***  *** .*.  *..  ..* .*.  ...

  8. Jekins持续集成,gitlab代码仓库

    http://blog.csdn.net/john_cdy/article/details/7738393

  9. 模板—数学—Lucas

    模板—数学—Lucas Code: #include <cstdio> #include <algorithm> using namespace std; #define N ...

  10. NOI 1.5编程基础之循环控制 44:第n小的质数

    描述 输入一个正整数n,求第n小的质数. 输入 一个不超过10000的正整数n. 输出 第n小的质数. 样例输入 10 样例输出 29