大家好,又见面了,我是你们的朋友全栈君。
四轴平面机器人的手眼标定
介绍
在实际的机器人应用中,通常会给机器人配备视觉传感器,视觉传感器用于感知周围环境。但是,通过视觉传感器获取的场景坐标是基于视觉坐标系下的,机器人并不能直接使用,要获取机器人可以直接使用的坐标信息,必须将坐标转换到机器人坐标系下。因此,机器人手眼标定的目的是为了获取从视觉坐标系转换到机器人坐标系的转换矩阵。
机器人手眼标定问题可以分为两类:
1)eye-in-hand,视觉传感器安装在机器人末端执行器上,随着机器人的移动而移动;
2)eye-to-hand,视觉传感器固定安装,与机器人基座坐标系相对固定。
四轴机器人的手眼标定
在四轴机器人的应用场景中,通常都是用于抓取平面上的物体,实际配置如下图所示。
1)相机拍摄平面上的物体;
2)在拍摄的图像中定位物体的位置(像素坐标);
3)将像素坐标转换到机械手基座坐标系下;
4)机械手抓取零件。
四轴平面机器人手眼标定的任务就是计算出像素坐标系到机械手基座坐标系下的转换矩阵。由于相机拍摄的是一个平面,而机械手作业的区域也是一个平面,因此,平面机器人手眼标定的任务可以转换成计算两个平面之间的映射关系的过程,也就是计算两个平面之间的仿射变换。
点(x,y,w)‘为图像点的齐次坐标,而点(x’,y’,w’)’为机械手每组场景的控制器读数(仅读取x,y参数)的齐次坐标,经过如下转换。
halcon中计算方法
- 首先进行手眼标定
%计算图像坐标
area_center(SortedRegions,Area,Row,Column)
%输入机械手示教的9点坐标
Column_robot := [275,225,170,280,230,180,295,240,190]
Row_robot := [55,50,45,5,0,-5,-50,-50,-50]
%求解放射变换矩阵,HomMat2D是图像坐标和机械手坐标之间的变换矩阵
vector_to_hom_mat2d(Row,Column,Row_robot,Column_robot,HomMat2D)
- 在标定结束后,使用标定的数据计算机械手抓取位置
%由像素坐标和标定矩阵求出机器人基础坐标系中的坐标
affine_trans_point_2d(HomMat2D,Row2,Column2,Qx,Qy)
opencv中的计算方法
- 手眼标定
//计算图像坐标
std::vector<cv::Point2f> img_corners;
//输入机械手示教的9点坐标
std::vector<cv::Point2f> robot_corners;
cv::Mat transform;
//计算手眼标定矩阵transform
cv::estimateAffine2D(img_corners, robot_corners,transform);
大家好,我主要的研究方向有:
1)主流的结构光三维测量方法,包括:线扫,格雷码,相移,散斑等;
2)摄像机标定和投影仪标定;
3)点云处理;
4)图像处理;
5)Halcon应用;
6)机器视觉相机选型。
对以上研究方向感兴趣的朋友可以关注我的微信公众号:
另外,关于以上研究方向的任何问题都可以到我的知识星球进行提问,我将给大家满意的回答 !!!!
3D视觉QQ群:1012179080。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146228.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...