在TurboC中,可以使用各种现成的函数绘制各种各样有趣漂亮的图形,而在VC中则比较难以实现。但是,我们可以用“*”当作点,连点成线,用来绘制各种线条或者图形。这就得看算法了,所谓算法就是解决问题的方法。这里呢,我们就一起来看看,在Visual C++6.0中,如何利用“*”绘制一个空心圆。大家有什么好的建议或者意见,都可以在我的评论栏里给我留言,希望我们相互学习,共同进步。第一步:建立坐标系根据上一次绘制余弦曲线的经验,我们可以把横轴(行方向)设为X坐标,纵轴(列方向)设为Y坐标。利用圆的公式
三点确定一个圆的计算方法最近在写的一个软件需要根据三个坐标点来计算一个圆。因此花了点时间推导了相关的公式。这个推导不算太难,放在这里主要是做个备忘。我们设一个圆的圆心坐标为 ,半径为 r 。那么这个圆的方程可以写为:在这个圆上随便取三个点,设这三个点的坐标分别是 那么有:公式(1)(2)相减,(1)(3)相减之后经过化简可以得到:有唯一解的条件是系数行列式不为 0 :简单变变型也就是:这样写几何含义就很明显了,三点不能共线。设:那么 :有了 x 0 和 y 0 的值后,带入(1) 式就可以得到
1. 三点绘制圆 已知三点为(x1,y1)、(x2,y2),(x3,y3),求三点形成的圆的坐标,可以设求得的圆的原点为(X,Y),半径为R,这样可以得到方程组: (x1-X)²-(y1-Y)²=R² (1)式 (x2-X)²-(y2-Y)²=R² (2)式 (x3-X)²-(y3-Y)²=R² (3)式
运行程序前先创建ROI以创建模板,然后顺时针或者逆时针绘制三根直线,以确定找线的方向与距离。由于找线的时候是模板跟随的,最后得到下面的结果:代码如下:其中draw_rake,dev_display_shape_matching_result,rake,pts_to_best_line为外部算子。有需要的朋友可以找勇哥索取。dev_close_window ( )
read_image (Image, 'C:/Users/Administrator
halcon17的找线功能其实是对之前halcon10版本找线方法的封装。勇哥下面这几篇文章介绍了halcon10版本的找线方法,你会发现,halcon17的找线算子的参数其实跟这篇文章介绍的差不多的。Halcon学习(27-2)halcon测量技术:找线带ROI跟随的找边测试代码(halcon代码演示)经过封装后的找线算子,还是非常好用的,你只需要给定找线的起始与终止点即可。演示代码如下:read_image (Image, 'G:/pic2/8.bmp')
勇哥写的演示框架如下图所示。通过run main1, run main2 这样的指令可以启动不同的main程序。因此可以在触摸屏上可以用按钮启动不同的机器人程序。我们知道启动“远程以太网”模式后,在运行窗口中就不能再选择启动自定义的函数了。但是我们可以像main2函数中那样,启动一个线程,来监听#201端口,然后处理传入的字符串进行case分支处理。这种方式就实现了两种模式可以兼得。相当于plc可以用远程以太网控制机器人,我们上位机这边则通过事先在机器人内部写好代码,通过#201端口
接上篇。本篇讨论下面的话题:二是绕着特征点旋转,验证特征点的像素偏差,或者是转换后的机械坐标的偏差。三是做放料测试,验证实际的放料精度下面是采用特殊算法标定成功后的数据。后面主要谈谈怎么用旋转特征点的方式验证标定后的精度。因为手眼标定是把视觉像素换算成机器人的机械坐标,而本算法的原理是:把工具坐标1做到特征点上,然后走4组位置,记录4组像素与机械坐标,最后调用halcon的标定函数。因此对于这种标定方式来说,验证工具坐标1是否可靠就是关键地。而验证方法就是围绕特征点进行旋转,理论上来说围绕工具坐
所谓的精度是指验证标定后工具1坐标系下的特征点,转为机械坐标系后再与机器人的坐标进行差值比较,越小越好。验证精度我们可以从三方面入手:一是验证特征点在视野最大范围内变换位置,考虑相机畸变因素影响下对精度的影响二是绕着特征点旋转,验证特征点的像素偏差,或者是转换后的机械坐标的偏差。三是做放料测试,验证实际的带料取放料精度。勇哥在本篇先讨论第一种方法。下面是标定后的特征点的信息标定特征点信息 像素x:1051.772 像素y:1424.155 机械x: 371.424923596072 机械y: -
angle_lx( : : Row1, Column1, Row2, Column2 : Angle) 函数作用:计算线与水平轴间的夹角逆时针旋转向量到水平轴的角度即为结果值,该结果取决于两个点的顺序,用弧度表示,范围为[-pi, pi]上一段代码:ange_lx(Row_1, Col_1, Row_2, Col_2, Angle)
************************************************
手眼标定之9点法2019-07-23 20:10:40
写在前面由于涉及到公司的一些内容,本文仅做方法和思路记录,请见谅。用途9点法标定是工业上使用广泛的二维手眼标定,所谓二维,即工作平面限制在一个平面上,常用于从固定平面抓取对象进行装配等操作,这种应用场景可以满足大多数的工业应用场景。使用过程和一般的手眼标定一样的是,9点法标定也分eye_in_hand和eye_to_hand两种,标定的结果分别是相机坐标系与工具坐标系的转换矩阵(4*4),以及相机坐标系和工件坐标系的转换矩阵。以下以eye_in_hand为例:机器人手持相机在平行于工作平面的平面