This example code is for the Zaber microscope well plate loader demo,
which is a machine comprising a Zaber microscope with an X-ADR stage and X-LCA4 illuminator, a Mecademic robot arm
on an X-LRM stage as a range extender, and a VSR on top of an LSM stage to transport well plates from two stack
towers that use an X-SCA Process Controller to control solenoids that restrain the plate stacks.
The example demonstrates how Zaber stages can track analog input signals using a PID controller.
A PID controller is a control loop feedback mechanism widely used in industrial control systems.
It calculates the error between a desired setpoint and a measured process variable and applies a correction based on proportional, integral, and derivative terms.
In Zaber's case, the controller can move the stage to track the setpoint of the analog input signal.
Zaber only supports the PI controller, which is a simplified version of the PID controller without derivative term.
Often we want to capture high resolution images of samples which we cannot fit into a single camera frame. In situations like this it makes sense to create an image tileset: a collection of images which when joined form an ultra-high resolution representation of the sample in question.
This example demonstrates how to package a Python script that uses Zaber Motion Library with PyInstaller.
The script itself in main.py is a simple motion example.
This repository contains code to complement our article Motion Planning with Position-Velocity-Time. The cubic polynomial PVT algorithm
described in the article is implemented in Python, along with helper functions to automatically
generate missing parameters, plot the generated path and trajectory, and save the results
to a CSV file that is compatible with Zaber Launcher's PVT Viewer App.
When programming a 2D Cartesian gantry or XY system, it is often necessary to calibrate the stages for orthogonality, distortion, and stretch of each axis to achieve the accuracy required. The end goal is to be able to commanding the stage to go to a particular coordinate, and have the stage be on target.
The optimal strategy to scan a microwellplate is one where the scanning stage never pauses and images are acquired at regular intervals along the direction of travel. This can be accomplished by using a global shutter or Time Delay Integration (TDI) camera with a sufficiently short exposure to avoid motion blur.
To reduce the scan time even further, we can avoid communications latency by using hardware triggers and buffered commands onboard the stages themselves. This allows for a substantial speedup compared to a conventional well-plate scanning strategy.
To acquire a sharp image from a microscope requires that the sample be in focus. This is achieved by positioning the sample at the correct distance from the objective lens. The human eyes and brain are good at judging when an image is in focus, so a typical workflow here is to manually move the objective up and down, watching the resulting image until it looks good. However, this process is tedious, subjective, and requires a person to be present every time a slide or objective is changed.
This repository contains code to complement our article Input Shaping for Motion Control Vibration Reduction. Input shaping algorithms described in the article are implemented in Python, along with classes allowing them to be easily used with Zaber stages via the Zaber Motion Library API.
This example script demonstrates how to switch between different LED channels and change the illuminator intensity,
using the X-LCA4 lighting controller and MLR3 illuminaor for multi-channel imaging of flourescent targets using multiple fluorophores.