diff --git a/api/src/opentrons/protocol_api/core/engine/deck_conflict.py b/api/src/opentrons/protocol_api/core/engine/deck_conflict.py index b70b3472404..7ea572dfabf 100644 --- a/api/src/opentrons/protocol_api/core/engine/deck_conflict.py +++ b/api/src/opentrons/protocol_api/core/engine/deck_conflict.py @@ -329,7 +329,18 @@ def _will_collide_with_thermocycler_lid( pipette_bounds: Tuple[Point, Point, Point, Point], surrounding_regular_slots: List[DeckSlotName], ) -> bool: - """Return whether the pipette might collide with thermocycler's lid on a Flex.""" + """Return whether the pipette might collide with thermocycler's lid/clips on a Flex. + + If any of the pipette's bounding vertices lie inside the no-go zone of the thermocycler- + which is the area that's to the left, back and below the thermocycler's lid's + protruding clips, then we will mark the movement for possible collision. + + This could cause false raises for the case where an 8-channel is accessing the + thermocycler labware in a location such that the pipette is in the area between + the clips but not touching either clips. But that's a tradeoff we'll need to make + between a complicated check involving accurate positions of all entities involved + and a crude check that disallows all partial tip movements around the thermocycler. + """ if ( DeckSlotName.SLOT_A1 in surrounding_regular_slots and engine_state.modules.is_flex_deck_with_thermocycler() diff --git a/shared-data/python/opentrons_shared_data/module/__init__.py b/shared-data/python/opentrons_shared_data/module/__init__.py index 3379dc850b7..10117ded8dd 100644 --- a/shared-data/python/opentrons_shared_data/module/__init__.py +++ b/shared-data/python/opentrons_shared_data/module/__init__.py @@ -16,7 +16,9 @@ OLD_TC_GEN2_LABWARE_OFFSET = {"x": 0, "y": 68.06, "z": 98.26} -# TODO (spp, 2023-02-14): make these a part of thermocycler/ deck definitions +# TODO (spp, 2023-02-14): these values are measured experimentally, and aren't from +# machine drawings. We should replace them with values from CAD files and +# possibly make them a part of thermocycler/ deck definitions FLEX_TC_LID_CLIP_POSITIONS_IN_DECK_COORDINATES = { "left_clip": {"x": -3.25, "y": 402, "z": 205}, "right_clip": {"x": 97.75, "y": 402, "z": 205},