Intro to Epic: Tame the iSWAP

Part 13: Fix `STARBackend.iswap_close_gripper` defaults so it works without args by rickwierenga · Pull Request #1038 · PyLabRobot/pylabrobot · GitHub
Argless iswap_close_gripper() always raised firmware err 32 (C0 GC rejects gb=0000/gt=00). Defaults are now plate_width=86.0 / tolerance=2.0 mm, with Python-side assertions (>76.0, >=0.5) that fail fast before the firmware does.

Part 14: Add FK-based `STARBackend.iswap_request_pose()` + `iswap_request_joint_state()` by BioCam · Pull Request #1041 · PyLabRobot/pylabrobot · GitHub
FK-based grip-center accessor replacing the empirically broken firmware command C0 QG (request_iswap_position, wrong in 9/13 states, up to 255 mm off).
New iswap_request_pose() / iswap_request_joint_state() read joint encoders + per-machine EEPROM, with no firmware-state dependency - fixing a 15 year old OEM issue.
Legacy path untouched.

Part 15: https://github.com/PyLabRobot/pylabrobot/pull/1043
Bundles the 7 scattered _iswap_* setup attributes into one guarded iSWAPInformation dataclass (mirrors Head96Information/MachineConfiguration), plus a chatterbox default. fw_version now loads eagerly and get_iswap_version() raises pre-setup.

1 Like