-
Notifications
You must be signed in to change notification settings - Fork 184
feat(api): allow stacker overlap offset override and fix labware height calcuations for stacker movement #18570
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## edge #18570 +/- ##
==========================================
- Coverage 23.54% 23.54% -0.01%
==========================================
Files 3233 3233
Lines 278597 278677 +80
Branches 26980 26981 +1
==========================================
Hits 65604 65604
- Misses 212975 213055 +80
Partials 18 18
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
…ss the labware pool has changed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great to me, I think this is an awesome step forward for allowing override specs.
@@ -435,6 +435,7 @@ def empty(self, message: str | None) -> None: | |||
def set_stored_labware_items( | |||
self, | |||
labware: Sequence[LabwareCoreType], | |||
stacking_offset_z: float | None = None, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nit] imo in the core we can drop the = None
, this is only called programmatically and the papi code can just always provide the None
Overview
The original objective of this PR is to allow user to supply an overlap offset of the labware stack during Flex Stacker configuration. This offset, currently calculated from labware definition, affects:
While building this feature, I realized our shuttle movements were using incorrect labware heights because we hadn’t factored in the overlap value. We’re fixing that here too—apologies for the sizable diff!
Changelog
stacking_offset_z
toSetStoredLabware
protocol engine command to allow overriding the calculated stacking offset with a user-defined valuemodule_context.py
to clarify the purpose of the stacking offset and provide detailed explanations of stacking configurationsmodule_context.get_max_storable_labware_from_list()
if the stacker already has configurationmodule_context.get_current_storable_labware_from_list()
to behave similarly asget_current_storable_labware()
, so that it checks the module substate to determine how many more can fit inside the hopper and should raise an error if the stacker hasn't been configuredLabwareView.stacker_labware_pool_to_ordered_list()
to make use of theraise_if_stacker_labware_pool_is_not_valid
function to create the proper list of labware in the correct, top-first orderstacker_labware_pool_to_ordered_list
andget_stacker_labware_overlap_offset
to ensure accuracy and consistency across the engine calculations and module context-level predictionretrieve.py
andstore.py
using the calls toFlexStackerSubstate.get_pool_height_minus_overlap()