开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8207|回复: 11
收起左侧

[技术专题] Opencv 机械臂 手眼标定(九点标定法)

[复制链接]
结帖率:89% (79/89)
发表于 2022-11-18 14:00:23 | 显示全部楼层 |阅读模式   江苏省苏州市
本帖最后由 z13228604287 于 2022-11-18 19:19 编辑

QQ图片20221118135556.png QQ图片20221118135734.png QQ图片20221118135955.png


  
窗口程序集名保 留  保 留备 注
九点标定  一般标定前,先进行畸变校正
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
输入图像多维矩阵类 
内侧多维矩阵类 
标定板图坐标点2f类09个圆中心的坐标
机械臂坐标点2f类9标定板9个圆中心的坐标想对应9个机械臂坐标
映射矩阵多维矩阵类 
A双精度小数型 
B双精度小数型 
C双精度小数型 
D双精度小数型 
E双精度小数型 
F双精度小数型 
i整数型 
计算机械坐标点2f类 
视觉_创建窗口 (“小白鼠”, #窗口_标准 )
' 1 首先我们需要准备一块,标定板。如果条件不足,可以使用白纸画上九个圆进行代替
输入图像 = 视觉_图像解码 ( #标定板图1, #读图_彩色 )
如果真 (输入图像. ())
视觉_控制台输出 (“请先加载图片!”, )
视觉_控制台命令 (“pause”)
返回 (-1)
' 2 相机位置,机械手位置全部固定好,标定针固定在机械手上,固定好后不能够再移动。标定针的位置一定要与夹手或吸盘之内的工具同一位置高度。
' 3 将标定板放到相机下方,位置区域要与机械手工作的区域一样,包括高度必须尽量一致,这是标定准确度的关键。
' 4 调整好相机焦距,拍照,然后识别9个圆圆心的坐标并进行记录。
获取标定板坐标 (输入图像, 标定板图坐标, 20, 300)
如果真 (取数组成员数 (标定板图坐标) = 0)
视觉_控制台输出 (“图像点位检测失败!”, )
视觉_控制台命令 (“pause”)
返回 (-1)
' 5 将机械手依次移动到9个圆的圆心位置,记下机械手坐标
' 这里输入  机械臂  相对与  标定板圆心位置的对应 坐标
机械臂坐标 [1].初始化 (1007, 729)
机械臂坐标 [2].初始化 (1301, 729)
机械臂坐标 [3].初始化 (1595, 729)
机械臂坐标 [4].初始化 (1007, 1023)
机械臂坐标 [5].初始化 (1301, 1022)
机械臂坐标 [6].初始化 (1596, 1022)
机械臂坐标 [7].初始化 (1006, 1317)
机械臂坐标 [8].初始化 (1301, 1317)
机械臂坐标 [9].初始化 (1596, 1316)
' 做完以上五步,我们会得到两个点集。一个为9个圆圆心坐标(标定板图坐标),一个为9个圆心对应的机械手坐标(机械臂坐标)。
映射矩阵 = 视觉_计算仿射变换2D (标定板图坐标, 机械臂坐标, 内侧, 8, 3, 2000, 0.99, 10)
视觉_控制台输出 (“内侧:\n%mat\n”, 内侧)
如果真 (映射矩阵. ())
' 得出来的6个 双精度小数型的参数,就是我们此次标定最终得到的标定参数了。
A = 映射矩阵.取元素 (0, 0)
B = 映射矩阵.取元素 (0, 1)
C = 映射矩阵.取元素 (0, 2)
D = 映射矩阵.取元素 (1, 0)
E = 映射矩阵.取元素 (1, 1)
F = 映射矩阵.取元素 (1, 2)
视觉_控制台输出 (“\n参: A:%D  B:%D\nC:%D  D:%D\nE:%D  F:%D\n\n”, A, B, C, D, E, F)
' 后面我们把检测得到的图像坐标(x1,y1)代入,就可以得到与之相对应的机械手坐标(x2,y2)
' x2= (A * x1) + B * y1 + C)
' y2= (D * x1) + E * y1+ F)
计次循环首 (取数组成员数 (标定板图坐标), i)
计算机械坐标.左边 = A × 标定板图坐标 [i].左边 + B × 标定板图坐标 [i].顶边 + C
计算机械坐标.顶边 = D × 标定板图坐标 [i].左边 + E × 标定板图坐标 [i].顶边 + F
视觉_控制台输出 (“返回的机械臂坐标: %point2f\n”, 计算机械坐标)
计次循环尾 ()

视觉_显示图像 (“小白鼠”, 输入图像)
视觉_等待按键 (0)
返回 (0)  ' 可以根据您的需要返回任意数值
子程序名返回值类型公开备 注
获取标定板坐标  
参数名类 型参考可空数组备 注
标定板图多维矩阵类
标定板图坐标点2f类
最小半径双精度小数型
最大半径双精度小数型
变量名类 型静态数组备 注
灰度图多维矩阵类 
二值化多维矩阵类 
轮廓集点2i二维数组类 
i整数型 
矩形矩形2i类 
面积双精度小数型 
圆心点2f类 
半径小数型 
轮廓整数型 
计数整数型 
视觉_颜色空间转换 (标定板图, 灰度图, #颜色_BGR转GRAY, 0)
视觉_高斯滤波 (灰度图, 灰度图, 尺寸2i (3, 3), 0, 0, 4)
视觉_阈值 (灰度图, 二值化, 0, 255, 位或 ( #阈值_二进制, #阈值_大津 ))
视觉_查找轮廓 (二值化, 轮廓集, , #检测_树, #逼近_连续, )  ' 查找轮廓
计次循环首 (轮廓集.尺寸 (), i)
矩形 = 视觉_最大轮廓矩形V (轮廓集, i)  ' //查找每个轮廓的外接矩形
面积 = 视觉_轮廓面积V (轮廓集, i, )
视觉_最小包围圆形V (轮廓集, i, 圆心, 半径)
如果真 (矩形.宽度 > 最小半径 × 2 矩形.宽度 > 最小半径 × 2 矩形.宽度 < 最大半径 × 2 矩形.宽度 < 最大半径 × 2 矩形.宽度 × 1 ÷ 矩形.宽度 ≥ 0.8 矩形.宽度 × 1 ÷ 矩形.宽度 ≤ 1.2 面积 ÷ (3.1415926 × 半径 × 半径) > 0.9)
视觉_圆f (标定板图, 圆心, 半径, 标量 (0, 255, 0), 5, 8, 0)
视觉_圆f (标定板图, 圆心, 3, 标量 (0, 255, 255), -1, 8, 0)
加入成员 (标定板图坐标, 圆心)

计次循环尾 ()
点位排序 (标定板图坐标, 1, 取数组成员数 (标定板图坐标))
计次循环首 (取数组成员数 (标定板图坐标), i)
视觉_放置文本f (标定板图, “C”到文本 (i), 标定板图坐标 [i], 0, 3.5, 标量 (255, 0, 255), 6, 8, )
计次循环尾 ()
子程序名返回值类型公开备 注
点位排序 来源于 https://bbs.125.la/forum.php?mod ... F%E6%8E%92%E5%BA%8F
参数名类 型参考可空数组备 注
标定板图坐标点2f类
起始整数型
数组长度整数型
变量名类 型静态数组备 注
i整数型 
j整数型 
tmp点2f类 
i = 起始
j = 数组长度
tmp = 标定板图坐标 [起始]
判断循环首 (i < j)
判断循环首 (i < j 位置换算 (标定板图坐标 [j])位置换算 (tmp))
j = j - 1
判断循环尾 ()
标定板图坐标 [i] = 标定板图坐标 [j]
判断循环首 (i < j 位置换算 (标定板图坐标 [i])位置换算 (tmp))
i = i + 1
判断循环尾 ()
标定板图坐标 [j] = 标定板图坐标 [i]
判断循环尾 ()
标定板图坐标 [i] = tmp
如果真 (起始 < i - 1)
点位排序 (标定板图坐标, 起始, i - 1)
如果真 (i + 1 < 数组长度)
点位排序 (标定板图坐标, i + 1, 数组长度)

子程序名返回值类型公开备 注
位置换算整数型 
参数名类 型参考可空数组备 注
点位点2f类
返回 (点位.左边 + 点位.顶边 × 3)


i支持库列表   支持库注释   
OpenCV(未知支持库)


结帖率:97% (100/103)

签到天数: 22 天

发表于 2023-9-10 19:49:06 | 显示全部楼层   重庆市重庆市
牛逼了  我关心这机械臂多少钱
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2023-9-1 15:17:06 | 显示全部楼层   江苏省苏州市
66666666666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2023-6-17 06:22:43 | 显示全部楼层   江苏省苏州市
你转给我吧
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 16 天

发表于 2023-4-3 00:55:21 高大上手机用户 | 显示全部楼层   河南省郑州市
悟空机qi人
回复 支持 反对

使用道具 举报

发表于 2023-3-23 22:42:48 | 显示全部楼层   云南省文山壮族苗族自治州
别买这垃圾支持库都是骗人的花了400大洋什么都不教,让你自己百du学,结果一运行就崩溃问他也不告诉你怎么搞
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)
发表于 2023-1-17 06:10:50 高大上手机用户 | 显示全部楼层   安徽省淮南市
手臂哪有卖的
回复 支持 反对

使用道具 举报

结帖率:81% (77/95)

签到天数: 5 天

发表于 2022-11-27 20:23:53 | 显示全部楼层   河北省秦皇岛市
厉害了我的哥
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2022-11-24 11:22:22 | 显示全部楼层   河北省秦皇岛市
谢谢LZ分享,学习到新技能。
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2022-11-23 14:40:55 | 显示全部楼层   广东省东莞市
6666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2022-11-22 19:48:16 | 显示全部楼层   美国
666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表