"""Comprueba las firmas de movimiento contra el SDK realmente instalado. Ejecutar en el PC con el robot ANTES de mover nada: python -m scripts.verify_sdk_motion No mueve el robot: solo introspecciona. Si algo no coincide con lo que espera `lexia/robot/driver.py`, lo dice y se corrige ahí y en ningún otro sitio. """ from __future__ import annotations import inspect import sys ESPERADO = { "set_target": {"head", "antennas", "body_yaw"}, "goto_target": {"head", "antennas", "duration", "method", "body_yaw"}, } def main() -> int: try: from reachy_mini import ReachyMini except ImportError: print("El SDK reachy_mini no está instalado en este entorno.") return 2 problemas = 0 for nombre, esperados in ESPERADO.items(): metodo = getattr(ReachyMini, nombre, None) if metodo is None: print(f"FALTA {nombre}: el SDK instalado no lo expone") problemas += 1 continue firma = inspect.signature(metodo) reales = set(firma.parameters) - {"self"} print(f"OK {nombre}{firma}") ausentes = esperados - reales if ausentes: print(f" aviso: faltan parámetros esperados: {sorted(ausentes)}") problemas += 1 try: from reachy_mini.utils import create_head_pose print(f"OK create_head_pose{inspect.signature(create_head_pose)}") except ImportError: print("AVISO no hay create_head_pose; driver.py construye la matriz por su cuenta") print("\nSin problemas." if not problemas else f"\n{problemas} punto(s) a revisar.") return 1 if problemas else 0 if __name__ == "__main__": sys.exit(main())