Halcon三维坐标变换问题记录

1、统一标定板坐标系和机器人坐标系

标定板坐标系z轴指向下,机器人坐标系z轴向上,并且x轴和y轴方向也不一致,外参标定之后,如何经过变换统一?
Rgba = Rx(RotX) · Ry(RotY) · Rz(RotZ)
Rabg = Rz(RotZ) · Ry(RotY) · Rx(RotX)
如果是从右往左读,就是绕着原来的坐标系旋转
如果是从左往右读,就是按照新的坐标系旋转

下面三段代码都可以达到同样效果,将图1坐标系转换到图2坐标系。

#这一段无所谓'gba'还是'abg',因为只有一个角度
create_pose (0, 0, 0, 0, 0, 90, 'Rp+T', 'gba', 'point', Pose2)
pose_compose (PoseForCalibrationPlate, Pose2, PoseComposeT)
create_pose (0, 0, 0, 180, 0, 0, 'Rp+T', 'gba', 'point', Pose3)
pose_compose (PoseComposeT, Pose3, PoseCompose)
#先绕z轴旋转90,再绕新x轴转180
create_pose (0, 0, 0, 180, 0, 90, 'Rp+T', 'abg', 'point', Pose2)
pose_compose (PoseForCalibrationPlate, Pose2, PoseCompose)
#先绕z轴旋转90,再绕原来y轴转180
create_pose (0, 0, 0, 0, 180, 90, 'Rp+T', 'gba', 'point', Pose2)
pose_compose (PoseForCalibrationPlate, Pose2, PoseCompose)
#下面的矩阵变换等价于上面两段代码
hom_mat3d_identity(HomMat3DIdent)
hom_mat3d_rotate(HomMat3DIdent, 6.28318530718/4, 'z', 0, 0, 0, HomMat3DRotZ)
hom_mat3d_rotate(HomMat3DRotZ, 0, 'x', 0, 0, 0, HomMat3DRotYZ)
hom_mat3d_rotate(HomMat3DRotYZ, 6.28318530718/2, 'y',0, 0, 0, HomMat3DXYZ)
hom_mat3d_compose (HomMat3D,  HomMat3DXYZ,HomMat3DCompose)
hom_mat3d_to_pose (HomMat3DCompose, PoseCompose)

hom_mat3d_identity(HomMat3DIdent)
hom_mat3d_rotate(HomMat3DIdent, 6.28318530718/4, 'z', 0, 0, 0, HomMat3DRotZ)
hom_mat3d_rotate(HomMat3DRotZ, 6.28318530718/2, 'y', 0, 0, 0, HomMat3DRotYZ)
hom_mat3d_rotate(HomMat3DRotYZ, 0, 'x', 0, 0, 0, HomMat3DXYZ)
hom_mat3d_compose (HomMat3D,  HomMat3DXYZ,HomMat3DCompose)
hom_mat3d_to_pose (HomMat3DCompose, PoseCompose)

图1 外参标定的标定板坐标系

图2 目标坐标系 

2、一定要去核验机器人的工具坐标系,

3、pose_compose()

#下面是halcon例程hand_eye_stationarycam_grasp_nut.hdev中的一行代码,从这行代码我们可以看到,在变换中,把初始pose放在左边,把变换pose放在右边。
pose_compose (CamInBasePose, GripperInCamPose, GripperInBasePose)
#同理hom_mat3d_compose 也是一样
hom_mat3d_compose (base_H_cam, cam_H_grasp, base_H_grasp)

4、create_pose 'abg'和‘gba’

5、机器人pose和halcon pose转换的问题 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值