[ 博客首页 ]
黄杰, 2018-09-26
root[a]linuxsand.info
PLB 是 SICK 的视觉产品,可以理解为一套软硬件结合的系统,全称是 Part Localization in Bins,即箱中工件定位。它用于引导机器人实现 random bin picking。
和 SICK China 合作,我实现了 FANUC(发那科) 和 KAWASAKI(川崎)的通信接口和代码示例,覆盖了 PLB 5.2 的基础功能。
本文仅涉及 PLB 中的几个坐标系,对初入 3D 视觉的朋友也许会有帮助。内容和截图来源于 PLB 5.2 版本操作手册中的 3.2.4 Reference frames 章节。
PLB 最终将计算出“工件坐标系(相对于机器人坐标系)”和“抓手相对于工件坐标系的位姿”。
A 是工件数模中的参考坐标系,B 是调整后的坐标系。part frame 的数值是相对于机器人坐标系的(事先需要完成标定),由 PLB 计算而来。
A 是抓手数模中的参考坐标系,C 是调整过后的坐标系(原点需要和真实的 TCP 重合),B 是 A ---> C 的变换。
A 是调整过后的抓手坐标系,B 是调整过后的工件坐标系。
如果是相对简单的应用,可以让 PLB 为你计算好真正的 pick pose(即 absolute tool frame),在机器人接口中指定使用 absolute tool frame 即可。
但是在使用相对工具坐标系(relative tool frame)时,PLB 输出的数据不能直接让机器人运动过去,而是需要先自行做变换,见旧文:
pick pose = part frame × relative tool frame
更复杂的情况是,某些工件从横截面看是轴对称的,只需要一种抓取姿态就可以应付;为此 PLB 引入了 vertical correction,即垂直校正。那么,这时:
pick pose = vertical correction × part frame × relative frame
摘取 PLB 5.2 机器人接口支持的字段。
[PartResultMsg]
PartResult,
$result,
$imageId,
$jobAlias,
$rotationConvention,
$partFrameX,$partFrameY,$partFrameZ,
$partFrameR1,$partFrameR2,$partFrameR3,
$numValidPickPoses,
$pickPoseAlias0,$gripperAlias0,
$absoluteToolFrame0X,$absoluteToolFrame0Y,$absoluteToolFrame0Z, ; <------ 绝对工具坐标系
$absoluteToolFrame0R1,$absoluteToolFrame0R2,$absoluteToolFrame0R3,
$relativeToolFrame0X,$relativeToolFrame0Y,$relativeToolFrame0Z, ; <------ 相对工具坐标系
$relativeToolFrame0R1,$relativeToolFrame0R2,$relativeToolFrame0R3,
$verticalCorrection0X,$verticalCorrection0Y,$verticalCorrection0Z, ; <------ 垂直校正
$verticalCorrection0R1,$verticalCorrection0R2,$verticalCorrection0R3,
$pickPoseAlias1,$gripperAlias1,
$absoluteToolFrame1X,$absoluteToolFrame1Y,$absoluteToolFrame1Z,
$absoluteToolFrame1R1,$absoluteToolFrame1R2,$absoluteToolFrame1R3,
$relativeToolFrame1X,$relativeToolFrame1Y,$relativeToolFrame1Z,
$relativeToolFrame1R1,$relativeToolFrame1R2,$relativeToolFrame1R3,
$verticalCorrection1X,$verticalCorrection1Y,$verticalCorrection1Z,
$verticalCorrection1R1,$verticalCorrection1R2,$verticalCorrection1R3,
$highestPointX,$highestPointY,$highestPointZ,
$moreToAnalyze;
拓展:为了放工件时更加灵活和优雅,也可以根据这些坐标系数据计算出一个新的机器人工具数据,新工具的 TCP 与工件的坐标系原点重合。手册里并没有指出如何变换。
但这实际上就是求出 tool 1 ---> tool 2 的变换关系 T。
T = inv(pick pose) × part frame
tool 2 = tool 1 × T
= tool 1 × inv(pick pose) × part frame
= tool 1 × inv(vertical correction × part frame × relative tool frame) × part frame