原创: 姚小四  请关注公众号:手把手学习Halcon机器视觉

最近一段时间由于工作的忙碌,导致没有更新文章,在此非常抱歉默默支持小编的兄弟们!!下面,我将围绕机械手手眼标定和9点标定进行讲解,首先,机械手的标定分为两种,分别是手眼标定和9点标定,同时手眼标定中又分为固定相机标定和移动相机标定。

***9点标定:相机拍照获取9点(其实3点就行,但是点越多就越精确)的像素坐标,同时机械手末端去分别走这些点,获得机械坐标,两者结合成一个变换矩阵。其次是用户开始寻找自己感兴趣的区域,利用预处理、特征选择等手法处理,获得物体区域的坐标,和变换矩阵求出相对于机械手的位移量。如下所示:

在这里面,我们要重点把握该算子vector_to_hom_mat2d(),在采用其之前,需要进行排序,如果不进行排序,可能造成的结果是机械手出现碰撞可能。

其次,对感兴趣物体进行手法处理,本次我要处理的物体如下图中的圆垫片:

如上图中,机械手末端红色棍子所指向的垫片,由于是为了给兄弟们演示,装备比较简陋,最好能够采用精密的指针,这里如果是项目,对应的则是夹具。处理过程,如下:

在这里面,我们要掌握图像的处理过程,常用的是预处理,特征选择等,同时掌握affine_trans_point_2d()算子,求出Qx,Qy,这是物体相对于机械手的偏移量,我们通过串口通讯、网口通讯等方式将Qx,Qy发送到我们的机械手,机械手则会运动到该处。本次求出的Qx,Qy结果和实际验证如下:

通过通讯发送数据到机械手后,机械手运动完成后,示教器显示的位姿值如下,因为是XY面,所以只用看xy姿态。

本次所采用的是网口通讯,页面如下:

总结:

上述的9点标定项目,存在误差,因为我机械手的末端在走点的时候,并没有能够实现精确。

一、9点标定,只能用于空间上的平面,如xy面,xz面,yz面。

二、9点标定的时候,建议机械手末端采用相机去识别走点,或者采用激光,这样实现的效果精度会更佳。

三、相机拍照得出的点,为像素坐标;机械手末端去走对应的点,得到的是机械坐标,两者共同得出对应变换矩阵。

四、注意排序,否则结果会出现很大的误差,甚至会导致机械手出现碰撞危险的可能。

五、得到对象的变换矩阵之后,下一步就是求取用户感兴趣的区域。

处理方式:

1:采集图像

2:预处理

3:特征选择

4:求取物体的行列坐标

5:通过affine_trans_point_2d( )算子,根据矩阵和行列坐标得到基于机械手的偏移量

6:通过网口通讯、串口通讯等方式将求到偏移量发送给机械手,这时机械手就会运动过去。

六、拓展

预处理中常见的有均值滤波、中值滤波、高斯滤波、灰度变换等

特征选择中,可以选择方向为:灰度值、区域、XLD轮廓

七、本项目的说明:

验证1:查看程序中求到的Qx,Qy,通过串口或者网口等发送给机械手,发送过去之后,得到的的结果请查看验证1结果;

验证2:同理。

下一种方法是手眼标定,这种就不局限于平面,可以实现空间域。由于文章字数限制,在这里我就不详细说了,需要详细介绍的可以私聊!同样是很详细的讲解,对于想了解机器视觉/机械手视觉的朋友们有很大的帮助!

手眼标定的部分截图如下:

如果想了解,可以进行沟通,将结合实战图像进行学习,效果更佳,进步更大!

这里面,项目文件同时据介绍了网口通讯的相关资料!

-------------------------------------------------------------------------------------------------------------

一.机械手类型

关节机器人:3个关节,6个自由度,即3个旋转3个平移;

SCARA机器人:包括沿X,Y,Z方向的平移和绕U轴旋转的4个自由度,它有3个旋转关节,最适用于平面定位;

二.手眼标定方式

1.固定相机拍照

手眼标定做什么:

1.1【已知条件】摄像机坐标系下校正对象的位姿;可以通过校正图像获取;

1.2【已知条件】机器人坐标系下机器人工具的位姿;

1.3【未知条件】获取工业摄像机坐标系下为机器人坐标系的位姿;

1.4【未知条件】获取机器人工具坐标系下校正对象坐标系的位姿;

求出未知条件,再加已知条件,从而获取机器人坐标系下校正对象的位姿;要抓取一个物体,机器人坐标中的夹具位姿必须与机器人坐标中物体的位姿相同;

2.移动相机拍照

手眼标定做什么:

1.1【已知条件】摄像机坐标系下校正对象的位姿;可以通过校正图像获取;

1.2【已知条件】机器人坐标系下机器人工具的位姿;

1.3【未知条件】获取工业摄像机坐标系下机器人工具坐标系的位姿;

1.4【未知条件】获取机器人坐标系下校正对象坐标系的位姿;

求出未知条件,再加已知条件,从而获取机器人坐标系下校正对象的位姿;要抓取一个物体,机器人坐标中的夹具位姿必须与机器人坐标中物体的位姿相同;

有夹具和没有夹具区别:

--------------------------------------------------------------------------------------

完整的9点标定源码:

*   9点标定的详细介绍,首先先采集一个带“点”图像,获取这些点的像素坐标,点越多就越精确
*   获取点的坐标用就预处理、特征选择进行分割、排序
*   机械手末端移动,分别对应各点,记录各点所对应的示教器的值rot
*   机械手的值分别和对应的像素坐标形成矩阵,这个矩阵可以保存*   第1步      采集图像分割点后排序
*关闭窗口,打开窗口
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*采集图像
read_image (Image, 'C:/Users/yaofeng/Desktop/Halcon实现9点标定讲解/初始拍照标定板.jpg')
*预处理(二值化)
threshold (Image, Regions, 0, 26)
*断开连通域
connection (Regions, ConnectedRegions)
*特征选择
select_shape (ConnectedRegions, SelectedRegions, ['area','column','row'], 'and', [0,524.12,695.41], [78849.7,1173.47,1095.41])
*排序
sort_region (SelectedRegions, SortedRegions, 'character', 'true', 'row')
dev_set_color ('red')
dev_display (Image)
dev_display (SortedRegions)
*求到对应的各点的像素坐标
area_center (SortedRegions, Area, Row, Column)
*从示教器上面去读取对应的位姿值
rot_x:=[1147.79,1147.10,1146.49,1122.49,1122.49,1121.79,1098.27,1096.99,1095.65]
rot_y:=[-51.41,-76.88,-103.66,-50.25,-77.01,-101.17,-50.04,-76.16,-101.61]
*像素坐标和姿态构成矩阵
vector_to_hom_mat2d (Row, Column, rot_x, rot_y,HomMat2D)
write_tuple (HomMat2D, 'C:/Users/yaofeng/Desktop/Halcon实现9点标定讲解/HomMat2D')
*    第2步       获取感兴趣物体的坐标,与矩阵构成偏移量dev_clear_window ()
dev_set_colored (12)
*验证 1
*采集图像
read_image (Image1, 'C:/Users/yaofeng/Desktop/Halcon实现9点标定讲解/验证图像1.jpg')
*二值化
threshold (Image1, Regions1, 0, 22)
*断开连通域
connection (Regions1, ConnectedRegions1)
*验证的点为右下角的的一个点
select_shape (ConnectedRegions1, SelectedRegions1, ['area','row','column'], 'and', [0,1436.7,830.28], [527523,1568.81,1050.46])
dev_display (Image1)
dev_display (SelectedRegions1)
*求物体坐标的行列坐标
area_center (SelectedRegions1, Area1, Row1, Column1)
*通过刚才的矩阵和物体行列坐标,求得这个Qx,Qy偏移量,然后发送给机械手
affine_trans_point_2d (HomMat2D, Row1,Column1, Qx, Qy)*验证2
dev_clear_window ()
*验证 1
*采集图像
read_image (Image2, 'C:/Users/yaofeng/Desktop/Halcon实现9点标定讲解/验证图像2.jpg')
*二值化
threshold (Image2, Regions2, 0, 26)
*断开连通域
connection (Regions2, ConnectedRegions2)
*特征选择进行分割
select_shape (ConnectedRegions2, SelectedRegions2, ['area','row','column'], 'and', [0,873.84,756.88], [97402.6,962.89,903.67])
*这里不知道为啥,来出现个误差,就是出现两个点,所以我把其联合了
union1 (SelectedRegions2, RegionUnion)
*填充
fill_up (RegionUnion, RegionFillUp)
dev_display (Image2)
dev_display (RegionFillUp)
*求行列坐标
area_center (RegionFillUp, Area2, Row2, Column2)
**通过刚才的矩阵和物体行列坐标,求得这个Qx1,Qy1偏移量,然后发送给机械手
affine_trans_point_2d (HomMat2D,  Row2,Column2, Qx1, Qy1)

---

尊重作者版权,原创: 姚小四  请关注公众号:手把手学习Halcon机器视觉

Halcon标定系列(1):实现机械手手眼标定项目介绍、9点标定相关推荐

  1. UR机器人装箱姿态_UR10 RG2机械臂手臂+RealsenseZR300 机器人手眼标定 系列第四篇

    UR10 RG2机械臂手臂+RealsenseZR300 机器人手眼标定 系列第四篇 发布时间:2018-09-18 17:43, 浏览次数:1180 , 标签: UR RG RealsenseZR ...

  2. 标定系列一、手眼标定基础介绍

    一.手眼标定的用途 在实际的自动化工业生产中,我们常需要机械手和相机配合实现物料定位.摆正等操作过程,手眼标定的目标就是实现相机坐标系和机械手坐标系的空间映射,通俗的讲相机相当于眼睛,机械手相当于手, ...

  3. 标定板标定和九点标定的区别_标定系列一 | 机器人手眼标定的基础理论分析

    旷视MegMaster机器人系列是旷视自主研发的一系列AI智能机器人硬件设备,基于旷视全球领先的人工智能算法及机器人技术,可实现搬运.分拣.托举.存储等功能,被广泛应用于物流仓储.工厂制造等场景.旷视 ...

  4. matlab tsai手眼标定程序代码_标定系列一 | 机器人手眼标定的基础理论分析

    旷视MegMaster机器人系列是旷视自主研发的一系列AI智能机器人硬件设备,基于旷视全球领先的人工智能算法及机器人技术,可实现搬运.分拣.托举.存储等功能,被广泛应用于物流仓储.工厂制造等场景.旷视 ...

  5. scare机器人如何手眼标定_标定系列一 | 机器人手眼标定的基础理论分析

    旷视MegMaster机器人系列是旷视自主研发的一系列AI智能机器人硬件设备,基于旷视全球领先的人工智能算法及机器人技术,可实现搬运.分拣.托举.存储等功能,被广泛应用于物流仓储.工厂制造等场景.旷视 ...

  6. 工业现场相机坐标系和机械手坐标系的标定(1)-相机和机械手分离的情况

    工业现场使用视觉时一般需要相机坐标系和机械手臂坐标系的转化,这里介绍一种比较简单的标定方案.没有使用到标定板.经过几个项目的测试,精度还算可以,如果要求高精度的场合,就用标定板标定吧![可以购买专用的 ...

  7. 标定系列二、9点标定以及5点圆心标定过程(代码详解)

    一.九点标定过程 1.算法原理 9点标定就是通过9个点计算出相机坐标系到机械手坐标系下的一个仿射变换,(实际上空间中的二维平面的仿射变换只需要3个点就足够了).在实际应用过程中,需要获取像素下特征点的 ...

  8. opencv 通过标定摄像头测量物体大小_视觉激光雷达信息融合与联合标定

    点击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 编者按 最近在为车辆添加障碍物检测模块,障碍物检测可以使用激光雷达 ...

  9. 汽车标定工具ETAS总线模块ES582.1详情介绍

    汽车标定工具ETAS总线模块ES582.1详情介绍 ETAS ES582.1 CAN FD总线接口USB模块(F-00K-110-731 ) 是 ETAS ES581.4 (F-00K-107-770 ...

  10. 结构光系统标定(三)基于多项式拟合的结构光系统标定

    结构光系统标定的方法实际上还挺多的,我只讨论分析我读过且实现过的两种,两种方法都比较经典.应用较多.速度较快且操作简便的.这篇文章会讨论第一种,基于多项式拟合的结构光系统标定.当然这名字是我自己给它取 ...

最新文章

  1. 春意袭人,春装网店大比拼!
  2. 项目中用到的三个绿色自动备份方法
  3. XP系统,无法创建新的网络连接
  4. python construct_Python construct包_程序模块 - PyPI - Python中文网
  5. Java Selenium起步
  6. java scanner以回车结束_请问Scanner在输入回车后,如何才能退出?
  7. MagicMongoDBTool数据管理工具使用介绍
  8. CUDA Texture Memory
  9. DeepStream参数配置之sink
  10. 程序员必备简捷开发辅助工具总结
  11. 优化器,sgd,adam等
  12. 基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址
  13. 软考顺口溜汇总(包括监理活动“四控、三管、一协调”等)
  14. 思岚S2激光雷达2—SDK和实例程序的编译
  15. web中常见的敏感信息
  16. lv官网编码查询_成都市居住证编号查询系统
  17. RabbitMQ学习笔记:消息优先级(priority)
  18. 用40年前的电脑打开《花花公子》封面女郎图片,这可能吗?
  19. 51单片机驱动红外编解码模块(YS-IRTM)
  20. python教程40-财务自动生成财务报表

热门文章

  1. 这是我的计算机房英语怎么写,小学英语人教(12版三起点)四年级下册Unit 1
  2. 大学生mysql实训心得_大学生实训心得与收获
  3. PlaySound详解
  4. Python playsound 播放MP3
  5. Qt-设置completer下拉框样式
  6. 自媒体时代,人人可做的自媒体(附自媒体教程,少走弯路)
  7. pc模式 华为mate30_华为Mate30手机怎么投屏到电脑上呢
  8. 论文写作流程图软件_[转载][强烈推荐]论文写作四助手(四个论文写作软件)...
  9. Python数据可视化三部曲之 Pyecharts 从上手到上头
  10. android自动点击相应位置脚本,轻易连使用说明-自动连点器-安卓自动点击脚本 | MOS86...