# 手眼标定结果位置偏差一个数量级

> 原文链接：https://robotics.hellobike.com/pitfalls/2024-06-13-robotics-se-7163
> 频道：pitfalls | 更新日期：2024-06-13 | 标签：auto, stackexchange, robotic-arm, stereo-vision, calibration
> 核心摘要：使用双四元数手眼标定结果偏差很大，改用 CamOdoCal 并按其格式输入多组位姿求解。

# 手眼标定结果位置偏差一个数量级

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Hand Eye Calibration](https://robotics.stackexchange.com/questions/7163/hand-eye-calibration)（Robotics Stack Exchange #7163）

**状态**：已解决

## 问题

机器人臂、外置光学跟踪器和末端 fiducial 做手眼标定，期望求 `Fiducial -> End Effector`，运行 `estimateHandEyeScrew` 后估计位置与真实值相差一个数量级。

## 环境

Linux / ROS 机器人软件与控制通用开发环境

## 解决办法

1. 使用 `CamOdoCal` 的手眼标定实现，或使用基于 `camodocal + ROS` 的 `handeye_calib_camodocal`。
2. 在不同时间、位置和姿态记录多组变换 `A` 和 `B`，可取相邻时间步之间或相对第一时间步的变换。
3. 旋转按 `AxisAngle = UnitAxis * Angle` 输入，满足 `||UnitAxis||=1`、`||AxisAngle||=θ_angle`。
4. 平移按普通 `[x,y,z]` 输入。
5. 将两组向量传入 `EstimateHandEyeScrew()`，返回未知 `X` 的 `4x4` 变换估计；更多排查按 `handeye_calib_camodocal` 的说明执行。

原问题作者：Andrew Hundt；采纳答案作者：Andrew Hundt。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #7163：Hand Eye Calibration](https://robotics.stackexchange.com/questions/7163/hand-eye-calibration)