✅ 核心区别总结
| 算子 | 平移参考系 | 说明 |
|---|---|---|
hom_mat3d_translate(HomMat3DIn, Tx, Ty, Tz, HomMat3DOut) |
全局坐标系(世界坐标系) | 沿固定的世界坐标轴方向平移 |
hom_mat3d_translate_local(HomMat3DIn, Tx, Ty, Tz, HomMat3DOut) |
局部坐标系(当前物体自身坐标系) | 沿当前变换后坐标系的轴方向平移 |
💡 类比:
translate= 在地图上"向东走10米"(绝对方向)translate_local= "向前走10米"(相对于你当前朝向)
详细解释
1. hom_mat3d_translate
- 作用 :在原始世界坐标系下进行平移。(沿着全局坐标轴平移,对应于矩阵左乘)
- 数学本质:

其中 TT 是以世界坐标系为基准的平移矩阵。
- 效果:无论当前物体如何旋转,平移方向始终是 X/Y/Z 轴的固定方向。
✅ 适用场景:
- 将物体整体在工作台上沿固定方向移动(如传送带方向);
- 在已知世界坐标的网格中定位。
2. hom_mat3d_translate_local(沿着局部坐标轴平移,对应于矩阵右乘)
- 作用 :在当前变换后的局部坐标系下进行平移。
- 数学本质:

平移是在当前姿态的"前方、左侧、上方"进行的。
- 效果 :平移方向随物体当前朝向而变化。例如,若物体已绕 Z 轴旋转 90°,则
Tx=1不再是沿世界 X 轴,而是沿其自身新 X 轴(原 Y 轴方向)。
✅ 适用场景:
- 机器人末端工具沿自身朝向"前进"或"侧移";
- 相对于物体表面法向方向进行偏移(如从抓取点向上抬升);
- 构建相对于某位姿的相对运动路径(如接近 → 抓取 → 抬起)。
示例说明
假设有一个位姿 H 表示一个朝向 Y 轴的夹爪(即绕 Z 轴旋转了 90°)。
* 初始位姿:位于原点,朝向 +Y 方向
pose_to_hom_mat3d ([0,0,0, 0,0,90], H)
- 使用
hom_mat3d_translate(H, 0.1, 0, 0, H1)
→ 夹爪在世界 X 方向移动 0.1m,但朝向不变(仍朝 Y)。 - 使用
hom_mat3d_translate_local(H, 0.1, 0, 0, H2)
→ 夹爪沿自身 X 轴(即世界 -X 方向,因它朝 Y)移动 0.1m,相当于"向左平移"。
在机器人抓取中,"从物体上方下降"通常用 translate_local:
hom_mat3d_translate_local(ObjectPose, 0, 0, -0.05, ApproachPose)
表示沿物体自身 Z 轴(通常指向相机或垂直向上)向下 5cm。
🧩 记忆技巧
| 算子 | 关键词 | 联想 |
|---|---|---|
hom_mat3d_translate |
Global / Absolute | "在地图上移动" |
hom_mat3d_translate_local |
Local / Relative | "在自己脚下移动" |
✅ 总结
| 特性 | hom_mat3d_translate |
hom_mat3d_translate_local |
|---|---|---|
| 坐标系 | 世界坐标系(固定) | 当前局部坐标系(随姿态变化) |
| 平移顺序 | 左乘(先平移后应用原变换) | 右乘(先应用原变换再平移) |
| 机器人应用 | 移动到绝对位置 | 相对于当前姿态做微调 |
| 常见用途 | 定位、对齐 | 接近、避障、工具偏移 |
在 HALCON 的手眼标定、机器人抓取、多视角拼接等应用中,_local 版本更常用于构建相对于目标物体的运动路径,而普通版本用于全局布局调整。