Skip to content

Probe z height using channel #69

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

Merged
merged 5 commits into from
Feb 23, 2024

Conversation

BioCam
Copy link
Contributor

@BioCam BioCam commented Feb 21, 2024

Hi everyone,

I've written a handy function that allows one to probe the surface of any (conductive) object on a STAR(let) deck, and thereby map out the precise dimensions of the object in an automated way using PLR. This effectively makes the STAR act as a Coordinate-Measurement Machine (CMM).

The first main aim of making this functionality available is to automate identification of precise z-values of different resources, and thereby help create more robust labware definitions for the PLR labware library.

A simple example of its use:

  • create a list of x positions
  • move each channel to a different y position
  • loop over your x positions, and loop over your channels to call lh.backend.probe_z_height_using_channel(chanel_index_as_int) to collect z height readings

For a bare MFX_CAR_base this allows you to generate the following 3-dimensional map:
240219_MFX_CAR_base_STARlet_measurements_12min_32sec
...each axis shows the absolute x, y, z position in relationship to the STAR's deck origin (which is at the left-front-100mm below the physical deck).

For safety purposes, I recommend using Hamilton 50ul tips for mapping surfaces. These are relatively long and soft, acting as 'cushions' in case you try out faster detection speeds (not recommended). Small bends are tolerated well by the 50ul tips. Metal teaching needles might enable more sensitive measurements but I have not tested them due to concerns about damaging the channels. (Please let us know if you try them out.)

Sensor accuracy for z-height readings needs to be further tested but in my hands has been at least 0.2 mm, showcasing the STAR's incredible hardware.

This allows you to

  • automatically identify the z-height of your labware, but extends further into
  • mapping surface flatness for GD&T validation,
  • will be useful for ad-hoc volume calculations of liquids in a well/container/tube on the deck (in synchrony with the optimised volume functions),
    ...and more (it might even be useful as a tool in more classic metrology settings)

@rickwierenga
Copy link
Member

pr 69 is unfathomably based

@rickwierenga rickwierenga force-pushed the main branch 11 times, most recently from 3fb7c7e to 99e82f4 Compare February 23, 2024 02:10
@rickwierenga rickwierenga merged commit 262eed3 into PyLabRobot:main Feb 23, 2024
@BioCam BioCam deleted the probe_z_height_using_channel branch February 24, 2024 17:24
@jkhales
Copy link
Contributor

jkhales commented Feb 29, 2024

amazing

@rickwierenga
Copy link
Member

The channel_idx argument here is 1-indexed. I think since this function uses PLR units, and is not a python wrapper around a single firmware command, it would be more correct to use plr-style 0-indexing. Shall I make a PR?

@rickwierenga rickwierenga mentioned this pull request Oct 26, 2024
@BioCam
Copy link
Contributor Author

BioCam commented Oct 26, 2024

The channel_idx argument here is 1-indexed. I think since this function uses PLR units, and is not a python wrapper around a single firmware command, it would be more correct to use plr-style 0-indexing. Shall I make a PR?

No need, I added exactly that fix in my overhaul of the entire probing functions upgrade in PR260.
I hope we can get that PR through soon :)

@rickwierenga
Copy link
Member

forgot that detail, thank you

rickwierenga added a commit that referenced this pull request Nov 13, 2024
* making STAR work as a CMM

* shortening long lines

* docstring swap (let channel quickly move away from detected object)

* always some whitespaces

* formatting

---------

Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants