点击下方卡片,关注「3D视觉工坊」公众号
选择星标,干货第一时间送达
来源:3D视觉工坊
3D视觉硬件汇总,包括结构光3D相机(支持室内外,焊接,机械臂抓取等场景),相位偏折术、散斑、机械臂抓取和焊接软件,手持扫描仪(支持定位、重定位、稠密建图)、四足狗和小车定位和导航,底盘。点击->查看详情:
🎬 配套视频教程
TCP触碰标定:眼在手外 TCP触碰标定详细教程:https://www.bilibili.com/video/BV1a58w6iEmd/
标记物标定:眼在手外,标记物标定详细教程:https://www.bilibili.com/video/BV1bw826pENv/
一、下载手眼标定 GUI 和 SDK

二、什么是手眼标定
我们将提供一款用于机械臂手眼标定的专业软件。通过该软件,用户可以计算相机与机械臂末端执行器之间的精确空间变换关系。
▲ 眼在手上(Eye-in-Hand):相机安装在机械臂末端
▲ 眼在手外(Eye-to-Hand):相机固定在基座或工作台上
三、标定前准备
⚠️ 正式开始标定之前,请逐项完成以下 6 项检查,避免因硬件问题导致标定失败:
3.1 负载和安装检查
确认相机 / 标定板重量在机械臂额定负载内,安装牢固无松动。超载可能导致末端法兰盘变形或运动异常。
3.2 底座稳固检查
确保机械臂底座安装牢固。可以让机械臂快速进行大幅度摆动,观察底座和本体有无晃动。
3.3 绝对精度检查
在标准零点姿态时,检查各轴刻度线是否对齐。沿 X/Y/Z 轴移动并与实际距离比较,误差过大需联系厂商校准。
3.4 TCP 精度检查
确保机械臂 TCP 精度满足要求。推荐使用绕点旋转测试法检测 TCP 精度。
3.5 相机精度检查
在视野范围内放置一块标定板进行拍照,检测相机精度。低于出厂标准需联系厂商校准。
3.6 相机预热
相机需预热暖机,保证标定与后续使用过程中温度一致,减少点云温漂。
四、本教程用到的设备、标记物与工具
🤖 4.1 设备
▲ 本教程使用的设备:Aubo C5 机械臂 + SD-M2600C 3D 相机
🎯 4.2 标记物
提供两种标记物,分别适用于 TCP 触碰标定 和 标记物标定。无论选择哪种方式,都建议优先使用带十字架的非对称黑底白圆标定板。
4.2.1 非对称黑底白圆标定板(推荐 ✅)
支持 7×11 / 4×11 / 4×5 三种规格,软件将自动识别。

▲ 非对称黑底白圆标定板(A3/A4 规格 PDF 可打印)
4.2.2 同心圆标记物
同心圆标记物仅适用于不方便使用标定板的场景。精度略低于非对称圆点标定板。

🔧 4.3 工具(仅 TCP 触碰标定需要)
Aubo C5 适配尼龙材质探针一个(TCP 触碰标定顶针)

五、TCP 触碰标定
⚠️ 前置条件:在做 TCP 触碰标定前,需要先进行 TCP 精度验证。
📖 详细步骤请参考:手眼标定-TCP触碰标定前的TCP精度验证,请加微信:QYong2014
5.1 采集数据步骤
📍 5.1.1 眼在手上(Eye-in-Hand)
总共采集至少 3 组数据:
拍照: 固定标记物,移动机械臂多姿态拍摄,记录 2D 图像 + 点云 + 机械臂位姿 触碰: 移动机械臂触碰十字架中心点,记录 TCP 坐标 可选: 移动标记物到另一固定位置,重复上述过程 关键:三次触碰姿态差异尽可能大一些
💡 注:对于眼在手上,必须移动至少一次机械臂做多角度拍摄
📍 5.1.2 眼在手外(Eye-to-Hand)
总共采集至少 3 组数据:
拍照: 固定相机,固定标记物,拍摄,记录 2D 图像 + 点云 触碰: 移动机械臂触碰十字架中心点,记录 TCP 坐标 可选: 移动标记物到另一固定位置,重复上述过程 关键:三次触碰姿态差异尽可能大一些
💡 注:对于眼在手外,不需要记录拍照时机械臂位姿(计算不使用)

▲ 拍照记录图像+点云,触碰记录 TCP 坐标
📝 注意事项:对于每个触碰点,一次「拍照+触碰」相当于一组数据;使用带十字架的非对称黑底白圆标定板时,上面有 3 个触碰点,单次拍摄就包含 3 个触碰点,依次触碰即可提供 3 组数据。

5.2 软件操作步骤

5.2.1 导入拍照时目标点坐标
导入或输入拍照时相机坐标系下的三维点坐标 可使用「工具」页的标记物检测功能,输入图片和点云计算得到 XYZ 坐标

5.2.2 导入拍照时机器人姿态
导入或输入拍照时的机器人位姿 软件会自行判断欧拉角的输入顺序 若选择「眼在手外」模式,此项将隐藏,无需操作
5.2.3 导入触碰时 TCP 坐标
导入或输入触碰目标点时的 TCP 坐标
5.2.4 模式选择和计算
选择模式:眼在手上 或 眼在手外
点击「计算」按钮完成标定
5.3 误差分析

5.3.1 理论误差
显示总的平均计算误差,以及每个数据的误差
如果误差过大可以手动删除异常数据,再重新计算
5.3.2 标定结果查看
- 眼在手上:显示相机到末端执行器(法兰盘)的变换矩阵
- 眼在手外:显示相机到机器人基座的变换矩阵
5.3.3 TCP 触碰验证实际误差
与 TCP 触碰标定计算时输入的数据格式完全相同,相当于从计算数据中拿出一部分做验证
- 点 XYZ:输入目标点在相机坐标系下的三维坐标
机器人位姿:输入拍摄目标点时的机器人位姿(仅眼在手上需要) TCP 坐标:输入触碰目标点时对应的实际 TCP 坐标 点击「计算 TCP 触碰误差」按钮,显示每个触碰点的误差

5.4 注意事项
① 机器人位姿文件格式(.txt)
纯文本文件,每行一组位姿数据,数值之间用空格或英文逗号分隔:
欧拉角格式: 每行 6 个值 → X Y Z Rx Ry Rz(R1 R2 R3 可以是 RX RY RZ 或 RZ RY RX,软件自行判断) 四元数 WXYZ: 每行 7 个值 → X Y Z W Qx Qy Qz(很多视觉算法库原生格式)
- 四元数 XYZW:
每行 7 个值 → X Y Z Qx Qy Qz W(ROS 等系统通用格式)
② 采样空间覆盖:若计算精度高但实际 TCP 触碰精度差,最可能原因是采样空间未覆盖到。需保证机械臂均匀覆盖工作空间,戳点也覆盖工作空间。
③ 缩小范围重标:若精度不够好,条件允许可缩小工作范围后重新标定,以获得更高精度。
5.5 合理的精度区间
✅ TCP 触碰标定合理精度区间:理论误差约 0.5 mm 左右,一般戳点误差也在 0.5 mm 左右。总体来说小于 1 mm 即可,小于 0.5 mm 更佳。
六、标记物标定
6.1 采集数据步骤
📍 6.1.1 眼在手上
固定标记物,移动机械臂多姿态拍摄,记录 2D 图像 + 点云 + 机械臂位姿
📍 6.1.2 眼在手外
固定相机,标记物装于末端,移动机械臂多姿态拍摄,记录 2D 图像 + 点云 + 机械臂位姿


▲ 左:眼在手上(标定板固定) | 右:眼在手外(标定板随末端运动)

▲ 同心圆标记物(备选方案)
💡 数据采集要点:
每次采集位姿变化建议旋转 10°~30° 以上,避免相邻两组姿态过于接近 最少拍 6 组数据,建议 15 组以上,让机械臂均匀覆盖整个工作空间

6.2 软件操作步骤
⚠️ 点云和图片还有机械臂位姿文件要放在同一路径下。图片和点云用数字命名(如 0.png 对应 0.ply),放入同一文件夹。

6.2.1 点云和图片列表区域
加载图片和点云 选择标记物类型 选择点云单位
6.2.2 图像显示区域
显示标记物图片以及识别情况
6.2.3 机器人位姿设置区域
加载机器人位姿数据(*.txt) 选择机器人数据格式 选择机器人数据单位
6.2.4 模式选择和计算区域
选择模式(眼在手上或眼在手外) 点击「计算」


6.3 误差分析
同 5.3 TCP 触碰标定的误差分析方法一致。
6.4 注意事项
优先考虑非对称圆点标定板,精度高于同心圆标记物。同心圆只适用于不方便使用标定板的场景。 确保标记物在相机的景深范围内,清晰对焦。 眼在手上时,确保标记物在标定过程中放置稳固不能动。 单目相机有面阵线移拍摄模式的优先使用面阵线移;双目相机用了摆动线扫的点云与 2D 图片对齐选项必须选「是」。 机器人运动停下来后,等待几秒让振动稳定后再拍摄。 调整 2D 曝光使每个标定圆都清晰可见,不过暗也不过亮。 调整 3D 曝光使每个圆心处点云无缺失且平滑。 机械臂不能只绕一个轴旋转,必须有多方向姿态变化,建议每个轴都要旋转。每次位姿变化建议 10°~30° 以上。 最少 6 组数据,建议 15 组以上,均匀覆盖整个工作空间。 图像和点云编号必须一一对应(0.png ↔ 0.ply,依此类推)。 位姿文件支持多种格式:
欧拉角:6 个值(X Y Z Rx Ry Rz) 四元数 WXYZ:7 个值(X Y Z W Qx Qy Qz) 四元数 XYZW:7 个值(X Y Z Qx Qy Qz W) 4×4 矩阵:16 个值(按行优先排列的齐次变换矩阵)
6.5 合理的精度区间
⚡ 标记物标定合理精度区间:理论误差在 1~2 mm 区间,很难做到 1 mm 以下。如需更高精度,请选择 TCP 触碰标定方案。
七、小工具
7.1 工具 1:计算标记物圆心坐标
提供圆心坐标检测功能,在 TCP 触碰标定或 TCP 触碰验证时会用到。

7.2 工具 2:点云坐标转换
有了手眼标定结果,就可以将点云从相机坐标系转换到机器人基座坐标系,通过转换后的点云重合度来间接验证标定结果的准确性。


