2019-11-26 08:44:54
参考代码:https://github.com/christianwengert/calib_toolbox_addon所谓手眼系统,就是人眼睛看到一个东西的时候要让手去抓取,就需要大脑知道眼睛和手的坐标关系。如果把大脑比作B,把眼睛比作A,把手比作C,如果A和B的关系知道,B和C的关系知道,那么C和A的关系就知道了,也就是手和眼的坐标关系也就知道了。相机知道的是像素坐标,机械手是空间坐标系,所以...
2019-11-25 15:25:55
勇哥的同事反映,设备的机器人在低速运动的时候,取放重复性精度可以做到+-0.2mm。但是在高速运行的时候,精度只能做到+-0.8mm。这又是什么鬼呢?我问了一圈公司的高手,他们的意见是:(1)机器人的惯性与重量要设置(2)机器人的acc加速度参数要设置,让起停速度更圓滑些(3)观察机器本身的晃动、相机的晃动、机器爪的晃动,看是否有影响(4)机器人取放之前的暂停时间是有必要的精度要求不高的时候,机器...
2019-11-23 13:25:17
这一次勇哥使用Epson机器人的标定来进行验证标定后的精度。首先按下图做九点标定。注意对于Epson机器人自己的标定指令来说,它认下面的顺序,不要乱搞。一般流程是:(1)你打印一张九点标志的纸,尽量能铺满视野范围。(2)在吸盘下装一个铅笔一样的针尖,去扎九个点的十字中心经过上面的步骤,你就能获得九组像素坐标与机器人坐标。但勇哥这台机器是背光的,这样搞不了。所以我只能先工具坐标标到标准片的Mark点...
2019-11-23 11:28:12
EPSON简单视觉编程需要设备1.EPSON机械手一台。2.工业相机一个。3.通讯设备。以固定向下相机为例1.首先准备一个类似针尖工具,装到法兰盘上。2.准备一张九个MARK点,尽可能遍布整个拍照区域。3.建立一个camera_down_camera.pts点文件。将示教好的mark点和视觉像素点分别写入P1-P9 P11-P19中。4.新建一个cal.prg程序。5.编辑cal.prg程序。Fu...
2019-11-22 16:42:40
Epson机器人同第三方相机校准方法基本思路:1. 相机通过以太网RS232同机器人通信2. 按机器人校正指令的要求获取、分离相机发送过来的信息3. 使用校准指令准备工具:1. 制作9宫图2. 制作机器人工件坐标的校准工具(类似铅笔,装在Z轴或者抓手上)一. 机器人与相机通过以太网通信(tcp/ip)1. 制作如下9宫图,该图的大小尽量占满相机的视野范围,但是不能太靠近边界,可用打印机打印,为获得...
2019-11-22 13:16:33
目的:将第三方相机的视野坐标与EPSON机器人的坐标进行校准,建立转换关系基本思路:1. 相机通过以太网或RS232同机器人通信,按机器人校正指令的要求获取、分离相机发送过来的信息2. 按照校准步骤,记录机械手校准点的机器人坐标和视觉像素坐标3. 使用校准指令,建立机械手和视觉的坐标转换关系视觉工作时,将检测到的工件的坐标发给机器人,机器人根据坐标转换关系,转换为机器人坐标后再去做抓取、装配...
2019-11-21 22:05:10
在平面直角坐标系中,怎么确定唯一的一条直线?答案是:直线上的一个定点以及它的倾斜角,二者缺一不可。坡度(图1)生活中使用用“升高量与前进量的比”表示倾斜面的“坡度”,即:坡度(比)=升高量/前进量例如,“进3升3”,“进2升2”,指的坡度比为分别为: 3/2, 2/2,前者改陡一些。斜率如图1,坡度比实际上就是tan(a),即倾斜角的正切。我们把一条直线的倾斜角a的正切值叫这条直线的斜率(slo...
2019-11-21 20:18:59
直接写出加法定理:可见,sin(a+b)并不简单等于sina+sinb。之前说过,在三角函数中我们只需要掌握6个公式(其它的做到可以推理出来),加上这两个,就齐全了。而tan的加法定理可以通过tanθ=sinθ/cosθ推导出来。tan(a+β)= sin(a+β)/cos(a+β) =(sinacosβ+cosasinβ)/(cosacosβ-sinasinβ)这个等式右边也用tan来表...
2019-11-21 18:35:43
接上一篇《Epson机器人标定后验证标定的精度(五)》接下来,验证一下取放重复性测试和全视野取放重复性测试。重复性测试我就不解释了。全视野取放重复性测试是指同样的料分别从视野的上,中,下进料(见图1),这个测试对于一键换型视觉很重要。因为人家换了个品种后,可能原来从上路进的料,变成从下路进料,这时候你的结果是否相差很大呢?(图1)下面的数据是按上面方式进料进行的取放重复性精度测试。上,中,下位置分...
2019-11-21 15:19:54
接上一篇《Epson机器人标定后验证标定的精度(四)》我们继续做实验,开始人工创建工具坐标。(图1 ct1点起始位置做为第一点)注意看箭头处的红圈,它始终都指示着像素x:1088.8 y:907.67的位置。等一会我们转180度后,就靠这个固定的红圈位置做指示。创建一个转180度后的示教点,角度88.929+180=268.929(图2)然后走到这个点位。(图3)走到z180点后,角度是正确的,...
2019-11-21 13:23:18
接上一篇《Epson机器人标定后验证标定的精度(三)》我们继续做实验。这一次我们不用现有的示教点做tool0到tool1的转换对比,而采用指定一个点(目标像素点),转为机械坐标后再运动过去,再对比特征点的位置。标定特征点信息 像素x:690.251 像素y:458.546 机械x:278.650031470315 机械y:-13.713127158548
要移动到点的位置(红点处)为:685,4...
2019-11-21 10:06:20
我们定义四个移动点(九点标定简化只用4个),3个旋转点,一个测试点(图1)标定的log信息:09:31:45 机器人连接成功
09:31:45 等待机器人前往标定点1......
09:32:00 模板位置:0, X:434.266, Y:546.689, U:-0.001
09:32:01 机器人到达标定点1,当前像素坐标为:457.752;443.519机械坐标为:3.7...
2019-11-20 21:00:16
Local坐标的使用爱普生机器人local坐标系使用,主要用于拍照MARK点坐标,根据MARK点的本地坐标,自动计算所有工作点在机器人坐标系下的坐标点,引导机器人定位、装配等工艺。Local坐标又叫本地坐标,或者工作坐标。适用于工作点较多而且点相互之间有明确的几何关系。例如PCB(一般有特定的参考点、有相对于参考点的工作点位置)或者数控加工零件。Local指令Local可以指定一个Local坐标,...
2019-11-20 20:44:23
机器人的坐标系,你知道多少 ?真的会使用坐标系吗?下面我来带你来剖析机器人的坐标系吧!(以ABB机器人举例说明)1. 基坐标系基坐标系是以机器人安装基座为基准、用来描述机器人本体运动的直角坐标系。任何机器人都离不开基坐标系,也是机器人TCP在三维空间运动空间所必须的基本坐标系(面对机器人前后:X轴 ,左右:Y轴, 上下:Z轴)。坐标系遵守右手准则:2. 大地坐标系大地坐标系:大地坐标系是以大地作为...
2019-11-20 17:45:00
工具坐标系 点数据是由直角坐标系为基准的工具(Tool)坐标系中心位置及姿势所表示的。
位置用位置数据(X、Y、Z),姿势用姿势数据(U、V、W)指定。 除了机器人固有的 Tool 0 坐标系外,用户可自定义 1~15 共 15 个 Tool 坐标系。 机器人默认的 Tool 0 坐标系根据机器人类型分别如下定义。 水平多关节机器人(4 轴机器人)的 Tool 0 坐标系的定义 第 4 轴(旋转...
2019-11-20 11:25:16
序 这是继《开始接触 async/await 异步编程》、《走进异步编程的世界 - 剖析异步方法》后的第三篇。主要介绍在 WinForm 中如何执行异步操作。 目录在 WinForm 中执行异步操作在 WinForm 中使用异步 Lambda 表达式一个完整的 WinForm 程序另一种异步方式 - BackgroundWorker 类 一、在 WinForm 程序中执行异步操作 下面通过窗...
2019-11-20 11:16:38
序 感谢大家的支持,这是昨天发布《走进异步编程的世界 - 剖析异步方法(上)》的补充篇。 目录异常处理在调用方法中同步等待任务在异步方法中异步等待任务Task.Delay() 暂停执行 一、异常处理 await 表达式也可以使用 try...catch...finally 结构。internal class Program
{
private static voi...
2019-11-20 09:57:24
序 这是上篇《走进异步编程的世界 - 开始接触 async/await 异步编程》(入门)的第二章内容,主要是与大家共同深入探讨下异步方法。 本文要求了解委托的使用。 目录介绍异步方法控制流await 表达式How 取消异步操作 介绍异步方法 异步方法:在执行完成前立即返回调用方法,在调用方法继续执行的过程中完成任务。 语法分析: (1)关键字:方法头使用 async...
2019-11-20 08:28:27
序 这是学习异步编程的入门篇。 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $"" 来拼接字符串,相当于string.Format() 方法。 目录What's 异步?async/await 结构What’s 异步方法? 一、What's 异步? 启动程序时,系统会在内存中创建一个新的进程。进...
2019-11-19 21:34:56
学到这里,其实我们已经拥有一部分图形学基础知识了,这一篇我们来做一个好玩的计算,就是计算π。我们知道π叫圆周率,其定义就是圆的周长和圆的直径的比值,为什么要给出π(圆周率)这种定义呢?实际上是因为圆在日常生活中应用比较广泛,比如车轮是圆的,汽车的里程数,计算轮胎转动的圈数乘轮胎的圆周长就得到了,那么我们怎么计算轮胎的圆周长呢,轮胎的直径很好测量,随便拿个尺就能量出来了(当然轮胎的周长也好测量,把轮...
2019-11-19 20:58:14
这一篇我们来看一下直线和平面在计算机中的数学表示,因为我们程序中不可能用笔和纸去画一个直线或者平面,我们只能通过函数或者向量组合表示这些抽象的概念,这样才能带入并实现具体的功能。首先来看一下二维xy坐标轴下直线的表示,如下图:一个二元一次方程就能表示直线在坐标系中所有坐标点的集合了,可以看作a*x+b*y+c = 0。接下来的问题是如何表示一个空间xyz坐标系中的直线,如果平面坐标系中直线是a*x...
2019-11-19 20:53:10
之前我们学习了物理意义上的做功,也就是数学中向量点积的实际意义,这一篇我们学习物理上另外一种力的作用,也就是力矩。物理上定义力矩是力对物体产生转动作用的物理量,这里我们想象一下现实中的力矩现象,比如陀螺,老式摇动柴油发动机,打隧道用的隧道机械都有力矩在其中。这里我们看一下老式柴油发动机的摇把,如下图:手对摇把产生OA的半径圆的切线方面力F摇动,那么会产生一种沿着Z轴的力矩L,物理上把求力矩L定义为...
2019-11-19 20:49:21
上一篇讲了向量的加减分配等计算,那么紧接着就是应该来讲乘除了吧,我们知道普通数值都有加减乘除开方等等计算,比如:10x10 = 100 10÷10 = 1那么向量AxB = ? A÷B = ? 我们知道向量其实是多个数值分量组成的一个集合,那么向量相乘又怎么处理呢?是分量相乘再相加,还是分量相加再相乘?然后就算给一个向量相乘的规范,那有什么意义呢?能解决什么实际问题?这里我们从物理上来考虑向量...
2019-11-19 20:44:28
前面写完三角函数分类博客,我们具备了基础的三角函数推导能力和知识,接下来就要讲向量与几何方面了。但凡买一本讲解向量的书,一开始莫不是讲解笛卡尔的城市建设所采用的坐标系概念,因为几何的英文geometry就有“地理测量”的意思,据说几何学本来就是为了测量大地的。1.下面我们来一些基础的定义:ps:“定义”这个词语以后会经常出现,我们都是一些“叛逆”的小青年,就是反感“定义”、“规定”等词语,这些词语...
2019-11-19 19:31:43
如下图,我们把角度看作是扇形的圆心角来思考,如何用长度来度量角度。圆心角的大小与其所对应的弧度成正比,所以可以用弧长来表示角度。在图8-10-1中,θ1:θ2=L1:L2,如果L2是K1的2倍,则圆心角θ2也是圆心角θ1的2倍。也就是说,角度比等于弧长比。但是,弧长本身是随扇形大小即半径不同而产生差异。这样,圆心角的度数就可以用弧长和半径的比例来表示。如图8-10-2,同一圆心角的两个扇形互为相似...
2019-11-19 19:27:48
如今的软件市场,竞争已经进入白热化阶段,功能强、运算快、界面友好、Bug少、价格低都已经成为了必备条件。这还不算完,随着计算机的多媒体功能越来越强,软件的界面是否色彩亮丽、是否能通过动画、3D等效果是否吸引用户的眼球也已经成为衡量软件的标准。软件项目成功的三个要素是:资源、成本、时间。无论是为了在竞争中保持不败还是为了激发起用户对软件的兴趣,提高软件界面的美化程度、恰当的将动画和3D等效果引入应用...
2019-11-19 19:25:39
图形用户界面应用程序较之控制台界面应用程序最大的好处就是界面友好、数据显示直观。CUI程序中数据只能以文本的形式线性显示,GUI程序则允许数据以文本、列表、图形等多种形式立体显示。用户体验在GUI程序设计中起着举足轻重的作用-----用户界面设计成什么样看上去才足够的漂亮?控件如何安排才简单易用并且少犯错误?这些都是设计师需要考虑的问题。WPF系统不但支持传统的Winfrom编程的用户界面和用户体...
2019-11-19 16:23:38
我们把有用的东西称为资源。“兵马未动,粮草先行”-----程序中的各种数据就是算法的原料和粮草。程序中可以存放数据的地方有很多,可以放在数据库里、可以存储在变量里。介于数据库存储和变量存储之间,我们还可以把数据存储在程序主体之外的文件里。外部文件与程序主体分离,这就有可能丢失或者损坏,编译器允许我们把外部文件编译进程序主体、称为程序主体不可分割的一部分。这就是传统意义上的程序资源(也称为二进制资源...
2019-11-19 14:14:25
WPF为我们准备了完善的命令系统,你可能会问:“有了路由事件为什么还需要命令系统呢?”。事件的作用是发布、传播一些消息,消息传达到了接收者,事件的指令也就算完成了,至于如何响应事件送来的消息事件并不做任何限制,每个接收者可已用自己的行为来响应事件。也就是说,事件不具有约束力。命令和事件的区别就在于命令具有约束力。的确,在实际编程工作中,即使只用事件不用命令程序的逻辑一样被驱动的很好,但我们不能够阻...
2019-11-19 13:51:01
就像属性系统在WPF中得到了升级、进化为依赖属性一样,事件系统在WPF也得到了升级-----进化成为了路由事件(Routed Event),并在其基础上衍生出命令传递机制。这些机制在很大程度上减少了对程序员的束缚,让程序的设计和实现更加的灵活,模块之间的耦合度也进一步降低,这一章我们一起来领略一下新消息机制的风采。8.1 近观WPF的树形结构路由一词的意思大概是这样:起点...