-
Notifications
You must be signed in to change notification settings - Fork 175
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
bug: When targeting a location somewhere above the top of a well, pipette first moves to exact top of the well, then moves vertically up #6323
Comments
Thanks for opening this issue!
So, for example, if your protocol uses a P300, you want that P300 to use Opentrons 300 µL tips in some parts of the protocol, and tips from another company in other parts of the protocol?
Sorry, I don't think I understand. Could you clarify what do you mean by "set the height via the location definition"? |
Yes, Right now I'm trying to use just a single P1000 (Gen 2). I'm using an in-house made pipette tip. Ideally we would want to swap tips between a custom tip and an opentrons tip with the p1000 mid protocol. The custom tip is much longer than the standard pipette tip (7.5cm). I can specify the aspirate via a location class instance say Additionally, If I dispense in the same fashion i.e. |
I guess I could just calibrate with the custom tip and then specify negative values for the opentrons tip but I am unaware of any warnings or Errors if I go below where it thinks the deck is in relation to the Labware. |
Hi @Dardin-dale ! Quick question, are you using a custom tiprack definition for your custom tip? The ultimate source of the tip length in the geometry system comes from these two values: opentrons/shared-data/labware/definitions/2/opentrons_96_tiprack_1000ul/1.json Lines 1006 to 1007 in 03c3051
Off the top of my head, I'm not sure how the tip length gets set when you have two different tiprack definitions for the pipette, but I am thinking that if you do You can find more info on creating labware definitions here. |
Thank you! I've been going on the website labware library page and I didn't see any mention of custom tiprack definitions (only plate definitions) so I thought it was not implemented. But I'll try making a dummy definition to see what the behavior is. I might make my own definition for a |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
The problem reported in the original post still exists on robot software v4.2.1, Python Protocol API v2.9. metadata = {
'apiLevel': '2.9'
}
def run(protocol):
tip_rack = protocol.load_labware('opentrons_96_tiprack_300ul', 2)
plate = protocol.load_labware('corning_384_wellplate_112ul_flat', 1)
pipette = protocol.load_instrument('p300_multi_gen2', mount='right', tip_racks=[tip_rack])
pipette.pick_up_tip(tip_rack['A1'])
# Expected behavior: Move in an arc to 10 cm above the plate, then aspirate
# in place.
#
# Actual behavior: Move in an arc to the top of the plate, then move 10 cm
# straight up, then aspirate in place.
pipette.aspirate(300, plate['A1'].top(100))
pipette.return_tip(tip_rack['A1']) |
To make it easier for us to understand and keep track of this issue, I've hidden the comments in this thread that seem to be talking about other things. I don't mean to imply that those things are unimportant or not worthy of discussion—just that they're separate. If you're still seeing those problems on the latest robot software version (currently v4.2.1), please reach out to Opentrons Support or create a new GitHub issue—we want to fix them! |
MLM - address in future |
This is a motion planning bug in PAPIv2 that will likely not be changed due to the risk of causing unintended side-effects. The upcoming PAPIv3 has new motion planning logic that does not exhibit this behavior |
Overview
Working with a non-standard pipette tip length. I can calibrate to the new length just fine. However, if I also want to use standard pipettes in the same python protocol it is not currently possible. If I calibrate with a standard tip I can set the height via the location definition. However, when aspirating it first moves to the set calibration height before moving to the specified height above the well. This would smash the non-standard pipette tip into the deck.
Implementation details
I would propose that the robot calculates where to move and aspirate from it's current position instead of the calibration point if given a specific location or that if a
move_to()
call is used prior to anaspirate()
that the robot determines it's path based on it's current position instead of from the calibration position.Design
Ideally, I would like to calibrate and use a standard pipette tip along side a custom tip length. So calibrating with a standard tip length but specifying a custom aspirate height without smashing the custom tip would be helpful for some procedures. Ideally some custom setter to tell the robot when the tip is attached would be an added benefit. I'm currently just telling the OT-2 to pick up a tip from an empty location and then pausing to add the custom pipette.
Acceptance criteria
Pipetting from a set location above the well does not dip to calibration point before aspirating. Or other suitable workaround.
The text was updated successfully, but these errors were encountered: