physicalai-runtime-adding-a-robot-integration
Installation
SKILL.md
Adding a Robot Integration
Robots satisfy the structural Robot protocol in src/physicalai/robot/interface.py — no base class inheritance required. References: src/physicalai/robot/so101/, src/physicalai/robot/trossen/ (WidowX). Connection helpers: src/physicalai/robot/connect.py; validation: src/physicalai/robot/verify.py.
Workflow
- Read
references/robot-protocol.mdand an existing integration (SO-101 for serial servos, WidowX for arms).- Done when: required methods and observation shape are listed.
- Implement connect lifecycle: idempotent
connect(),disconnect(),is_connected(). - Observations: return a type exposing
joint_positions,timestamp(time.monotonic()), optionalsensor_data/images; implementstateproperty when inference expects more than positions. - Actions:
send_action(action, *, goal_time=...)withactionshape matching training data conventions; document joint order viajoint_names. - Optional extra in
pyproject.toml(physicalai[so101],physicalai[trossen]); lazy-import vendor SDKs. - Export public class from
physicalai.robotwhen user-facing. - Tests under
tests/unit/robot/with mocked hardware.- Done when:
uv run pytest tests/unit/robot -k <name>passes.
- Done when:
- Verification CLI/docs — wire
verify.pypatterns if the robot supports automated checks.