3D位姿定义解析(halcon)

综合 HALCON 3D 位姿定义解析

1. 位姿核心组成
  • 参数形式:6维向量 [Tx, Ty, Tz, Rx, Ry, Rz]
  • 平移分量(位置):
    • Tx, Ty, Tz:物体原点在世界坐标系的偏移量
    • 单位:米(m)或毫米(mm),需统一
  • 旋转分量(方向):
    • Rx, Ry, Rz:绕坐标轴的旋转角度
    • 默认单位:弧度(rad),可用deg()转换角度
    • 示例:90° → deg(90) ≈ 1.5708 rad
2. 旋转表示规范
  • 旋转类型:欧拉角(Euler angles)
  • 旋转顺序(关键!):
    初始姿态
    绕Z轴旋转Rz
    绕新Y轴旋转Ry
    绕新X轴旋转Rx
    最终姿态
  • 坐标系规则
    • 右手坐标系:拇指=X,食指=Y,中指=Z
    • 旋转方向:逆时针为正(右手定则)
3. 坐标系定义
坐标系类型X轴方向Y轴方向Z轴方向说明
图像坐标系右 →下 ↓外 ⊙相机成像平面
世界坐标系右 →下 ↓外 ⊙全局参考基准
物体坐标系物体右物体下物体外物体局部参考
  • 位姿本质:描述从物体坐标系世界坐标系的刚体变换
    P_world = Pose * P_object
    
4. 齐次变换矩阵

位姿等效的 4×4 变换矩阵:
H=[R11R12R13TxR21R22R23TyR31R32R33Tz0001] H = \begin{bmatrix} R_{11} & R_{12} & R_{13} & T_x \\ R_{21} & R_{22} & R_{23} & T_y \\ R_{31} & R_{32} & R_{33} & T_z \\ 0 & 0 & 0 & 1 \end{bmatrix} H=R11R21R310R12R22R320R13R23R330TxTyTz1

  • R矩阵计算
    # 伪代码:ZYX顺序的旋转矩阵计算
    Rz = [[cos(Rz), -sin(Rz), 0],
          [sin(Rz), cos(Rz),  0],
          [0,       0,        1]]
    
    Ry = [[cos(Ry),  0, sin(Ry)],
          [0,        1, 0      ],
          [-sin(Ry), 0, cos(Ry)]]
    
    Rx = [[1,  0,        0       ],
          [0, cos(Rx), -sin(Rx) ],
          [0, sin(Rx), cos(Rx)  ]]
    
    R = Rz @ Ry @ Rx  # 矩阵乘法顺序:Z→Y→X
    
5. 核心算子使用
* 创建位姿(指定旋转顺序)
create_pose(0.1, 0.2, 0.3,         // Tx, Ty, Tz
            0.0, HALCON_PI/2, 0.0, // Rx, Ry, Rz 
            'Rp+T', 'ZYX', 'point', // 变换类型/旋转顺序/投影类型
            Pose)                   // 输出位姿

* 位姿 ↔ 矩阵转换
pose_to_hom_mat3d(Pose, HomMat3D)  // 位姿→矩阵
hom_mat3d_to_pose(HomMat3D, Pose)  // 矩阵→位姿

* 位姿复合运算
pose_compose(Pose1, Pose2, PoseResult)  // PoseResult = Pose1 * Pose2
pose_invert(Pose, InvPose)              // 计算逆位姿
6. 关键注意事项
  1. 旋转顺序敏感性

    • ZYX(默认)≠ XYZZYZ
    • 万向节死锁:当Ry=±90°时,Rx和Rz自由度退化
  2. 方向混淆陷阱

    • 机器人工件坐标系 vs 相机坐标系
    • HALCON的Y轴向(图像坐标惯例)
  3. 应用黄金法则
    在这里插入图片描述

7. 实战调试技巧
  • 可视化验证
    * 创建3D模型
    create_shape_model_3d(..., ModelID)
    
    * 应用位姿投影
    project_shape_model_3d(Image, ModelID, Pose, ...)
    
    * 显示坐标框架(箭头指示方向)
    disp_3d_coord_system(WindowHandle, CamParam, Pose, 0.1)
    
  • 错误排查
    • 位置异常 → 检查平移单位(mm/m)
    • 方向颠倒 → 验证旋转顺序和坐标系定义
    • Z轴反向 → 确认相机成像方向(z_outz_in

最佳实践:在机器人应用中,使用hand_eye_calibration标定后,务必通过image_points_to_world_plane验证坐标转换链的正确性。

以上综合解析了HALCON 3D位姿的核心定义、数学原理和应用实践,理解这些概念对实现精准的3D视觉定位至关重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X-Vision

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值