# Hand-eye Calibration

**URL:** <https://forum.opencv.org/t/hand-eye-calibration/1880>\
**Category:** Uncategorized\
**Tags:** calib3d, practical\
**Created:** [March 1, 2021, 11:26am UTC](https://forum.opencv.org/t/hand-eye-calibration/1880 "2021-03-01T11:26:29Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![dahonora](https://avatars.discourse-cdn.com/v4/letter/d/f1d935/32.png) [@dahonora](https://forum.opencv.org/u/dahonora)\
**Post date:** [March 3, 2021, 9:16pm UTC](https://forum.opencv.org/t/hand-eye-calibration/1880/4 "2021-03-03T21:16:50Z")

</div>

I did the HandEyeCalibration with a UR10 using a D415 RealSense.  
It is correct to use Rodrigues in both cases, but you need to correctly understand the axis vector notation.

Look at the documents in this folder:  
[https://drive.google.com/drive/folders/1lFQyLcnNux1wvs2O009pqQefMRNRbjkt?usp=sharing](https://drive.google.com/drive/folders/1lFQyLcnNux1wvs2O009pqQefMRNRbjkt?usp=sharing)

Specifically the UR Angles. The Axis vector need to be scaled before doing Rodrigues. Something like this:

```
float rv_len = sqrt(pow(theta_rv[0], 2) + pow(theta_rv[1], 2) + pow(theta_rv[2], 2));
float scale = 1 - 2 * PI / rv_len;	
theta_rv = theta_rv * scale;  

```

For more details look at this post:

> **[Discrepancy of pose from 30002 and pendant reading](https://forum.universal-robots.com/t/discrepancy-of-pose-from-30002-and-pendant-reading/238/10)**
>
> In PolyScope the rotation vector is scaled so that it looks more stable and doesn’t flicker so much. The data on port 30003 is unscaled, but when scaled it corresponds to the GUI values shown in PolyScope. Below is a Python program that exemplifies...

---

_[View the full topic](https://forum.opencv.org/t/hand-eye-calibration/1880)._
