from typing import List, Optional, Union
import motion3d as m3d
import numpy as np
from . import dq
from .base import HandEyeCalibrationBase
[docs]class Daniilidis(HandEyeCalibrationBase):
"""| Hand-Eye Calibration Using Dual Quaternions
| K. Daniilidis
| The International Journal of Robotics Research (Vol. 18, Issue 3), 1999"""
[docs] @staticmethod
def name():
return 'Daniilidis'
[docs] def __init__(self):
super().__init__()
self._Mlist = None
[docs] def set_Mlist(self, Mlist):
self._Mlist = Mlist
[docs] def _calibrate(self, **_):
if self._Mlist is None:
raise RuntimeError("M list is missing")
return dq.analytic.solve_svd(self._Mlist)