四轴平面机器人的手眼标定

四轴平面机器人的手眼标定四轴平面机器人的手眼标定介绍在实际的机器人应用中,通常会给机器人配备视觉传感器,视觉传感器用于感知周围环境。但是,通过视觉传感器获取的场景坐标是基于视觉坐标系下的,机器人并不能直接使用,要获取机器人可以直接使用的坐标信息,必须将坐标转换到机器人坐标系下。因此,机器人手眼标定的目的是为了获取从视觉坐标系转换到机器人坐标系的转换矩阵。机器人手眼标定问题可以分为两类:1)eye-in-hand,…

大家好,又见面了,我是你们的朋友全栈君。

四轴平面机器人的手眼标定

介绍

在实际的机器人应用中,通常会给机器人配备视觉传感器,视觉传感器用于感知周围环境。但是,通过视觉传感器获取的场景坐标是基于视觉坐标系下的,机器人并不能直接使用,要获取机器人可以直接使用的坐标信息,必须将坐标转换到机器人坐标系下。因此,机器人手眼标定的目的是为了获取从视觉坐标系转换到机器人坐标系的转换矩阵。
机器人手眼标定问题可以分为两类:

1)eye-in-hand,视觉传感器安装在机器人末端执行器上,随着机器人的移动而移动;


四轴平面机器人的手眼标定

2)eye-to-hand,视觉传感器固定安装,与机器人基座坐标系相对固定。


四轴平面机器人的手眼标定
那么如何进行手眼标定呢? 本篇文章仅仅研究四轴平面机器人的手眼标定。

四轴机器人的手眼标定

在四轴机器人的应用场景中,通常都是用于抓取平面上的物体,实际配置如下图所示。


四轴平面机器人的手眼标定
在作业过程中,主要存在以下几个步骤:

1)相机拍摄平面上的物体;

2)在拍摄的图像中定位物体的位置(像素坐标);

3)将像素坐标转换到机械手基座坐标系下;

4)机械手抓取零件。

四轴平面机器人手眼标定的任务就是计算出像素坐标系到机械手基座坐标系下的转换矩阵。由于相机拍摄的是一个平面,而机械手作业的区域也是一个平面,因此,平面机器人手眼标定的任务可以转换成计算两个平面之间的映射关系的过程,也就是计算两个平面之间的仿射变换。
点(x,y,w)‘为图像点的齐次坐标,而点(x’,y’,w’)’为机械手每组场景的控制器读数(仅读取x,y参数)的齐次坐标,经过如下转换。


四轴平面机器人的手眼标定
式中,$a_{11},a_{12},a_{21},a_{22}$不是旋转矩阵的元素,因为该变换矩阵是齐次坐标(在许多的博客中直接说是旋转矩阵是不对的。 方程中,存在6个未知数,理论上使用3组对应点就可以计算出所有参数,但是实际读取的数据都存在噪声,因此,需要采集>3组的数据(通常是9组,所以称该方法是9点法)使用最小二乘就行求解。

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。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146228.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows批处理命令大全「建议收藏」

    windows批处理命令大全「建议收藏」系统控制Shutdown-s-t600:表示600秒后自动关机shutdown-a:可取消定时关机Shutdown-r-t600:表示600秒后自动重启desk.cpl:屏幕分辨率logoff:注销命令explorer:打开资源管理器perfmon:计算机性能监测器PowerShell:提供强大远程处理能力secpol.msc:本地安全策略services.msc:本地服务设置shrpubw:创建共享文件夹taskschd.msc:任务计划

    2022年8月22日
    14
  • 搭建大众点评CAT监控平台

    搭建大众点评CAT监控平台

    2021年6月14日
    117
  • docker 修改容器时间_docker开放容器端口

    docker 修改容器时间_docker开放容器端口前言用docker搭建的Jenkins环境时间显示和我们本地时间相差8个小时,需修改容器内部的系统时间查看时间查看系统时间date-R进入docker容器内部,查看容器时间dockere

    2022年7月31日
    7
  • BP神经网络的Matlab实现——人工智能算法

    BP神经网络的Matlab实现——人工智能算法这几天在各大媒体上接触到了人工智能机器学习,觉得很有意思,于是开始入门最简单的机器算法——神经网络训练算法(NeuralNetworkTraining);以前一直觉得机器学习很高深,到处是超高等数学、线性代数、数理统计。入坑发现确实是这样!但是呢由项目实例驱动的学习比起为考试不挂科为目的的学习更为高效、实用!在遗传算法、神经网络算法的学习入门之后觉得数学只要用心看没问题的(即使是蒙特卡洛和马尔

    2022年6月10日
    49
  • 信息熵、信息增益、条件熵基本概念及联系「建议收藏」

    信息熵、信息增益、条件熵基本概念及联系

    2022年3月12日
    55
  • 安卓四大组件面试题_android常见面试题

    安卓四大组件面试题_android常见面试题1、Activity与Fragment之间常见的几种通信方式答:1.使用Bundle:在activity中建一个bundle,把要传的值存入bundle,然后通过fragment的setArguments(bundle)传到fragment,在fragment中,用getArguments接收。这个方法能保证在fragment销毁重建后依然能获取到传递过来的数据。2.采用接口回调的方式。3.EventBus。2.谈谈Android中几种LaunchMode的特点和应用场景?

    2022年8月26日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号