Skip to content

PF400 module migration to MADSci V0.8 - #33

Merged
Dozgulbas merged 7 commits into
mainfrom
v0.8
Jun 26, 2026
Merged

PF400 module migration to MADSci V0.8#33
Dozgulbas merged 7 commits into
mainfrom
v0.8

Conversation

@caseystone

Copy link
Copy Markdown
Contributor

This version of the PF400 module is tested and working for microplate transfers on MADSci v0.8 in the RAPID-446 robotic laboratory. Lid functionality has not yet been tested.

Changes include:

  • Addition of a PF400 location representation template
  • Repair of the move_to_location REST node action

caseystone and others added 4 commits June 10, 2026 14:36
Introduces a per-location offset (mm, >= 0) that raises the gripper Z at
both pick and place, letting the gripper clear surrounding frames (e.g.
OT2 slot lips) while the plate-bottom still lands on the calibrated
surface.

- Schema: new gripper_height_offset field on the deck location template
  representation; rejects negative values at parse time.
- Rest node: max(source, target) location offset is summed with the
  plate's grab_height_offset and passed as grab_offset to the interface.
  Lid-clearance validation rejects effective offsets larger than the
  plate's lid_height when has_lid is True. For separated pick + place,
  the pick-time location offset is recorded on the gripper resource as
  gripper_offset_applied; place reads it back and errors out if the
  target needs more clearance than was applied at pick.
- Interface: removes the never-used press_depth parameter from
  pick_plate, place_plate, transfer, remove_lid, and replace_lid.
- Drops dead self.check_incorrect_plate_orientation call sites and the
  AGENTS.md mention; method was already removed.
- Tests: notebook gains Tests 13-18 exercising offset propagation, the
  max(source, target) rule, the gripper_offset_applied cross-action
  state, the target-needs-more-clearance error, the lid-clearance error,
  and a move_to_location calibration check.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add gripper_height_offset for location-specific pick/place clearance
@caseystone
caseystone requested a review from Dozgulbas June 25, 2026 20:58
@caseystone caseystone self-assigned this Jun 25, 2026
Dozgulbas and others added 3 commits June 25, 2026 15:17
Pre-commit autofixes only — no test logic changes. Renumbers cell IDs,
wraps long print() lines, and unescapes unicode em-dashes so PR #33
passes the pre-commit check on the merge to main.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Commit da00887 regenerated this file with a local pydantic-settings-export
version that emits NoneType + duplicated names, while CI's version emits
`null` + single names. PF400NodeConfig wasn't actually changed in da00887,
so the pre-da00887 version is still semantically correct and matches
what CI regenerates, letting PR #33 pre-commit pass.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Dozgulbas

Dozgulbas commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Hi @caseystone going through this before approving, I noticed that you commented out enabling and disabling the horizontal compliance in the pick_plate and place_plate functions in the interface. Is this intended to be removed completely, or was it part of a test? Also, I believe we made a change to enable and disable the compliance only when we drop the plate or pick the plate to avoid the joints from drifting around. Curious whether that didn't fix the issues you were seeing.

@caseystone

Copy link
Copy Markdown
Contributor Author

I commented out the lines that enable and disable compliance as a temporary measure. I have not yet calibrated the PF400 locations in RAPID-446 and would like to perform the calibration with compliance disabled to better evaluate the accuracy of the calibrations. I have also not yet tested whether enabling compliance provides any benefit for PF400 transfers. I will investigate this further and update the enable/disable compliance logic accordingly in the next PR. We did change the location of the enable compliance call in the pick and place plate functions to successfully prevent joint drift.

@Dozgulbas

Copy link
Copy Markdown
Contributor

Sounds good, thanks for the context.

@Dozgulbas Dozgulbas left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving; let's revisit the compliance logic in the next PR after the RAPID-446 calibration.

@Dozgulbas
Dozgulbas merged commit 7ea3014 into main Jun 26, 2026
2 checks passed
@Dozgulbas
Dozgulbas deleted the v0.8 branch June 30, 2026 17:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants