文章目录
前言
终于到了复现的这一步了,但走了几步发现太多坑了,一步一步记录下来吧
一、工具坐标系和工件坐标系标定
1.1 工具坐标系标定
- 工具坐标系是用来代替机械臂末端法兰的,比如你想让机械臂到达(100,100,100)点,四元数(1,0,0,0),那么是让末端法兰到目标点还是工具中心到呢?这就是工具坐标系的作用;
- 首先进行负载辨识,让机械臂知道负载的质心重量等数据;
- 工具坐标系标定,包括四点法确定工具坐标系原点和三点法确定工具坐标系姿态,若不使用三点法即不确定工具坐标系姿态,则默认工具坐标系和机械臂末端法兰坐标系姿态相同(如下图末端法兰坐标系)。但因为我做连接件的时候没有考虑到方向,六轴为零度的时候夹爪是竖着的,所以还是需要使用三点法;
- 标定后的工具坐标系类似下图
1.2 工件坐标系标定
- 工件坐标系使用来代替世界坐标系,让桌面一角作为工件坐标系原点,可以在实验时自己估计一些移动数据,同时也模拟了PointNetGPD中的/table_top坐标系;
- 采样三点法标定工件坐标系,结果类似下图
1.3 实验坑
- 问题:在工具和工件标定结束了,我想尝试一下让机械臂在工件坐标系下移动到(0,0,100),四元数(1,0,0,0)点,希望看到的结果是夹爪的两夹指中点位于工件坐标系原点上100mm,但实际无论怎么设置,示教器都警告超出运动范围。
- 分析原因:四元数(1,0,0,0)即欧拉角(0,0,0),即工件坐标系和工具坐标系应该姿态相同,除了原点位置相差100mm外。但二者的z轴方向完全相反,所以是不可能重合的
- 验证:把工件坐标系标定来z轴向下,则能达到预期实验结果;
- 不确定:在PointNetGPD中,应该是/table_top坐标系和工具坐标系二者z轴方向相反,但我还是怕后面给定抓取姿态的时候机械臂还是无法到达目标位姿;
二、手眼标定
2.1 尝试使用手眼标定(eye-to-hand)
使用了两个程序进行了实现,分别如下两图
https://github.com/christianwengert/calib_toolbox_addon
https://github.com/ZacharyTaylor/Camera-to-Arm-Calibration
我也不是很明白误差的衡量标准,但程序原作者把高于10 pixel的重投影误差就定义为很大的错误,我这几十pixel完全不知道错在哪里,害。我输入了20个位姿图,感觉没有任何地方会有问题,但最后就是有很大的问题。
希望有大佬如果知道可能的原因指点指点
1.2 将工件坐标系与相机坐标系重合
只能改变思路,让相机坐标系与工件坐标系重合,免去了手眼标定这一步,无需任何点云坐标的转换,但这样相机的摆放位姿会受限制。
三、PoinNetGPD采集点云实现
这部分现在问题是GPG生成的候选抓取通过网络后都被标记为bad_grasp