Multi-arm support and conditional head96 in LiquidHandler & Backends#877
Open
BioCam wants to merge 3 commits intoPyLabRobot:mainfrom
Open
Multi-arm support and conditional head96 in LiquidHandler & Backends#877BioCam wants to merge 3 commits intoPyLabRobot:mainfrom
BioCam wants to merge 3 commits intoPyLabRobot:mainfrom
Conversation
…zation - LiquidHandler: replace single `_resource_pickup` with `_resource_pickups` dict keyed by arm index, with backward-compatible property for arm 0 - LiquidHandler: only create head96 trackers when `core96_head_installed` is True - LiquidHandler: serialize head96_state and arm_state (resource name, type, direction, dimensions) for downstream consumers (e.g. visualizer) - LiquidHandler: register _state_updated callback on head/head96 trackers, and fire it on pick_up_resource / drop_resource - LiquidHandler: guard pick_up_resource with RuntimeError if no arm installed - Backends: add `num_arms` attribute to STARBackend, ChatterboxBackend, STARChatterboxBackend (configurable `iswap_installed` param) - TipTracker: propagate state-update callback to tip's volume tracker on commit() Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
… serialization" This reverts commit e30341b.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds multi-arm support to the LiquidHandler and backends, making the CoRe 96 head installation conditional based on backend configuration.
Changes:
- Added
num_armsproperty to backends and liquid handler to support multiple robotic arms - Made the CoRe 96 head (
head96) conditional based on thecore96_head_installedbackend attribute - Enhanced state serialization to include head96 and arm states with detailed resource information
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| pylabrobot/resources/tip_tracker.py | Propagates state-update callback to tip's volume tracker for visualizer refresh |
| pylabrobot/liquid_handling/liquid_handler_tests.py | Adds num_arms to mock backend for testing |
| pylabrobot/liquid_handling/liquid_handler.py | Implements multi-arm support with dict-based resource pickup tracking and conditional head96 |
| pylabrobot/liquid_handling/backends/hamilton/vantage_tests.py | Sets num_arms = 1 in test backend setup |
| pylabrobot/liquid_handling/backends/hamilton/STAR_tests.py | Sets num_arms = 1 across multiple test backend setups |
| pylabrobot/liquid_handling/backends/hamilton/STAR_chatterbox.py | Adds iswap_installed parameter and sets num_arms based on iSWAP presence |
| pylabrobot/liquid_handling/backends/hamilton/STAR_backend.py | Sets num_arms based on iSWAP installation status |
| pylabrobot/liquid_handling/backends/chatterbox.py | Adds num_arms = 1 to chatterbox backend initialization |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
0ff8a90 to
c181971
Compare
…zation - LiquidHandler: replace single `_resource_pickup` with `_resource_pickups` dict keyed by arm index, with backward-compatible property for arm 0 - LiquidHandler: only create head96 trackers when `core96_head_installed` is True - LiquidHandler: serialize head96_state and arm_state (resource name, type, direction, dimensions) for downstream consumers (e.g. visualizer) - LiquidHandler: register _state_updated callback on head/head96 trackers, and fire it on pick_up_resource / drop_resource - LiquidHandler: guard pick_up_resource with RuntimeError if no arm installed - Backends: add `num_arms` attribute to STARBackend, ChatterboxBackend, STARChatterboxBackend (configurable `iswap_installed` param) - TipTracker: propagate state-update callback to tip's volume tracker on commit() Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
c181971 to
afe2dfb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.