Conversation
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
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>
|
Hi @caseystone going through this before approving, I noticed that you commented out enabling and disabling the horizontal compliance in the |
|
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. |
|
Sounds good, thanks for the context. |
Dozgulbas
left a comment
There was a problem hiding this comment.
Approving; let's revisit the compliance logic in the next PR after the RAPID-446 calibration.
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: