lexia / scripts /verify_sdk_motion.py
davidhf2026's picture
chore: establish LexIA baseline on Windows
c349d51
Raw History Blame Contribute Delete
1.72 kB
"""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())