Skip to content

Enhance StageOffset with the help of a calibration target #153

@beniroquai

Description

@beniroquai

We want to improve the user experience for the calibration of the Stage Offset and stepsize inside the StageCenterCalibrationController.py. For this we have a dedicated sample that has several features that are useful for us to calibrate the absolute stage position of the FRAME microscope as well as test feautres such as orientation of the camera and distance measurements as well as repeatibility features. WE want to enhance the backend to take these different patterns into account.

Stage Center calibration

The core idea remains the same. We have a hole in the ~center of the pcb which indicates an absolute position in terms of wellplate coordinates (X=63,81mm, Y=42,06mm, measured from the reference corner upper left). Once we reach this hole, we ensure that the offset of the stage is such that the position that is returned by the stage equals this value -> first reset the offset, then set it with these values by means of known position.

The procedure can be done manually (e.g. add an APIExport API endpoint) by telling the backend that we have reached the position, then the backend sets this value ((X=63,81mm, Y=42,06mm) permanently through the Positionermanager.

We also want to introduce an automatic feature aside from the spiral mode. (The spiral mode should follow the idea of setting the stage's position to that default value if nothing is supplied through additional parameters from the endpoint).
The new automatic feature first dues a homing of the stage in x/y with the user supplied parameters (e.g. those parameters that are stored in the positionercontroller/manager - e.g. call home_x/home_y. then the stage should move by 30 mm in x/y and then search for a white line after turning on a laser (chosen by the user) at a given intensity (chosen by the user). also the transmission light should be turned on. The contrast may be a little low and should be determined with a hough transform.
The algorithm, after moving to the 30mm offset position works the following:

  • move in positive x direction at steps of 1000µm and take a snapshot and scan for a line, if no line is visible, move +1000µm in x until we determine a line
  • once we see a line, we move in y direction +1000µm until we see a line (getlast Image)
  • Then we move in x direction until we see a line and so on
  • at one point the intensity in the image becomes very bright, we have reached the center of the stage. The transmission light should be turned off.
  • Now we need to search for rings using a hough transform and position the stage in x/y such that this ring is centered.
  • Once we are close enough to the center, the algorithm is done and it should set the stage's offset to (X=63,81mm, Y=42,06mm)
Image

We want to add a new endpoints that returns the frontside/backside as the following svg figures including the information about its dimensions (e.g. 127,76mm in X, 85,48mm in Y)

Maze

Then I want to have an additional function that is called start/stop maze that starts at position X=9.5, Y=11.5 and runs through the maze with 1000 µm steps in x/y following a list that has default values for x/y in the backend. Each time, we want to store the image in a tiff stack

Stepsize Calibration

At position X=105/Y=16mm we have the first hole of a 7x7 hole lattice with a spacing of 1mm. Take a scan across all 7x7 holes, take images and store them in a tiff stack for later analysis

384 wellplate calibration

On the backside, we have a micro wellplate pattern of a standard 384 wellplate with central coordinates. We want to scan random positions of the X=>1-24 Y=> A..P; pattern and store them in a tiffstack and compare their center positions of the central dots. The spacing is 4.5mm in X/Y, the first well is at X=12.2/Y=9mm.

drawing calibration front

Image

drawing calibration back

Image

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions