机械臂与相机的标定

本文介绍了机械臂与相机的手眼标定方法,包括In-Hand Camera和Fixed Camera两种情况,通过非线性优化进一步提升标定精度。详细讨论了如何利用刚体变换矩阵和齐次线性方程求解相机与机械臂之间的变换关系。

文章同步更新于 github page.

简介

​ 机械臂在运动时,往往需要配合视觉信息进行目标的定位或识别,这就涉及到如何将相机坐标系(Camera Frame)下的物体转换到机械臂自身的坐标系下(Base Frame)。这一问题一般通过手眼标定(Hand-Eye Calibration)解决,其中的“手”即为机械臂,“眼”即为相机。

​ 具体的标定方式还与手眼之间的安装方式有关,这里大体分为两类。其一,相机安装在机械臂的末端上,跟随机械臂一起运动,这种一般称为In-Hand Camera。其二,相机固定安装在某个位置,不随机械臂运动,这种一般称为Fixed Camera或Global Camera。下面分别对两张手眼安装形式的标定进行介绍。

In-Hand Camera

​ 如下图所示,In-Hand Camera的标定主要是为了求出相机与机械臂末端夹具(End-effector)之间的变换关系,一般是一个大小为4x4的刚体变换矩阵。
在这里插入图片描述
​ 令end-effector在base frame下的位姿为 E B T {}^B_ET EBT,即末端位姿,这可以从机械臂输出数据中读出,一般视为精确值。标定时,将一个已知精确大小的标定板(比如棋盘格)固定放置,然后让机械臂运动,以使相机可以从多个不同角度拍摄标定板图像,拍摄图像的同时,要记录当时的机械臂末端位姿。假设相机内参已知,每一张标定板图像都可以算出相机(C)在标定板(P)下的位姿 C P T {}^P_CT CPT. 这样每一个 E B T {}^B_ET EBT都对应一个 C P T {}^P_CT CPT。现在设相机在end-effector下的位姿为 C E T {}^E_CT CET,标定板在base frame下的位姿为 P B T {}^B_PT PBT,他们之间存在如下关系
E B T i C E T = P B T C P T i {}^B_ET_i{}^E_CT={}^B_PT{}^P_CT_i EBTiCET=PBTCPTi
其中 C E T {}^E_CT CET P B T {}^B_PT PBT是未知量。

​ 初看,这是 A X = Z B AX=ZB AX=ZB形式的方程,虽然存在一些解这类方程的方法,但根据个人经验,条件都比较苛刻,数值稳定性不佳。实际上,在上式中,我们并不关心 P B T {}^B_PT PBT,可以想办法将其消去。显然有
E B T i C E T P C T i = P B T = E B T j C E T P C T j {}^B_ET_i{}^E_CT{}^C_PT_i={}^B_PT={}^B_ET_j{}^E_CT{}^C_PT_j EBTiCETPCTi=PBT=EBTjCETPCTj

E B T i C E T P C T i = E B T j C E T P C T j {}^B_ET_i{}^E_CT{}^C_PT_i={}^B_ET_j{}^E_CT{}^C_PT_j EBTiCETPCTi=</

### 机械相机联合标定技术及应用实例 #### 联合标定的技术原理 当相机跟随机械手一起移动时,为了实现有效的坐标系标定,可以采取一种称为“间接标定”的策略。具体来说,在这种情况下不建议将标定板固定于机械手上,而是应该将其放置在一个相对于环境静止的位置上[^1]。通过这种方式,即使相机随同机械手一同移动,仍然能够捕捉到不同视角下的标定点图像数据。 对于此类场景中的标定过程而言,通常会涉及到以下几个方面: - **多视图几何关系建立**:利用多个位置拍摄得到的图片来计算相机内参以及外参(即旋转和平移向量),从而建立起世界坐标系、相机坐标系之间的映射关系。 - **特征匹配算法的应用**:借助诸如SIFT/SURF等稳健性较高的局部描述子来进行跨帧间的兴趣点配对工作,进而求解出单应性矩阵H或者基础/本质矩阵E/F作为后续优化的基础输入项之一[^2]。 - **误差最小化处理**:考虑到实际操作过程中不可避免的存在各种噪声干扰因素的影响,因此往往还需要引入非线性最小二乘法之类的数值分析手段进一步精炼参数估计结果,提高最终定位精度水平。 #### 应用案例展示 以某自动化生产线为例说明这一技术的实际运用情况: 假设存在一条负责组装电子产品的流水线上配备了带有视觉系统的六轴机器人手用于执行精密装配作业任务。此时就需要确保两者之间具备良好的协作能力——不仅限于简单的动作同步配合层面,更重要的是能够在三维空间范围内准确定位目标物体并实施抓取动作。为此技术人员采用了上述提到的方法完成了整个系统的初始化设置流程,并成功实现了预期功能效果。 在此期间特别值得注意的一点在于针对圆形标记物检测环节所选用的具体实施方案选择了基于轮廓提取的方式而非传统的霍夫变换方法论,因为后者很容易受到背景复杂度变化等因素制约而产生较多假阳性误报现象发生概率较大[^3]。 ```csharp // C#代码片段示意如何调用EmguCV库函数进行圆周拟合运算 using Emgu.CV; using Emgu.CV.Structure; public List<Point> FindCircles(Mat image) { var grayImage = CvInvoke.CvtColor(image, ColorConversion.Bgr2Gray); VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint(); // 使用Canny边缘检测器获取边界信息 CvInvoke.Canny(grayImage, grayImage, 50, 150); // 查找所有闭合轮廓 CvInvoke.FindContours( grayImage, contours, null, RetrType.External, ChainApproxMethod.ChainApproxSimple); List<Point> centers = new List<Point>(); foreach (var contour in contours.ToArray()) { CircleF circle = CvInvoke.MinEnclosingCircle(contour); if ((int)Math.Round(circle.Radius) >= MIN_RADIUS && (int)Math.Round(circle.Radius) <= MAX_RADIUS) { centers.Add(new Point((int)Math.Round(circle.Center.X), (int)Math.Round(circle.Center.Y))); } } return centers; } ```
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值