from typing import List, Optional, Union
import motion3d as m3d
import numpy as np
from . import hm
from .base import HERWCalibrationBase
[docs]class Shah(HERWCalibrationBase):
"""| Solving the robot-world/hand-eye calibration problem using the kronecker product
| M. Shah
| Journal of Mechanisms and Robotics (Vol. 5, Issue 3), 2013"""
[docs] @staticmethod
def name():
return 'Shah'
[docs] def __init__(self, **kwargs):
super().__init__()
self._T = None
self._A = None
self._b_data = None
[docs] def _calibrate(self, **_):
if self._T is None or self._A is None or self._b_data is None:
raise RuntimeError("Linear formulation is missing")
return hm.analytic.solve_shah(self._T, self._A, self._b_data)