I’m using PyLabRobot to control the OT-2 Robot from Opentrons, and I would like to express my appreciation to the developers for maintaining this excellent library.
I’ve been testing the robot’s basic functionalities with PyLabRobot, and I was able to successfully run the following tasks.
I have two questions related to offset calibration:
Is there an efficient method for calibrating the offset? I spent a significant amount of time manually adjusting the offset by running the same code with different offset values. It would be great if there were a way to calibrate offsets by moving the robot incrementally, similar to the interface in the Opentrons App, as this would save a lot of time.
Why is such a large offset required for the Z-axis? I needed to specify a 41 mm offset to pick up a tip correctly, which seems unusually large. Additionally, this value differs significantly from what I typically use in the Opentrons App. Is this expected, or could there be a specific reason for the discrepancy?
from pylabrobot.resources import Coordinate
await lh.backend.move_pipette_head(
Coordinate(x, y, z),
pipette_id="left",
force_direct=False, # True is faster but dangerous
)
No, this shouldn’t be the case.
I have had to apply
# ad-hoc offset adjustment that makes it smoother.
offset_z += 50
to get it to work for me. It has been a while since I worked with OT, but maybe i just never tested with 1000uL tips. The defined tip length for 1000uL tips is 88mm, which is close to 50 (our default) + 41 (your offset). I made a pull request here: use tip length in OT backend by rickwierenga · Pull Request #455 · PyLabRobot/pylabrobot · GitHub. Could you check it out and see if it works? I no longer work directly with OT.
The offset calibration aims to adjust the discrepancy between the expected position (i.e., where the robot expects the tips or wells to be) and the actual position. Since move_pipette_head() doesn’t take tips or wells as an argument, we need to manually calculate this discrepancy. Is it possible to obtain the xyz coordinates of the expected positions to help with this calculation?
I tested the pull request, and it performed as intended. The robot successfully picked up a tip with an offset of (0.6, -2.0, 2.0), which seems reasonable to me. Thank you for the fix!