from typing import List, Optional, Union
import motion3d as m3d
import numpy as np
from . import hm
from .base import HandEyeCalibrationBase
[docs]class Andreff(HandEyeCalibrationBase):
"""| Robot Hand-Eye Calibration using Structure from Motion
| N. Andreff, R. Horaud, and B. Espiau
| The International Journal of Robotics Research (Vol. 20, Issue 3), 2001"""
[docs] @staticmethod
def name():
return 'Andreff'
[docs] def __init__(self):
super().__init__()
self._A = None
self._b = None
[docs] def _calibrate(self, **_):
if self._A is None or self._b is None:
raise RuntimeError("Linear formulation is missing")
return hm.analytic.solve_linear(self._A, self._b)