建设银行网站查询,温江建设网站,西宁网络公司做网站哪家好,百度竞价多少钱一个点击文章目录 一、问题概述1、何为手眼标定#xff1f;2、手眼标定的2种形式1#xff09;眼在手上#xff08;eye in hand#xff09;#xff1a;即相机固定在机械臂末端2#xff09;眼在手外#xff08;eye to hand#xff09;#xff1a;即相机固定在机械臂以外的地方 3… 文章目录 一、问题概述1、何为手眼标定2、手眼标定的2种形式1眼在手上eye in hand即相机固定在机械臂末端2眼在手外eye to hand即相机固定在机械臂以外的地方 3、手眼标定公式推导 二、Halcon例程解读1、初始化1初始化显示参数2初始化三维坐标系3初始化标定模型 2、构建坐标系1构建标定板坐标系2构建机器人基座坐标系与夹具坐标系 3、执行手眼标定1检查用于手眼标定的位姿是否一致2进行手眼标定并保存相关参数3显示标定误差 4、显示标定后的三维模型1计算姿态指标和标定对象指标2可视化 5、得到标定结果 三、如何实操1、准备标定板2、相机标定3、手眼标定整体流程梳理如下 四、关键点梳理1、tool-base2、cam-obj3、求解AXXB 五、后续的思考 一、问题概述
1、何为手眼标定
要让机器人的手抓住杯子就必须知道杯子跟手的相对位置关系而杯子的位置则是通过机器人的眼睛看见的所以我们只需要知道机器人的手和眼睛的转换关系就可以随时抓取机器人眼睛所看到的物体了。 2、手眼标定的2种形式
1眼在手上eye in hand即相机固定在机械臂末端 手眼标定的目的是确定两个未知量 标定板相对于机器人基座的位姿CalObjInBasePose 机械手末端相对于相机的位姿ToolInCamPose
2眼在手外eye to hand即相机固定在机械臂以外的地方 手眼标定的目的是确定两个未知量 机器人基座相对于相机的位姿BaseInSensorPose 标定板相对于机械手末端的位姿CalObjInToolPose
3、手眼标定公式推导
对原理有兴趣的小伙伴请参看手眼标定公式推导
二、Halcon例程解读
主要是参考 hand_eye_movingcam_calibration.hdev
1、初始化
这一部分的工作中需要完成对显示参数的初始化主要包括2D图像的显示以及3D模型的显示以及用于标定的模型的初始化利用已获得的相机内参与标定板参数同时还可以指定进行标定的方法
1初始化显示参数 2初始化三维坐标系
一个是以机械手夹具中心点为原点的三维坐标系另一个是机器人基座的三维坐标系。 3初始化标定模型
初始化一个用于标定的模型 CalibDataID。需要通过标定文件相机初始内参以及用于进行标定的方法进行初始化。 这里的标定方法是用的非线性优化。
2、构建坐标系
1构建标定板坐标系
根据之前创建的标定模型CalibDataID在图像中寻找相应的标定板图像获取标定板的轮廓与其中的角点并在其中心根据相机内参以及标定板位姿初始化一个标定板坐标系。 在输入的图像中根据之前初始化的标定模型寻找标定板提取标定板的轮廓通过提取标定板中的点来获取标定板的位姿
2构建机器人基座坐标系与夹具坐标系
根据保存的机器人工具坐标系到机器人基座坐标系下的转换矩阵将原有的机器人夹具坐标系转换至基座坐标系下显示这两个坐标系并将转换关系保存在CalibDataID所指向的模型对象中。 读取机械手在机器人基座坐标系下的位姿根据机械手在机器人基座坐标系下的转换矩阵将机械手坐标系转换至基座坐标系保存机械手坐标系到基座坐标系的转换关系至标定模型CalibDataID中
3、执行手眼标定
1检查用于手眼标定的位姿是否一致 2进行手眼标定并保存相关参数 3显示标定误差 4、显示标定后的三维模型
1计算姿态指标和标定对象指标 2可视化 获取标定模型CalibDataID中的数据坐标根据坐标数据初始化标定块根据标定块在基座坐标系下的转换矩阵对标定块进行转换
5、得到标定结果
3D姿态中的7个参数代表的意义[0,0,0,0,0,0,0]前六个代表平移和旋转量最后一个代表OrderOfTransform, OrderOfRotform, ViewOfTransform的组合类型。 OrderOfTransform旋转和平移的顺序OrderOfRotform旋转值的含义ViewOfTransform变换视角 三、如何实操
1、准备标定板
窗口–打开算子窗口–gen_caltab 设置XNumYNum—圆点个数X和Y方向圆点个数 设置圆点直径MarkDist × DiameterRatio 设置间距MarkDist单位为米
caltab.descry是标定板描述文件caltab.ps为标定板生成文件没有ps用Adobe PDF打开就能看到如下图1-2所示的标定板可以直接打印。 2、相机标定
助手–打开新的 Calibration 在描述文件地方插入刚刚生成的caltab.descry 点击标定 结果中摄像机参数需要记录下来之后会用到摄像机位姿需要点击“保存”保存成 .dat 格式的文件 3、手眼标定
标定板不动移动机械臂拍摄15张图片覆盖多个位姿并记录每张图片拍摄时机械臂的位姿包括 X , Y , Z , R X , R Y , R Z X,Y,Z,R_X,R_Y,R_Z X,Y,Z,RX,RY,RZ 六个 整体流程梳理如下 初始化相应的参数二维图像输出窗口三维坐标系的坐标轴与窗口用于进行手眼标定的对象CalibDataID 根据手眼标定的对象在输入的图像中寻找相应的标定板并建立坐标系 创建base与tool的三维坐标系并根据输入的转换关系信息进行显示 进行手眼标定输出并保存相关参数 根据标定后的转换关系创建base、tool、cam与obj的三维坐标系并进行显示 输出相应的转换关系
四、关键点梳理
1、tool-base
机械臂末端在机器人基座坐标系下的位姿其实就是机器人学里面最基础的运动学正解。 用 DH 矩阵等方法来计算机器人运动学正解只要知道机器人在当前状态下每个关节的角度就可以得到tool—base之间的变换。
2、cam-obj
相机在标定板坐标系下的位姿即相机的外参。 根据相机模型先确定内参矩阵然后根据不同时刻拍摄的标定板图片来求取外参矩阵也即相机在世界坐标系下的变换关系。
3、求解AXXB 文献3采用的是李群的理论将AXXB转化成最小二乘问题
文献4采用的是对偶四元数的知识用对偶四元数表达旋转和平移从而进行统一计算
四种方法精度接近最后一种 Dual Quaternions 的方法会稍微比其他算法好一点。
五、后续的思考
机器人领域基本上所有用到的模型都只是「近似模型」。也就是说上面说的每一步都有改进空间。
1、直接使用的机器人运动学模型是认为机器人加工、装配、控制无误差的情况。
实际上这种假设是不成立的。也就是说我们只拿到每个关节角度计算的末端位姿是存在误差的。可以从机器人运动学参数辨识等方面入手提高最后的标定精度
2、相机模型其实也不是标准的小孔模型像素坐标与空间坐标之间其实是非线性的对应关系。
…