Hamilton Deck LED

What is the plan for the LED indicators for the hamilton deck? I saw you want to detect carriers on loading tray.

# TODO:(command:CS) Check for presence of carriers on loading tray

I would like to take advantage of the LED on the deck to indicate where a carrier should be loaded. This would be helpful for users who are running a program to know where carriers should be placed. I added a function within deck.assign_child_resource that would turn on the LED for the respective rail position when a carrier is loaded onto the pylabrobot deck. Would this interfere with any other scripts?

1 Like

Hi @david.nedrud,

Perfect timing!: I just released the update to the autoload & 1D barcode reading features in STAR Autoload & 1D Barcode Scanning Upgrade #785 - which also removes this TODO :slight_smile:

You can find a full set of examples of the new features in the docs: User guide>Liquid Handling>Hamilton STAR>Using the autoload & 1D barcode reader

Could you please share the implementation?

This sounds very useful, we have…

STAR.set_loading_indicators(bit_pattern: List[bool], blink_pattern: List[bool])

…which could be used for this purpose. But you are suggesting to make it an argument to the assign command?

1 Like

Cool! Is the goal to have barcodes in the script that assign a name to a resource and then the user just loads it on to the deck in an arbitrary location and pylabrobot finds it? This would negate my feature.

https://github.com/PyLabRobot/pylabrobot/pull/786

2 Likes

If you wanted to, yes, you could definitely to that now, and it wouldn’t take too much time if you follow all the rules of Hamilton STAR 1D barcode reading (e.g. barcode has to be at z=219mm, barcode symbology has to be supported, barcode has to be on the right side of a plate, 1D barcode has to be perfectly horizontal, …) :sweat_smile:

Could you please elaborate on what your precise goal is, I am still not quite sure I understand it?

If it is to verify operators/users are placing everything in the correct place, I would recommend clearly dividing your ā€œautomated Protocolā€ (aP) into…

  • workcell setup (define everything in the workcell)
  • verification step (make the machine sense that everything is correct)

Or do you want ā€œuser instructionsā€ along the way of setting up the workcell physically?
i.e. a step that actively tells users ā€œPut tip carrier #5 with 3x 300uL tipracks in positions [0, 1, 2] and 2x 1000uL tipracks in position [3,4], onto rail 12ā€ - then LEDs should light up above rails [12, 13, 14, 15, 16, 17]?

(You can even write a while loop that checks the deck carrier sensor every second to see whether the carrier has been loaded, i.e. as soon as your operator moves this tip carrier into the back it would be triggered, leaving the while loop and continuing to the next verification command)

If yes, I would recommend integrating this into your ā€˜verification step’.

I do not recommend mixing computational and physical setup as this can easily lead to confusion of what has been verified.

1 Like

My goal was to highlight where a user should place carriers. Yes, it would be nice to have it actively ask the user to load a specific resource/carrier and the LEDs light up the carrier location. Then verify. Do you foresee any conflict with autoloading/barcode implementation? Thanks for the advice.

What are the LEDs used for in VENUS?

I would also be interested in helping with autoloading and barcode reading. Would you generate barcodes for plates and tubes that can then be read by the robot? Sounds challenging to position the barcodes. haha. Can you adjust the location of the barcode scanner so that is scans different heights or tilt the scanner? Would you want to integrate a label maker?

2 Likes

No - they seem very separate to me :slight_smile:

But for that I would just use the existing STAR.set_loading_indicators(bit_pattern: List[bool], blink_pattern: List[bool])
→ define carriers and assign to deck first, then the script has the knowledge of where everything has to go straight away;
after that: create a list of all carriers, loop through the list to [highlight the LEDs on the tracks needed (all information retrieved from the previously assigned carrier), prompt user to place the carrier onto the these tracks, prompt to click continue, verify placement straight away using the deck sensor → next ]

ā€œdisco modeā€ ? :joy:

Jokes aside, I’ve only ever seen them used for exactly the purpose you describe: create user prompts to load one carrier at a time, and use the LEDs to guide them (Coldplay-style)

but you could play 1D tic-tac-toe (frequency of blinking can indicate two entities)

I assume you mean ā€œcreate in house with a label printerā€ → ideally no: we’re talking here about 1D barcode (flimsy and old tech), I do not recommend printing them yourself.
If money is there, I’d buy plates with with pre-taped 1D barcodes. If money isn’t there buy a spool of premade barcodes of the correct dimension for the plate you need.
(everything changes for 2D barcodes because they are just easier to work with)

Also, Hamilton’s tip barcodes (come with every tiprack) are the most consistent 1D barcodes I’ve seen, so one less think to worry about :slight_smile:

No - the magic number is 219mm (to my knowledge)

I would actually really like that :slight_smile:

1 Like

Great! I attempted to do this. Take a look at this PR

That would be fun if set to music. haha

Ahh. That is unfortunate. What would you use the 1D barcode reader for? Just the carriers?

What if you just backed up the reader? The angle doesnt change and thus reading at a higher height… Not sure if the focus changes. This is my limited knowledge of how the reader works.

2 Likes

(venus would never but it wouldn’t be the first disco mode in PLR :eyes:)

1 Like