from typing import List, Optional, Union
import motion3d as m3d
import numpy as np
from . import dq, hm
from .base import HandEyeCalibrationBase
[docs]class SchmidtDQ(HandEyeCalibrationBase):
"""| Calibration-Free Hand-Eye Calibration: A Structure-from-Motion Approach
| J. Schmidt, F. Vogt, and H. Niemann
| Pattern Recognition, 2005"""
[docs] @staticmethod
def name():
return 'SchmidtDQ'
[docs] def __init__(self):
super().__init__()
self._data = None
[docs] def _calibrate(self, **kwargs):
if self._data is None:
raise RuntimeError("Transformation data are is missing")
return dq.optimization.optimize_schmidt(self._data, **kwargs)
[docs]class SchmidtHM(HandEyeCalibrationBase):
"""| Calibration-Free Hand-Eye Calibration: A Structure-from-Motion Approach
| J. Schmidt, F. Vogt, and H. Niemann
| Pattern Recognition, 2005"""
[docs] @staticmethod
def name():
return 'SchmidtHM'
[docs] def __init__(self):
super().__init__()
self._data = None
[docs] def _calibrate(self, **kwargs):
if self._data is None:
raise RuntimeError("Transformation data are is missing")
return hm.optimization.optimize_schmidt(self._data, **kwargs)