ruben1111's picture
Reachy Mini webcam face tracker: YuNet tracking, shared head/body yaw, greet new people
57d6235 verified
Raw
History Blame Contribute Delete
2.32 kB
"""Introspect the installed reachy-mini SDK to confirm the API we depend on.
Run with: pixi run verify-sdk
No robot connection is made — this only inspects classes/signatures so we can
lock down the exact calls before wiring up motion control.
"""
from __future__ import annotations
import inspect
def sig(obj, name: str) -> str:
member = getattr(obj, name, None)
if member is None:
return f" - {name}: MISSING"
try:
return f" - {name}{inspect.signature(member)}"
except (TypeError, ValueError):
return f" - {name}: <no signature> ({type(member).__name__})"
def main() -> None:
import reachy_mini
print("reachy_mini version:", getattr(reachy_mini, "__version__", "?"))
print("reachy_mini file :", reachy_mini.__file__)
print("top-level exports :", sorted(n for n in dir(reachy_mini) if not n.startswith("_")))
print("\n== module-level helpers ==")
for name in ("create_head_pose", "look_at", "look_at_image"):
print(sig(reachy_mini, name))
print("\n== ReachyMini ==")
RM = getattr(reachy_mini, "ReachyMini", None)
if RM is not None:
try:
print(" __init__", inspect.signature(RM.__init__))
except (TypeError, ValueError):
print(" __init__ <no signature>")
methods = [n for n in dir(RM) if not n.startswith("_")]
print(" members :", methods)
for name in (
"goto_target",
"look_at_image",
"look_at_world",
"set_target",
"get_frame",
):
print(sig(RM, name))
# media / camera accessors are usually instance attributes; report presence
for attr in ("media", "camera"):
print(f" has class attr/property '{attr}':", hasattr(RM, attr))
print("\n== ReachyMiniApp ==")
App = getattr(reachy_mini, "ReachyMiniApp", None)
if App is not None:
print(sig(App, "run"))
print(" members:", [n for n in dir(App) if not n.startswith("_")])
else:
print(" ReachyMiniApp NOT found at top level — searching submodules...")
import pkgutil
for m in pkgutil.iter_modules(reachy_mini.__path__, reachy_mini.__name__ + "."):
print(" submodule:", m.name)
if __name__ == "__main__":
main()