CO-RE-based labware movement discussion (PLR)

Hi everyone,

This is a branched discussion from Response to command R0QWid0006 to separate the conversation about how to use a Hamilton STAR without an iSWAP (which @rickwierenga has quickly fixed) from the discussion about CO-RE-based labware movement that emerged.

Thank you @ben for your CO-RE gripper implementation which looks fantastic.

After reading the pull request conversation I was wondering:

  1. Does the lh.move_plate(plate, plate_carrier[1], use_arm="core") command also allow lists of plate pickup and drop positions as arguments?

I saw that the original implementation of get_core, put_core was changed to the above command for cross-platform compatibility. However, when moving multiple plates, it would be quite time-consuming to park and collect the CO-RE grippers between every movement.

  1. What channels does use_arm="core" use? Could this be specified?

  2. CO-RE gripper “grip strength” is generated through the relative movement of the two channels that use the gripper. How is the grip strength currently defined?

No, it’s just a single plate to a single destination (whether a carrier spot, coordinate, or another resource). If you want to move multiple resources, you’ll have to call this function multiple times.

Yes. I just exposed these (expose channels to move_resource for core · PyLabRobot/pylabrobot@a1eca79 · GitHub): lh.move_resource(x, y, use_arm="core", channel_1=7, channel_2=8).

Exposed with: expose core_grip_strength · PyLabRobot/pylabrobot@b511e22 · GitHub : lh.move_resource(x, y, use_arm="core", core_grip_strength=15). The docs specify “Grip strength 0 = low … 99 = high”. 15 is Ben’s default (who is the only person using this in plr afaik), 30 is the default in the documentation.

2 Likes

return_core_gripper is also a parameter now.

1 Like

@rickwierenga thank you, those are some really useful updates.

In regards to stacking/nesting, I agree with @ben that simple offsets based on the labware used is likely the fastest way to execute the physical stacking.

But in regards to deck management, can the…

lh.summary()
Rail     Resource                   Type                Coordinates (mm)
===============================================================================================
(3)  ├── tip carrier                TipCarrier          (145.000, 063.000, 100.000)
     │   ├── tips_01                TipRack             (162.900, 145.800, 131.450)
     │   ├── <empty>
     │   ├── <empty>
     │   ├── <empty>
     │   ├── <empty>
     │
(15) ├── plate carrier              PlateCarrier        (415.000, 063.000, 100.000)
     │   ├── plate_01               Plate               (433.000, 146.000, 187.150)
     │   ├── <empty>
     │   ├── <empty>
     │   ├── <empty>
     │   ├── <empty>
     │
(32) ├── trash                      Trash               (800.000, 190.600, 137.100)

…method’s output be modified to incorporate stacking/nesting?
I could see the generation of new resource types called TipStack and PlateStack which in turn can contain the current TipRack and Plate types as their children, respectively.

In the end the lh.summary() method should then return something like…

Rail     Resource                   Type                Coordinates (mm)
===============================================================================================
(3)  ├── tip carrier                TipCarrier          (145.000, 063.000, 100.000)
     │   ├── tips_01                TipRack             (162.900, 145.800, 131.450)
     │   ├── NTR_300_clear          TipStack            (162.900, 145.800, 131.450)
     │   │   ├── tips_02a           TipRack             (162.900, 231.800, 131.450)
     │   │   ├── tips_02b           TipRack             (162.900, 231.800, 262.900)
     │   │   ├── tips_02c           TipRack             (162.900, 231.800, 394.350)
     │   ├── <empty>
     │   ├── <empty>
     │   ├── <empty>
     │
(15) ├── plate carrier              PlateCarrier        (415.000, 063.000, 100.000)
     │   ├── plate_01               Plate               (433.000, 146.000, 187.150)
     │   ├── <empty>
     │   ├── <empty>
     │   ├── <empty>
     │   ├── <empty>
     │
(32) ├── trash                      Trash               (800.000, 190.600, 137.100)

The aim is to allow (1) simplified plate hotel processing, and (2) increased tip capacity/deck enabled by a streamlined management of nested labware.

1 Like

TipStack and PlateStack are great ideas. I do see how this would make printing the layout and managing the stacks a lot easier.

1 Like

I am looking into ways into implementing TipStack and TipRack now. It will take a bit of time but is definitely doable, and to my knowledge, VENUS doesn’t even have a way to automatically loop through stacks (i.e. use all tips of the first rack, automatically remove the rack, use all tips of the second rack, …?) which would be possible with PLR when these new resources are implemented.

In the meantime, is there a simple way to give the lh.move_plate() function another argument like gripper_top_offset which tells the iSWAP/CO-RE grippers how far down (in mm) from the top of the plate it has to grip?

This would be very useful for automatically handling lid vs plate with lid movements (when I say “automatic” I mean both at the design and robot execution steps, and avoidance of hard coding).

Awesome!

The parameter is pickup_distance_from_top.

(Isn’t it easier to determine the resource type, perhaps using resource.category?)

Ahh thank you, I missed that when going through the codebase.

I don’t think I fully understand the question. Is there already a lid resource?

Is it or can it be connected to a plate/labware of any sorts, similarly to how channels have a tip_attached=True/False parameter (maybe with a @property decorator)?

Yessir. pylabrobot.resources.Lid — PyLabRobot documentation

Also yes, plates can be initialized with with_lid=True.

See

1 Like

This is fantastic. Thank you!

Last CO-RE gripper-based question I can think of atm: Is there an already implemented way or a plan to use the grippers to push a plate into the plate’s supposed position after transfer?
This would be equivalent to VENUS’ check plate exists option which can be activated before plate pickup and after a plate has been moved. It is incredibly useful after the plate has moved because the plate carrier’s springs occasionally prevent plates from sitting flush on the plate rack, the simple push from the top ensures their accurate placement.

I could imagine a push_into_position=False argument for the lh.move_plate(plate, plate_carrier[1], use_arm="core") method which if set to (y_inset, z_position, swap_speed) moves the grippers from the the save_travel_height down to the plate’s top z_position with the two grippers being the y_dimension of the labware - 2* y_inset apart?

I have heard about similar “flush-sitting” problems with integrated modules (particularly the Multi-Flow Positive Pressure Evaporative Extraction module, or [MPE]2™) which a simple push_into_position option could solve.

This option does not exist yet in PLR, but that sounds very useful.

I don’t see which firmware command would be used for that. Could you share a trc file of a VENUS run where you use this feature?

Yes, of course. I’ll be back in the lab in a couple of days and then send the trc file.

2 Likes

Hi @rickwierenga,

Here is a trc file of a quick VENUS-based plate movement that I quickly created for this forum thread.
It moves a standard 96-well plate from position “00” → position “01” and back, checking before every move that the plate is at the source location and after every move that the plate is at the destination position.

2024-01-02 10:30:22> SYSTEM : Analyze method - start; Method file C:\Users\labuser\Desktop\Mehods\240102_plate_moving_test_v1\240102_plate_moving_test_v1.hsl
2024-01-02 10:30:23> Microlab® STARlet : Communication - progress; Connection to instrument is created.
2024-01-02 10:30:24> SYSTEM : Analyze method - complete; 
2024-01-02 10:30:24> SYSTEM : Start method - start; 
2024-01-02 10:30:24> SYSTEM : Start method - progress; User name: labuser
2024-01-02 10:30:24> SYSTEM : Start method - progress; Phoenix software version: 4.5.0.7977
2024-01-02 10:30:24> SYSTEM : Start method - progress; Database version: Standard
2024-01-02 10:30:24> SYSTEM : Start method - progress; Sample tracking: On
2024-01-02 10:30:24> SYSTEM : Start method - progress; Vector Database: On
2024-01-02 10:30:24> SYSTEM : Start method - progress; Vector Database connection: Database 'HamiltonVectorDB' on Microsoft SQL Server 'LOCALHOST\HAMILTON' with user 'Hamilton'
2024-01-02 10:30:28> Microlab® STARlet : Start method command - start;
2024-01-02 10:30:28> Microlab® STARlet : Start method command - progress; Microlab® STARlet software version: 4.5.0.5217
2024-01-02 10:30:28> Microlab® STARlet : Start method command - progress; Serial number of Instrument: 864F
2024-01-02 10:30:28> Microlab® STARlet : Start method command - progress; Firmware version of main module: 8.5S 59 2018-05-15  
2024-01-02 10:30:28> Microlab® STARlet : Start method command - progress; Firmware version of 1000µl channels: 4.0E e LHL 2020-06-23 (LightHouseLabs Version), 4.0E e LHL 2020-06-23 (LightHouseLabs Version), 4.0E e LHL 2020-06-23 (LightHouseLabs Version), 4.0E e LHL 2020-06-23 (LightHouseLabs Version), 4.0E e LHL 2020-06-23 (LightHouseLabs Version), 4.0E e LHL 2020-06-23 (LightHouseLabs Version), 4.0E e LHL 2020-06-23 (LightHouseLabs Version), 4.0E e LHL 2020-06-23 (LightHouseLabs Version)
2024-01-02 10:30:28> Microlab® STARlet : Start method command - progress; Firmware version of auto load: 3.4S e 2016-05-02
2024-01-02 10:30:28> Microlab® STARlet : Start method command - progress; Firmware version of iSWAP: not installed
2024-01-02 10:30:30> Microlab® STARlet : Start method command - complete;
2024-01-02 10:30:30> SYSTEM : Start method - complete; 
2024-01-02 10:30:30> SYSTEM : Execute method - start; Method file C:\Users\labuser\Desktop\Methods\240102_plate_moving_test_v1\240102_plate_moving_test_v1.hsl
2024-01-02 10:30:30> USER : Trace - complete; ######################################################
2024-01-02 10:30:30> USER : Trace - complete; 
2024-01-02 10:30:30> USER : Trace - complete; Method: CO-RE Gripper Transport Test 2
2024-01-02 10:30:30> USER : Trace - complete; Version: 1
2024-01-02 10:30:30> USER : Trace - complete; Start date: 02.01.2024
2024-01-02 10:30:30> USER : Trace - complete; Author: Camillo Moschner
2024-01-02 10:30:30> USER : Trace - complete; 
2024-01-02 10:30:30> USER : Trace - complete; 
2024-01-02 10:30:30> USER : Trace - complete; ######################################################
2024-01-02 10:30:30> Microlab® STARlet : Initialize (Single Step) - start;
2024-01-02 10:30:30> Microlab® STARlet : Initialize (Single Step) - complete;  > channel 1: Waste,  > channel 2: Waste,  > channel 3: Waste,  > channel 4: Waste,  > channel 5: Waste,  > channel 6: Waste,  > channel 7: Waste,  > channel 8: Waste, 
2024-01-02 10:30:30> USER : Trace - complete; #######################################################
2024-01-02 10:30:30> USER : Trace - complete; 
2024-01-02 10:30:30> USER : Trace - complete; Plate back & forth
2024-01-02 10:30:30> USER : Trace - complete; 
2024-01-02 10:30:30> USER : Trace - complete; 
2024-01-02 10:30:31> Microlab® STARlet : 1000ul Channel CO-RE Grip Transport - start;
2024-01-02 10:30:31> Microlab® STARlet : 1000ul Channel CO-RE Grip Get Plate (Single Step) - start;
2024-01-02 10:30:43> Microlab® STARlet : 1000ul Channel CO-RE Grip Get Plate (Single Step) - complete;  > plate_position_00:
2024-01-02 10:30:43> Microlab® STARlet : 1000ul Channel CO-RE Grip Place Plate (Single Step) - start;
2024-01-02 10:30:55> Microlab® STARlet : 1000ul Channel CO-RE Grip Place Plate (Single Step) - complete;  > plate_position_01:
2024-01-02 10:30:55> Microlab® STARlet : 1000ul Channel CO-RE Grip Transport - complete;
2024-01-02 10:30:55> Microlab® STARlet : 1000ul Channel CO-RE Grip Transport - start;
2024-01-02 10:30:55> Microlab® STARlet : 1000ul Channel CO-RE Grip Get Plate (Single Step) - start;
2024-01-02 10:31:08> Microlab® STARlet : 1000ul Channel CO-RE Grip Get Plate (Single Step) - complete;  > plate_position_01:
2024-01-02 10:31:08> Microlab® STARlet : 1000ul Channel CO-RE Grip Place Plate (Single Step) - start;
2024-01-02 10:31:20> Microlab® STARlet : 1000ul Channel CO-RE Grip Place Plate (Single Step) - complete;  > plate_position_00:
2024-01-02 10:31:20> Microlab® STARlet : 1000ul Channel CO-RE Grip Transport - complete;
2024-01-02 10:31:20> SYSTEM : Execute method - complete; 
2024-01-02 10:31:20> SYSTEM : End method - start; 
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\HxMethodCopy.cfg (24/03/2004 16:52:48)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\HxServices.cfg (02/01/2024 10:20:41)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\HxStandardLanguage.cfg (11/07/2023 14:37:44)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\HxStarMaintAndVer.cfg (19/10/2023 13:22:06)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\HxStarMaintAndVerEnu.cfg (14/03/2017 11:27:44)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\HxVectorDb.cfg (11/07/2023 14:37:44)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\ML_Starlet.cfg (02/01/2024 10:25:43)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\ML_Starlet.dck (14/03/2017 12:14:42)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\ML_STARType.cfg (17/10/2023 18:42:24)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\ML_STARTypeEnu.cfg (02/12/2016 15:18:12)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Config\VectorDatabase_MSSQL.sql (09/03/2017 06:08:16)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\Corning-Costar\cos_96_rd.ctr (21/09/2006 07:18:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\Corning-Costar\Cos_96_Rd.rck (26/11/2009 13:24:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CO-RE-GRIP\coregriptool_onwaste_1000ul.ctr (26/11/2007 13:11:14)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CO-RE-GRIP\COREGripTool_OnWaste_1000ul.rck (26/11/2009 15:35:42)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CORE\teachingneedle5ml.ctr (29/11/2007 19:18:26)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CORE\TeachingNeedle5ml.rck (17/06/2008 18:19:28)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CORE\teachingneedleblock.ctr (30/10/2004 00:32:24)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CORE\teachingneedleblock.rck (17/06/2008 18:19:28)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CORE\verification.ctr (26/04/2007 15:20:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CORE\verification.rck (12/12/2007 23:27:46)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CORE\waste.ctr (30/10/2004 00:32:24)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CORE\waste2.rck (12/12/2007 23:27:46)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\CORE\WasteBlock.tml (22/03/2008 16:28:32)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\ht.ctr (29/10/2004 23:32:26)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\HTF_L.rck (06/12/2007 15:32:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\PLT_CAR_L5AC_A00.tml (12/12/2007 15:08:28)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\TIP_50ul.ctr (26/06/2008 18:05:42)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\TIP_50ulF_L.rck (06/12/2007 15:32:58)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Labware\ML_STAR\TIP_CAR_480_HT_A00.tml (12/12/2007 23:08:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLErrLib.hsl (09/03/2017 14:27:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLErrLib.stp (09/03/2017 14:27:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLFilLib.hsl (09/03/2017 14:27:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLFilLib.stp (09/03/2017 14:27:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLGCCMlStarStepLib.hs_ (14/03/2017 20:14:50)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLGCCMlStarStepLib.stp (14/03/2017 20:14:50)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLKitLotLib.hs_ (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLKitLotLib.hsl (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLKitLotLib.stp (07/04/2003 21:02:42)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMappingReportImpl.hs_ (09/03/2017 06:27:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMappingReportImpl.stp (09/03/2017 06:27:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMECCLib.hs_ (13/10/2017 15:00:07)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMECCLib.stp (13/10/2017 15:00:07)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMECCLibImpl.hs_ (05/09/2017 22:31:00)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMECCLibImpl.stp (05/09/2017 22:31:00)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMETEDLib.hs_ (09/03/2017 06:27:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMETEDLib.stp (03/07/2007 15:02:48)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMlStarCfgKeys.hs_ (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMlStarCfgKeys.stp (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMlStarDeckDef.hs_ (26/06/2013 21:36:20)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMlStarDeckDef.stp (26/06/2013 21:36:20)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMlStarStepReturnLib.hsl (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMlStarStepReturnLib.stp (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMthLibImpl.hs_ (09/03/2017 14:27:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLMthLibImpl.stp (09/03/2017 14:27:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLPTLLibImpl.hs_ (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLPTLLibImpl.stp (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLPTLStringTableEnu.hs_ (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLPTLStringTableEnu.stp (09/03/2017 16:19:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLSeqLib.hsl (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLSeqLib.stp (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLStringTableLib.hs_ (09/03/2017 06:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLStringTableLib.stp (09/03/2017 06:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLStrLib.hsl (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLStrLib.stp (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLSynLib.hs_ (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLSynLib.hsl (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLSynLib.stp (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLTipCountingLib.hsl (09/03/2017 16:19:56)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLTipCountingLib.stp (09/03/2017 16:19:56)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLTrcLib.hsl (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLTrcLib.stp (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLUtilLib.hsl (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLUtilLib.stp (09/03/2017 14:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLUtilLib2Def.hs_ (09/03/2017 06:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLUtilLib2Def.stp (09/03/2017 06:27:40)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDb.hs_ (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDb.stp (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbTracking.hsl (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbTracking.stp (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbTrackingDefs.hs_ (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbTrackingDefs.stp (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbTrackingImpl.hs_ (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbTrackingImpl.stp (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbWorklistManagement.hsl (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbWorklistManagement.stp (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbWorklistManagementDefs.hs_ (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbWorklistManagementDefs.stp (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbWorklistManagementImpl.hs_ (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\HSLVectorDbWorklistManagementImpl.stp (05/09/2017 22:31:34)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\SmartStepCustomizedErrorHandling\SmartStepCustomErrorHandling.hs_ (14/03/2017 20:14:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\SmartStepCustomizedErrorHandling\SmartStepCustomErrorHandling.hsi (14/03/2017 20:14:54)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Library\SmartStepCustomizedErrorHandling\SmartStepCustomErrorHandling.stp (13/12/2016 21:01:14)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLMECCLib.hs_ (29/11/2017 22:34:15)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLMECCLib.stp (10/06/2015 21:22:37)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLMECCLibEnu.hs_ (10/06/2015 21:22:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLMECCLibEnu.stp (10/06/2015 21:22:38)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLMthLib.hsl (23/07/2020 19:43:13)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLMthLib.stp (14/12/2017 12:50:30)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLPTLLib.hsl (18/02/2014 13:35:23)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLPTLLib.stp (18/02/2014 13:35:23)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLUtilLib2.hsl (14/12/2017 11:50:46)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\Methods\HSLUtilLib2.stp (14/12/2017 11:50:46)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\System\c--users-labuser-desktop-mehods-231004_hek_transfection_inhouse-240102_plate_moving_test_v1.adp (02/01/2024 10:26:37)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Program Files (x86)\HAMILTON\System\ML_STARNeedle.dat (02/01/2024 10:26:43)
2024-01-02 10:31:20> SYSTEM : End method - progress; Object referenced: File C:\Users\labuser\Desktop\Methods\240102_plate_moving_test_v1\240102_plate_moving_test_v1.sub (02/01/2024 10:28:50)
2024-01-02 10:31:21> Microlab® STARlet : End method command - start;
2024-01-02 10:31:21> Microlab® STARlet : Clean up instrument - progress; Move up 1000ul channels
2024-01-02 10:31:22> Microlab® STARlet : Clean up instrument - progress; Move down auto load Y drive
2024-01-02 10:31:23> Microlab® STARlet : Clean up instrument - progress; Spreading channels
2024-01-02 10:31:24> Microlab® STARlet : Clean up instrument - progress; Switch off loading lights
2024-01-02 10:31:25> Microlab® STARlet : End method command - complete;
2024-01-02 10:31:25> SYSTEM : End method - complete; 

I cannot see any specific reference to the firmware commands though.

In VENUS, the functionality we want to reproduce can be achieved through the 1000ul Channel CO-RE Grip Transport>Customizez>Place plate advanced>tick Check if plate exists.

Is there a simple PLR command to move a channel to a specific coordinate?

If so then we can simply use a lh.move_to_position() method towards the top of the plate we want to push flush with an offset for the height of the gripper, and add this method after every plate movement.

Thanks for the log file. Could you also share the firmware trace file? Probably named HxUsbComm*.trc. It should contain a lot of > and < in the first column.

Yup, check out STAR.prepare_for_manual_channel_operation and STAR.move_channel_{x,y,z}. These are used extensively in the resource locator program.

Hi @rickwierenga, thank you for the information, I’m looking more into the resource locator program at the moment.
The STAR.move_channel_{x,y,x} method appears to only move the pipette in one dimension by a given number of steps. Is there another lh.move_channel_to_coordinate() method that calculates the number of steps it has to take automatically?

I finally found the HxUsbComm20240102.trc file and uploaded it her.
Comparing it with the log file we are interested in the time period 10:30:31 (Transport start) - 10:31:20 (Transport complete).

I vaguely remember that Hamilton has a dictionary of what the different firmware commands stand for. Do you have access to it or have your own firmware-to-human language dictionary?

Requested access to the trc file.

These methods do take absolute coordinates (same space as Deck in PLR), although the option to move a number of steps also exists in the firmware.

As for a movement in 3D, I’m afraid that the x movement is controlled using a different internal module (just ‘master’, C0; or X0 on a lower level for the arm itself) than y and z (a channel, PX), this could be a problem. I don’t think the STAR by itself does it either.

I’m curious to see what it will look like in the log file.

My mistake, I tried them out now and see how they move to the specific single axis dimension.

Yes, that makes sense. I had discussions with Hamilton engineers previously about this actually because I wanted the Hamilton to dispense along a gcode, and they also told me that the axes are actuated through two different drives. To be honest, from a hardware perspective this makes a lot of sense since all channels are connected through the same arm, and some Hamilton configurations have multiple arms.

In the meantime I developed this “quick & dirty” code solution for pressing labware flush onto the carrier:

await lh.move_plate(plate_0, plt_car_1[0], 
                    use_arm="core", 
                    channel_1=1, channel_2=2, pickup_distance_from_top=7, core_grip_strength=65, return_core_gripper=False)

# move channels in y to inset position of labware
inset_in_mm = 8
bumper_y_front = plate_0.get_absolute_location().y+inset_in_mm
bumper_y_back = plate_0.get_absolute_location().y+plate_0.get_size_y()-inset_in_mm
await lh.backend.move_channel_y(channel=0,y=bumper_y_back)
await lh.backend.move_channel_y(channel=1,y=bumper_y_front)
# push labware flush to rack
pumper_z_height = plate_0.get_absolute_location().z+plate_0.get_size_z() - 1
await lh.backend.move_channel_z(channel=0,z=pumper_z_height)
await lh.backend.move_channel_z(channel=1,z=pumper_z_height)
await lh.backend.put_core()

I know it’s not particularly hardware agnostic (but it is labware agnostic). And it’s also suboptimal because
(a) the two “bumping” channels with the CO-RE gripper attached don’t move simultaneously, and
(b) it appears that there is a hidden indexing discrepancy: lh.move_plate() indexes the channels based on 1 while STAR.put_core() indexes based on 0… kinda dangerous and can lead to what I call “unintended labware meetups”.

But keeping this in mind, the above code reliably allows CO-RE-based labware movement.

2 Likes

Good find of the indexing discrepancy!

1 Like