仿真环境:Genesis
机械臂:Frank
问题:把GraspNet预测的抓取姿态矩阵转到世界坐标系后,给frank机械臂执行动作,但是机械臂执行结果不理想。具体表现为预测的抓取姿态在open3d可视化中是正确的,
但是执行结果貌似对某个轴进行了旋转:
解决方法:https://github.com/graspnet/graspnet-baseline/issues/65这个issues中提到需要将机械臂夹爪坐标系和GraspNet坐标系之间做一个转换。
查资料后发现,GraspNet预测时的夹爪坐标系如下(x朝前)。
自己的机械臂夹爪坐标系是z朝前,
所以需要将Graspnet预测的位姿矩阵(世界坐标系下)做一个绕Y轴的顺时针旋转。
代码参考https://github.com/graspnet/graspnet-baseline/issues/65
# 作y轴旋转
R2 = R.from_euler("zyx", [0, np.pi / 2, 0], degrees=False)
T2 = np.eye(4, 4)
T2[:3, :3] = R2.as_matrix()
grasp = np.dot(grasp, T2) #grasp是Graspnet预测的已经转换到世界坐标系下的抓取姿态矩阵
做了绕Y轴旋转后结果: