EVO 200 + PLR anyone running with backend patches for basic commands?

Hi all,

I recently started using the PLR on Tecan EVO 200 with the latest PLR (0.2.1). I see that PLR is a bit underdeveloped for EVO compared to Hamilton. I’ve had to override some EVOBackend methods to land each step, and I’d like a sanity check from anyone running a similar setup before I drift further from upstream.

One of the Main overrides:

  1. pick_up_tips() — sensor-based descent. The Z target from _liha_positions lands ~35 mm above the tip on our DiTi_3Pos + DiTi_1000ul_LiHa stack; pickup fails with (‘Tip not fetched’, ‘C5’, 25). I replaced it with a single AGT from self._z_range with a 150 mm search window, letting the tip-presence sensor halt descent. The upstream Z line carries # TODO: verify, so I suspect it was not validated against real DiTi geometry.
  2. drop_tips() — bypass _liha_positions for Trash targets. EVOBackend.drop_tips’s own assertion accepts Trash, but _liha_positions requires the parent to be TecanPlate / TecanTipRack, so lh.drop_tips([trash], …) raises. Mirror lines 689–690 directly when the target is Trash.

Two questions:

  • Anyone else running an EVO 200 (or sibling) on PLR in production? If you have a branch or fork with patches around tip pickup, drop-to-trash, or stop-parking, I’d love to diff against mine before adding more overrides.
  • For pick_up_tips() specifically: did _liha_positions work for you out of the box, or did you tune z_start per resource?

Happy to make contributions if I’m on the right direction

Thanks!

1 Like