From 7f7604b50679fbe8a2b42384da84b625e44468a7 Mon Sep 17 00:00:00 2001 From: beniroquai Date: Thu, 20 Jun 2024 15:28:17 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20c1835?= =?UTF-8?q?2f149a6d5588a116f64be4b9919e155d36b=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 8 +++---- ...ckpen-9cf48bfcc00e098078e888fd3f448fa2.gif | Bin 0 -> 593630 bytes assets/js/27c3a159.9c12ed4b.js | 1 + ...ae6a4.36566353.js => 608ae6a4.b4fe9852.js} | 2 +- assets/js/7f6a1755.5d17abb6.js | 1 + assets/js/7f6a1755.f9c91d8f.js | 1 - assets/js/935f2afb.4d4bf693.js | 1 + assets/js/935f2afb.65fd97b9.js | 1 - assets/js/f8cf7dc6.0d1609b6.js | 1 - assets/js/f8cf7dc6.f815f9b1.js | 1 + assets/js/main.e6045c25.js | 2 ++ ...CENSE.txt => main.e6045c25.js.LICENSE.txt} | 0 assets/js/main.ff59d2c4.js | 2 -- assets/js/runtime~main.a3ac549d.js | 1 + assets/js/runtime~main.b62e90c8.js | 1 - blog/archive/index.html | 8 +++---- blog/first-blog-post/index.html | 8 +++---- blog/index.html | 8 +++---- blog/long-blog-post/index.html | 8 +++---- blog/mdx-blog-post/index.html | 8 +++---- blog/tags/docusaurus/index.html | 8 +++---- blog/tags/facebook/index.html | 8 +++---- blog/tags/hello/index.html | 8 +++---- blog/tags/hola/index.html | 8 +++---- blog/tags/index.html | 8 +++---- blog/welcome/index.html | 8 +++---- .../APIDescription/Encoder/index.html | 8 +++---- .../APIDescription/Home/index.html | 8 +++---- .../APIDescription/INTRO/index.html | 8 +++---- .../APIDescription/LEDArray/index.html | 8 +++---- .../APIDescription/Motor/index.html | 8 +++---- .../APIDescription/PinConfig/index.html | 8 +++---- docs/Electronics/PS4-Controller/index.html | 8 +++---- .../UC2-ESP/Setup_Buildenvironment/index.html | 8 +++---- .../ESP32_Messaging_Callback/index.html | 8 +++---- .../UC2-REST/ESP32_Motor/index.html | 8 +++---- docs/Electronics/UC2-REST/INTRO/index.html | 8 +++---- docs/Electronics/uc2e1/index.html | 8 +++---- docs/Electronics/uc2e2/index.html | 8 +++---- docs/Electronics/uc2e3/index.html | 8 +++---- docs/Electronics/uc2e5.1/index.html | 8 +++---- docs/Electronics/uc2e5.2/index.html | 8 +++---- docs/Electronics/uc2e5/index.html | 8 +++---- docs/Electronics/uc2e6/index.html | 8 +++---- docs/Electronics/uc2e7/index.html | 8 +++---- docs/Electronics/uc2e8/index.html | 8 +++---- docs/Electronics/uc2e9/index.html | 8 +++---- docs/ImSwitch/DahengCamera/index.html | 8 +++---- docs/ImSwitch/ImSwitchClient/index.html | 8 +++---- docs/ImSwitch/ImSwitchConfig/index.html | 8 +++---- docs/ImSwitch/ImSwitchExperimental/index.html | 8 +++---- docs/ImSwitch/ImSwitchInstall/index.html | 8 +++---- .../ImSwitch/ImSwitchInstallUbuntu/index.html | 8 +++---- .../ImSwitchInstallWindows/index.html | 8 +++---- docs/ImSwitch/ImSwitchInstaller/index.html | 8 +++---- .../ImSwitchInstallerConda/index.html | 8 +++---- docs/ImSwitch/ImSwitchUpdate/index.html | 8 +++---- docs/Investigator/FlowStopper/index.html | 8 +++---- .../Lightsheet/LightSheet Sample/index.html | 8 +++---- .../Lightsheet/LightSheet/index.html | 8 +++---- .../Lightsheet/LightSheetOld/index.html | 8 +++---- .../LightsheetCalibration/index.html | 8 +++---- .../Investigator/STORM/Electronics/index.html | 8 +++---- .../STORM/Illumination/index.html | 8 +++---- docs/Investigator/STORM/Main/index.html | 8 +++---- docs/Investigator/STORM/Results/index.html | 8 +++---- docs/Investigator/STORM/Software/index.html | 8 +++---- docs/Investigator/STORM/Stability/index.html | 8 +++---- .../XYZMicroscope/AlignLaser/index.html | 10 ++++---- .../XYZMicroscope/FiveD_v1/index.html | 10 ++++---- .../XYZMicroscope/FiveD_v2/index.html | 10 ++++---- .../XYZMicroscope/FiveD_v3/index.html | 10 ++++---- .../XYZMicroscope/HistoScan/index.html | 10 ++++---- .../XYZMicroscope/MCTPlugin/index.html | 10 ++++---- .../XYZMicroscope/ROIScanner/index.html | 10 ++++---- .../SetupPhasecontrast/index.html | 10 ++++---- .../XYZMicroscope/SetupTubelens/index.html | 12 +++++----- .../XYZMicroscope/SmartMicroscopy/index.html | 22 ++++++++++++++++++ .../XYZMicroscope/StageCalibration/index.html | 12 +++++----- .../XYZMicroscope/StageScanning/index.html | 10 ++++---- .../ZMicroscope/UpackZMicroscope/index.html | 8 +++---- .../ProductionXYZMicroscope/index.html | 8 +++---- docs/PRODUCTION/Modules/APERTURES/index.html | 8 +++---- .../Modules/BEAMSPLITTER/index.html | 8 +++---- docs/PRODUCTION/Modules/Camera/index.html | 8 +++---- docs/PRODUCTION/Modules/Eyepiece/index.html | 8 +++---- docs/PRODUCTION/Modules/KIN_MIR_45/index.html | 8 +++---- docs/PRODUCTION/Modules/KIN_MIR_90/index.html | 8 +++---- .../Modules/KIN_XY_LASER/index.html | 8 +++---- docs/PRODUCTION/Modules/LENS/index.html | 8 +++---- docs/PRODUCTION/Modules/MIR_45/index.html | 8 +++---- .../Modules/POLARIZER_ROTATING/index.html | 8 +++---- .../Modules/SAMPLE_HOLDEr/index.html | 8 +++---- .../Modules/STAGE_Z_MANUAL/index.html | 8 +++---- .../Modules/STAGE_Z_NEMA/index.html | 8 +++---- docs/PRODUCTION/Modules/TORCH/index.html | 8 +++---- .../CHINESE/uc2miniboxCN/index.html | 8 +++---- .../DiscoveryCore/ENGLISH/CoreLens/index.html | 8 +++---- .../ENGLISH/CoreTelescope/index.html | 8 +++---- .../ENGLISH/coreMicroscope/index.html | 8 +++---- .../ENGLISH/uc2miniboxEN/index.html | 8 +++---- .../FRENCH/CoreLensFR/index.html | 8 +++---- .../FRENCH/CoreTelescopeFR/index.html | 8 +++---- .../FRENCH/coreMicroscopeFR/index.html | 8 +++---- .../FRENCH/uc2miniboxFR/index.html | 8 +++---- .../DiscoveryCore/GERMAN/CoreLens/index.html | 8 +++---- .../GERMAN/CoreTelescope/index.html | 8 +++---- .../GERMAN/coreMicroscope/index.html | 8 +++---- .../GERMAN/uc2miniboxDE/index.html | 8 +++---- .../DiscoveryCore/Opticsintro/index.html | 8 +++---- .../SPANISH/core_intro/index.html | 8 +++---- .../Smartphone Microscope/index.html | 8 +++---- .../ALIGNMENT_FinOptics/index.html | 8 +++---- .../ALIGNMENT_InfOptics/index.html | 8 +++---- .../MicroscopyCore/index.html | 8 +++---- .../Toolboxes/DiscoveryDiffraction/index.html | 8 +++---- .../Automation_intro/index.html | 8 +++---- .../Camera Setup/index.html | 8 +++---- .../XYZ_stage_mico/index.html | 8 +++---- .../seeedmicroscope/index.html | 8 +++---- .../spectrometer/index.html | 8 +++---- .../DiscoveryFluorescence/index.html | 8 +++---- .../InlineHolography/index.html | 8 +++---- .../Interferometer_intro/index.html | 8 +++---- .../MachZenderInterferometer/index.html | 8 +++---- .../MichelsonInterferometer/index.html | 8 +++---- .../SoftwareTutorial/index.html | 8 +++---- .../DPCmicroscopy/index.html | 8 +++---- .../DiscoveryPhaseMicroscopy/index.html | 8 +++---- .../index.html | 8 +++---- .../APP_POL_Circular_Polarizer/index.html | 8 +++---- .../APP_POL_Crossed_Polarizers/index.html | 8 +++---- .../index.html | 8 +++---- .../index.html | 8 +++---- .../index.html | 8 +++---- .../APP_POL_Stress_Birefringence/index.html | 8 +++---- .../APP_POL_Three_Polarizers/index.html | 8 +++---- .../DiscoveryPolarization/index.html | 8 +++---- docs/Toolboxes/index.html | 8 +++---- docs/WORKSHOPS/Workshop Nigeria/index.html | 8 +++---- docs/WORKSHOPS/index.html | 8 +++---- docs/intro/index.html | 8 +++---- index.html | 8 +++---- markdown-page/index.html | 8 +++---- search/index.html | 8 +++---- sitemap.xml | 2 +- 146 files changed, 564 insertions(+), 541 deletions(-) create mode 100644 assets/images/trackpen-9cf48bfcc00e098078e888fd3f448fa2.gif create mode 100644 assets/js/27c3a159.9c12ed4b.js rename assets/js/{608ae6a4.36566353.js => 608ae6a4.b4fe9852.js} (75%) create mode 100644 assets/js/7f6a1755.5d17abb6.js delete mode 100644 assets/js/7f6a1755.f9c91d8f.js create mode 100644 assets/js/935f2afb.4d4bf693.js delete mode 100644 assets/js/935f2afb.65fd97b9.js delete mode 100644 assets/js/f8cf7dc6.0d1609b6.js create mode 100644 assets/js/f8cf7dc6.f815f9b1.js create mode 100644 assets/js/main.e6045c25.js rename assets/js/{main.ff59d2c4.js.LICENSE.txt => main.e6045c25.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.ff59d2c4.js create mode 100644 assets/js/runtime~main.a3ac549d.js delete mode 100644 assets/js/runtime~main.b62e90c8.js create mode 100644 docs/Investigator/XYZMicroscope/SmartMicroscopy/index.html diff --git a/404.html b/404.html index e34737f17..412c75a9d 100644 --- a/404.html +++ b/404.html @@ -10,13 +10,13 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/assets/images/trackpen-9cf48bfcc00e098078e888fd3f448fa2.gif b/assets/images/trackpen-9cf48bfcc00e098078e888fd3f448fa2.gif new file mode 100644 index 0000000000000000000000000000000000000000..f73bc7590d04b62eb173979c64abeaa4676fac90 GIT binary patch literal 593630 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

roNC5Neh8=*#;5P<@IHki!hvou_4x@q9 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%0DhH>BYiw7 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%0AU>yEvjr&EBZ*5g0{C-ANQO{R0| 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%0D`uifekfbLX_`bcTJvQOH3A?F!UH`_MV+mK98)H) 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 CV0gHtT5ib@DpQ!Ky(D$CArj+Prkg5SS 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

b*)V?$slNo2M><@C$j}TNS*L<&PID0LcRjJ}BIl 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

  1. Proceed

  1. Wait until the packages are installed

  1. A command prompt will appear and ask you for granting admin rights; Here a python script tries to download and install the silabs USB UART drivers for the ESP32

  2. The installation will tell you if the installation process scussful

  1. In the next steps, all necessary packages in the environemnt for ImSwitch will be downloaded and installed

  1. The installer informs you once it's done

  1. Once everything has been installed, the installer tells you it'S done

  1. Exit the installer by hitting finish

  1. On the desktop a new icon has been created to start the ImSwitch software. Double click and wait until the windows shows up

Trouble shoot

The conda installer installs your environment in the location that you have selected previously. To find out, you can open a command line window by hiting the keys WIN+r and type "cmd" and enter. Then enter

conda env list

The name imswitchopenuc2 should appear. You can activate this python environemnt by typing

conda activate imswitchopenuc2

If this works successfully, you can start imswitch by typing

imswitch

Disclaimer

This is still very early stage and may have errors. Exepect Errors Feel free to file any issues in our repository or write us a mail. :)

- - + + \ No newline at end of file diff --git a/docs/ImSwitch/ImSwitchUpdate/index.html b/docs/ImSwitch/ImSwitchUpdate/index.html index ca95e8bd9..8bcae88aa 100644 --- a/docs/ImSwitch/ImSwitchUpdate/index.html +++ b/docs/ImSwitch/ImSwitchUpdate/index.html @@ -10,13 +10,13 @@ - - + +

ImSwitchUpdate

Updated openUC2 ImSwitch

In this guide, we'll walk you through the process of updating ImSwitch after you've installed it using pip. The update consists of three main steps:

  1. Updating the ImSwitch UC2 version
  2. Updating the UC2-REST
  3. Updating the UC2-ESP32 firmware

1. Updating the ImSwitch UC2 Version

Assumption: You have previously cloned the ImSwitch repository using git.

  1. Open your terminal.

  2. Activate the ImSwitch environment:

    conda activate imswitch
  3. Navigate to the directory where you cloned ImSwitch:

    cd <DIRECTORY/WHERE/YOU/DOWNLOADED/IMSWITCH>
  4. Pull the latest version from the repository and install:

    git pull https://github.com/openUC2/ImSwitch/
    pip install -e .

2. Updating the UC2-REST to Interface the UC2 Electronics

Assumption: You have previously cloned the UC2-REST repository using git.

  1. In the terminal, navigate to the directory where you cloned UC2-REST:

    cd <DIRECTORY/WHERE/YOU/DOWNLOADED/UC2-REST>
  2. Pull the latest version from the repository and install:

    git pull https://github.com/openUC2/UC2-REST/
    pip install -e .

3. Updating the UC2-ESP32 Firmware

  1. Visit the UC2 Firmware Page.
  2. Select the board you're using. If you're uncertain about this, feel free to reach out via email.
  3. Click on the "Connect" button.
  4. From the browser-provided list, select the COM port.
  5. Click on "Flash Firmware".
  6. Wait for the installation process to complete.
  7. Test the firmware on the UC2 Web Serial Test Page.
  8. Close the browser window to release the serial port.

Finally, you can start ImSwitch:

python -m imswitch
- - + + \ No newline at end of file diff --git a/docs/Investigator/FlowStopper/index.html b/docs/Investigator/FlowStopper/index.html index 5e608c7db..6f72df23f 100644 --- a/docs/Investigator/FlowStopper/index.html +++ b/docs/Investigator/FlowStopper/index.html @@ -10,13 +10,13 @@ - - + +

README

Setup Wifi Access Point on the Raspi

from: https://cdn-learn.adafruit.com/downloads/pdf/setting-up-a-raspberry-pi-as-a-wifi-access-point.pdf

sudo apt update
sudo apt -y upgrade # takes long
sudo apt install -y hostapd dnsmasq
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo DEBIAN_FRONTEND=noninteractive apt install -y netfilter-persistent iptablespersistent
sudo reboot
sudo nano /etc/dhcpcd.conf
-------
interface wlan0
static ip_address=192.168.4.1/24
nohook wpa_supplicant
sudo nano /etc/sysctl.d/routed-ap.conf
-------
sudo nano /etc/dnsmasq.conf
-------
interface=wlan0 # Listening interface
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
# Pool of IP addresses served via DHCP
domain=wlan # Local wireless DNS domain
address=/gw.wlan/192.168.4.1 # Alias for this router
- - + + \ No newline at end of file diff --git a/docs/Investigator/Lightsheet/LightSheet Sample/index.html b/docs/Investigator/Lightsheet/LightSheet Sample/index.html index 75f4ddadd..ca8e65485 100644 --- a/docs/Investigator/Lightsheet/LightSheet Sample/index.html +++ b/docs/Investigator/Lightsheet/LightSheet Sample/index.html @@ -10,8 +10,8 @@ - - + +
@@ -32,7 +32,7 @@ The openUC2 light-sheet microscope features motorized axes for enhanced control and precision:
  • The Z-axis adjusts the objective lens focus relative to the light-sheet plane.
  • The X axis moves the sample in the vertical direction with respect to the ground surface.
  • The Y axis shifts the sample parallel to the light-sheet plane.
  • The A axis moves the sample along the light-sheet plane, towards or away from the objective lens.
  • Each step corresponds to approximately 300nm in physical units, enabling fine-tuned movement and positioning.

We appreciate your engagement with the openUC2 light-sheet microscope and hope that these technical details enhance your understanding of the setup and its capabilities. Should you have any inquiries or require further assistance, please don't hesitate to reach out.

Protocol to align the light-sheet w.r.t. the focus plane

Alignment Protocol for Light-Sheet Microscope Focus Plane

Efficient alignment of the light-sheet with the microscope objective lens's focus plane is crucial for optimal imaging results. This protocol outlines the steps to achieve precise alignment using fluorescent markers and manipulation of the kinematic mirror.

Alignment Steps:

  1. Fluorescent Marker Setup:

    • Begin by ensuring that the light-sheet is coplanar with the microscope's objective lens field of view.
    • Use a fluorescent pen marker to label the embedding media, effectively visualizing the light-sheet.

  2. Activating the Laser:

  1. Visualizing the Light-Sheet:

    • With the laser activated, you should observe the light-sheet within the water chamber. Refer to the provided image for a reference.
  2. Kinematic Mirror Adjustment:

    • The three screws on the kinematic mirror in the right corner control the orientation of the light-sheet in 3D space.
    • Familiarize yourself with the degrees of freedom associated with these screws.

  1. Fundamental Considerations:
    • The cylindrical lens focuses the primary light-sheet in the backfocal plane of the illumination objective (4x, 0.1 NA).
    • Rotating the objective lens adjusts the orientation of the light-sheet.
    • The square orientation of the cylindrical lens ensures proper alignment with the detection objective lens.
    • The primary light-sheet exits the cylindrical lens at the center.
    • The kinematic mirror manipulates the light-sheet's position in the x and y directions, as well as introducing an offset.
    • Correct mirror alignment is crucial, placing it precisely at the diagonal center of the cube.
    • This central placement ensures that the primary light-sheet enters the objective lens's backfocal plane (BFP) at the center.
    • Such alignment results in the secondary illuminating light-sheet being parallel to the detection lens's focus plane.
    • Observe the effects of rotating the screws and adjust accordingly.

  1. Fluorescent Solution Application:
    • Utilize a syringe for convenient application of the fluorescent solution.

7. Sample Cube Handling:

  • The sample cube is magnetically held, facilitating easy removal for cleaning.

  • Take care as the sample cube's coverslips are relatively thin and can break.

Achieving precise alignment between the light-sheet and the objective lens's focus plane is critical for obtaining accurate imaging results. This protocol provides a systematic approach to optimizing your light-sheet microscope setup. For further assistance or questions, feel free to reach out to our community and support channels. Your engagement contributes to the ongoing refinement of the openUC2 light-sheet microscope system.

Finding the the focus (waiste) of the light-sheet

To effectively align the light-sheet in your setup, it's crucial to follow these two key steps:

Step 1: Centering the Sheet within the Field of View (FOV)

  1. Begin by ensuring that the waist of the light-sheet is positioned at the center of the microscope's field of view (FOV).
  2. To achieve this, the cylindrical lens needs to be temporarily removed. Carefully release the lower puzzle pieces to detach the cylindrical lens cube.

  1. With the cylindrical lens removed, a collimated beam should enter the back focal plane (BFP) of the illuminating objective lens.
  2. Adjust the kinematic mirror to guide the round beam, approximately 10mm in diameter, into the center of the BFP of the illuminating objective lens. This alignment should be parallel to the optical axis.

Step 2: Achieving Focus with the Detection Objective Lens

  1. Activate the camera, such as using Galaxy Viewer software that comes with the camera drivers, to observe the light-sheet's focus.
  2. The fluorescently labeled region should now exhibit a focused beam, perceptible to the naked eye.
  3. Initiate axial movement of the objective lens (Axis Z) using the online control website. You'll notice an increase in intensity at either the positive or negative direction until the light-sheet focus becomes visible within the field of view.

  1. To optimize focus, make fine adjustments to the kinematic mirror to direct the light-sheet beam if it's positioned too high or too low.
  2. It's common for the light-sheet's focus not to align precisely with the center of the FOV. In this case, carefully adjust the position of the illuminating objective lens along the cube axis to relocate the focus positions.
  3. Once you're content with the alignment, deactivate the laser and reinsert the cylindrical lens.
  4. Notably, this step doesn't need to be repeated each time the light-sheet is activated. The position of the cylindrical lens is relatively stable and doesn't require frequent recalibration.

Following these steps meticulously will ensure that the light-sheet is accurately aligned both within the FOV's center and in-focus with the detection objective lens. This alignment process is essential for obtaining reliable and high-quality imaging results with the openUC2 light-sheet microscope.

Once the cylindrical lens is back in, you can readjust the light-sheet wr.t. to the focus plane of the objective lens since they may be a slight variation after reassembly.

Brightfield imaging

In case you want to image the sample in transmisson mode, turn on the Neopixel LED that is connected to the sample cube and optionally remove the fluorescent filter by pulling it up and store it somewhere safe (dust and scratch free!).

Using the Fully Assembled Light-Sheet Microscope for Sample Imaging

Now that all components are meticulously aligned, the openUC2 light-sheet microscope is primed for sample imaging. Follow these steps to prepare and capture your fluorescent sample:

  1. Sample Preparation:

    • Begin by preparing your fluorescent sample according to the specified protocols.
    • Carefully follow the steps outlined in the dedicated sample preparation section within this document.
  2. Assembling the Sample Holder:

    • Loosen the nut that secures the syringe and insert the syringe into the sample holder.
    • Gradually lower the syringe so that the tip of the sample barely touches the light-sheet within the sample plane.

  1. Squeezing out the Agarose:
    • Squeeze out the agarose gently from the syringe while observing the sample, starting with brightfield imaging.
    • Monitor the camera's image stream to ensure the sample becomes visible within the field of view.

  1. Observing Brightfield Image:
    • If the sample isn't immediately visible, confirm its positioning within the sample cube and make minor adjustments in XYZ to bring it into view on the camera screen.
    • Once visible in brightfield, deactivate the LED light source.

  1. Switching to Laser Illumination:

    • Turn on the laser source, and initially, remove the fluorescent filter.
    • Adjust the imaging settings to enhance contrast and visibility, increasing intensity, exposure time, and/or camera gain until you obtain a clear, well-exposed image with minimal noise.
  2. Fine-tuning Laser Position:

    • Using bright scattering as a guide, locate the laser's position while ensuring you have reinserted the fluorescent filter.
    • Adjust the intensity as needed.
  3. Sample Positioning:

    • Manipulate the sample's position in XYZ space to center it on a region of interest.
  4. ImSwitch Scan and Reconstruction:

    • Utilize ImSwitch software's scan and reconstruction plugin to perform scans of your sample.
    • The specific scan and reconstruction process details are provided in the ImSwitch documentation.

This completes the procedure for imaging your fluorescent sample using the fully assembled openUC2 light-sheet microscope. With careful preparation and precise adjustments, you can capture high-quality volumetric images that offer valuable insights into the structure and behavior of your sample. Your engagement with the microscope's capabilities contributes to ongoing advancements in microscopic research and exploration.

ImSwitch data acquisition and Reconstruction

We assume the system is running and you were able to install ImSwitch on your computer. The configuration JSONfile that describes the light-sheet system can be found further down this document. A tutorial on how to install our ImSwitch Version (SRC: https://github.com/openUC2/ImSwitch/) can be either found in the imSwitch repository or in the ImSwitch section in this wiki.

Mount the sample on a metal tip

Glue the sample on an M5 set screw using super glue or blutek (non-safe, sample can fall off). Insects offer a great level of fluorescent signal due to autofluorescence and act as nice training samples that can simply hang down using this method

Sample preparation á la agarose-in-syringe method

SRC

Sample Preparation Protocol for openUC2 Light-Sheet Microscope Imaging: Fluorescently Labeled Zebrafish

This simplified protocol outlines the steps to prepare a fluorescently labeled zebrafish sample for imaging using the openUC2 light-sheet microscope. This method involves embedding the sample in an agarose cylinder for stable imaging in an aqueous environment. the "aquarium" or water-filled sample chamber is used to do refractive index matching as the sample would scatter too much light otherwise.

Materials Required:

  • 1.5% Agar
  • Glass capillary
  • Zebrafish embryo (some other volumetric, mostly clear sample that can be excited at 488nm)
  • Sample medium
  • Falcon tube or small beaker
  • syringe or FEP tube (optional, for increased stability)

Procedure:

Mounting in Free-Hanging Agarose Cylinder:

  1. Take the syringe and cut away the tip
  2. Melt 1.5% agar at 70ºC and maintain it at 37ºC.
  3. Insert the plunger into the syringe capillary, ensuring the white end barely protrudes and suck in enough agarose
  4. Gently place the zebrafish embryo into the already solidified agarose, minimizing the water content.
  5. Pull the plunger to draw up about 3cm (1 inch) of melted agarose.
  6. Carefully position the sample close to the capillary's end.
  7. Allow the agarose to set for 1-2 minutes.
  8. When ready to image, gently push the plunger down to extrude the agarose cylinder with the sample, placing it just outside the capillary for imaging.

Further tweaks for the system

These steps are not necessary, but help you to customize the microscope to better match your sample configuration.

Remove the xyz stage from the top

In case you want to do maintenance on the microscope, the xyz stage can easily be removed by releasing the M3x55mm screws from the bottom part. Therfore, remove the puzzle piece that has be mounted below the objective lens and release the 3 screws that mount the stage plate to the uppoer part of the microscope. You can now release the stage. In order to move it back on, do the reverse process.

Swap the sample mounting plate

In principle the XYZ stage can mount any sample geometry. We wanted to start with something and adapted the common syringe mount. Only two screws from below have to be released in order to swap the sample mount plate:

This part can be customized to adapt e.g. conventional sample slides

ImSwitch configuration for the ligth-sheet

{
"positioners": {
"ESP32Stage": {
"managerName": "ESP32StageManager",
"managerProperties": {
"rs232device": "ESP32",
"enableauto": 0,
"isEnable": 1
},
"axes": [
"X",
"Y",
"Z",
"A"
],
"forScanning": true,
"forPositioning": true
}
},
"rs232devices": {
"ESP32": {
"managerName": "ESP32Manager",
"managerProperties": {
"host_": "192.168.43.129",
"serialport_": "COM3",
"serialport": "/dev/cu.usbserial-A50285BI"
}
}
},
"lasers": {
"488 Laser": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDLaserManager",
"managerProperties": {
"rs232device": "ESP32",
"channel_index":1,
"filter_change": false,
"laser_despeckle_period": 10,
"laser_despeckle_amplitude": 0
},
"wavelength": 488,
"valueRangeMin": 0,
"valueRangeMax": 1024
},
"LED Matrix": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDLaserManager",
"managerProperties": {
"rs232device": "ESP32",
"channel_index": "LED",
"filter_change": false,
"filter_axis": 3,
"filter_position": 32000,
"filter_position_init": -0
},
"wavelength": 635,
"valueRangeMin": 0,
"valueRangeMax": 255
}
},
"detectors": {
"WidefieldCamera": {
"ExtPackage": "imswitch_det_webcam",
"analogChannel": null,
"digitalLine": null,
"managerName": "GXPIPYManager",
"managerProperties": {
"cameraListIndex": 1,
"gxipycam": {
"exposure": 20,
"gain": 0,
"blacklevel": 10,
"image_width": 1000,
"image_height": 1000
}
},
"forAcquisition": true,
"forFocusLock": true
}
},
"rois": {
"Full chip": {
"x": 600,
"y": 600,
"w": 1200,
"h": 1200
}
},
"LEDMatrixs": {
"ESP32 LEDMatrix": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDMatrixManager",
"managerProperties": {
"rs232device": "ESP32",
"Nx": 4,
"Ny": 4
},
"wavelength": 488,
"valueRangeMin": 0,
"valueRangeMax": 32768
}
},
"autofocus": {
"camera": "WidefieldCamera",
"positioner": "ESP32Stage",
"updateFreq": 10,
"frameCropx": 780,
"frameCropy": 400,
"frameCropw": 500,
"frameCroph": 100
},
"uc2Config": {
"defaultConfig": "pindefWemos.json",
"defaultConfig2": "pindefUC2Standalon2.json",
"defaultConfig1": "pindefUC2Standalon.json"
},
"mct": {
"monitorIdx": 2,
"width": 1080,
"height": 1920,
"wavelength": 0,
"pixelSize": 0,
"angleMount": 0,
"patternsDirWin": "C:\\Users\\wanghaoran\\Documents\\ImSwitchConfig\\imcontrol_slm\\488\\",
"patternsDir": "/users/bene/ImSwitchConfig/imcontrol_sim/488"
},
"dpc": {
"wavelength": 0.53,
"pixelsize": 0.2,
"NA":0.3,
"NAi": 0.3,
"n": 1.0,
"rotations": [0, 180, 90, 270]
},
"webrtc":{},
"PixelCalibration": {},
"availableWidgets": [
"Settings",
"Positioner",
"View",
"Recording",
"Image",
"Laser",
"UC2Config",
"Joystick",
"Lightsheet",
"LEDMatrix"
],
"nonAvailableWidgets":[
"STORMRecon",
"LEDMatrix",
"MCT",

"ImSwitchServer",
"PixelCalibration",
"Hypha",
"FocusLock",
"HistoScan",

"FocusLock"]
}
- - + + \ No newline at end of file diff --git a/docs/Investigator/Lightsheet/LightSheet/index.html b/docs/Investigator/Lightsheet/LightSheet/index.html index 7a26e1940..61d610024 100644 --- a/docs/Investigator/Lightsheet/LightSheet/index.html +++ b/docs/Investigator/Lightsheet/LightSheet/index.html @@ -10,8 +10,8 @@ - - + +
@@ -19,7 +19,7 @@ Z-stage for the objective lens

Almost Fully assembled UC2 Lighthseet microscope

Step 2: Light-Sheet Generation and Sample Preparation

The fiber-coupled laser emits light at a wavelength of 488 nanometers, which is ideal for exciting fluorescent molecules commonly used in biological imaging, such as green fluorescent protein (GFP). The collimated laser beam passes through a cylindrical lens, creating a one-dimensional focus with a width of approximately 10 mm.

The kinematic mirror allows precise control of the laser beam position, ensuring proper alignment. The lens further shapes the laser beam into an optical sheet, which is then directed into the sample plane by the four-fold objective lens.

The sample, such as a zebrafish embryo, is held in a small aquarium filled with water. The sample is positioned such that the light sheet intersects it, and fluorescence signals are emitted only where the light sheet illuminates.

Step 3: Image Acquisition

Using the XYZ stage, move the sample in the focal plane of the ten-fold objective lens. The camera will capture images as the sample is moved, allowing you to create a three-dimensional stack of the object. The long working distance of the objective lens allows sufficient space between the lens and the sample, reducing the potential for photodamage and phototoxicity.

Benefits of Light-Sheet Microscopy

Light-sheet microscopy offers several advantages for imaging biological samples:

  • Optical sectioning: The light-sheet illuminates only the focal plane, minimizing background noise and out-of-focus signals.
  • Reduced phototoxicity: With the sample illuminated only in the focal plane, light-sheet microscopy reduces photodamage and photobleaching, allowing long-term imaging of live samples.
  • High-speed imaging: Light-sheet microscopy enables rapid volumetric imaging, capturing dynamic processes in real-time.
  • High resolution: The combination of optical sectioning and minimal scattering allows for high-resolution imaging, revealing fine cellular structures.

Bill-of-Material

This is a list of components that are used in the latest version of the openUC2 light-sheet microscope. This is subject to changes. If you are interested to build one of these devices and need a kit, please, don't hesitate to contact us via Mail, Github or other channels :) Find more information on www.openuc2.com

CategoryAmountPartShopPrice (€)CommentQuantityURL/SourceAlternative
External Parts1Cylindrical lens, comarThorolabs1501Link
1Camera, monochrome, CMOSDaheng3501Link
1Focusing stage, micrometer, motorized (NEMA12)China1001Haoran
110x objective, NA0.3, long-working distanceUSA2501Link
1XYZ stage, AliExpress, micrometerChina2501LinkLink
3Motor for stageChina803LinkLink
1Tube lensChina2001Link
1Fiber laserChina2001HaoranLink
1MirrorPGI51Link
14x objective lens finiteChina101Haoran
1Fiber CollimatorChina1001Haoran
14BaseplatesopenUC2314
8CubesopenUC2510
1Solid baseplate (aluminium)openUC2-1
1Excitation filter (Thorlabs)Thorolabs1201Link
Inserts1Fiber Collimator MountopenUC251
1Cylindrical Lens MountopenUC251
145° Mirror Mount (kinematic)openUC2251
1RMS Lens MountopenUC251
1Sample mount (printed)openUC2301
1Base for XYZ StageopenUC221
1Sample mount for XYZ StageopenUC2151
1Holder for Z-stage motorizedopenuc2301
1Holder for TubelensopenUC2101
1Holder for UC2 ElectronicsopenUC2301
Electronics1Electronics, Powersupply, Stepper driveropenUC21001
2USB cables (camera, micro)Germany602
1Playstation ControllerGermany501
1Box + Foam insertopenUC21001Link
Labour & Shipping-Labour + Shipping-5001
TOTAL---2790-

The 3D printing files can be found here

Conclusion

Congratulations! You have successfully built a light-sheet microscope using the UC2 modular toolbox. This powerful technique allows you to acquire high-resolution three-dimensional images of samples like zebrafishes. With the ability to perform optical sectioning and minimal phototoxicity, light-sheet microscopy is a valuable tool for studying biological structures in 3D. You can now explore the fascinating world of 3D biological imaging and discover new insights into the complexities of life at the microscopic level. Happy imaging!

- - + + \ No newline at end of file diff --git a/docs/Investigator/Lightsheet/LightSheetOld/index.html b/docs/Investigator/Lightsheet/LightSheetOld/index.html index 6d9f81011..88f50fc80 100644 --- a/docs/Investigator/Lightsheet/LightSheetOld/index.html +++ b/docs/Investigator/Lightsheet/LightSheetOld/index.html @@ -10,8 +10,8 @@ - - + +
@@ -34,7 +34,7 @@

5. Use of filters
  • When using a correct filter between the Z-stage and the camera, it's possible to observe a fluorescent image of the sample.
  • Without filters you capture only the scattering image.

Imaging with the light sheet microscope

  • The focus of the detection path can be finely adjusted using the Z-stage motor (GUI - Z).
  • Z-series can be acquired by moving the sample (GUI - X) through the focused light sheet plane - Move the sample-stage in both directions, using the lens tissue as a sample, to observe how the camera image changes.
  • To acquire an image: Choose "Start experiment" on the right side of the screen, click "Custom" on the top right side and then "Snap" on the bottom right side.
  • To acquire a z-stack use the tomographic mode:

Results

What can you see with the simplest possible light sheet setup:

The result could look like this:

Zebra fish embryo

Participate!

Do you want to show your own results? Do you have ideas for improvements? Let us know!

- - + + \ No newline at end of file diff --git a/docs/Investigator/Lightsheet/LightsheetCalibration/index.html b/docs/Investigator/Lightsheet/LightsheetCalibration/index.html index 44ea684be..8f962478d 100644 --- a/docs/Investigator/Lightsheet/LightsheetCalibration/index.html +++ b/docs/Investigator/Lightsheet/LightsheetCalibration/index.html @@ -10,13 +10,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/Investigator/STORM/Electronics/index.html b/docs/Investigator/STORM/Electronics/index.html index 787637161..d37d4b05b 100644 --- a/docs/Investigator/STORM/Electronics/index.html +++ b/docs/Investigator/STORM/Electronics/index.html @@ -10,13 +10,13 @@ - - + +

Electronics

Here we make use of the ESP32 Wemos D1 R32 microcontroller board in combination with the CNC Shield v3. The wiring of the different components is straight forward as the Stepper Motors are attached to the stepper drivers and the Laser is triggered by the SpinEn pin. The NeoPixel LED mounts to the Hold pin.

Flashing the firmware

Go to the website https://youseetoo.github.io/ and choose the CNC board as the hardware configuration to flash the latest version of the Firmware. The PS3 controller's MAC address has to be setup with the PS Pairing tool. The actual MAC Address is printed out on the Serial monitor while the Board is booting up.

- - + + \ No newline at end of file diff --git a/docs/Investigator/STORM/Illumination/index.html b/docs/Investigator/STORM/Illumination/index.html index a30a63367..3fec7f41b 100644 --- a/docs/Investigator/STORM/Illumination/index.html +++ b/docs/Investigator/STORM/Illumination/index.html @@ -10,8 +10,8 @@ - - + +
@@ -112,7 +112,7 @@ represents 10 µm. Two CCPs have been zoomed in to plot the profiles along the red transparent line. Scale bar for the magnified regions of interest represents 200 nm.

- - + + \ No newline at end of file diff --git a/docs/Investigator/STORM/Main/index.html b/docs/Investigator/STORM/Main/index.html index 75c849bb3..9dda87266 100644 --- a/docs/Investigator/STORM/Main/index.html +++ b/docs/Investigator/STORM/Main/index.html @@ -10,8 +10,8 @@ - - + +
@@ -83,7 +83,7 @@

Mechanical stability of the setup

See the mechanical stability section of the repository.

Wide-field imaging, Live-cell imaging, Single molecule applications

See the Results section of the repository.

Get Involved

This project is open so that anyone can get involved. You don't even have to learn CAD designing or programming. Find ways you can contribute in CONTRIBUTING

License and Collaboration

This project is open-source and is released under the CERN open hardware license. Our aim is to make the kits commercially available. We encourage everyone who is using our Toolbox to share their results and ideas, so that the Toolbox keeps improving. It should serve as a easy-to-use and easy-to-access general purpose building block solution for the area of STEAM education. All the design files are generally for free, but we would like to hear from you how is it going.

You're free to fork the project and enhance it. If you have any suggestions to improve it or add any additional functions make a pull-request or file an issue.

Please find the type of licenses here

REMARK: All files have been designed using Autodesk Inventor 2019 (EDUCATION)

Collaborating

If you find this project useful, please like this repository, follow us on Twitter and cite the webpage or the publication! :-)

- - + + \ No newline at end of file diff --git a/docs/Investigator/STORM/Results/index.html b/docs/Investigator/STORM/Results/index.html index ad776155d..8619a76a9 100644 --- a/docs/Investigator/STORM/Results/index.html +++ b/docs/Investigator/STORM/Results/index.html @@ -10,8 +10,8 @@ - - + +
@@ -57,7 +57,7 @@ represents 10 µm. Two CCPs have been zoomed in to plot the profiles along the red transparent line. Scale bar for the magnified regions of interest represents 200 nm.

- - + + \ No newline at end of file diff --git a/docs/Investigator/STORM/Software/index.html b/docs/Investigator/STORM/Software/index.html index 18661e62f..b6e06d5b0 100644 --- a/docs/Investigator/STORM/Software/index.html +++ b/docs/Investigator/STORM/Software/index.html @@ -10,13 +10,13 @@ - - + +

Software

For the control and acquisition software, we use ImSwitch. This is an open-source software centered around Napari as a multi-layer viewer and a rich framework for QT-based widgets. We make use of the open-source localization framework "microEye" ()

Installation

For the installation we advise you to have a look at the ImSwitch repository here https://github.com/kasasxav/ImSwitch/

After setting up ImSwitch, you can enable STORM reconstruction in real time using the MicroEye Plugin by adding the following configuration to the ImSwitch config file that is located in ~/Documents/ImSwitchConfig/config/imcontrol_options.json

{
"setupFileName": "example_uc2_storm_alliedvision.json",
"recording": {
"outputFolder": "./ImSwitch/ImSwitch/recordings",
"includeDateInOutputFolder": true
},
"watcher": {
"outputFolder": "/Users/bene/ImSwitchConfig/scripts"
}
}

The setup file with the actual hardware configuration can be placed here:

~/Documents/ImSwitchConfig/imcontrol_setups/example_uc2_storm_alliedvision.json

{
"positioners": {
"ESP32Stage": {
"managerName": "ESP32StageManager",
"managerProperties": {
"rs232device": "ESP32"
},
"axes": [
"X",
"Y",
"Z"
],
"forScanning": true,
"forPositioning": true
}
},
"rs232devices": {
"ESP32": {
"managerName": "ESP32Manager",
"managerProperties": {
"host_": "192.168.43.129",
"serialport_windows": "COM5",
"serialport": "/dev/cu./dev/cu.SLAB_USBtoUART"
}
}
},
"lasers": {
"488 Laser": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDLaserManager",
"managerProperties": {
"rs232device": "ESP32",
"channel_index": 1,
"filter_change": false,
"laser_despeckle_period": 10,
"laser_despeckle_amplitude": 0
},
"wavelength": 488,
"valueRangeMin": 0,
"valueRangeMax": 1024
},
"635 Laser": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDLaserManager",
"managerProperties": {
"rs232device": "ESP32",
"channel_index": 2,
"filter_change": false,
"laser_despeckle_period": 10,
"laser_despeckle_amplitude": 0
},
"wavelength": 635,
"valueRangeMin": 0,
"valueRangeMax": 1024
},
"LED": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDLaserManager",
"managerProperties": {
"rs232device": "ESP32",
"channel_index": "LED",
"filter_change": false,
"filter_axis": 3,
"filter_position": 32000,
"filter_position_init": -0
},
"wavelength": 635,
"valueRangeMin": 0,
"valueRangeMax": 255
}
},
"detectors": {
"WidefieldCamera": {
"analogChannel": null,
"digitalLine": null,
"managerName": "AVManager",
"managerProperties": {
"cameraListIndex": 1,
"mocktype": "STORM",
"mockstackpath": "/Users/bene/Downloads/New_SMLM_datasets/ROI_cos7MT_AF647fluopaint.tif",
"avcam": {
"exposure": 0,
"gain": 0,
"blacklevel": 100,
"image_width": 1000,
"image_height": 1000,
"pixel_format": "Mono12"
}
},
"forAcquisition": true,
"forFocusLock": false
}
},
"rois": {
"Full chip": {
"x": 600,
"y": 600,
"w": 1200,
"h": 1200
}
},
"LEDMatrixs": {
"ESP32 LEDMatrix": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDMatrixManager",
"managerProperties": {
"rs232device": "ESP32",
"Nx": 4,
"Ny": 4
},
"wavelength": 488,
"valueRangeMin": 0,
"valueRangeMax": 32768
}
},
"autofocus": {
"camera": "WidefieldCamera",
"positioner": "ESP32Stage",
"updateFreq": 10,
"frameCropx": 780,
"frameCropy": 400,
"frameCropw": 500,
"frameCroph": 100
},
"availableWidgets": [
"Settings",
"View",
"Recording",
"Image",
"Laser",
"Positioner",
"Autofocus",
"STORMRecon"
]
}

ImSwitch in Action

Here you can find a tour on Youtube how to set up everything and what it can do.

https://www.youtube.com/watch?v=r8f-wmeq5i0

- - + + \ No newline at end of file diff --git a/docs/Investigator/STORM/Stability/index.html b/docs/Investigator/STORM/Stability/index.html index 4a622e7ae..d16cb7d93 100644 --- a/docs/Investigator/STORM/Stability/index.html +++ b/docs/Investigator/STORM/Stability/index.html @@ -10,8 +10,8 @@ - - + +
@@ -24,7 +24,7 @@ sigma value of the localized beads over the measurement duration. The sigma value correlates with the defocusing of the beads i.e. low changes in sigma suggest small fluctuations of the samples axial position.

- - + + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/AlignLaser/index.html b/docs/Investigator/XYZMicroscope/AlignLaser/index.html index 156e86abe..db09f35e7 100644 --- a/docs/Investigator/XYZMicroscope/AlignLaser/index.html +++ b/docs/Investigator/XYZMicroscope/AlignLaser/index.html @@ -10,13 +10,13 @@ - - + +
-

Aligning the Beamsplitter Cube

The new xyz microscope has a special 2x1 cube that holds the fluorescence optics. Inside the beamsplitter cube is mounted kinematically and can be adjusted with 3 set screws. It's important that the fiber coupled laser is focussed / reimaged in the back focal plane of the objective lens. Therefore, we have created a little tutorial to get you starting how this works.

- - +

Aligning the Beamsplitter Cube

The new xyz microscope has a special 2x1 cube that holds the fluorescence optics. Inside the beamsplitter cube is mounted kinematically and can be adjusted with 3 set screws. It's important that the fiber coupled laser is focussed / reimaged in the back focal plane of the objective lens. Therefore, we have created a little tutorial to get you starting how this works.

+ + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/FiveD_v1/index.html b/docs/Investigator/XYZMicroscope/FiveD_v1/index.html index bff5fa233..80d542c84 100644 --- a/docs/Investigator/XYZMicroscope/FiveD_v1/index.html +++ b/docs/Investigator/XYZMicroscope/FiveD_v1/index.html @@ -10,13 +10,13 @@ - - + +
-

openUC2 FiveD v1

Unpacking the microscope

The hardcover plastic case contains all you need for the microscope:

  • USB micro cable
  • USB3 camera cable
  • 12V power-supply
  • Sweet treat (optional ;D)
  • The actual microscope
  • The objective lens
  • The Illumination unit
  • A heavy Box

The actual Box looks like this:

Optional Please also find the treat and make sure you provide yourself with enough sugar throughout this unpacking routine :-)

The foam holds the microscope in place (the actual colour may differ from what you may see):

Remove the foam parts (please keep them for later reuse) to end up like this here:

Getting started

Mounting the illumination unit

For this you need a 2.5mm Hex key and the M3 cylindrical screws. Mount the LED Arm like so:

It should look like this:

Wiring up the microscope

First of all we need to wire up the microscope. For this we will start with the 12V power supply. Unfortunately the powersocket is inside the case, hence you have to first eat some candy in order to better find the spot ;-)

The USB Cable is permanently mounted to the ESP32 UC2e unit:

Note: Please make sure you have sufficient USB Power. In case the full LED array is turning on, it may happen that the ESP's voltage drops and the USB serial connection fails. A reconnect will help.

The same holds true for the USB connection to the microcontroller board. You need to hook it up like that:

Once done, we continue with inserting the objective lens. Eventually the lens is already inserted and you just need to check if the lens is centered correctly

Wire up the microscope to your computer

In order to get the microscope working, we first need to install additional drivers. For the Daheng Camera, this would be:

For additional information and an in-depth explanation for the UC2e system, please have a look here

- - +

openUC2 FiveD v1

Unpacking the microscope

The hardcover plastic case contains all you need for the microscope:

  • USB micro cable
  • USB3 camera cable
  • 12V power-supply
  • Sweet treat (optional ;D)
  • The actual microscope
  • The objective lens
  • The Illumination unit
  • A heavy Box

The actual Box looks like this:

Optional Please also find the treat and make sure you provide yourself with enough sugar throughout this unpacking routine :-)

The foam holds the microscope in place (the actual colour may differ from what you may see):

Remove the foam parts (please keep them for later reuse) to end up like this here:

Getting started

Mounting the illumination unit

For this you need a 2.5mm Hex key and the M3 cylindrical screws. Mount the LED Arm like so:

It should look like this:

Wiring up the microscope

First of all we need to wire up the microscope. For this we will start with the 12V power supply. Unfortunately the powersocket is inside the case, hence you have to first eat some candy in order to better find the spot ;-)

The USB Cable is permanently mounted to the ESP32 UC2e unit:

Note: Please make sure you have sufficient USB Power. In case the full LED array is turning on, it may happen that the ESP's voltage drops and the USB serial connection fails. A reconnect will help.

The same holds true for the USB connection to the microcontroller board. You need to hook it up like that:

Once done, we continue with inserting the objective lens. Eventually the lens is already inserted and you just need to check if the lens is centered correctly

Wire up the microscope to your computer

In order to get the microscope working, we first need to install additional drivers. For the Daheng Camera, this would be:

For additional information and an in-depth explanation for the UC2e system, please have a look here

+ + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/FiveD_v2/index.html b/docs/Investigator/XYZMicroscope/FiveD_v2/index.html index aecb73834..147a7033b 100644 --- a/docs/Investigator/XYZMicroscope/FiveD_v2/index.html +++ b/docs/Investigator/XYZMicroscope/FiveD_v2/index.html @@ -10,12 +10,12 @@ - - + +
-

openUC2 FiveD v2

Design Files

:::warn +

openUC2 FiveD v2

Design Files

:::warn https://github.com/openUC2/openUC2_XYZ_Stagescanning_Microscope/ :::

Version 2

This is a slightly updated version of the XYZ microscope that also includes fluorescence imaging. The here presented documentation has an extra feature since it can be operated vertically to image plants growing upwards. Also we use an adapter to mount Ropods magnetically.

Assembly

Open the Box:

Find the microscope and the cables:

The second layer has the controller and the microscope body: @@ -40,7 +40,7 @@

Carefully take the lens out:

In motion:

Veritcal Operation

Troubleshoot

We learn from mistakes. So lets start learning. The system is fully open, meaning, you can adjust and change the vast majority of the parts on your own. The entire system consists of the openUC2 frame / skeleton and the 3D printed housing to shield it from dust and light. By removing all M3 cylindrical screws, you can detach the housing from the inner structure to eventually repair or alter the system.

You can find a full description of how to dissassemble the microscope here: https://openuc2.github.io/docs/PRODUCTION/INVESTIGATOR/ProductionXYZMicroscope

In Action

We scanned arabidopsis in darkfield (LEDs >9 on):

Connecting the microscope to the browser and controll it

We encourage you to use the UC2ified ImSwitch software to control the microscope. You can find it in this repository: https://github.com/openUC2/ImSwitch/

However, if you want to quick-start the microscope and see if it works, you can open your browser and use the WEB-Serial interface to interact with the microscope.

Go to https://youseetoo.github.io/ and connect to your board (most right option saying ESP32 DEV-based UC2 standalone board V2). Select the COM Port which is holding the ESP32 and hit the LOG option, once the dialog opens. The alternative option will help you updating the firmware on the device. An in-depth explanation on how the firmware works can be found here.

In general, you need to send JSON strings in order to control the system. The strings relevant for the Z-microscope are:

Home the XY-axis

It's important to always home the Motors in order to avoid them from getting stuck in an end position (ATTENTION!). The following string will move the motor until the endstop is hit. Afterwards it will release the switch:

{"task":"/home_act", "home": {"steppers": [{"stepperid":1, "timeout": 2000, "speed": 15000, "direction":1, "endposrelease":3000}]}}

and

{"task":"/home_act", "home": {"steppers": [{"stepperid":2, "timeout": 2000, "speed": 15000, "direction":1, "endposrelease":3000}]}}

Afterwards the internal position is set to 0. You can check that by entering:

{"task": "/motor_get"}

Move the Z-axis:

The motor (Nema12) with 200 steps/revolution runs with 16 microstepps and offers a leadscrew with 1mm/revolution. Hence, one step corresponds to 312.5nm. Running the motor can be issued with the following command:

{"task":"/motor_act",
"motor":
{
"steppers": [
{ "stepperid": 3, "position": 1000, "speed": 15000, "isabs": 3, "isaccel":0}
]
}
}
  • stepperid: 3 correpsonds to the Z-axis
  • position: steps to go (not physical units!)
  • speed: steps / minute (do not exceed 20000)
  • isabs: absolute or relative motion
  • isaccel: for now, use only non-accelerated motion!

Safety

  • in case of shattered glass, make sure you don't cut yourself
  • Make sure you don't hurt yourself
  • The moving parts can potentially hurt your finger
  • The electronics - if used in a wrong way - can harm you
  • edges may be sharp, make sure you don't cut yourself
- - + + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/FiveD_v3/index.html b/docs/Investigator/XYZMicroscope/FiveD_v3/index.html index 98572db82..c7394152a 100644 --- a/docs/Investigator/XYZMicroscope/FiveD_v3/index.html +++ b/docs/Investigator/XYZMicroscope/FiveD_v3/index.html @@ -10,12 +10,12 @@ - - + +
-

openUC2 FiveD v3

Design Files

:::warn +

openUC2 FiveD v3

Design Files

:::warn https://github.com/openUC2/openUC2_XYZ_Stagescanning_Microscope/ :::

Version 3

This is a novel version of the XYZ microscope that also includes fluorescence imaging. It is not based on the UC2 cubes anymore but featues a monolithic body that is still 3D printed.

More information are comming soon!

Introduction

A first video explains the basic operation of the device

Software

The device runs using ImSwitch with the following Configuration. Find the ImSwitch Installer here: https://github.com/openUC2/ImSwitchInstaller/releases/tag/v0.0.2 (go to latest release)

Config

{
"positioners": {
"ESP32Stage": {
"managerName": "ESP32StageManager",
"managerProperties": {
"rs232device": "ESP32",
"isEnable": true,
"enableauto": false,
"stepsizeX": -0.3125,
"stepsizeY": -0.3125,
"stepsizeZ": 0.3125,
"homeSpeedX": 15000,
"homeSpeedY": 15000,
"homeSpeedZ": 15000,
"isDualaxis": true,
"homeDirectionX": 1,
"backlashXOld": 15,
"backlashYOld": 40,
"backlashX": 0,
"backlashY": 0,
"homeEndstoppolarityY": 0,
"homeDirectionY": -1,
"homeDirectionZ": 0,
"homeXenabled": 1,
"homeYenabled": 1,
"homeZenabled": 0,
"initialSpeed": {
"X": 15000,
"Y": 15000,
"Z": 15000
}
},
"axes": [
"X",
"Y",
"Z"
],
"forScanning": true,
"forPositioning": true
}
},
"rs232devices": {
"ESP32": {
"managerName": "ESP32Manager",
"managerProperties": {
"host_": "192.168.43.129",
"serialport": "COM5",
"baudrate":115200,
"debug":1
}
}
},
"lasers": {
"LED": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDLaserManager",
"managerProperties": {
"rs232device": "ESP32",
"channel_index": 1
},
"wavelength": 0,
"valueRangeMin": 0,
"valueRangeMax": 1023
},
"Laser 488": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDLaserManager",
"managerProperties": {
"rs232device": "ESP32",
"channel_index": 2
},
"wavelength": 635,
"valueRangeMin": 0,
"valueRangeMax": 1023
},
"Laser 635": {
"analogChannel": null,
"digitalLine": null,
"managerName": "ESP32LEDLaserManager",
"managerProperties": {
"rs232device": "ESP32",
"channel_index": 3
},
"wavelength": 488,
"valueRangeMin": 0,
"valueRangeMax": 1023
}

},
"detectors": {
"WidefieldCamera": {
"analogChannel": null,
"digitalLine": null,
"managerName": "HikCamManager",
"managerProperties": {
"isRGB": 1,
"cameraListIndex": 0,
"cameraEffPixelsize": 0.2257,
"hikcam": {
"exposure": 0,
"gain": 0,
"blacklevel": 100,
"image_width": 1000,
"image_height": 1000
}
},
"forAcquisition": true,
"forFocusLock": true
},
"Observer": {
"analogChannel": null,
"digitalLine": null,
"managerName": "OpenCVCamManager",
"managerProperties": {
"cameraListIndex": 1,
"cameraListIndexWIN": 0,
"isRGB":1,
"opencvcam": {
"exposure": 10
}
},
"forAcquisition": true
}
},
"autofocus": {
"camera": "WidefieldCamera",
"positioner": "ESP32Stage",
"updateFreq": 10,
"frameCropx": 780,
"frameCropy": 400,
"frameCropw": 500,
"frameCroph": 100
},
"mct": {
"monitorIdx": 2,
"width": 1080,
"height": 1920,
"wavelength": 0,
"pixelSize": 0,
"angleMount": 0,
"patternsDirWin": "C:\\Users\\wanghaoran\\Documents\\ImSwitchConfig\\imcontrol_slm\\488\\",
"patternsDir": "/users/bene/ImSwitchConfig/imcontrol_sim/488"
},
"PixelCalibration": {},
"focusLock": {
"camera": "WidefieldCamera",
"positioner": "ESP32StageManager",
"updateFreq": 4,
"frameCropx": 0,
"frameCropy": 0,
"frameCropw": 0,
"frameCroph": 0
},
"availableWidgets": [
"Settings",
"View",
"Recording",
"Image",
"Laser",
"Positioner",
"Autofocus",
"MCT",
"UC2Config",
"ImSwitchServer",
"PixelCalibration",
"HistoScan",
"ROIScan"
],
"nonAvailableWidgets": [
"STORMRecon",
"DPC",
"Hypha",
"FocusLock",
"HistoScan",
"FocusLock",
"FOVLock"
]
}

Assembly Instructions

Assembly of the Optics Cube

To begin the assembly of the microscope, the following components are needed:

  • The "ESP32 DEV-based UC2 standalone board V3"
  • Screws
  • Housing parts

Electronic components including a development board

Mount the middle plate with M3x12 screws:

Mounting the middle plate with screws

Ensure the screws are fixed properly on both sides. Also, cover the screws with non-conductive tape to prevent any shorts on the ESP32-based board side:

Covering screws with non-conductive tape

The top plate is attached with 8 screws on the red edges. Then, flip the microscope and attach the bottom plate with adhesive feet. For better stability, it is recommended to use 4 adhesive feet. Then the microscope can be placed upright again.

Attaching the top plate with screws Adhesive feet on the bottom plate

Assembly of the Optics Module (e.g., Camera)

Next, you will need the following parts:

  • Camera
  • Mirror
  • Parts for the camera module

The mirror is placed in the module.

Placing the mirror in the module @@ -33,7 +33,7 @@ the second spring ball now plays along

The last two fixed balls find their groove almost immediately before the front ball moves up its ramp to the pins

Final position. All fixed balls in their "pin yokes" and both spring balls press the optics module against them.

Final result

Safety

  • in case of shattered glass, make sure you don't cut yourself
  • Make sure you don't hurt yourself
  • The moving parts can potentially hurt your finger
  • The electronics - if used in a wrong way - can harm you
  • edges may be sharp, make sure you don't cut yourself
- - + + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/HistoScan/index.html b/docs/Investigator/XYZMicroscope/HistoScan/index.html index e899b6622..06ce6838c 100644 --- a/docs/Investigator/XYZMicroscope/HistoScan/index.html +++ b/docs/Investigator/XYZMicroscope/HistoScan/index.html @@ -10,15 +10,15 @@ - - + +
-

Histo Scanner Plugin Documentation

Welcome to the documentation page for the Histo Scanner Plugin, a powerful tool for scanning large areas and stitching images onto a large canvas. This page provides detailed information on how to configure and use the plugin effectively.

Overview

The Histoscanner Plugin integrates with the ImSwitch widget and controller to facilitate the scanning of large sample areas. Users can select a sample geometry and initiate scanning, which captures images and stitches them together to form a comprehensive view.

Initial Setup

Before starting a scan, ensure the following settings are configured correctly:

  • Pixel Size: Set in the setup.json file. This size must be calibrated, possibly using a ruler.
  • Step Size of Axis: Also set in the setup.json. It typically depends on the steps/mm defined by the leadscrew.
  • Sample Configuration File: An example file can be found here.

Scanning Process

The microscope will compute the scan area and the necessary scan stepsize on its own and will perform a snake scan. Alternatively you can provide a list of coordinates.

Once the scan is successfully initiated, the final output is displayed in a downscaled version on napari to conserve memory.

ImSwitch Configuration

The configuration settings for the detector and stage are crucial. Here are the JSON settings for both:

For the Stage

  "positioners": {
"ESP32Stage": {
"managerName": "ESP32StageManager",
"managerProperties": {
"rs232device": "ESP32",
"isEnable": true,
"enableauto": false,
"stepsizeX": -0.3125,
"stepsizeY": -0.3125,
"stepsizeZ": 0.3125,
"homeSpeedX": 15000,
"homeSpeedY": 15000,
"homeSpeedZ": 15000,
"isDualaxis": true,
"homeDirectionX": 1,
"backlashXOld": 15,
"backlashYOld": 40,
"backlashX": 0,
"backlashY": 0,
"homeEndstoppolarityY": 0,
"homeDirectionY": -1,
"homeDirectionZ": 0,
"homeXenabled": 1,
"homeYenabled": 1,
"homeZenabled": 0,
"initialSpeed": {
"X": 15000,
"Y": 15000,
"Z": 15000
}
},
"axes": [
"X",
"Y",
"Z"
],
"forScanning": true,
"forPositioning": true
}
}

For the Detector

  "detectors": {
"WidefieldCamera": {
"analogChannel": null,
"digitalLine": null,
"managerName": "HikCamManager",
"managerProperties": {
"isRGB": 1,
"cameraListIndex": 0,
"cameraEffPixelsize": 0.2257,
"hikcam": {
"exposure": 0,
"gain": 0,
"blacklevel": 100,
"image_width": 1000,
"image_height": 1000
}
},
"forAcquisition": true,
"forFocusLock": true
}

File Handling

  • Storing Metadata: All metadata is stored in the OME.TIF format.
  • Opening in Fiji: Files can be easily opened and stitched in Fiji by importing them as OME.TIF.
  • Opening in ASHLAR: Use the script developed during the openUC2 hackathon available here as a starting point for handling files in Ashlar.

Hardware/Software Setup

Correct orientation of the stage coordinates and camera coordinates is essential. The configuration ensures that the camera orientation matches the stage scanning positions.

In order to have correct orientation it's important that the stage coordinates and the camera coordaintes are matching. The below image shows how the camera has to be orietned w.r.t. the stage scanning positions +

Histo Scanner Plugin Documentation

Welcome to the documentation page for the Histo Scanner Plugin, a powerful tool for scanning large areas and stitching images onto a large canvas. This page provides detailed information on how to configure and use the plugin effectively.

Overview

The Histoscanner Plugin integrates with the ImSwitch widget and controller to facilitate the scanning of large sample areas. Users can select a sample geometry and initiate scanning, which captures images and stitches them together to form a comprehensive view.

Initial Setup

Before starting a scan, ensure the following settings are configured correctly:

  • Pixel Size: Set in the setup.json file. This size must be calibrated, possibly using a ruler.
  • Step Size of Axis: Also set in the setup.json. It typically depends on the steps/mm defined by the leadscrew.
  • Sample Configuration File: An example file can be found here.

Scanning Process

The microscope will compute the scan area and the necessary scan stepsize on its own and will perform a snake scan. Alternatively you can provide a list of coordinates.

Once the scan is successfully initiated, the final output is displayed in a downscaled version on napari to conserve memory.

ImSwitch Configuration

The configuration settings for the detector and stage are crucial. Here are the JSON settings for both:

For the Stage

  "positioners": {
"ESP32Stage": {
"managerName": "ESP32StageManager",
"managerProperties": {
"rs232device": "ESP32",
"isEnable": true,
"enableauto": false,
"stepsizeX": -0.3125,
"stepsizeY": -0.3125,
"stepsizeZ": 0.3125,
"homeSpeedX": 15000,
"homeSpeedY": 15000,
"homeSpeedZ": 15000,
"isDualaxis": true,
"homeDirectionX": 1,
"backlashXOld": 15,
"backlashYOld": 40,
"backlashX": 0,
"backlashY": 0,
"homeEndstoppolarityY": 0,
"homeDirectionY": -1,
"homeDirectionZ": 0,
"homeXenabled": 1,
"homeYenabled": 1,
"homeZenabled": 0,
"initialSpeed": {
"X": 15000,
"Y": 15000,
"Z": 15000
}
},
"axes": [
"X",
"Y",
"Z"
],
"forScanning": true,
"forPositioning": true
}
}

For the Detector

  "detectors": {
"WidefieldCamera": {
"analogChannel": null,
"digitalLine": null,
"managerName": "HikCamManager",
"managerProperties": {
"isRGB": 1,
"cameraListIndex": 0,
"cameraEffPixelsize": 0.2257,
"hikcam": {
"exposure": 0,
"gain": 0,
"blacklevel": 100,
"image_width": 1000,
"image_height": 1000
}
},
"forAcquisition": true,
"forFocusLock": true
}

File Handling

  • Storing Metadata: All metadata is stored in the OME.TIF format.
  • Opening in Fiji: Files can be easily opened and stitched in Fiji by importing them as OME.TIF.
  • Opening in ASHLAR: Use the script developed during the openUC2 hackathon available here as a starting point for handling files in Ashlar.

Hardware/Software Setup

Correct orientation of the stage coordinates and camera coordinates is essential. The configuration ensures that the camera orientation matches the stage scanning positions.

In order to have correct orientation it's important that the stage coordinates and the camera coordaintes are matching. The below image shows how the camera has to be orietned w.r.t. the stage scanning positions

Tutorials and Demonstrations

  • Tutorial on Matching Axes: A tutorial explaining the matching of different axes is available on YouTube.
  • Full Plugin in Action: Watch the plugin in action here.

Feel free to reach out with any queries or suggestions to enhance this documentation. Happy scanning with Histo Scanner! uUlJuI&ab_channel=openUC2

Tutorial that explains how the different axes can be matched

The Full plugin in action

- - + + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/MCTPlugin/index.html b/docs/Investigator/XYZMicroscope/MCTPlugin/index.html index 537d17e82..c6c43a747 100644 --- a/docs/Investigator/XYZMicroscope/MCTPlugin/index.html +++ b/docs/Investigator/XYZMicroscope/MCTPlugin/index.html @@ -10,13 +10,13 @@ - - + + - - +
+ + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/ROIScanner/index.html b/docs/Investigator/XYZMicroscope/ROIScanner/index.html index 916c2e971..d8d4864fb 100644 --- a/docs/Investigator/XYZMicroscope/ROIScanner/index.html +++ b/docs/Investigator/XYZMicroscope/ROIScanner/index.html @@ -10,13 +10,13 @@ - - + +
-

ROI Scanner

Starting ImSwitch on Ubuntu and Start the ROI Scanner

First of all: Open the terminal. Type the following (all case sensitive):

conda activate imswitch

sudo chown user:user /dev/ttyUSB0 # where user is the current user you're logged into (then enter password)

The USB port may differ, so perhaps also try this:

sudo chown veo:veo /dev/ttyUSB1
sudo chown veo:veo /dev/ttyUSB2

Then:

python -m imswitch

The images are stored in the working directory of the terminal.

- - +

ROI Scanner

Starting ImSwitch on Ubuntu and Start the ROI Scanner

First of all: Open the terminal. Type the following (all case sensitive):

conda activate imswitch

sudo chown user:user /dev/ttyUSB0 # where user is the current user you're logged into (then enter password)

The USB port may differ, so perhaps also try this:

sudo chown veo:veo /dev/ttyUSB1
sudo chown veo:veo /dev/ttyUSB2

Then:

python -m imswitch

The images are stored in the working directory of the terminal.

+ + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/SetupPhasecontrast/index.html b/docs/Investigator/XYZMicroscope/SetupPhasecontrast/index.html index b288bfe49..1cf1fdc53 100644 --- a/docs/Investigator/XYZMicroscope/SetupPhasecontrast/index.html +++ b/docs/Investigator/XYZMicroscope/SetupPhasecontrast/index.html @@ -10,12 +10,12 @@ - - + +
-

openUC2 Phase-Contrast Setup Tutorial

Introduction: Understanding Phase-Contrast Microscopy

Phase-contrast works by employing a unique ring-shaped illumination to highlight the specimen. The objective lens then features a corresponding ring-shaped phase apparatus located in its back focal plane. Light that doesn't scatter off the specimen is delayed and attenuated at the phase plate. This ensures that only scattered light is phase-shifted, leading to enhanced image contrast.

For those who want a deeper dive into the exact mechanics of Zernike phase-contrast, we recommend consulting external references. UC2 system's phase-contrast doesn't rely on traditional lens systems. Instead, a LED ring comprising three concentrically arranged rings facilitates the ring-shaped illumination. A specialized phase-contrast microscope objective, embedded with a positive phase ring in its rear focal plane, facilitates the necessary shift of the unscattered light.

Now, let’s get into the practical steps of setting up the UC2 system for phase-contrast.

Setting Up Phase-Contrast in the UC2 System

  1. Mount the LED Light Source
    +

    openUC2 Phase-Contrast Setup Tutorial

    Introduction: Understanding Phase-Contrast Microscopy

    Phase-contrast works by employing a unique ring-shaped illumination to highlight the specimen. The objective lens then features a corresponding ring-shaped phase apparatus located in its back focal plane. Light that doesn't scatter off the specimen is delayed and attenuated at the phase plate. This ensures that only scattered light is phase-shifted, leading to enhanced image contrast.

    For those who want a deeper dive into the exact mechanics of Zernike phase-contrast, we recommend consulting external references. UC2 system's phase-contrast doesn't rely on traditional lens systems. Instead, a LED ring comprising three concentrically arranged rings facilitates the ring-shaped illumination. A specialized phase-contrast microscope objective, embedded with a positive phase ring in its rear focal plane, facilitates the necessary shift of the unscattered light.

    Now, let’s get into the practical steps of setting up the UC2 system for phase-contrast.

    Setting Up Phase-Contrast in the UC2 System

    1. Mount the LED Light Source
      Begin by placing the LED light source above your sample.

    2. Detach the Camera
      Unscrew the camera from the metal flange.

    3. Turn on the Outer Ring
      Using our website interface, activate the outer LED ring. Looking through the lens at the location where the camera was mounted, you should be able to see this ring.

    4. Align the Illumination Ring with the Objective’s Phase Ring
      @@ -29,7 +29,7 @@ The cheek cells are relatively thick and cause some additional image degradation (i.e. multiple scattering)

      Using only the green line of the ring improves overall contrast and reduces the artifact

      Multiple cell layers visualized with the UC2 XYZ phase-contrast microscope

- - + + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/SetupTubelens/index.html b/docs/Investigator/XYZMicroscope/SetupTubelens/index.html index d76b6196b..4d320bb25 100644 --- a/docs/Investigator/XYZMicroscope/SetupTubelens/index.html +++ b/docs/Investigator/XYZMicroscope/SetupTubelens/index.html @@ -10,15 +10,15 @@ - - + +
-

openUC2 Setting up the tube lens

Introduction and Explanation

The tube lens in the openUC2 setup is a critical component responsible for transforming an object that is far away (approximately infinitely far away) into an image on the camera sensor. Proper calibration of the tube lens is essential to ensure that it produces a sharp and clear image. In this documentation, we will guide you through the process of setting up the tube lens for your openUC2 system.

To achieve optimal performance, you will need to follow these key steps:

  1. Adjust the CCTV lens to focus on objects at infinity.
  2. Fully open the aperture to maximize light collection.

Additionally, there is a small tool called "the crown" that facilitates the alignment of the ring components. You can download "the crown" tool from this link.

Procedure

Follow these steps to set up the tube lens for your openUC2 system:

1. Mount the Camera

Begin by mounting the camera using the C-mount onto the CCTV lens. Ensure that you include the spacer ring to align the image plane of the CCTV lens with the sensor plane of the camera.

2. Adjust the Image Plane

Make sure that the camera is securely attached to the CCTV lens, preventing it from turning or becoming loose.

3. Install "The Crown"

Insert "the crown" tool between the camera and the CCTV lens. This tool will assist in aligning the rings correctly.

4. Secure the Camera

Turn the camera clockwise, typically 2-3 full rotations, to fully secure it to the CCTV lens.

5. Open the Aperture

Rotate the camera counter-clockwise until the aperture is fully open. Ensure that the camera is parallel to the ground during this step to maximize light intake.

6. Focus to Infinity

Now, use "the crown" tool to turn the outer focus ring of the CCTV lens counter-clockwise. This adjustment will ensure that the CCTV lens is focused at infinity.

By following these steps, you will successfully set up the tube lens for your openUC2 system, allowing it to capture sharp and well-focused images. Remember to check and fine-tune your settings as needed to achieve the best results for your specific imaging requirements.

- - +web-share">

Introduction and Explanation

The tube lens in the openUC2 setup is a critical component responsible for transforming an object that is far away (approximately infinitely far away) into an image on the camera sensor. Proper calibration of the tube lens is essential to ensure that it produces a sharp and clear image. In this documentation, we will guide you through the process of setting up the tube lens for your openUC2 system.

To achieve optimal performance, you will need to follow these key steps:

  1. Adjust the CCTV lens to focus on objects at infinity.
  2. Fully open the aperture to maximize light collection.

Additionally, there is a small tool called "the crown" that facilitates the alignment of the ring components. You can download "the crown" tool from this link.

Procedure

Follow these steps to set up the tube lens for your openUC2 system:

1. Mount the Camera

Begin by mounting the camera using the C-mount onto the CCTV lens. Ensure that you include the spacer ring to align the image plane of the CCTV lens with the sensor plane of the camera.

2. Adjust the Image Plane

Make sure that the camera is securely attached to the CCTV lens, preventing it from turning or becoming loose.

3. Install "The Crown"

Insert "the crown" tool between the camera and the CCTV lens. This tool will assist in aligning the rings correctly.

4. Secure the Camera

Turn the camera clockwise, typically 2-3 full rotations, to fully secure it to the CCTV lens.

5. Open the Aperture

Rotate the camera counter-clockwise until the aperture is fully open. Ensure that the camera is parallel to the ground during this step to maximize light intake.

6. Focus to Infinity

Now, use "the crown" tool to turn the outer focus ring of the CCTV lens counter-clockwise. This adjustment will ensure that the CCTV lens is focused at infinity.

By following these steps, you will successfully set up the tube lens for your openUC2 system, allowing it to capture sharp and well-focused images. Remember to check and fine-tune your settings as needed to achieve the best results for your specific imaging requirements.

+ + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/SmartMicroscopy/index.html b/docs/Investigator/XYZMicroscope/SmartMicroscopy/index.html new file mode 100644 index 000000000..1f04052f7 --- /dev/null +++ b/docs/Investigator/XYZMicroscope/SmartMicroscopy/index.html @@ -0,0 +1,22 @@ + + + + + +Smart Microscopy Using openUC2 and ImSwitch | openUC2 Documentation + + + + + + + + + + +
+

Smart Microscopy Using openUC2 and ImSwitch

This tutorial will guide you through setting up a smart microscopy workflow using the openUC2 microscope and the ImSwitch software. We will perform a closed-loop experiment where the microscope follows a line based on image processing results.

Prerequisites

  1. ImSwitch Software: Ensure that ImSwitch is running and accessible. For example, if running on the same computer, the URL might be https://localhost:8002 (check logs for the exact port).
  2. SSL Certificate: Access the REST API (e.g., https://localhost:8002/docs) in a browser and accept the security warning to use the web viewer (https://youseetoo.github.io/imswitch/index.html). Enter the URL and port under connections.

Closed-Loop Feedback Pipeline

The pipeline will:

  1. Snap an image
  2. Create a background image
  3. Subtract the background
  4. Compute edges using the Canny filter
  5. Perform Hough transform to find straight lines
  6. Determine the mean orientation of the lines
  7. Compute the next XY coordinate to move
  8. Return to the initial position

Installation

Install the necessary package:

pip install https://github.com/openUC2/imswitchclient/archive/refs/heads/main.zip

Code Implementation

You can run the following code in a Jupyter notebook or Visual Studio Code. Adjust the client initialization to match your setup.

# Load dependencies
import cv2
import numpy as np
import tifffile as tif
import matplotlib.pyplot as plt
import os
import imswitchclient.ImSwitchClient as imc
import numpy as np
import matplotlib.pyplot as plt
import time
from simple_pid import PID

# Setup PID controller
controller = PID(2, 0.1, 2)
controller.send(None)

# Initialize the client
client = imc.ImSwitchClient(host="192.168.137.1", port=8002)

# Retrieve the first positioner's name and current position
positioner_names = client.positionersManager.getAllDeviceNames()
positioner_name = positioner_names[0]
currentPositions = client.positionersManager.getPositionerPositions()[positioner_name]
initialPosition = (currentPositions["X"], currentPositions["Y"])

# Loop through the process
for iimage in range(10):
# Snap image
scalingFactor = .5
pixel_to_stage = 1 / scalingFactor
gaussianKernel = 201
print("Taking image")
iImage = client.recordingManager.snapNumpyToFastAPI(scalingFactor)
mCrop = np.max(iImage.shape)
Ny, Nx = iImage.shape

# Remove background
mBackground = cv2.GaussianBlur(iImage, (gaussianKernel, gaussianKernel), 0)
iImage = iImage / mBackground
iImage = iImage[Nx//2-mCrop:Nx//2+mCrop, Ny//2-mCrop:Ny//2+mCrop]

# Process image
image = np.uint8(iImage * 255)[:, :, np.newaxis]
image[image > 100] = 0
edges = cv2.Canny(image, 50, 150, apertureSize=3)
lines = cv2.HoughLines(edges, 1, np.pi / 180, 100)

# Calculate main orientation
angles = [np.degrees(theta) for rho, theta in lines[:, 0]] if lines is not None else []
main_orientation = np.mean(angles)
dy = np.cos(np.radians(main_orientation)) * Nx / 2
dx = np.sin(np.radians(main_orientation)) * Ny / 2

# Handle NaN values
dx = dx if not np.isnan(dx) else np.random.randint(-100, 100)
dy = dy if not np.isnan(dy) else np.random.randint(-100, 100)

newPosition = (dx * pixel_to_stage, dy * pixel_to_stage)
print(f"We are moving the microscope in x:/y: {round(newPosition[0], 2)} / {round(newPosition[1], 2)}")

client.positionersManager.movePositioner(positioner_name, "X", newPosition[0], is_absolute=False, is_blocking=True)
client.positionersManager.movePositioner(positioner_name, "Y", newPosition[1], is_absolute=False, is_blocking=True)

# Return to the initial position
client.positionersManager.movePositioner(positioner_name, "X", initialPosition[0], is_absolute=True, is_blocking=True)
client.positionersManager.movePositioner(positioner_name, "Y", initialPosition[1], is_absolute=True, is_blocking=True)

Result

The microscope will follow a line for 10 steps and then return to the initial position.

Result

This workflow demonstrates a basic smart microscopy setup using openUC2 and ImSwitch, allowing for closed-loop experiments based on real-time image processing. Adapt and expand this pipeline for your specific experiments and applications.

+ + + + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/StageCalibration/index.html b/docs/Investigator/XYZMicroscope/StageCalibration/index.html index da8120e37..250faaffe 100644 --- a/docs/Investigator/XYZMicroscope/StageCalibration/index.html +++ b/docs/Investigator/XYZMicroscope/StageCalibration/index.html @@ -10,15 +10,15 @@ - - + +
-

Stage Mapping and Stage Calibration

Stage Coordinates

In this tutorial, we will guide you through the process of aligning the coordinate systems for the UC2 microscope stage. Proper alignment ensures that the movement of the stage corresponds accurately with the image displayed on the screen, facilitating an intuitive user experience. In principle all of this can be handled in software (e.g. flipping the camera image, changing stage axis), but it's always good to start with a common ground from the hardware side.

+

Stage Mapping and Stage Calibration

Stage Coordinates

In this tutorial, we will guide you through the process of aligning the coordinate systems for the UC2 microscope stage. Proper alignment ensures that the movement of the stage corresponds accurately with the image displayed on the screen, facilitating an intuitive user experience. In principle all of this can be handled in software (e.g. flipping the camera image, changing stage axis), but it's always good to start with a common ground from the hardware side.

This is the microscope (UC2 XYZ v3) with the ingredients controlled by ImSwitch

Alignment of Axes

The goal of aligning the coordinate systems is to ensure they are correctly matched. The alignment of the stage is considered from the origin point (zero point). The desired behavior is as follows:

  • When the stage moves to the right (x+), the image on the screen should also move to the right.
  • When the stage moves upwards (y+), the image on the screen should move upwards as well.

This is illustrated in the following Figure. When viewing the sample from above with the microscope positioned in front, the image should match what is shown in Imswitch. -This is also represented by the VirtualMicroscope with the VirtualStage and VirtualCamera in this config (Config: https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json).

Understanding Axes in NumPy

It's important to note the labeling of axes. In NumPy, x = 1 and y = 0. This means:

  • The x-axis is the second axis (index 1) of an array.
  • The y-axis is the first axis (index 0) of an array.

NumPy arrays are multidimensional, with axes numbered as follows:

  • Axis 0 is the first axis (often the vertical direction).
  • Axis 1 is the second axis (often the horizontal direction).

Stage Coordinate System

When viewing the stage from above, the coordinate system is arranged as follows:

  • X-Axis (Horizontal)
    • Positive direction: Right
    • Negative direction: Left
  • Y-Axis (Vertical)
    • Positive direction: Up
    • Negative direction: Down

Aligning Axes with Imswitch

To enable intuitive operation, the stage and camera axes must be correctly aligned with the coordinate system in Imswitch. To achieve this, the commands "flip x" and "flip y" are used. These commands invert the direction of the axes in the coordinate system, meaning that movement or position along the axes is reversed.

Steps for Aligning Axes:

  1. Initial Setup:

    • Ensure the microscope and stage are properly connected to the control software (e.g., Imswitch).
  2. Define Origin:

    • Identify the origin (zero point) of the stage coordinate system. (in Hardware this would be defined by the Endstops that are used for homing the axes; The motor will run - if the direction is set correctly - until it hits the switch)
  3. Test Movement:

    • Move the stage to the right and observe the direction of the image on the screen.
      • If the image moves left, apply the "flip x" command.
    • Move the stage upwards and observe the direction of the image on the screen.
      • If the image moves down, apply the "flip y" command.
  4. Adjust Axes:

    • Use the following commands as needed to align the axes:

      # Flip the x-axis if necessary
      if x_movement_incorrect:
      stage.flip_x()

      # Flip the y-axis if necessary
      if y_movement_incorrect:
      stage.flip_y()
  5. Verify Alignment:

    • After applying the flips, verify that the stage movements correspond correctly with the image movements on the screen.
  6. Save Configuration:

    • Save the configuration settings to ensure the alignment persists across sessions.

Stage Calibration

Richard Bowman and his team provided a very nice way to calibrate stage coordinates to camera pixel coordinates. We burtally integrated the open-source software which you can find here: https://gitlab.com/openflexure/microscope-extensions/camera-stage-mapping into ImSwitch. If you activate the HistoScan Controller and Widget you can start it either by the GUI or using the HTTP interface by calling http://localhost:8002/HistoScanController/startStageMapping (URL and PORT may differ). What the stage will do is moving a certain series of steps in XY, performs a cross-correlation of the images and computes the shift in XY of the mciroscope image on the camera, compares it to the expected shift on and returns the Image-To-Stage-Displacement Matrix as well as the Backlashvector. Both matrices/vectors are microscope specificand will help you matching e.g. stage coordinates for stitching software such as ASHLAR or OFM Stitching. This document should give you a rough idea of what's happening.

Some terminology:

  • Combine X and Y calibrations: The calibration involves combining two separate measurements or calibration runs for the x and y directions, ensuring that the directions are orthogonal (at right angles to each other).

  • 2x2 transformation matrix: The image_to_stage_displacement matrix maps image displacements to stage displacements. This ensures that movements in the image coordinate system are accurately translated to movements in the stage coordinate system.

  • backlash_vector: This is a vector estimating the backlash (mechanical slack or play in the system) in each direction. In this case, the estimated backlash is zero, indicating a precise calibration with no noticeable mechanical play.

  • backlash: The function is expected to return the highest element of backlash_vector as a scalar value, which would be zero in this case.

Interpreation of the Matrix

Calibration Matrix image_to_stage_displacement

The entries of the calibration matrix image_to_stage_displacement can be given specific names and meanings based on their positions within the matrix. Let's denote the matrix as follows:

image_to_stage_displacement=(01.01.00)\text{image\_to\_stage\_displacement} = \begin{pmatrix} 0 & -1.0 \\ -1.0 & 0 \end{pmatrix}
(abcd)\begin{pmatrix} a & b \\ c & d \end{pmatrix}

Entries and Their Names

  1. a (0):

    • Name: a
    • Meaning: Represents the scaling factor from the x-coordinate in the image to the x-coordinate in the stage. Here, it is 0, indicating no direct mapping from image x to stage x.
  2. b (-1.0):

    • Name: b
    • Meaning: Represents the scaling factor from the y-coordinate in the image to the x-coordinate in the stage. The value -1.0 indicates an inverse and slightly scaled mapping from image y to stage x.
  3. c (-1.0):

    • Name: c
    • Meaning: Represents the scaling factor from the x-coordinate in the image to the y-coordinate in the stage. The value -1.0 indicates an inverse and slightly scaled mapping from image x to stage y.
  4. d (0):

    • Name: d
    • Meaning: Represents the scaling factor from the y-coordinate in the image to the y-coordinate in the stage. Here, it is 0, indicating no direct mapping from image y to stage y.

Summary of the Matrix Entries

  • a (0): No direct mapping from image x to stage x.
  • b (-1.0): Inverse mapping from image y to stage x.
  • c (-1.0): Inverse mapping from image x to stage y.
  • d (0): No direct mapping from image y to stage y.

This calibration matrix indicates that there is a transformation involving a 90-degree rotation combined with an inverse scaling factor slightly above 1 between the image coordinates and the stage coordinates. The exact interpretation may depend on the specific application, but generally, it implies that movements in one direction in the image are mapped to movements in the perpendicular direction on the stage with a slight scaling adjustment.

Interpretation of the Values

The following simulation of the VirtualMicroscope inside ImSwitch (Config: https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json):

The result of the stage mapping is a json file containing (under /ImSwitch/calibFile.json) the following important element:

    "camera_stage_mapping_calibration": {
"backlash": 0.0,
"backlash_vector": [
0.0,
0.0,
0.0
],
"image_to_stage_displacement": [
[
0.0,
-1.0
],
[
-1.0,
0.0
]
]
}

The provided matrices explains transforming image coordinates to stage coordinates and estimating backlash. Let's break down the interpretation of the entries:

1. image_to_stage_displacement Matrix

mData["camera_stage_mapping_calibration"]["image_to_stage_displacement"] =
array([[ 0. , -1.00135997],
[-1.00135997, 0. ]])

This matrix is a 2x2 transformation matrix used to map image coordinates to stage coordinates. Each entry in this matrix has a specific meaning:

  • [0,0] = 0: There is no direct transformation of the x-coordinate in the image to the x-coordinate in the stage.
  • [0,1] = -1.00135997: The y-coordinate in the image inversely affects the x-coordinate in the stage.
  • [1,0] = -1.00135997: The x-coordinate in the image inversely affects the y-coordinate in the stage.
  • [1,1] = 0: There is no direct transformation of the y-coordinate in the image to the y-coordinate in the stage.

The presence of -1.00135997 off-diagonal elements indicates that the transformation involves a negative and approximately unit scaling between the coordinates, implying a possible 90-degree rotation combined with a scaling factor close to -1.

2. backlash_vector Matrix

mData["camera_stage_mapping_calibration"]["backlash_vector"] =
array([ 0., 0., 0.])

This vector represents the estimated backlash in each direction (x, y, and possibly z, though z is not utilized in a 2D context). Here, all elements are zero, indicating no measurable backlash in the x and y directions.

- - +This is also represented by the VirtualMicroscope with the VirtualStage and VirtualCamera in this config (Config: https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json).

Understanding Axes in NumPy

It's important to note the labeling of axes. In NumPy, x = 1 and y = 0. This means:

  • The x-axis is the second axis (index 1) of an array.
  • The y-axis is the first axis (index 0) of an array.

NumPy arrays are multidimensional, with axes numbered as follows:

  • Axis 0 is the first axis (often the vertical direction).
  • Axis 1 is the second axis (often the horizontal direction).

Stage Coordinate System

When viewing the stage from above, the coordinate system is arranged as follows:

  • X-Axis (Horizontal)
    • Positive direction: Right
    • Negative direction: Left
  • Y-Axis (Vertical)
    • Positive direction: Up
    • Negative direction: Down

Aligning Axes with Imswitch

To enable intuitive operation, the stage and camera axes must be correctly aligned with the coordinate system in Imswitch. To achieve this, the commands "flip x" and "flip y" are used. These commands invert the direction of the axes in the coordinate system, meaning that movement or position along the axes is reversed.

Steps for Aligning Axes:

  1. Initial Setup:

    • Ensure the microscope and stage are properly connected to the control software (e.g., Imswitch).
  2. Define Origin:

    • Identify the origin (zero point) of the stage coordinate system. (in Hardware this would be defined by the Endstops that are used for homing the axes; The motor will run - if the direction is set correctly - until it hits the switch)
  3. Test Movement:

    • Move the stage to the right and observe the direction of the image on the screen.
      • If the image moves left, apply the "flip x" command.
    • Move the stage upwards and observe the direction of the image on the screen.
      • If the image moves down, apply the "flip y" command.
  4. Adjust Axes:

    • Use the following commands as needed to align the axes:

      # Flip the x-axis if necessary
      if x_movement_incorrect:
      stage.flip_x()

      # Flip the y-axis if necessary
      if y_movement_incorrect:
      stage.flip_y()
  5. Verify Alignment:

    • After applying the flips, verify that the stage movements correspond correctly with the image movements on the screen.
  6. Save Configuration:

    • Save the configuration settings to ensure the alignment persists across sessions.

Stage Calibration

Richard Bowman and his team provided a very nice way to calibrate stage coordinates to camera pixel coordinates. We burtally integrated the open-source software which you can find here: https://gitlab.com/openflexure/microscope-extensions/camera-stage-mapping into ImSwitch. If you activate the HistoScan Controller and Widget you can start it either by the GUI or using the HTTP interface by calling http://localhost:8002/HistoScanController/startStageMapping (URL and PORT may differ). What the stage will do is moving a certain series of steps in XY, performs a cross-correlation of the images and computes the shift in XY of the mciroscope image on the camera, compares it to the expected shift on and returns the Image-To-Stage-Displacement Matrix as well as the Backlashvector. Both matrices/vectors are microscope specificand will help you matching e.g. stage coordinates for stitching software such as ASHLAR or OFM Stitching. This document should give you a rough idea of what's happening.

Some terminology:

  • Combine X and Y calibrations: The calibration involves combining two separate measurements or calibration runs for the x and y directions, ensuring that the directions are orthogonal (at right angles to each other).

  • 2x2 transformation matrix: The image_to_stage_displacement matrix maps image displacements to stage displacements. This ensures that movements in the image coordinate system are accurately translated to movements in the stage coordinate system.

  • backlash_vector: This is a vector estimating the backlash (mechanical slack or play in the system) in each direction. In this case, the estimated backlash is zero, indicating a precise calibration with no noticeable mechanical play.

  • backlash: The function is expected to return the highest element of backlash_vector as a scalar value, which would be zero in this case.

Interpreation of the Matrix

Calibration Matrix image_to_stage_displacement

The entries of the calibration matrix image_to_stage_displacement can be given specific names and meanings based on their positions within the matrix. Let's denote the matrix as follows:

image_to_stage_displacement=(01.01.00)\text{image\_to\_stage\_displacement} = \begin{pmatrix} 0 & -1.0 \\ -1.0 & 0 \end{pmatrix}
(abcd)\begin{pmatrix} a & b \\ c & d \end{pmatrix}

Entries and Their Names

  1. a (0):

    • Name: a
    • Meaning: Represents the scaling factor from the x-coordinate in the image to the x-coordinate in the stage. Here, it is 0, indicating no direct mapping from image x to stage x.
  2. b (-1.0):

    • Name: b
    • Meaning: Represents the scaling factor from the y-coordinate in the image to the x-coordinate in the stage. The value -1.0 indicates an inverse and slightly scaled mapping from image y to stage x.
  3. c (-1.0):

    • Name: c
    • Meaning: Represents the scaling factor from the x-coordinate in the image to the y-coordinate in the stage. The value -1.0 indicates an inverse and slightly scaled mapping from image x to stage y.
  4. d (0):

    • Name: d
    • Meaning: Represents the scaling factor from the y-coordinate in the image to the y-coordinate in the stage. Here, it is 0, indicating no direct mapping from image y to stage y.

Summary of the Matrix Entries

  • a (0): No direct mapping from image x to stage x.
  • b (-1.0): Inverse mapping from image y to stage x.
  • c (-1.0): Inverse mapping from image x to stage y.
  • d (0): No direct mapping from image y to stage y.

This calibration matrix indicates that there is a transformation involving a 90-degree rotation combined with an inverse scaling factor slightly above 1 between the image coordinates and the stage coordinates. The exact interpretation may depend on the specific application, but generally, it implies that movements in one direction in the image are mapped to movements in the perpendicular direction on the stage with a slight scaling adjustment.

Interpretation of the Values

The following simulation of the VirtualMicroscope inside ImSwitch (Config: https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json):

The result of the stage mapping is a json file containing (under /ImSwitch/calibFile.json) the following important element:

    "camera_stage_mapping_calibration": {
"backlash": 0.0,
"backlash_vector": [
0.0,
0.0,
0.0
],
"image_to_stage_displacement": [
[
0.0,
-1.0
],
[
-1.0,
0.0
]
]
}

The provided matrices explains transforming image coordinates to stage coordinates and estimating backlash. Let's break down the interpretation of the entries:

1. image_to_stage_displacement Matrix

mData["camera_stage_mapping_calibration"]["image_to_stage_displacement"] =
array([[ 0. , -1.00135997],
[-1.00135997, 0. ]])

This matrix is a 2x2 transformation matrix used to map image coordinates to stage coordinates. Each entry in this matrix has a specific meaning:

  • [0,0] = 0: There is no direct transformation of the x-coordinate in the image to the x-coordinate in the stage.
  • [0,1] = -1.00135997: The y-coordinate in the image inversely affects the x-coordinate in the stage.
  • [1,0] = -1.00135997: The x-coordinate in the image inversely affects the y-coordinate in the stage.
  • [1,1] = 0: There is no direct transformation of the y-coordinate in the image to the y-coordinate in the stage.

The presence of -1.00135997 off-diagonal elements indicates that the transformation involves a negative and approximately unit scaling between the coordinates, implying a possible 90-degree rotation combined with a scaling factor close to -1.

2. backlash_vector Matrix

mData["camera_stage_mapping_calibration"]["backlash_vector"] =
array([ 0., 0., 0.])

This vector represents the estimated backlash in each direction (x, y, and possibly z, though z is not utilized in a 2D context). Here, all elements are zero, indicating no measurable backlash in the x and y directions.

+ + \ No newline at end of file diff --git a/docs/Investigator/XYZMicroscope/StageScanning/index.html b/docs/Investigator/XYZMicroscope/StageScanning/index.html index b3d085b48..fea289116 100644 --- a/docs/Investigator/XYZMicroscope/StageScanning/index.html +++ b/docs/Investigator/XYZMicroscope/StageScanning/index.html @@ -10,14 +10,14 @@ - - + +
-

Stage Scanning and Image Stitching (ASHLAR)

We have multiple ways to perform stage scanning and stitching using ImSwitch. Below you can find dedicated documentation for some of them:

  1. Use ImScripting to take snapshots, save them locally and perform stitching using ASHLAR offline
  2. Perform GUI-based stitching and perform stitching using ASHLAR / simple pixel assignmens online (e.g. within/after the scanning process)
  3. Stitching using the Chatbot

1. Using Imswitch for Image Retrieval and Stitching with Interactive ImScripting

Overview

This documentation outlines the steps to use Imswitch and Interactive IMScripting to retrieve images and stitch them together. The process involves configuring the motor settings, capturing images in a grid pattern, and stitching these images using ASHLAR.

The following code can be executed inside the ImSwitch's ImScripting editor.

# install a modified version of ashlar that enables loading numpy arrays directly without going through a file
# python -m pip install https://github.com/openUC2/ashlar/archive/refs/heads/master.zip
import numpy as np
import time
import threading
import os
import tifffile
import re
from ashlar.scripts import ashlar
from ashlar.scripts.ashlar import process_images
from pathlib import Path

# Calculate the image size and the overlap of the images based on pixel size and resolution.
mPixelSize = 1.0 # micron - use a calibration chart to get this right!
input_dir = "./mScanImages"
output_dir = "./mStitchedImage"
input_name = "TmpTileFile.ome.tif"
output_name = "ResultingStitchedImage.ome.tif"
initialPosX = 0
initialPosY = 0
maximum_shift_microns = 1000
Nx = 5
Ny = 5
# please try changing these two values to make it match!
flip_x=True
flip_y=False

# create the folders and names
Path(input_dir).mkdir(parents=True, exist_ok=True)
Path(output_dir).mkdir(parents=True, exist_ok=True)
ashlar_output_file = os.path.join(output_dir, output_name)
ashlar_input_file = os.path.join(input_dir, input_name)

mFrameShape = api.imcontrol.snapImage(True, False).shape
xDim = mFrameShape[1] * mPixelSize
yDim = mFrameShape[0] * mPixelSize
mOverlap = 0.8 # 90% overlap at the edges

# Set the motor control to 0 and define the motor speeds for the X, Y, and Z axes.
positionerName = api.imcontrol.getPositionerNames()[0]
api.imcontrol.setPositionerSpeed(positionerName, "X", 20000)
api.imcontrol.setPositionerSpeed(positionerName, "Y", 20000)
api.imcontrol.setPositionerSpeed(positionerName, "Z", 2000)

## Capture images in a 2x3 grid pattern. The stage moves to the start position and captures images at each step. Each image is saved with coordinates as the filename.
iiter = 0

USE_OME = False
if USE_OME:# on MAC ARM M1 it may not work..
with tifffile.TiffWriter(input_name) as tif: ## Define the input and output directories, and the pixel size. Open a new TIFF file to write the collected tiles, read each image, extract the position from the filename, prepare metadata, and write the image with metadata into the TIFF file. Finally, use ASHLAR to stitch the images together.
for ix in np.arange(Nx):
for iy in np.arange(Ny):
mPos = (ix * xDim * mOverlap + initialPosX, iy * yDim * mOverlap + initialPosY)
api.imcontrol.movePositioner(positionerName, "XY", mPos, True, True)
time.sleep(0.5)
mFrame = api.imcontrol.snapImage(True, False)
metadata = {
'Pixels': {'PhysicalSizeX': mPixelSize, 'PhysicalSizeXUnit': 'm', 'PhysicalSizeY': mPixelSize, 'PhysicalSizeYUnit': 'm'},
'Plane': {'PositionX': ix, 'PositionY': iy}
}
tif.write(mFrame, metadata=metadata)
iiter += 1
ashlar.main(['', ashlar_input_file, '-o', ashlar_output_file, '--pyramid', '-m%s' % maximum_shift_microns, "-flip_x", flip_x, "-flip_y", flip_y])

else: # this is a workaround with a numpy reader instead
mImageList = []
position_list = []
for ix in range(Nx):
for iy in range(Ny):
mPos = (ix * xDim * mOverlap + initialPosX, iy * yDim * mOverlap + initialPosY)
api.imcontrol.movePositioner(positionerName, "XY", mPos, True, True)
time.sleep(0.5)
mFrame = api.imcontrol.snapImage(True, False)
mImageList.append(mFrame)
position_list.append(mPos)
print(mPos)
arrays = [np.expand_dims(np.array(mImageList),1)] # (num_images, num_channels, height, width)
# create a 2D list of xy positions
position_list = np.array(position_list)

# Process numpy arrays
process_images(filepaths=arrays,
output='ashlar_output.tif',
align_channel=0,
flip_x=flip_x,
flip_y=flip_y,
flip_mosaic_x=False,
flip_mosaic_y=False,
output_channels=None,
maximum_shift=maximum_shift_microns,
stitch_alpha=0.01,
maximum_error=None,
filter_sigma=0,
filename_format='cycle_{cycle}_channel_{channel}.tif',
pyramid=False,
tile_size=1024,
ffp=None,
dfp=None,
barrel_correction=0,
plates=False,
quiet=False,
position_list=position_list,
pixel_size=mPixelSize)
mImage = tifffile.imread('ashlar_output.tif')

#display the resulting tiles
api.imcontrol.displayImageNapari("Tiles", arrays[0], isRGB=False)

print(position_list)
# display the resulting image
api.imcontrol.displayImageNapari("StitchedImage", mImage, isRGB=False)

Additional Image Processing

Additional commands can be used to manipulate the stitched image if needed (depends if the image looks weird or not..):

Flip X-Axis

ashlar.main(['', collected_tiles_file, '-o', ashlar_output_file, '--pyramid', '-m%s' % maximum_shift_microns, "--flip-x"])

Flip Both Axes and Mirror Images in X-Direction

ashlar.main(['', collected_tiles_file, '-o', ashlar_output_file, '--pyramid', '-m%s' % maximum_shift_microns, "--flip-mosaic-x"])

In action

Here we use the loading of numpy images inside ImSwitch and process them with Ashlar to directly dipslay them in Napari. +

Stage Scanning and Image Stitching (ASHLAR)

We have multiple ways to perform stage scanning and stitching using ImSwitch. Below you can find dedicated documentation for some of them:

  1. Use ImScripting to take snapshots, save them locally and perform stitching using ASHLAR offline
  2. Perform GUI-based stitching and perform stitching using ASHLAR / simple pixel assignmens online (e.g. within/after the scanning process)
  3. Stitching using the Chatbot

1. Using Imswitch for Image Retrieval and Stitching with Interactive ImScripting

Overview

This documentation outlines the steps to use Imswitch and Interactive IMScripting to retrieve images and stitch them together. The process involves configuring the motor settings, capturing images in a grid pattern, and stitching these images using ASHLAR.

The following code can be executed inside the ImSwitch's ImScripting editor.

# install a modified version of ashlar that enables loading numpy arrays directly without going through a file
# python -m pip install https://github.com/openUC2/ashlar/archive/refs/heads/master.zip
import numpy as np
import time
import threading
import os
import tifffile
import re
from ashlar.scripts import ashlar
from ashlar.scripts.ashlar import process_images
from pathlib import Path

# Calculate the image size and the overlap of the images based on pixel size and resolution.
mPixelSize = 1.0 # micron - use a calibration chart to get this right!
input_dir = "./mScanImages"
output_dir = "./mStitchedImage"
input_name = "TmpTileFile.ome.tif"
output_name = "ResultingStitchedImage.ome.tif"
initialPosX = 0
initialPosY = 0
maximum_shift_microns = 1000
Nx = 5
Ny = 5
# please try changing these two values to make it match!
flip_x=True
flip_y=False

# create the folders and names
Path(input_dir).mkdir(parents=True, exist_ok=True)
Path(output_dir).mkdir(parents=True, exist_ok=True)
ashlar_output_file = os.path.join(output_dir, output_name)
ashlar_input_file = os.path.join(input_dir, input_name)

mFrameShape = api.imcontrol.snapImage(True, False).shape
xDim = mFrameShape[1] * mPixelSize
yDim = mFrameShape[0] * mPixelSize
mOverlap = 0.8 # 90% overlap at the edges

# Set the motor control to 0 and define the motor speeds for the X, Y, and Z axes.
positionerName = api.imcontrol.getPositionerNames()[0]
api.imcontrol.setPositionerSpeed(positionerName, "X", 20000)
api.imcontrol.setPositionerSpeed(positionerName, "Y", 20000)
api.imcontrol.setPositionerSpeed(positionerName, "Z", 2000)

## Capture images in a 2x3 grid pattern. The stage moves to the start position and captures images at each step. Each image is saved with coordinates as the filename.
iiter = 0

USE_OME = False
if USE_OME:# on MAC ARM M1 it may not work..
with tifffile.TiffWriter(input_name) as tif: ## Define the input and output directories, and the pixel size. Open a new TIFF file to write the collected tiles, read each image, extract the position from the filename, prepare metadata, and write the image with metadata into the TIFF file. Finally, use ASHLAR to stitch the images together.
for ix in np.arange(Nx):
for iy in np.arange(Ny):
mPos = (ix * xDim * mOverlap + initialPosX, iy * yDim * mOverlap + initialPosY)
api.imcontrol.movePositioner(positionerName, "XY", mPos, True, True)
time.sleep(0.5)
mFrame = api.imcontrol.snapImage(True, False)
metadata = {
'Pixels': {'PhysicalSizeX': mPixelSize, 'PhysicalSizeXUnit': 'm', 'PhysicalSizeY': mPixelSize, 'PhysicalSizeYUnit': 'm'},
'Plane': {'PositionX': ix, 'PositionY': iy}
}
tif.write(mFrame, metadata=metadata)
iiter += 1
ashlar.main(['', ashlar_input_file, '-o', ashlar_output_file, '--pyramid', '-m%s' % maximum_shift_microns, "-flip_x", flip_x, "-flip_y", flip_y])

else: # this is a workaround with a numpy reader instead
mImageList = []
position_list = []
for ix in range(Nx):
for iy in range(Ny):
mPos = (ix * xDim * mOverlap + initialPosX, iy * yDim * mOverlap + initialPosY)
api.imcontrol.movePositioner(positionerName, "XY", mPos, True, True)
time.sleep(0.5)
mFrame = api.imcontrol.snapImage(True, False)
mImageList.append(mFrame)
position_list.append(mPos)
print(mPos)
arrays = [np.expand_dims(np.array(mImageList),1)] # (num_images, num_channels, height, width)
# create a 2D list of xy positions
position_list = np.array(position_list)

# Process numpy arrays
process_images(filepaths=arrays,
output='ashlar_output.tif',
align_channel=0,
flip_x=flip_x,
flip_y=flip_y,
flip_mosaic_x=False,
flip_mosaic_y=False,
output_channels=None,
maximum_shift=maximum_shift_microns,
stitch_alpha=0.01,
maximum_error=None,
filter_sigma=0,
filename_format='cycle_{cycle}_channel_{channel}.tif',
pyramid=False,
tile_size=1024,
ffp=None,
dfp=None,
barrel_correction=0,
plates=False,
quiet=False,
position_list=position_list,
pixel_size=mPixelSize)
mImage = tifffile.imread('ashlar_output.tif')

#display the resulting tiles
api.imcontrol.displayImageNapari("Tiles", arrays[0], isRGB=False)

print(position_list)
# display the resulting image
api.imcontrol.displayImageNapari("StitchedImage", mImage, isRGB=False)

Additional Image Processing

Additional commands can be used to manipulate the stitched image if needed (depends if the image looks weird or not..):

Flip X-Axis

ashlar.main(['', collected_tiles_file, '-o', ashlar_output_file, '--pyramid', '-m%s' % maximum_shift_microns, "--flip-x"])

Flip Both Axes and Mirror Images in X-Direction

ashlar.main(['', collected_tiles_file, '-o', ashlar_output_file, '--pyramid', '-m%s' % maximum_shift_microns, "--flip-mosaic-x"])

In action

Here we use the loading of numpy images inside ImSwitch and process them with Ashlar to directly dipslay them in Napari. Make sure the orientation is set as in the animation below according to the Stage Calibration results.

# keep this number low (e.g. 1-2 to check the correction direction of X/Y)
Nx = 2
Ny = 2
# please try changing these two values to make it match!
flip_x=True
flip_y=False

2. Perform GUI-based stitching and perform stitching using ASHLAR in the Main GUI

Navigate to the HistoScan Menu and perform the grid-based scanning. Select ASHLAR stitching and the appropriate flipping of the axes (will be suggested by the previously performed stage mapping) and run the scanning. The stitched result will be displayed after some computational time which may vary depending on your CPU and memory availabililty.

3. Stitching using the Chatbot

A recent experimental feature is to use the BioImage.io chatbot and provide a customized extension to interact with the microscope. The extension is implemented in the HyphaController and exposes certain functions to the chatbot interface. This lets us formulate prompts that will then interact with the microscope. Below we formulate a simple query:

Can you turn on the light of the uc2 microscope to 512 and perform a slide scan with default parameters?

which gets interpreted on the microscope side

Tool Call: U2MicroscopeSetIllumination
Arguments:
- channel: 0

- intensity: 512

Result: Set the illumination!
Tool Call: U2MicroscopeSlideScan
Arguments:
- numberTilesX: 3

- numberTilesY: 3

- stepSizeX: 0

- stepSizeY: 0

- nTimes: 1

- tPeriod: 1

- illuSource: ``

- initPosX: 0

- initPosY: 0

- isStitchAshlar: true

- isStitchAshlarFlipX: true

- isStitchAshlarFlipY: false

Result: Started slide scanning!

The result is a scan and a following stitching routine using ASHLAR:

- - + + \ No newline at end of file diff --git a/docs/Investigator/ZMicroscope/UpackZMicroscope/index.html b/docs/Investigator/ZMicroscope/UpackZMicroscope/index.html index 0a693f2a8..0505d50ca 100644 --- a/docs/Investigator/ZMicroscope/UpackZMicroscope/index.html +++ b/docs/Investigator/ZMicroscope/UpackZMicroscope/index.html @@ -10,13 +10,13 @@ - - + +

Unpack the openUC2 Z-Microscope

Unpacking the microscope

The hardcover plastic case contains all you need for the microscope:

  • USB micro cable
  • USB3 camera cable
  • 12V power-supply
  • Sweet treat
  • The actual microscope
  • The objective lens

The actual Box looks like this:

Please also find the treat and make sure you provide yourself with enough sugar throughout this unpacking routine :-)

The foam holds the microscope in place (the actual colour may differ from what you may see):

The cables are hidden behind the foam:

Check if you find the content of the box:

Getting started

First of all we need to wire up the microscope. For this we will start with the 12V power supply. Unfortunately the powersocket is inside the case, hence you have to first eat some candy in order to better find the spot ;-)

The same holds true for the USB connection to the microcontroller board. You need to hook it up like that:

Once done, we continue with inserting the objective lens. Eventually the lens is already inserted and you just need to check if the lens is centered correctly

The microscope should look like this:

Wire up the microscope to your computer

In order to get the microscope working, we first need to install additional drivers. For the Daheng Camera, this would be:

For additional information and an in-depth explanation for the UC2e system, please have a look here

Troubleshoot

We learn from mistakes. So lets start learning. The system is fully open, meaning, you can adjust and change the vast majority of the parts on your own. The entire system consists of the openUC2 frame / skeleton and the 3D printed housing to shield it from dust and light. By removing all M3 cylindrical screws, you can detech the housing from the inner structure to eventually repair or alter the system.

A 2.5m hex key will help you for finishing this job:

Lift the lid and the microscpe will follow (make sure all cables are detached):

Now you can start working on the "inner bits":

In Action

Here you see the extended focussing of the objective lens:

Connecting the microscope to the browser and controll it

We encourage you to use the UC2ified ImSwitch software to control the microscope. You can find it in this repository: https://github.com/openUC2/ImSwitch/

However, if you want to quick-start the microscope and see if it works, you can open your browser and use the WEB-Serial interface to interact with the microscope.

Go to https://youseetoo.github.io/ and connect to your board (most right option saying ESP32 DEV-based UC2 standalone board V2). Select the COM Port which is holding the ESP32 and hit the LOG option, once the dialog opens. The alternative option will help you updating the firmware on the device. An in-depth explanation on how the firmware works can be found here.

In general, you need to send JSON strings in order to control the system. The strings relevant for the Z-microscope are:

Home the Z-axis

It's important to always home the Motors in order to avoid them from getting stuck in an end position (ATTENTION!). The following string will move the motor until the endstop is hit. Afterwards it will release the switch:

{"task":"/home_act", "home": {"steppers": [{"stepperid":3, "timeout": 2000, "speed": 15000, "direction":1, "endposrelease":3000}]}}

Afterwards the internal position is set to 0. You can check that by entering:

{"task": "/motor_get"}

Move the Z-axis:

The motor (Nema12) with 200 steps/revolution runs with 16 microstepps and offers a leadscrew with 1mm/revolution. Hence, one step corresponds to 312.5nm. Running the motor can be issued with the following command:

{"task":"/motor_act",
"motor":
{
"steppers": [
{ "stepperid": 3, "position": 1000, "speed": 15000, "isabs": 3, "isaccel":0}
]
}
}
  • stepperid: 3 correpsonds to the Z-axis
  • position: steps to go (not physical units!)
  • speed: steps / minute (do not exceed 20000)
  • isabs: absolute or relative motion
  • isaccel: for now, use only non-accelerated motion!

Safety

  • in case of shattered glass, make sure you don't cut yourself
  • Make sure you don't hurt yourself
  • The moving parts can potentially hurt your finger
  • The electronics - if used in a wrong way - can harm you
  • edges may be sharp, make sure you don't cut yourself
- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/INVESTIGATOR/ProductionXYZMicroscope/index.html b/docs/PRODUCTION/INVESTIGATOR/ProductionXYZMicroscope/index.html index 2b232ce9a..721f1f0d0 100644 --- a/docs/PRODUCTION/INVESTIGATOR/ProductionXYZMicroscope/index.html +++ b/docs/PRODUCTION/INVESTIGATOR/ProductionXYZMicroscope/index.html @@ -10,8 +10,8 @@ - - + +
@@ -27,7 +27,7 @@

Prepare the Z-stage

The documentation for the motorized 25mm Z-stage can be found here: https://openuc2.github.io/docs/PRODUCTION/PG_12_STAGE_Z_NEMA

Once done, lock the Stage with the Puzzle piece with M5x8 worm screws:

Prepare Electronics

Bill of Material

  • UC2e v2 electronics
  • 3x A4988 Stepper driver
  • 12V power supply
  • USB micro cable
  • 3D printed case
  • 2x puzzle pieces
  • 8 M5x8 thread-only screws
  • 4x M3x8mm screws

Assembly

Attach the electronics board to the 3D printed assembly and tighten it with the M3 screws (cylindrical, Din906) Attach the puzzle pieces to the distal ends of the assembly and lock it with the M5 screws. For this the yet closed holes have to be opened by "drilling" it through.

Prepare Triangle Structure

Tubelens

Bill of Material

  • Berrybase 100mm CCTV Lens
  • Daheng Vision IMX226 sensor
  • USB 3 Camera Cable
  • 2x Puzzlepieze
  • 8x M5x8 mm worm screw
  • 4x M3x18mm screw

Assembly

Adding the Baseplate

Endstops and Illumination

Skeleton

Fully Assembled

Fluo Extension

Improvements

Stage does not run smoothly

You can release the pressure on the linear bearings by loosening the screws carefully. Make sure you don't introduce unneccesary play. The stage works with two v-grooves and balls in between.

Additional images (have to be sorted)

Safety

TODO: Add additional information!

  • in case of shattered glass, make sure you don't cut yourself
  • Make sure you don't hurt yourself
  • The moving parts can potentially hurt your finger
  • The electronics - if used in a wrong way - can harm you
  • edges may be sharp, make sure you don't cut yourself
- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/APERTURES/index.html b/docs/PRODUCTION/Modules/APERTURES/index.html index 3735f4f10..877ed0768 100644 --- a/docs/PRODUCTION/Modules/APERTURES/index.html +++ b/docs/PRODUCTION/Modules/APERTURES/index.html @@ -10,13 +10,13 @@ - - + +

Apertures

This page describes how to assemble the kinematic XY mount for moving a laser/ pinhole.

Duration: 1

Bill of material

Below you will find all components necessary to build this device.

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds MirrorPart.stl
#01-012BaseSpring LocksPart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011Spring0,20€NONE
#01-011Threaded Inserts M30,20€NONE
#01-011Screw Ball head0,20€NONE

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/BEAMSPLITTER/index.html b/docs/PRODUCTION/Modules/BEAMSPLITTER/index.html index d1dad0606..c04dbe4ba 100644 --- a/docs/PRODUCTION/Modules/BEAMSPLITTER/index.html +++ b/docs/PRODUCTION/Modules/BEAMSPLITTER/index.html @@ -10,13 +10,13 @@ - - + +

KINEMATIC MIRROR (90°)

This page describes how to assemble the partially transparent mirror (45°) module. It uses a Frontsurface 50% mirror that.

Duration: 1

Bill of material

Below you will find all components necessary to build this device

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds MirrorPart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-01150% MirrorAstromedia 40x30mm PArtially Transparent Mirror8,00€Astromedia

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

caution

Insert the beam splitter in such a way that the mirroring/coated surface points away from the printed part!

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/Camera/index.html b/docs/PRODUCTION/Modules/Camera/index.html index 46fdf48cd..e1f121d44 100644 --- a/docs/PRODUCTION/Modules/Camera/index.html +++ b/docs/PRODUCTION/Modules/Camera/index.html @@ -10,15 +10,15 @@ - - + +

USB Camera

Duration: 1

This page describes how to assemble the camera module. It has two different variations:

  • IMX214 (Arducam, LINK)
  • IMX179 (Waveshare, LINK)

Bill of material

Below you will find all components necessary to build this device

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
TypeDetailsLink
Camera holderholds IMX179/214Part.stl

Additional parts

This is used in the current version of the setup

TypeDetailsPriceLink
USB CameraArducam USB IMX21440 €Amazon
or---------
USB CameraArducam USB IMX21440 €Amazon
Mounting screwsDIN912 M3x12mm Screws0.40 €Würth

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

IMX219 (Arducam)

STEP 1

All parts you need to assemble the module:

Remove the lens (M12/cellphone) from the camera board.

STEP 2

Use the DIN912 M3x12mm screws to mount the camera securely. ATTENTION: Use the decentered holes such that the Camera is placed in the inserts's center!

STEP 3

Add the insert to the cube, close it and store the cable safely.

IMX179 (Waveshare)

STEP 1

All parts you need to assemble the module:

STEP 2

Remove the lens (M12) from the camera board using a cross key.

STEP 3

Use the DIN912 M3x12mm screws to mount the camera securely. ATTENTION: Use the centered screws to have the camera's lens in the center of the module!

STEP 4

To remove the lens take a cloth/tissue and pliers and knock it of with some force. Don't break the part!

STEP 5

Add the part to the cube and you're done.

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/Eyepiece/index.html b/docs/PRODUCTION/Modules/Eyepiece/index.html index 146d1cfd5..c7d652a0f 100644 --- a/docs/PRODUCTION/Modules/Eyepiece/index.html +++ b/docs/PRODUCTION/Modules/Eyepiece/index.html @@ -10,13 +10,13 @@ - - + +

Eyepiece

Duration: 1

This page describes how to assemble the Eyepiece module. It uses a standard eyepiece with 22mm diameter.

Bill of material

Below you will find all components necessary to build this device

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
TypeDetailsLink
Holderholds EyepiecePart.stl

Additional parts

This is used in the current version of the setup

TypeDetailsPriceLink
Eyepiece10x, 18mm Eyepiece10 €Aliexpress

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

Remove XX

STEP 2

Use Hotglue to permanently mount the eyepiece to the insert.

STEP 3

Add the insert to the cube, close it and store it safely.

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/KIN_MIR_45/index.html b/docs/PRODUCTION/Modules/KIN_MIR_45/index.html index 21502662d..e1b845515 100644 --- a/docs/PRODUCTION/Modules/KIN_MIR_45/index.html +++ b/docs/PRODUCTION/Modules/KIN_MIR_45/index.html @@ -10,13 +10,13 @@ - - + +

KINEMATIC MIRROR (45°)

This page describes how to assemble the kinematic mirror (45°) module. It uses a Frontsurface mirror that can be tuned in 3 axis

Duration: 1

Bill of material

Below you will find all components necessary to build this device

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds screwsPart.stl
#01-021Mirror Mountholds mirror and is movablePart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011FS MirrorAstromedia 40x30mm Frontsurface Mirror5,00€Astromedia
#01-024Screw (orings)M3x12, DIN9125,00€Astromedia
#01-033Screw (Pushing)M3x20, NOT DECIDED!15,00€Link
#01-042O-Ringr=8mm0,10€Link
#01-051Cube5,00€Link

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

STEP 3

STEP 4

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/KIN_MIR_90/index.html b/docs/PRODUCTION/Modules/KIN_MIR_90/index.html index ff3c5d23f..940c6a4ed 100644 --- a/docs/PRODUCTION/Modules/KIN_MIR_90/index.html +++ b/docs/PRODUCTION/Modules/KIN_MIR_90/index.html @@ -10,13 +10,13 @@ - - + +

KINEMATIC MIRROR (90°)

This page describes how to assemble the kinematic mirror (90) module. It uses a Frontsurface mirror that can be tuned in 3 axis

Duration: 1

Bill of material

Below you will find all components necessary to build this device

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds screwsPart.stl
#01-021Mirror Mountholds mirror and is movablePart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011FS MirrorAstromedia 40x30mm Frontsurface Mirror5,00€Astromedia
#01-024Screw (orings)M3x12, DIN9125,00€Astromedia
#01-033Screw (Pushing)M3x20, NOT DECIDED!15,00€Link
#01-042O-Ringr=8mm0,10€Link
#01-051Cube5,00€Link

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

STEP 3

STEP 4

STEP 5

STEP 6

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/KIN_XY_LASER/index.html b/docs/PRODUCTION/Modules/KIN_XY_LASER/index.html index 0ac45f686..bddb63b0d 100644 --- a/docs/PRODUCTION/Modules/KIN_XY_LASER/index.html +++ b/docs/PRODUCTION/Modules/KIN_XY_LASER/index.html @@ -10,13 +10,13 @@ - - + +

Kinematic XY Mount

This page describes how to assemble the kinematic XY mount for moving a laser/ pinhole.

Duration: 1

Bill of material

Below you will find all components necessary to build this device.

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds MirrorPart.stl
#01-012BaseSpring LocksPart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011Spring0,20€NONE
#01-011Threaded Inserts M30,20€NONE
#01-011Screw Ball head0,20€NONE

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

STEP 3

STEP 4

STEP 6

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/LENS/index.html b/docs/PRODUCTION/Modules/LENS/index.html index 966eae26c..eb616d4ac 100644 --- a/docs/PRODUCTION/Modules/LENS/index.html +++ b/docs/PRODUCTION/Modules/LENS/index.html @@ -10,14 +10,14 @@ - - + +

LENS

Duration: 1

This page describes how to assemble the LEns module. It uses a 40mm biconvex/biconcave glasslens with varyin diameter

Bill of material

Below you will find all components necessary to build this device

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDTypeDetailsLink
#01-01Holderholds LensPart.stl
#01-02Lidfixes lens using screw mechanismPart.stl

Additional parts

This is used in the current version of the setup

IDTypeDetailsPriceLink
#01-03Lens (50mm)f'=50mm, Diameter 40mm2 €Aliexpress
or
#01-04Lens (100mm)f'=100mm, Diameter 40mm2 €Aliexpress
or
#01-05Lens (-50mm)f'=-50mm, Diameter 40mm2 €Aliexpress

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

Thread in the round piece tand fix the lens. Make sure you use the right ring for the right lens!

caution

Clean the lenses with a cotton cloth.

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/MIR_45/index.html b/docs/PRODUCTION/Modules/MIR_45/index.html index 5d4559459..542435c50 100644 --- a/docs/PRODUCTION/Modules/MIR_45/index.html +++ b/docs/PRODUCTION/Modules/MIR_45/index.html @@ -10,13 +10,13 @@ - - + +

Mirror (45°)

This page describes how to assemble the standard fold mirror (45°) module. It uses a Frontsurface mirror.

Duration: 1

Bill of material

Below you will find all components necessary to build this device

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds MirrorPart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011MirrorAstromedia 40x30mm PArtially Transparent Mirror8,00€Astromedia

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

STEP 3

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/POLARIZER_ROTATING/index.html b/docs/PRODUCTION/Modules/POLARIZER_ROTATING/index.html index ab4684c25..8aa3dadf7 100644 --- a/docs/PRODUCTION/Modules/POLARIZER_ROTATING/index.html +++ b/docs/PRODUCTION/Modules/POLARIZER_ROTATING/index.html @@ -10,13 +10,13 @@ - - + +

Polarization Rotator

This page describes how to assemble the kinematic XY mount for moving a laser/ pinhole.

Duration: 1

Bill of material

Below you will find all components necessary to build this device.

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds MirrorPart.stl
#01-012BaseSpring LocksPart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011Spring0,20€NONE
#01-011Threaded Inserts M30,20€NONE
#01-011Screw Ball head0,20€NONE

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

STEP 3

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/SAMPLE_HOLDEr/index.html b/docs/PRODUCTION/Modules/SAMPLE_HOLDEr/index.html index d810fae4d..4225d44d8 100644 --- a/docs/PRODUCTION/Modules/SAMPLE_HOLDEr/index.html +++ b/docs/PRODUCTION/Modules/SAMPLE_HOLDEr/index.html @@ -10,13 +10,13 @@ - - + +

Sample Holder

This page describes how to assemble the kinematic XY mount for moving a laser/ pinhole.

Duration: 1

Bill of material

Below you will find all components necessary to build this device.

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds MirrorPart.stl
#01-012BaseSpring LocksPart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011Spring0,20€NONE
#01-011Threaded Inserts M30,20€NONE
#01-011Screw Ball head0,20€NONE

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

:::alert

this has been updated with magnets! Make sure you label the magnets with prior to insertion so that polarity is correct.

:::

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/STAGE_Z_MANUAL/index.html b/docs/PRODUCTION/Modules/STAGE_Z_MANUAL/index.html index b57b00267..67d30a351 100644 --- a/docs/PRODUCTION/Modules/STAGE_Z_MANUAL/index.html +++ b/docs/PRODUCTION/Modules/STAGE_Z_MANUAL/index.html @@ -10,13 +10,13 @@ - - + +

Kinematic XY Mount / Laser

This page describes how to assemble the kinematic XY mount for moving a laser/ pinhole.

Duration: 1

Bill of material

Below you will find all components necessary to build this device.

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds MirrorPart.stl
#01-012BaseSpring LocksPart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011Spring0,20€NONE
#01-011Threaded Inserts M30,20€NONE
#01-011Screw Ball head0,20€NONE

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

STEP 3

STEP 4

STEP 5

STEP 6

STEP 7

STEP 8

STEP 9

STEP 10

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/STAGE_Z_NEMA/index.html b/docs/PRODUCTION/Modules/STAGE_Z_NEMA/index.html index b0f4eb5bc..88b74918b 100644 --- a/docs/PRODUCTION/Modules/STAGE_Z_NEMA/index.html +++ b/docs/PRODUCTION/Modules/STAGE_Z_NEMA/index.html @@ -10,13 +10,13 @@ - - + +

Z-Stage Motorized NEMA12 25mm

This page describes how to assemble the kinematic XY mount for moving a laser/ pinhole.

Duration: 1

Bill of material

Below you will find all components necessary to build this device.

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds MirrorPart.stl
#01-012BaseSpring LocksPart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011Spring0,20€NONE
#01-011Threaded Inserts M30,20€NONE
#01-011Screw Ball head0,20€NONE

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

STEP 3

STEP 4

STEP 5

STEP 6

STEP 7

STEP 8

STEP 9

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/PRODUCTION/Modules/TORCH/index.html b/docs/PRODUCTION/Modules/TORCH/index.html index 2daed27dc..bfb8962c9 100644 --- a/docs/PRODUCTION/Modules/TORCH/index.html +++ b/docs/PRODUCTION/Modules/TORCH/index.html @@ -10,13 +10,13 @@ - - + +

Torch

This page describes how to assemble the kinematic XY mount for moving a laser/ pinhole.

Duration: 1

Bill of material

Below you will find all components necessary to build this device.

3D printing files

All these files need to be printed.

Printing parameters:

InfillLayerheightSpecial ProfileMaterial
~20%0.25/0.3mmmini/i3PLA (black)
IDAmountTypeDetailsLink
#01-011BaseHolds MirrorPart.stl
#01-012BaseSpring LocksPart.stl

Additional parts

This is used in the current version of the setup

IDAmountTypeDetailsPriceLink
#01-011Spring0,20€NONE
#01-011Threaded Inserts M30,20€NONE
#01-011Screw Ball head0,20€NONE

Assembly

Duration: 1

Below we describe how the device can be build and assembled in order to replicate the whole system.

STEP 1

All parts you need to assemble the module:

STEP 2

Design files

The original design files are in the INVENTOR folder.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/CHINESE/uc2miniboxCN/index.html b/docs/Toolboxes/DiscoveryCore/CHINESE/uc2miniboxCN/index.html index b66e41d1c..67091fa53 100644 --- a/docs/Toolboxes/DiscoveryCore/CHINESE/uc2miniboxCN/index.html +++ b/docs/Toolboxes/DiscoveryCore/CHINESE/uc2miniboxCN/index.html @@ -10,8 +10,8 @@ - - + +
@@ -23,7 +23,7 @@ 显微镜物镜: 一种特殊的透镜系统,可以放大物体

接下来将通过一个视频介绍一个MiniBox(2022年10月的版本)里面有什么:

什么是UC2?

UC2项目的核心元素是一个简单的立方体。 这个立方体由两半部分组成,通常内有一个可以滑动的插件。 插件可以容纳各种光学元件(例如透镜、反光镜),这意味着每个立方体可以通过安装不同的插件来实现不同的功能。

立方体类型1:带插头连接注塑成型件

底板

底板

立方体可以安装在底板上。底板模块可以像拼图一样组合在一起。

自行打印UC2

UC2立方体也可以3D打印。它看起来与注塑模型相同,但这里它由立方体盖和立方体体组成,用螺丝固定在一起。螺丝非常适合放在磁性板上。通过结合不同的立方体模块,可以轻松组装不同的光学结构。每个骰子可以增加一个新功能。你的创造力没有限制。

立方体类型2:带磁性连接的3D打印件

立方体

带磁铁的底板

在3D打印的底板中有小的球形磁铁,立方体就放在这些磁铁上。

想要更多的立方体?那你可以自行3D打印。你可以在这里找到所有信息

这就是立方体如何组合在一起

持续时间:1分钟

确保立方体正确放置在板上,并且没有倾斜。最后重要的是插件放置在正确的位置。

如果你没有看到清晰的图像,移动插件(例如透镜),直到你看到它很清楚。图片中的绿色箭头显示了如何做。

这里你可以找到一个小视频,解释了立方体的核心概念

文档内容:

符号是什么意思?

实验 如果你看到这个方块,说明有实验可做!你可以在这个方块上放置一个UC2立方体。
解释:如果你看到这个图标,说明有东西可以学习!
账单:这里有东西需要计算。拿起笔和纸开始解谜。
注意:不要用手指触摸玻璃表面!
清洁镜头:如果你已经触摸了镜头,你可以用眼镜布来清洁它。

透镜能做什么?

持续时间:2分钟

拿一个或多个内有透镜的立方体,看着这里展示的UC2符号。手持立方体,改变透镜和图像之间的距离。

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreLens/index.html b/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreLens/index.html index d59fe6b4f..430a127fa 100644 --- a/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreLens/index.html +++ b/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreLens/index.html @@ -10,15 +10,15 @@ - - + +

Lens

Lenses

In ray optics, light is represented as a bundle of rays (arrows), which simplifies the physical properties of light. A ray has a direction and is therefore drawn with an arrow. A lens "refracts" the beam, changing its direction.

The focal length of a lens corresponds to the distance from the lens to the focal plane on which the focal point lies. It is given in millimeters (f = mm).

Converging (positive) and diverging (negative) lenses

Converging lenses refract the rays of light traveling parallel to the optical axis at a point called the focal point.

The diverging lenses refract the rays of light traveling parallel to the optical axis as if they originated from a point called the "virtual" focus.

Lenses “refract” the rays of light

You can find the focal length of the lens as a printed number on the lens holder. The MiniBOX receives a 100mm converging lens, two 40mm converging lenses and a -50mm negative lens. The numbers indicate the focal length.

The converging lens is also called a positive or convex lens. The middle part of the lens is always thicker than the edge.

The converging lens enlarges the image. The magnification is different for the 40mm lens and the 100mm lens. The image can be upright or inverted.

The negative lens (spreading lens) is sometimes also called a negative or concave lens. The middle part of the lens is always thinner than the edge.

With the negative lens (here: -50 mm lens) the image is always reduced and always upright

We assume that our lenses are so-called "thin lenses". This means we can consider them as one plane and not care about their thickness. This makes explanations and calculations much easier.

Did the answers raise any more questions? Then drive to find out exactly how lenses work...

Lens image

Now take the lentil cubes. With the right lens, try to decipher the focal length information in the cubes shown. Move the lens over the writing until it is the same size as the "UC2" text.

Can you see the text the same size and orientation as the "UC2"? What happens when you change the distance between the lens and the image?

What happens if you use a lens with the wrong focal length?

Image of an object through a positive lens

Let's take the converging lens as an example. We start with an object (green arrow) and see what happens to the rays that start from the top. There are infinitely many rays in all directions, but for drawing the figure the following three rays will suffice:

  1. The centre beam (orange) passes undisturbed through the center of the lens.
  2. The focus ray (yellow) also starts from the tip of the arrow, but goes through the object-side focus at focal length f. After the lens, it continues at the same height, but now parallel to the optical axis.
  3. The parallel beam (red) initially runs parallel to the optical axis, but is then refracted at the lens in such a way that it passes through the focal point on the image side at focal length f.

The image is formed where all the rays intersect. The principle is used for all points or the rays of an object emanating from them. Depending on which lens is used and depending on the position of the object, the properties of the image change, such as size, orientation and position.

Image of an object through a negative lens

In the case of the negative lens, we use the same method to image the ray path. Unlike the case of the converging lens, the image is always reduced and virtual. Magnification depends on the position of the object in front of the lens. Unlike the converging lens, the image is created on the object side and is therefore called a virtual image. You can see it directly with your eyes but not project it onto a screen.

The way a lens creates an image is predictable by knowing the focal length of that lens. Therefore, a certain distance must be maintained so that you can see the writing with the specified lens on the previous sheet.

The magnification and the location where the image is formed depend on the focal length of the lens and the distance between the lens and the object.

With the diverging lens (f = -50 mm) you always see a reduced virtual image. A virtual image can only be viewed with the eye. So far we only have virtual ones seen pictures.

The converging lens as a magnifying glass

Take the UC2 lens cube with focal length f=40mm and use it as a magnifying glass.

Can you read the small letters through the converging lens? What is written there?

A lens in action can be found here:

That's what converging lenses do

With the converging lenses, the image and the magnification depend on the position of the object.

If the distance between the object and the lens is more than twice the focal length of the lens, then the image is...

  • Vice versa
  • Swapped sides
  • Reduced
  • Real

If the distance between the object and the lens is exactly twice the focal length of the lens, then the image is...

  • Vice versa
  • Swapped sides
  • Same size
  • Real

If the distance between the object and the lens is more than the focal length and less than twice the focal length of the lens, then the image is...

  • Vice versa
  • Swapped sides
  • Magnified
  • real

Object distance (g)

The distance between the object and the lens plane is called g.

Image width (b)

The distance between the lens plane and the image formed by the lens is denoted as b.

The converging lens can produce a real image. The real image can then be seen on a screen.

That's why the magnifying glass enlarges

Magnifying glass effect!

If the distance between the object and the lens is less than the focal length of the lens, then the image is...

  • upright
  • right side up
  • Magnified
  • Virtual

The magnifying glass is the simplest of all optical devices, since it consists only of a simple converging lens with a suitable focal length. Why does the cube with the 50 𝑚𝑚 enlarge the small text? If the object is in front of the focal length of the lens - i.e. less than 50 𝑚𝑚 in front of the lens - the lens creates a virtual image which is behind the actual object. The eye perceives it enlarged. Check out the diagram above.

Calculate the magnification of the magnifying glass using the following formula:

250 𝑚𝑚 is the distance of clear visual range - i.e. the distance between the object and the eye at which most people can read well. More on this later in the “accommodation” of the eye.

How does a cinema projector work?

Take the UC2 lens cube with focal length 𝑓 =40 𝑚𝑚 and place it behind the sample holder cube. The distance between the object and the lens (i.e. the object distance g) should be approx. 50 mm. If you now illuminate the object with the flashlight, you will see it sharply at a distance of approx. 200 mm on the wall. A cinema projector has a film strip instead of the object and of course a much stronger light source.

Use a flashlight (e.g. from your cell phone) as a light source and hold it in front of the object

Use the image or text on the microscope slide as the object

How is the image oriented? Slide the lens back and forth in the cube and see when the image is in focus. Find the image for g = 50mm, 60mm, 65mm and measure the distance between the lens and the image.

How does a cinema projector work?

Where is the picture?

When an object is imaged through a converging lens, the position and size of the image depend on the distance (g) of the object to the lens and its focal length (f). The lens equation describes the relationship between image distance (b) and object distance (g):

How big is the picture?

The magnification of the object on the screen can easily be calculated using the following formula:

How the projector works

Check if your observation agrees with the calculation

Calculate the magnification of the projector for the different values of g and b.

Our lens has a focal length of f= 40 mm.

For g = 50mm → b = 200mm

For g = 60 mm → b = 120 mm\

For g = 65 mm → b = 104 mm\


The projector always produces an enlarged, inverted (reversed) image. The position of the image and its magnification depend on the position and size of the object.

Tutorial: Determining the Focal Distance of a Positive Lens

Materials needed:

  • Light source (e.g., room's illumiation)
  • Positive lens
  • Screen (e.g. table, piece of paper, etc.)

Instructions:

  1. Position the positive lens so that it faces the light source. Align a screen parallel to the focal plane of the lens.
  2. Modify the distance between the lens and the screen.
  3. Carefully observe and record the position at which the light source forms a clear image on the surface of the screen.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreTelescope/index.html b/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreTelescope/index.html index dc317e4ea..db75d6746 100644 --- a/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreTelescope/index.html +++ b/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreTelescope/index.html @@ -10,8 +10,8 @@ - - + +
@@ -28,7 +28,7 @@ Search for an object to the distance and use Galileo's telescope to look at it.

What is a Kepler telescope?

Set the lenses in the correct positions as shown in the diagram. Then look through the telescope into the distance.

What does the picture look like? How is the image oriented?

As you look through the telescope, vary the distances between the components to see such a sharp image!

This is a Kepler telescope

This type of telescope is often used in astronomy.

This is how the Kepler telescope works

What is the magnification of this Kepler telescope?

Formula for calculating magnification

This telescope can achieve a higher magnification than the Galilean telescope. But it creates the opposite picture. However, this is not a problem for observing the stars.

The picture is always
  • Magnified by the magnification from the formula above
  • Vice versa
  • Sides reversed

The field of view is larger than with the Galileo telescope.


Tutorial: Kepler's Telescope

Materials needed:

  • Eight base plates
  • 100 mm positive lens (in cube)
  • 50 mm positive lens (in cube)
  • Two empty cubes

Diagram (side view):

Instructions for assembling Kepler's telescope:

Step 1: Align the cubes

Align the cubes such that the two lenses lay at the extremes and the two empty cubes in the middle.

Step 2: Fix the cubes with base plates

Fix the cubes with the base plates placing them on top and on the bottom.

Step 3: Adjust the distance

Adjust the distance between the lenses as shown in the image.

Step 4: Use Kepler's telescope

Look for an object to the distance and use Kepler's telescope to look at it.

What is a spotting scope?

The spotting scope is long, so the scheme is not the same size. Set the lenses in the correct positions as shown in the diagram and look into the distance through the telescope.

which results into

How does the image here compare to the Kepler telescope?

As you look through the telescope, adjust the distances between the components to see a sharp image!

This is how the spotting scope works

The magnification is like that of the Kepler telescope. The erecting lens only changes the orientation (the image is reversed), not the magnification.

An upright image is necessary for terrestrial observations. True terrestrial telescopes use prism systems to rotate the image and keep it compact.

The picture is
  • Magnified at the same magnification as the Keppler telescope
  • Upright
  • mirrored

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/ENGLISH/coreMicroscope/index.html b/docs/Toolboxes/DiscoveryCore/ENGLISH/coreMicroscope/index.html index 60df704fd..062d76d1b 100644 --- a/docs/Toolboxes/DiscoveryCore/ENGLISH/coreMicroscope/index.html +++ b/docs/Toolboxes/DiscoveryCore/ENGLISH/coreMicroscope/index.html @@ -10,8 +10,8 @@ - - + +
@@ -30,7 +30,7 @@

Materials needed:

  • Microscope objective 4x
  • Microscope objective long mount with gear
  • Ramsden-Eyepiece (in cube)
  • Two non-kinematic mirrors (in cubes)
  • Sample holder (in cube)
  • Three empty cubes
  • 11 base plates
  • Smartphone base plate
  • Torch lamp
  • 50 mm lens (in cube)

Diagram (Side view):

Instructions for assembling the Smartphone Microscope:

Step 1: Build a four-base plate line

Step 2: Assemble the components

Place the Microscope objective mount on one extreme followed by the two mirrors facing each other and one empty cube in the other extreme. Fix them with base plates.

Step 3: Adjust the objective

Build one cube with the microscope objective inside. Adjust the objective's height if necessary by using the gear.

Step 4: Place the eyepiece

Place the eyepiece next to the microscope objective and one empty cube next to it. Mind the right orientation of the eyepiece.

Step 5: Align the smartphone base

Place the smartphone base with the hole aligned with the eyepiece. Note: You can adjust the orientation of the smartphone base to adapt your smartphone's size.

Step 6: Set up the sample holder

Place the sample holder cube on top of the microscope objective. Mind the distance between them. You can adjust the coarse distance by sliding the sample holder inside the cube and the finer distance by using the gear.

Step 7: Add the converging lens and lamp

Place a converging lens cube on top of the sample holder cube and place the torch lamp on top. Place the smartphone aligned to the eyepiece.

Step 8: Adjust for clarity

Try to move the smartphone such that the whole eyepiece circle appears illuminated. Then, turn the gear to focus and get a sharp image of the specimen.

Better with smartphone or eye?

The smartphone camera has a lens with a very short focal length because it has to fit into the thin smartphone. The lens then creates an image on the camera sensor whose properties are similar to those of the human eye.

The eye can see objects from both a distance and near. This property is called accommodation.

The smartphone camera can also do this, but it is called autofocus. It describes the ability to sharply image objects at different distances on the sensor.

The image from the eyepiece comes in parallel rays, as if coming from infinity. You observed with a relaxed eye (looking into the distance) or with a camera focused at infinity.


Calculation results

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/ENGLISH/uc2miniboxEN/index.html b/docs/Toolboxes/DiscoveryCore/ENGLISH/uc2miniboxEN/index.html index 893af2458..336e19fe6 100644 --- a/docs/Toolboxes/DiscoveryCore/ENGLISH/uc2miniboxEN/index.html +++ b/docs/Toolboxes/DiscoveryCore/ENGLISH/uc2miniboxEN/index.html @@ -10,8 +10,8 @@ - - + +
@@ -24,7 +24,7 @@ docs/01_Toolboxes/01_DiscoveryCore/IMAGES/MINIBOX/2.png

If you don't see a sharp image, move the inserts (e.g. lens) until you see it clearly. The green arrow in the picture shows you how to do this.

Here you can find a small video that explains the core concept of the cube

What do the symbols mean?

Duration: 2

Experiment If you see this block, there is something to experiment with! You can place a UC2 cube on this block.
Explanations: If you see this icon, there's something to learn!
Invoices: There is something to calculate here. Take a pen and paper and start puzzles.
Caution: Do not touch the glass surfaces with your fingers!
Cleaning the lenses: If you have already touched the lens, you can clean it with a glasses cloth.

What can a lens do?

Duration: 2

Take one or more of the cubes that have a lens in them and look at the UC2 symbol shown here. Hold the cube in your hand and change the distance between the lens and the image.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/FRENCH/CoreLensFR/index.html b/docs/Toolboxes/DiscoveryCore/FRENCH/CoreLensFR/index.html index 62e8d0790..0abc680ff 100644 --- a/docs/Toolboxes/DiscoveryCore/FRENCH/CoreLensFR/index.html +++ b/docs/Toolboxes/DiscoveryCore/FRENCH/CoreLensFR/index.html @@ -10,13 +10,13 @@ - - + +

Lentille

Lentilles

En optique géométrique, la lumière est représentée comme un faisceau de rayons (flèches), ce qui simplifie les propriétés physiques de la lumière. Un rayon a une direction et est donc dessiné avec une flèche. Une lentille "réfracte" le faisceau, changeant sa direction.

La distance focale d'une lentille correspond à la distance entre la lentille et le plan focal sur lequel se trouve le point focal. Elle est donnée en millimètres (f = mm).

Lentilles convergentes (positives) et divergentes (négatives)

Les lentilles convergentes réfractent les rayons lumineux se déplaçant parallèlement à l'axe optique en un point appelé le point focal.

Les lentilles divergentes réfractent les rayons lumineux se déplaçant parallèlement à l'axe optique comme s'ils provenaient d'un point appelé le foyer "virtuel".

Les lentilles “réfractent” les rayons lumineux

Vous pouvez trouver la distance focale de la lentille comme un numéro imprimé sur le support de lentille. La MiniBOX contient une lentille convergente de 100 mm, deux lentilles convergentes de 40 mm et une lentille négative de -50 mm. Les numéros indiquent la distance focale.

La lentille convergente est également appelée lentille positive ou convexe. La partie centrale de la lentille est toujours plus épaisse que le bord.

La lentille convergente agrandit l'image. Le grossissement est différent pour la lentille de 40 mm et celle de 100 mm. L'image peut être droite ou inversée.

La lentille négative (lentille divergente) est parfois aussi appelée lentille négative ou concave. La partie centrale de la lentille est toujours plus fine que le bord.

Avec la lentille négative (ici : lentille de -50 mm), l'image est toujours réduite et toujours droite.

Nous supposons que nos lentilles sont des "lentilles minces". Cela signifie que nous pouvons les considérer comme un plan unique sans nous soucier de leur épaisseur. Cela rend les explications et les calculs beaucoup plus simples.

Les réponses ont-elles suscité d'autres questions ? Alors découvrez exactement comment fonctionnent les lentilles...

Image de la lentille

Prenez maintenant les cubes de lentilles. Avec la bonne lentille, essayez de déchiffrer les informations sur la distance focale dans les cubes montrés. Déplacez la lentille sur l'écriture jusqu'à ce qu'elle soit de la même taille que le texte "UC2".

Pouvez-vous voir le texte de la même taille et orientation que le "UC2" ? Que se passe-t-il lorsque vous changez la distance entre la lentille et l'image ?

Que se passe-t-il si vous utilisez une lentille avec la mauvaise distance focale ?

Image d'un objet à travers une lentille positive

Prenons la lentille convergente comme exemple. Nous commençons par un objet (flèche verte) et voyons ce qui arrive aux rayons qui partent du sommet. Il y a une infinité de rayons dans toutes les directions, mais pour dessiner la figure, les trois rayons suivants suffiront :

  1. Le rayon central (orange) passe sans être perturbé par le centre de la lentille.
  2. Le rayon focal (jaune) commence également à partir de la pointe de la flèche, mais passe par le foyer côté objet à une distance focale f. Après la lentille, il continue à la même hauteur, mais maintenant parallèlement à l'axe optique.
  3. Le rayon parallèle (rouge) se déplace d'abord parallèlement à l'axe optique, mais est ensuite réfracté à la lentille de manière à passer par le point focal côté image à une distance focale f.

L'image se forme là où tous les rayons se croisent. Le principe est utilisé pour tous les points ou les rayons d'un objet émanant d'eux. Selon la lentille utilisée et selon la position de l'objet, les propriétés de l'image changent, telles que la taille, l'orientation et la position.

Image d'un objet à travers une lentille négative

Dans le cas de la lentille négative, nous utilisons la même méthode pour imager le chemin des rayons. Contrairement au cas de la lentille convergente, l'image est toujours réduite et virtuelle. Le grossissement dépend de la position de l'objet devant la lentille. Contrairement à la lentille convergente, l'image est créée du côté objet et est donc appelée une image virtuelle. Vous pouvez la voir directement avec vos yeux, mais ne pas la projeter sur un écran.

La façon dont une lentille crée une image est prévisible en connaissant la distance focale de cette lentille. Par conséquent, une certaine distance doit être maintenue afin que vous puissiez voir l'écriture avec la lentille spécifiée sur la feuille précédente.

Le grossissement et l'emplacement où l'image est formée dépendent de la distance focale de la lentille et de la distance entre la lentille et l'objet.

Avec la lentille divergente (f = -50 mm), vous voyez toujours une image virtuelle réduite. Une image virtuelle ne peut être vue qu'avec l'œil. Jusqu'à présent, nous n'avons vu que des images virtuelles.

La lentille convergente comme loupe

Prenez le cube de lentilles UC2 avec une distance focale f = 40 mm et utilisez-le comme une loupe.

Pouvez-vous lire les petites lettres à travers la lentille convergente ? Qu'est-ce qui est écrit là ?

Une lentille en action peut être trouvée ici :

Ce que font les lentilles convergentes

Avec les lentilles convergentes, l'image et le grossissement dépendent de la position de l'objet.

Si la distance entre l'objet et la lentille est supérieure à deux fois la distance focale de la lentille, alors l'image est...

  • Inversée
  • Côté opposé
  • Réduite
  • Réelle

Si la distance entre l'objet et la lentille est exactement deux fois la distance focale de la lentille, alors l'image est...

  • Inversée
  • Côté opposé
  • Même taille
  • Réelle

Si la distance entre l'objet et la lentille est supérieure à la distance focale et inférieure à deux fois la distance focale de la lentille, alors l'image est...

  • Inversée
  • Côté opposé
  • Agrandie
  • Réelle

Distance de l'objet (g)

La distance entre l'objet et le plan de la lentille est appelée g.

Largeur de l'image (b)

La distance entre le plan de la lentille et l'image formée par la lentille est désignée comme b.

La lentille convergente peut produire une image réelle. L'image réelle peut ensuite être vue sur un écran.

Pourquoi la loupe agrandit-elle ?

Effet de loupe !

Si la distance entre l'objet et la lentille est inférieure à la distance focale de la lentille, alors l'image est...

  • Droite
  • Côté droit
  • Agrandie
  • Virtuelle

La loupe est le plus simple de tous les dispositifs optiques, car elle consiste uniquement en une simple lentille convergente avec une distance focale appropriée. Pourquoi le cube avec les 50 mm agrandit-il le petit texte ? Si l'objet est devant la distance focale de la lentille - c'est-à-dire à moins de 50 mm devant la lentille - la lentille crée une image virtuelle qui se trouve derrière l'objet réel. L'œil la perçoit agrandie. Consultez le schéma ci-dessus.

Calculez le grossissement de la loupe en utilisant la formule suivante :

250 mm est la distance de vision distincte - c'est-à-dire la distance entre l'objet et l'œil à laquelle la plupart des gens peuvent bien lire. Plus d'informations à ce sujet plus tard dans la section “accommodation” de l'œil.

Comment

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/FRENCH/CoreTelescopeFR/index.html b/docs/Toolboxes/DiscoveryCore/FRENCH/CoreTelescopeFR/index.html index 529beec25..9cfdb41fa 100644 --- a/docs/Toolboxes/DiscoveryCore/FRENCH/CoreTelescopeFR/index.html +++ b/docs/Toolboxes/DiscoveryCore/FRENCH/CoreTelescopeFR/index.html @@ -10,8 +10,8 @@ - - + +
@@ -27,7 +27,7 @@ Cherchez un objet au loin et utilisez le télescope de Galilée pour le regarder.

Qu'est-ce qu'un télescope de Kepler ?

Placez les lentilles dans les positions correctes comme indiqué dans le schéma. Ensuite, regardez au loin à travers le télescope.

À quoi ressemble l'image ? Comment est l'image orientée ?

En regardant à travers le télescope, variez les distances entre les composants pour voir une image nette !

Voici un télescope de Kepler

Ce type de télescope est souvent utilisé en astronomie.

Voici comment fonctionne le télescope de Kepler

Quelle est l'augmentation de ce télescope de Kepler ?

Formule pour calculer l'agrandissement

Ce télescope peut atteindre un grossissement plus élevé que le télescope de Galilée. Mais il crée une image inversée. Cependant, ce n'est pas un problème pour observer les étoiles.

L'image est toujours
  • Agrandie par le grossissement de la formule ci-dessus
  • Inversée
  • Côtés inversés

Le champ de vision est plus grand qu'avec le télescope de Galilée.


Tutoriel : télescope de Kepler

Matériaux nécessaires :

  • Huit plaques de base
  • Lentille positive de 100 mm (dans un cube)
  • Lentille positive de 50 mm (dans un cube)
  • Deux cubes vides

Schéma (vue latérale) :

Instructions pour assembler le télescope de Kepler :

Étape 1 : Alignez les cubes

Alignez les cubes de sorte que les deux lentilles soient aux extrémités et les deux cubes vides au milieu.

Étape 2 : Fixez les cubes avec des plaques de base

Fixez les cubes avec les plaques de base en les plaçant en haut et en bas.

Étape 3 : Ajustez la distance

Ajustez la distance entre les lentilles comme montré dans l'image.

Étape 4 : Utilisez le télescope de Kepler

Cherchez un objet au loin et utilisez le télescope de Kepler pour le regarder.

Qu'est-ce qu'une longue-vue ?

La longue-vue est longue, donc le schéma n'est pas à la même taille. Placez les lentilles dans les positions correctes comme indiqué dans le schéma et regardez au loin à travers le télescope.

ce qui donne

Comment l'image ici se compare-t-elle au télescope de Kepler ?

En regardant à travers le télescope, ajustez les distances entre les composants pour voir une image nette !

Voici comment fonctionne la longue-vue

Le grossissement est comme celui du télescope de Kepler. La lentille redressante ne change que l'orientation (l'image est inversée), pas le grossissement.

Une image droite est nécessaire pour les observations terrestres. Les véritables télescopes terrestres utilisent des systèmes de prismes pour tourner l'image et la garder compacte.

L'image est
  • Agrandie au même grossissement que le télescope de Kepler
  • Droite
  • Miroir

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/FRENCH/coreMicroscopeFR/index.html b/docs/Toolboxes/DiscoveryCore/FRENCH/coreMicroscopeFR/index.html index bbdd29872..b937d2182 100644 --- a/docs/Toolboxes/DiscoveryCore/FRENCH/coreMicroscopeFR/index.html +++ b/docs/Toolboxes/DiscoveryCore/FRENCH/coreMicroscopeFR/index.html @@ -10,8 +10,8 @@ - - + +
@@ -30,7 +30,7 @@

Matériaux nécessaires :

  • Objectif de microscope 4x
  • Support long d'objectif de microscope avec engrenage
  • Oculaire de Ramsden (dans un cube)
  • Deux miroirs non cinématiques (dans des cubes)
  • Porte-échantillon (dans un cube)
  • Trois cubes vides
  • 11 plaques de base
  • Plaque de base pour smartphone
  • Lampe torche
  • Lentille de 50 mm (dans un cube)

Schéma (vue latérale) :

Instructions pour assembler le microscope pour smartphone :

Étape 1 : Construire une ligne de quatre plaques de base

![](../IMAGES/MINIBOXTUTORIAL/image49

.jpg)

Étape 2 : Assembler les composants

Placez le support d'objectif de microscope à une extrémité suivi des deux miroirs se faisant face et d'un cube vide à l'autre extrémité. Fixez-les avec des plaques de base.

Étape 3 : Ajuster l'objectif

Construisez un cube avec l'objectif de microscope à l'intérieur. Ajustez la hauteur de l'objectif si nécessaire en utilisant l'engrenage.

Étape 4 : Placer l'oculaire

Placez l'oculaire à côté de l'objectif de microscope et un cube vide à côté. Respectez la bonne orientation de l'oculaire.

Étape 5 : Aligner la base du smartphone

Placez la base du smartphone avec le trou aligné avec l'oculaire. Remarque : Vous pouvez ajuster l'orientation de la base du smartphone pour adapter la taille de votre smartphone.

Étape 6 : Installer le porte-échantillon

Placez le cube porte-échantillon au-dessus de l'objectif de microscope. Respectez la distance entre eux. Vous pouvez ajuster la distance approximative en faisant glisser le porte-échantillon à l'intérieur du cube et la distance plus fine en utilisant l'engrenage.

Étape 7 : Ajouter la lentille convergente et la lampe

Placez un cube de lentille convergente au-dessus du cube porte-échantillon et placez la lampe torche au-dessus. Placez le smartphone aligné avec l'oculaire.

Étape 8 : Ajuster pour la clarté

Essayez de déplacer le smartphone de manière à ce que tout le cercle de l'oculaire apparaisse illuminé. Ensuite, tournez l'engrenage pour focaliser et obtenir une image nette de l'échantillon.

Mieux avec le smartphone ou l'œil ?

L'appareil photo du smartphone a une lentille avec une distance focale très courte car elle doit s'adapter à l'épaisseur du smartphone. La lentille crée alors une image sur le capteur de la caméra dont les propriétés sont similaires à celles de l'œil humain.

L'œil peut voir des objets à la fois de loin et de près. Cette propriété est appelée accommodation.

L'appareil photo du smartphone peut également faire cela, mais cela s'appelle autofocus. Cela décrit la capacité à imager nettement des objets à différentes distances sur le capteur.

L'image de l'oculaire provient de rayons parallèles, comme si elle venait de l'infini. Vous avez observé avec un œil détendu (regardant au loin) ou avec une caméra mise au point à l'infini.


Résultats des calculs

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/FRENCH/uc2miniboxFR/index.html b/docs/Toolboxes/DiscoveryCore/FRENCH/uc2miniboxFR/index.html index dbed3bd82..20adef106 100644 --- a/docs/Toolboxes/DiscoveryCore/FRENCH/uc2miniboxFR/index.html +++ b/docs/Toolboxes/DiscoveryCore/FRENCH/uc2miniboxFR/index.html @@ -10,8 +10,8 @@ - - + +
@@ -24,7 +24,7 @@ docs/01_Toolboxes/01_DiscoveryCore/IMAGES/MINIBOX/2.png

Si vous ne voyez pas une image nette, déplacez les inserts (par exemple, la lentille) jusqu'à ce que vous la voyiez clairement. La flèche verte sur l'image vous montre comment faire.

Ici, vous pouvez trouver une petite vidéo qui explique le concept de base du cube

Que signifient les symboles ?

Durée : 2

Expérience : Si vous voyez ce bloc, il y a quelque chose à expérimenter ! Vous pouvez placer un cube UC2 sur ce bloc.
Explications : Si vous voyez cette icône, il y a quelque chose à apprendre !
Calculs : Il y a quelque chose à calculer ici. Prenez un stylo et du papier et commencez les puzzles.
Attention : Ne touchez pas les surfaces en verre avec vos doigts !
Nettoyage des lentilles : Si vous avez déjà touché la lentille, vous pouvez la nettoyer avec un chiffon pour lunettes.

Que peut faire une lentille ?

Durée : 2

Prenez un ou plusieurs cubes qui contiennent une lentille et regardez le symbole UC2 montré ici. Tenez le cube dans votre main et changez la distance entre la lentille et l'image.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/GERMAN/CoreLens/index.html b/docs/Toolboxes/DiscoveryCore/GERMAN/CoreLens/index.html index 2a46c4c51..e66f18c1e 100644 --- a/docs/Toolboxes/DiscoveryCore/GERMAN/CoreLens/index.html +++ b/docs/Toolboxes/DiscoveryCore/GERMAN/CoreLens/index.html @@ -10,15 +10,15 @@ - - + +

Linse

Linsen

In der Strahlenoptik wird Licht als Bündel von Strahlen (Pfeilen) dargestellt, was die physikalischen Eigenschaften des Lichts vereinfacht. Ein Strahl hat eine Richtung und wird daher mit einem Pfeil gezeichnet. Eine Linse „bricht“ den Strahl und ändert dessen Richtung.

Die Brennweite einer Linse entspricht der Entfernung von der Linse zur Brennebene, auf der der Brennpunkt liegt. Sie wird in Millimetern angegeben (f = mm).

Sammellinsen (positiv) und Zerstreuungslinsen (negativ)

Sammellinsen brechen die Lichtstrahlen, die parallel zur optischen Achse verlaufen, in einem Punkt, der Brennpunkt genannt wird.

Die Zerstreuungslinsen brechen die Lichtstrahlen, die parallel zur optischen Achse verlaufen, so, als ob sie von einem Punkt, dem „virtuellen“ Brennpunkt, ausgingen.

Linsen „brechen“ die Lichtstrahlen

Sie können die Brennweite der Linse als aufgedruckte Zahl am Linsenhalter finden. Die MiniBOX erhält eine 100mm Sammellinse, zwei 40mm Sammellinsen und eine -50mm negative Linse. Die Zahlen geben die Brennweite an.

Die Sammellinse wird auch positive oder konvexe Linse genannt. Der mittlere Teil der Linse ist immer dicker als der Rand.

Die Sammellinse vergrößert das Bild. Die Vergrößerung unterscheidet sich zwischen der 40mm Linse und der 100mm Linse. Das Bild kann aufrecht oder invertiert sein.

Die negative Linse (Streulinse) wird manchmal auch negative oder konkave Linse genannt. Der mittlere Teil der Linse ist immer dünner als der Rand.

Mit der negativen Linse (hier: -50 mm Linse) wird das Bild immer verkleinert und immer aufrecht dargestellt.

Wir gehen davon aus, dass unsere Linsen sogenannte „dünne Linsen“ sind. Das bedeutet, dass wir sie als eine Ebene betrachten können und uns nicht um ihre Dicke kümmern müssen. Das macht Erklärungen und Berechnungen viel einfacher.

Haben die Antworten weitere Fragen aufgeworfen? Dann fahren Sie fort, um genau zu verstehen, wie Linsen funktionieren...

Linsenbild

Nehmen Sie jetzt die Linsenwürfel. Versuchen Sie mit der richtigen Linse, die Brennweiteninformation in den Würfeln zu entziffern. Bewegen Sie die Linse über die Schrift, bis sie dieselbe Größe wie der Text "UC2" hat.

Können Sie den Text in derselben Größe und Ausrichtung wie das "UC2" sehen? Was passiert, wenn Sie den Abstand zwischen Linse und Bild ändern?

Was passiert, wenn Sie eine Linse mit der falschen Brennweite verwenden?

Bild eines Objekts durch eine positive Linse

Nehmen wir die Sammellinse als Beispiel. Wir starten mit einem Objekt (grüner Pfeil) und sehen, was mit den Strahlen passiert, die von der Spitze ausgehen. Es gibt unendlich viele Strahlen in alle Richtungen, aber für die Zeichnung der Figur reichen die folgenden drei Strahlen aus:

  1. Der Zentralstrahl (orange) passiert ungestört das Zentrum der Linse.

  2. Der Fokusstrahl (gelb) startet ebenfalls von der Spitze des Pfeils, geht aber durch den objektseitigen Fokus bei Brennweite f. Nach der Linse geht er in gleicher Höhe, aber jetzt parallel zur optischen Achse weiter.

  3. Der Parallelstrahl (rot) verläuft zunächst parallel zur optischen Achse, wird dann aber an

    der Linse so gebrochen, dass er durch den bildseitigen Brennpunkt bei Brennweite f verläuft.

Das Bild entsteht dort, wo alle Strahlen sich schneiden. Dieses Prinzip wird für alle Punkte oder die von ihnen ausgehenden Strahlen eines Objekts verwendet. Je nach verwendeter Linse und Position des Objekts ändern sich die Eigenschaften des Bildes, wie Größe, Orientierung und Position.

Bild eines Objekts durch eine negative Linse

Im Fall der negativen Linse verwenden wir dieselbe Methode, um den Strahlengang abzubilden. Anders als bei der Sammellinse ist das Bild immer verkleinert und virtuell. Die Vergrößerung hängt von der Position des Objekts vor der Linse ab. Anders als bei der Sammellinse wird das Bild auf der Objektseite erzeugt und daher als virtuelles Bild bezeichnet. Sie können es direkt mit Ihren Augen sehen, aber nicht auf einen Bildschirm projizieren.

Die Art, wie eine Linse ein Bild erzeugt, ist vorhersehbar, wenn man die Brennweite dieser Linse kennt. Daher muss ein bestimmter Abstand eingehalten werden, damit Sie die Schrift mit der angegebenen Linse auf dem vorherigen Blatt sehen können.

Die Vergrößerung und der Ort, an dem das Bild entsteht, hängen von der Brennweite der Linse und dem Abstand zwischen Linse und Objekt ab.

Mit der Zerstreuungslinse (f = -50 mm) sehen Sie immer ein verkleinertes virtuelles Bild. Ein virtuelles Bild kann nur mit dem Auge betrachtet werden. Bisher haben wir nur virtuelle Bilder gesehen.

Die Sammellinse als Lupe

Nehmen Sie den UC2-Linsenwürfel mit einer Brennweite von f=40mm und verwenden Sie ihn als Lupe.

Können Sie die kleinen Buchstaben durch die Sammellinse lesen? Was steht dort?

Eine Linse in Aktion finden Sie hier:

Das machen Sammellinsen

Mit den Sammellinsen hängen Bild und Vergrößerung von der Position des Objekts ab.

Wenn der Abstand zwischen Objekt und Linse mehr als das Doppelte der Brennweite der Linse beträgt, dann ist das Bild...

  • Umgekehrt
  • Seitlich getauscht
  • Verkleinert
  • Real

Wenn der Abstand zwischen Objekt und Linse genau das Doppelte der Brennweite der Linse beträgt, dann ist das Bild...

  • Umgekehrt
  • Seitlich getauscht
  • Gleiche Größe
  • Real

Wenn der Abstand zwischen Objekt und Linse mehr als die Brennweite und weniger als das Doppelte der Brennweite der Linse beträgt, dann ist das Bild...

  • Umgekehrt
  • Seitlich getauscht
  • Vergrößert
  • Real

Objektabstand (g)

Der Abstand zwischen dem Objekt und der Linsenebene wird als g bezeichnet.

Bildweite (b)

Der Abstand zwischen der Linsenebene und dem durch die Linse gebildeten Bild wird als b bezeichnet.

Die Sammellinse kann ein reales Bild erzeugen. Das reale Bild kann dann auf einem Schirm gesehen werden.

Deshalb vergrößert die Lupe

Lupeneffekt!

Wenn der Abstand zwischen dem Objekt und der Linse weniger als die Brennweite der Linse beträgt, dann ist das Bild...

  • Aufrecht
  • Richtig herum
  • Vergrößert
  • Virtuell

Die Lupe ist das einfachste aller optischen

Geräte, da sie nur aus einer einfachen Sammellinse mit geeigneter Brennweite besteht. Warum vergrößert der Würfel mit 50 𝑚𝑚 den kleinen Text? Wenn das Objekt vor der Brennweite der Linse liegt – also weniger als 50 𝑚𝑚 vor der Linse – erzeugt die Linse ein virtuelles Bild, das hinter dem eigentlichen Objekt liegt. Das Auge nimmt es vergrößert wahr. Schauen Sie sich das obenstehende Diagramm an.


Berechnen Sie die Vergrößerung der Lupe mit der folgenden Formel:

250 𝑚𝑚 ist der Abstand der klaren Sehweite – d. h. der Abstand zwischen dem Objekt und dem Auge, bei dem die meisten Menschen gut lesen können. Mehr dazu später bei der „Akkommodation“ des Auges.

Wie funktioniert ein Kinoprojektor?

Nehmen Sie den UC2-Linsenwürfel mit einer Brennweite von 𝑓 =40 𝑚𝑚 und platzieren Sie ihn hinter dem Probenhalterwürfel. Der Abstand zwischen dem Objekt und der Linse (also der Objektabstand g) sollte ca. 50 mm betragen. Wenn Sie das Objekt jetzt mit der Taschenlampe beleuchten, sehen Sie es in etwa 200 mm Entfernung scharf an der Wand. Ein Kinoprojektor hat anstelle des Objekts einen Filmstreifen und natürlich eine viel stärkere Lichtquelle.

Verwenden Sie eine Taschenlampe (z. B. von Ihrem Handy) als Lichtquelle und halten Sie sie vor das Objekt

Verwenden Sie das Bild oder den Text auf dem Mikroskopobjektträger als Objekt

Wie ist das Bild ausgerichtet? Schieben Sie die Linse hin und her im Würfel und sehen Sie, wann das Bild scharf ist. Finden Sie das Bild für g = 50mm, 60mm, 65mm und messen Sie den Abstand zwischen der Linse und dem Bild.

Wie funktioniert ein Kinoprojektor?

Wo ist das Bild?

Wenn ein Objekt durch eine Sammellinse abgebildet wird, hängen Position und Größe des Bildes von der Entfernung (g) des Objekts zur Linse und deren Brennweite (f) ab. Die Linsengleichung beschreibt die Beziehung zwischen Bildweite (b) und Objektabstand (g):

Wie groß ist das Bild?

Die Vergrößerung des Objekts auf der Leinwand kann einfach mit der folgenden Formel berechnet werden:

Wie der Projektor funktioniert

Überprüfen Sie, ob Ihre Beobachtung mit der Berechnung übereinstimmt

Berechnen Sie die Vergrößerung des Projektors für die verschiedenen Werte von g und b.

Unsere Linse hat eine Brennweite von f= 40 mm.

Für g = 50mm → b = 200mm

Für g = 60 mm → b = 120 mm\

Für g = 65 mm → b = 104 mm\


Der Projektor erzeugt immer ein vergrößertes, invertiertes (umgekehrtes) Bild. Die Position des Bildes und seine Vergrößerung hängen von der Position und Größe des Objekts ab.

Tutorial: Bestimmung der Brennweite einer positiven Linse

Benötigte Materialien:

  • Lichtquelle (z. B. Raumbeleuchtung)
  • Positive Linse
  • Schirm (z

. B. Tisch, Stück Papier usw.)

Anleitung:

  1. Positionieren Sie die positive Linse so, dass sie der Lichtquelle zugewandt ist. Richten Sie einen Schirm parallel zur Brennebene der Linse aus.
  2. Ändern Sie den Abstand zwischen Linse und Schirm.
  3. Beobachten und dokumentieren Sie sorgfältig die Position, an der die Lichtquelle ein klares Bild auf der Oberfläche des Schirms bildet.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/GERMAN/CoreTelescope/index.html b/docs/Toolboxes/DiscoveryCore/GERMAN/CoreTelescope/index.html index 940ca0387..dcadcbd82 100644 --- a/docs/Toolboxes/DiscoveryCore/GERMAN/CoreTelescope/index.html +++ b/docs/Toolboxes/DiscoveryCore/GERMAN/CoreTelescope/index.html @@ -10,8 +10,8 @@ - - + +
@@ -28,7 +28,7 @@ Suche ein Objekt in der Ferne und betrachte es durch Galileis Teleskop.

Was ist ein Kepler-Teleskop?

Setze die Linsen gemäß dem Diagramm in die richtigen Positionen. Dann schaue durch das Teleskop in die Ferne.

Wie sieht das Bild aus? Wie ist die Bildausrichtung?

Während du durch das Teleskop schaust, variiere die Abstände zwischen den Komponenten, um ein solch scharfes Bild zu sehen!

Das ist ein Kepler-Teleskop

Dieser Teleskoptyp wird oft in der Astronomie verwendet.

So funktioniert das Kepler-Teleskop

Welche Vergrößerung hat dieses Kepler-Teleskop?

Formel zur Berechnung der Vergrö

ßerung

Dieses Teleskop kann eine höhere Vergrößerung als das Galilei-Teleskop erreichen. Es erzeugt jedoch ein umgekehrtes Bild. Das ist jedoch kein Problem bei der Beobachtung von Sternen.

Das Bild ist immer
  • Vergrößert durch die Vergrößerung aus der obigen Formel
  • Umgekehrt
  • Seitlich vertauscht

Das Sichtfeld ist größer als beim Galilei-Teleskop.


Tutorial: Keplers Teleskop

Benötigte Materialien:

  • Acht Bodenplatten
  • 100 mm positive Linse (im Würfel)
  • 50 mm positive Linse (im Würfel)
  • Zwei leere Würfel

Diagramm (Seitenansicht):

Anleitung zum Zusammenbau von Keplers Teleskop:

Schritt 1: Würfel ausrichten

Richte die Würfel so aus, dass die beiden Linsen an den Extremen liegen und die beiden leeren Würfel in der Mitte.

Schritt 2: Würfel mit Bodenplatten fixieren

Fixiere die Würfel mit den Bodenplatten, indem du sie oben und unten platzierst.

Schritt 3: Abstand justieren

Justiere den Abstand zwischen den Linsen, wie im Bild gezeigt.

Schritt 4: Keplers Teleskop verwenden

Suche ein Objekt in der Ferne und betrachte es durch Keplers Teleskop.

Was ist ein Spektiv?

Das Spektiv ist lang, daher ist das Schema nicht gleich groß. Setze die Linsen gemäß dem Diagramm in die richtigen Positionen und schaue durch das Teleskop in die Ferne.

was zu folgendem führt

Wie vergleicht sich das Bild hier mit dem Kepler-Teleskop?

Während du durch das Teleskop schaust, justiere die Abstände zwischen den Komponenten, um ein scharfes Bild zu sehen!

So funktioniert das Spektiv

Die Vergrößerung ist wie beim Kepler-Teleskop. Die Umkehrlinse ändert nur die Orientierung (das Bild wird umgekehrt), nicht die Vergrößerung.

Ein aufrechtes Bild ist für terrestrische Beobachtungen notwendig. Echte terrestrische Teleskope verwenden Prismensysteme, um das Bild zu drehen und kompakt zu halten.

Das Bild ist
  • Mit der gleichen Vergrößerung wie das Kepler-Teleskop vergrößert
  • Aufrecht
  • Gespiegelt

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/GERMAN/coreMicroscope/index.html b/docs/Toolboxes/DiscoveryCore/GERMAN/coreMicroscope/index.html index a834a840a..3095683c5 100644 --- a/docs/Toolboxes/DiscoveryCore/GERMAN/coreMicroscope/index.html +++ b/docs/Toolboxes/DiscoveryCore/GERMAN/coreMicroscope/index.html @@ -10,8 +10,8 @@ - - + +
@@ -20,7 +20,7 @@ ![](../IMAGES/MINIBO

XTUTORIAL/image33.png)

Mikroskop mit "Unendlichkeitsoptik" und Okular

Kannst du das mikroskopische Bild durch die Okularlinse mit deinen Augen sehen? Welchen Effekt hat der Spiegel? Richte das Mikroskop ohne den Spiegel ein. Stelle sicher, dass du immer noch zwei leere Räume zwischen der Tubuslinse und dem Okular hast. Was beobachtest du dann?

Eine kurze Einführung in Spiegel und deren Anwendungen findest du hier:

Wozu dient das Okular?

Neuere Mikroskope sind mit sogenannten "Unendlichkeitsoptiken" ausgestattet. In diesem Fall erzeugt die Linse kein reales Zwischenbild. Das Licht verlässt die Linse als unendliche parallele Strahlen. Am Ende des "unendlichen" Tubus befindet sich eine Tubuslinse. Diese erzeugt ein Zwischenbild, das dann durch das Okular erneut vergrößert wird.

Das Bild hinter dem Okular ist umgekehrt, umgekehrt, vergrößert und virtuell. Das virtuelle Bild kann mit dem Auge gesehen werden.

Diese Konfiguration ist sehr nützlich in modernen Mikroskopen, da sie das Einfügen zusätzlicher Komponenten wie Filter zwischen Objektiv und Tubuslinse erlaubt, ohne den optischen Weg zu beeinflussen.

Ein Filter kann verwendet werden, um die Helligkeit und Farbe des Bildes zu ändern.


Das Okular ist dafür gut

Wie groß ist die Vergrößerung nach dem Okular?

Gesamtvergrößerung

Ein Okular ist eigentlich nur eine Linse, die das Zwischenbild vergrößert. Es bildet das virtuelle Bild so ab, dass du es mit deinen Augen sehen kannst.

Mit dem Spiegel kannst du nicht nur dich selbst sehen, sondern auch das einfallende Licht in jede Richtung reflektieren. So kannst du den optischen Weg falten und die Arbeit komfortabler gestalten. Der Spiegel beeinflusst zwar nicht die Vergrößerung, dreht aber das Bild in eine Richtung.

Tutorial: Lichtmikroskop mit Unendlichkeitsoptik und Okular

Benötigte Materialien:

  • Keplers Teleskop
  • Taschenlampe
  • Acht Bodenplatten
  • Probenhalter (im Würfel) mit Probe
  • Spiegel (im Würfel)
  • Leerwürfel
  • Okular (im Würfel)

Diagramm (Seitenansicht):

Anleitung zum Zusammenbau des Lichtmikroskops mit Unendlichkeitsoptik und Okular:

Schritt 1: Probenhalter-Würfel hinzufügen

Füge den Probenhalter-Würfel im Keplers Teleskop neben der 50-mm-Sammellinse hinzu.

Schritt 2: Neben der 100-mm-Linse zusammenbauen

Montiere neben der 100-mm-Sammellinse einen Leerwürfel und daneben den Spiegelwürfel.

Schritt 3: Das Okular platzieren

Platziere das Okular oben auf dem Spiegelwürfel mit der richtigen Orientierung. Beleuchte die Probe aus ein

iger Entfernung.

Schritt 5: Für ein scharfes Bild justieren

Schaue durch das Okular. Justiere den Linsenabstand, bis du ein fokussiertes scharfes Bild siehst. Hinweis: Wenn du das Präparat nicht siehst, versuche vorsichtig die Position der Probe zu justieren, bis du das Präparat siehst.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/GERMAN/uc2miniboxDE/index.html b/docs/Toolboxes/DiscoveryCore/GERMAN/uc2miniboxDE/index.html index 4abb85758..c75503d29 100644 --- a/docs/Toolboxes/DiscoveryCore/GERMAN/uc2miniboxDE/index.html +++ b/docs/Toolboxes/DiscoveryCore/GERMAN/uc2miniboxDE/index.html @@ -10,8 +10,8 @@ - - + +
@@ -27,7 +27,7 @@ ||Rechnungen: Hier gibt es etwas zu rechnen. Nehmen Sie einen Stift und Papier und beginnen Sie mit den Rätseln. | ||Vorsicht: Berühren Sie die Glasoberflächen nicht mit Ihren Fingern! | ||Reinigung der Linsen: Wenn Sie die Linse bereits berührt haben, können Sie sie mit einem Brillentuch reinigen. |

Was kann eine Linse bewirken?

Nehmen Sie einen oder mehrere der Würfel, die eine Linse enthalten, und betrachten Sie das hier gezeigte UC2-Symbol. Halten Sie den Würfel in Ihrer Hand und ändern Sie den Abstand zwischen der Linse und dem Bild.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/Opticsintro/index.html b/docs/Toolboxes/DiscoveryCore/Opticsintro/index.html index 09f4b8df7..a13248167 100644 --- a/docs/Toolboxes/DiscoveryCore/Opticsintro/index.html +++ b/docs/Toolboxes/DiscoveryCore/Opticsintro/index.html @@ -10,8 +10,8 @@ - - + +
@@ -36,7 +36,7 @@

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/SPANISH/core_intro/index.html b/docs/Toolboxes/DiscoveryCore/SPANISH/core_intro/index.html index 9d6ca5380..ee945fd76 100644 --- a/docs/Toolboxes/DiscoveryCore/SPANISH/core_intro/index.html +++ b/docs/Toolboxes/DiscoveryCore/SPANISH/core_intro/index.html @@ -10,8 +10,8 @@ - - + +
@@ -21,7 +21,7 @@ Objetivo del microscopio: un sistema de lentes especial que agranda un objeto

Un recorrido rápido a través de una caja ejemplar y cómo se ven los cubos (estado de octubre de 2022) se puede encontrar aquí:

¿Qué es UC2?

El elemento central del proyecto UC2 es un cubo simple. El cubo consta de dos mitades y alberga un inserto deslizable. El inserto puede contener varios componentes ópticos (por ejemplo, lentes, espejos), lo que significa que se pueden implementar diferentes funciones con cada cubo.

Tipo de cubo 1: moldeado por inyección con conexión de enchufe

Base

Base

El cubo se puede montar en una placa base. Los módulos de la placa base se pueden juntar como un rompecabezas.

UC2 para imprimir tú mismo

El cubo UC2 también se puede imprimir en 3D. Se ve igual que el modelo moldeado por inyección, pero aquí consiste en una tapa de cubo y el cuerpo del cubo, que se mantienen unidos con tornillos. Los tornillos son excelentes para colocarlos en la placa magnética. Al combinar diferentes módulos de cubos, se pueden ensamblar fácilmente diferentes estructuras ópticas. Una nueva función se puede agregar con cada dado. Tu creatividad no tiene límites.

Tipo de cubo 2: impreso en 3D con conexión magnética

Dados

Placa base con imanes

En la placa base impresa en 3D hay pequeños imanes esféricos en los que se colocan los cubos.

¿Quieres más dados? Entonces puedes construirlos tú mismo. Puedes encontrar todo aquí

Así es como encajan los dados

Duración: 1

Asegúrate de que los cubos estén colocados correctamente en la placa y no estén inclinados. Al final es importante que los insertos estén en el lugar correcto.

Si no ves una imagen nítida, mueve los insertos (por ejemplo, lente) hasta que la veas claramente. La flecha verde en la imagen te muestra cómo hacerlo.

Aquí puedes encontrar un pequeño video que explica el concepto central del cubo

Of course, here's the translation of the provided text into Spanish:


¿Qué significan los símbolos?

Duración: 2

Experimenta Si ves este bloque, ¡hay algo con lo que experimentar! Puedes colocar un cubo UC2 en este bloque.
Explicaciones: Si ves este icono, ¡hay algo que aprender!
Facturas: Aquí hay algo que calcular. Toma un lápiz y papel y comienza a resolver rompecabezas.
Precaución: ¡No toques las superficies de vidrio con tus dedos!
Limpieza de las lentes: Si ya has tocado la lente, puedes limpiarla con un paño para gafas.

¿Qué puede hacer una lente?

Duración: 2

Toma uno o más de los cubos que tienen una lente y observa el símbolo UC2 mostrado aquí. Sostén el cubo en tu mano y cambia la distancia entre la lente y la imagen.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryCore/Smartphone Microscope/index.html b/docs/Toolboxes/DiscoveryCore/Smartphone Microscope/index.html index 0bf4f5385..8c03d4089 100644 --- a/docs/Toolboxes/DiscoveryCore/Smartphone Microscope/index.html +++ b/docs/Toolboxes/DiscoveryCore/Smartphone Microscope/index.html @@ -10,13 +10,13 @@ - - + +

openUC2 Smartphone Microscope with a finite corrected objective lens

This video shows you how to build the UC2 smartphone microscope as also indicated in the PDF manual. It shows some tricks how to make it more stable and how to operate the Z-stage

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_FinOptics/index.html b/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_FinOptics/index.html index 9f7013bdc..afc4ea09c 100644 --- a/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_FinOptics/index.html +++ b/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_FinOptics/index.html @@ -10,13 +10,13 @@ - - + +

The Course BOX Alignment Procedure (Finite Optics)

This is the alignment procedure of the experiments with finite-corrected optics. If you are looking for the infinity-corrected setups click here.

First experiment: Finite-corrected Microscope with Köhler Illumination

This experiment demonstrates the essential parts of a microscope and explains the concept of conjugate planes. The key components are: Light source, Collector lens, Field Diaphragm, Aperture Diaphragm, Condenser lens, Sample, Objective lens and Eyepiece lens.

The Aperture set of conjugate planes: Lamp filament, Aperture diaphragm, Back Focal Plane of the objective, Exit pupil of the eye.

The Field set of conjugate planes: Field diaphragm, Sample plane, Primary Image Plane, Retina.

Second experiment: Abbe Diffraction Experiment

The famous Abbe Diffraction Experiments shows how diffraction of light by a specimen (and interference with the illuminating light) creates an image and how collection of diffracted light defines the resolution of the microscope. With this setup it is possible to view both sets of conjugate planes at the same time, with one's eye or a camera.

The Aperture set of conjugate planes: Lamp filament, Aperture diaphragm, Back Focal Plane of the objective, Mirror surface in the side arm, Retina.

The Field set of conjugate planes: Field diaphragm, Sample plane, Primary Image Plan, Retina.

We propose to use a diffraction grating as a sample and spatial filter in the BFP.

This tutorial will lead you step-by-step through the alignment of the Finite-corrected Microscope, Köhler Illumination and Abbe Diffraction Experiment.

  1. Start with 1×13 baseplate and all the cubes:
  • Flashlight Cube (1)
  • Collector Lens Cube (2)
  • 2× Circular Aperture Cube (3)
  • Condenser Lens Cube (4)
  • Sample Cube (5)
  • Objective Lens Cube (6)
  • Objective in Z-Stage Cube (7)
  • Eyepiece Lens Cube (8)
  • 4× Screen Cube - 1× with white paper, 3× with lens tissue (9)

2. Start by placing the sample - we will build the microscope around it.

3. Place the Primary Image Plane (PIP) by definition: the distance is 200 mm from sample to PIP when using the 4× objective (finite-corrected for 160 mm, 40 mm working distance). Use the Sample cube with white paper as a screen.

  1. Place the objective lens. It is a single plano-convex lens with f' = 35 mm.

  2. Use direct illumination from the flashlight with! its lens. Adjust the position of the objective lens - focus the image on PIP by moving the lens back or forth.

  • Focussing Trick: Firstly move the whole objective lens cube in one direction (away from the sample). If the image sharpness in PIP improves, slide the insert in that direction. If the image sharpness in PIP get worse, slide the insert in the opposite direction, towards the sample. Continue until you get a focussed image of your sample on the PIP.

  1. Place the eyepiece lens behind the PIP. It is a single plano-convex lens with f' = 40 mm. Exchange the PIP screen with a semitransparent screen (lens tissue). While looking through the eyepiece, focus it on the PIP. Use the Focussing Trick again. The position within the cube of the sample holder for the paper screen and for the semitransparent screen has to be identical.

  2. Take away the screen from PIP. To dim the flashlight, put a piece of lens tissue in front of it. Look through the eyepiece - you should see a sharp image of your sample.

  3. Place the Field Diaphragm (FD). The position was chosen in order to work well with the availible lenss.

  1. Place the condenser lens. It is a single plano-convex lens with f' = 40 mm.

  2. Place the PIP screen back to its position.

  3. Place the flashlight on one end of the baseplate. Close the FD.

  4. Adjust the position of the condenser lens - focus the image of the FD on PIP by moving the lens back or forth (Focussing Trick). Once you see a sharp image of the closed FD on the screen in PIP, open and close the aperture and observe its effect.

  5. Remove the screen, look throught the eyepiece and check whether you see a sharp image of the closed FD.

  6. Place the Aperture Diaphragm (AD) into the Front Focal Plane (FFP) of the condenser lens (40 mm).

  • Focal Plane Trick - In case you don't know where exactly the FFP is, use this:

  • Use the Laser Cube with Beam Expander Cube to produce a collimated beam. Place the condenser lens in the collimated beam and find focus.

  • Place the AD into the same plane - slide in within the cube. Careful - push the Aperture from one side to keep it together.

  1. Remove the lens of the flashlight. The position of the flashlight remains.

  1. Place the collector lens. It is a single plano-convex lens with f' = 50 mm.

  2. Remove the FD. Close the AD. Center the flashlight with respect to the AD. Focus the image of the LED on the AD by adjusting the position of the collector lens (Focussing Trick).

  3. Place the FD back in the illumination path. Now the Köhler illumination is properly aligned.

  4. Place a semitransparent screen into the Back Focal Plane (BFP) of the objective lens. Close the AD and check that you see a focussed image of the AD in the BFP.

  5. Remove all screens. Use a lens tissue to dim the light and look through the eyepiece. Observe the effect of opening and closing the apertures.

  • Left: both apertures open. Middle: FD closed. Right: AD closed.

  1. Exhange objective lens with 4× objective in Z-Stage. Place a screen in PIP and observe the effect of opening and closing the apertures in the PIP.

  • Top: both apertures open. Middle: AD closed. Bottom: FD closed.

  1. Remove the screen. This is an aligned finite-corrected microscope with Köhler illumination.

  1. By adding 4 more cubes and another baseplate, we will now create the Abbe Diffraction Experiment. The extra cubes are:
  • Beamsplitter Cube (1)
  • Mirror 45° Cube (2)
  • Eyepiece Lens Cube (different f' than the previously used one!) (3)
  • Relay Lens Cube (4)

24. Remove the eyepiece (40 mm) and add the 4×2 baseplate. Exchange the 4× objective with the objective lens (35 mm).

25. Place the Beamsplitter Cube.

  1. Place the screen into the PIP, in front of the Beamsplitter. Place a new eyepiece lens behind the Beamsplitter. It is a single plano-convex lens with f' = 100 mm. While looking through the eyepiece, focus it on the PIP (Focussing Trick).

  2. In the other arm we will observe the BFP. There are two options, depending on how you place the Mirror in the next step.
  • Option 1: Place the mirror as shown in the picture.
  • Place the eyepiece lens (40 mm).

  • Option 2: Place the mirror as shown in the picture.
  • Place the baseplate connector on the mirror cube.
  • Place the eyepiece cube (40 mm) on the connector on the mirror cube.

  1. Place the relay lens after the Beamsplitter. It is a single plano-convex lens with f' = 75 mm.

  2. Place a semitransparent screen in the BFP of the objective lens. Close AD and look through the eyepiece of the side arm. You should see a sharp image of the AD on the BFP.

  3. This is the Abbe Difraction Experiment. Through the eyepieces you can see both sets of conjugate planes at the same time.

Participate

If you have a cool idea, please don't hesitate to write us a line, we are happy to incorporate it in our design to make it even better.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_InfOptics/index.html b/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_InfOptics/index.html index b30f8a212..740f3ddc9 100644 --- a/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_InfOptics/index.html +++ b/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_InfOptics/index.html @@ -10,8 +10,8 @@ - - + +
@@ -52,7 +52,7 @@ We use a laser pointer as a light source and expand it using two lenses. The imaging path is the same as in the microscope in the first experiment and therefore we can observe the image of our sample in the main arm and the image of the BFP in the side arm.

  1. We use a very fine fish net as a sample here. You could try a net like this one. Another idea is to try one of these plastic tea bags. Or a diffraction grating.

  2. We provide a circular aperture and a rectangular aperture to be used in the BFP. We also suggest to use an opaque dot (a small dot made with some marker or pain on a microscope slide) and a thin line object (like this tiny hex key here). The apertures block the light from the outside while the dot and line can block the center of the light path.

  3. As mentioned earlier, we keep the imaging path in both main arm and side arm. Remove the illumination part of the microscope and also the Eyepiece.

  4. Besides the apertures that we already prepared, we will need :

  • Laser Cube with laser pointer (1)
  • 1× Lens Cube with 50 mm lens (2)

For now, place the camera in PIP.

  1. The laser is equipped with a cap that holds a lens from the RasPi camera. Make sure to put it on, otherwise you won't be able to create an expanded parallel beam.

  2. Place the Laser cube on the baseplate as shown in the picture.

Careful! Do not hit anybody's eyes with the laser beam. Keep the laser off if you're not using it at the moment. Always point the laser away from people. Block the light if it's leaving the table you're working on.

  1. Place the lens for beam expansion behind the Laser cube as shown in the picture. It is a single plano-convex lens with f' = 50 mm. Align the lens to illuminate your Sample with a collimated beam - the diameter of the beam should be the same just after the lens cube and also far away from it. When you beam is well-collimated, the distance between the laser+lens duo and the Sample doesn't matter.

  2. You can switch the camera between the PIP and the BFP. You could also use two cameras, one in PIP and one in BFP, if you have them.

  3. Between the objective and the Beamsplitter is the Back Focal Plane of the Objective. You can see it if you put a piece of paper there - you will see the Fourier transform of the sample. You should see the same on camera in the side arm.

  4. In the PIP, you can see an image of the sample. Here we see our fish net. Align the camera to obtain a sharp image.
    ⭐ Because of the Talbot effect you can find more than one sharp image of the sample. Therefore, partially close the Field diaphragm (FD) and find the position of the camera where you not only see a sharp image of the grating (fish net) but also of the FD.

  1. In the BFP image in the side arm, you can see the Fourier transform of the grating just as it looks in the BFP itself. Align the second Relay lens to obtain a focussed image on the camera.
    ⭐ The grating is regular in both X and Y and therefore it's a very convenient sample for this experiment, because its Fourier transform is easily predictable. With a different sample the BFP will of course also look differently.

⭐ Back Focal Plane

The intensity peaks in the BFP are the diffraction orders of our sample. By placing an aperture or another object here we’ll be able to modify the information transmitted through the microscope that contributes to the image. Depending on the aperture we can observe different effects.

  • Circular aperture: The circular aperture blocks the light symmetrically from outside towards the center. Close the aperture and align the laser such that the 0th order is in the center of the aperture. You can align the laser using the four screws in its holder.

  • Rectangular aperture: The rectangular aperture closes independently from both sides in X and Y direction (horizontally and vertically). Use a hex key or a similar tool to close/open the aperture doors.

  • Dot and line: Use a sample holder cube or your (presumably steady) hand to hold these two. You can block the 0th or 0th+1st orders with the dot, depending on how big it is. You can block the X-0th or Y-0th order with the line-object.

  1. This is the setup for the second experiment: Abbe Diffraction Experiment.

⭐ Abbe Diffraction experiment - What do we see?

  1. With no aperture in the BFP, we see the image of the Sample in PIP and the Fourier transorm of the sample in the BFP, as we just aligned it and prepared it.

  2. Firstly we use the Circular aperture. As we slowly close it and change the diameter of the transmitting area, we cut out the higher diffraction orders that carry the high frequency information, hence the fine details. In the image plane we see how these details blur and the sharp edges soften. The more orders we cut out, the blurrier the image gets.

  3. Using the Rectangular aperture, we can block the diffraction orders more selectively. When we close the aperture in the X direction to only let through the Y-0th orders, the square pattern of the image disappears, and we have only lines. This is because there is no X order that would transmit the information about the shape in the perpendicular direction.

  4. When we do the same trick in the other direction, we then see lines of the other orientation but again no square pattern.

  5. Closing the aperture in both X and Y direction, we eventually block all the higher orders that form the image of the sample. As we can see here, when only the 0th order is transmitted all image information is lost. What we see is only some background noise.

  6. On the other hand, when we block only the 0th order but keep all the others (we do this using the dot on a slide), we are still able to see the pattern is preserved, because all the orders still have a corresponding partner to interfere with on the other side from the 0th order. But now we are in a so-called dark field imaging mode. We'll explain it in the next steps.

  7. We can even block the 0th and 1st order by simply using a bigger dot in the BFP. We are still able to recognize the square pattern but the high frequency information, the noise, is taking over the image.

  8. When using the line object instead of the dot, we can block the 0th order completely in the Y direction and see what it does to the image. We still see the square pattern but suddenly, in the X direction, it seems that we have twice as many squares. This is the dark field imaging effect but in X only. We’re seeing just the edges and because there are two edges per square in one direction, it appears that we see them twice.

  9. The same works also in the perpendicular direction - blocking the 0th order in X results in the dark field imaging mode in Y.

  10. Using the rectangular aperture again and we can find out what is the minimal amount of orders that we need to form a reliable image. We said that they always interfere with the 0th order, so we don't need both sides. Therefore, we close the aperture and let through only one quarter of the orders. We can block the higher orders as well, as they only carry the high frequency information, and we are still able to see the basic pattern of our sample.

⭐ Watch the video of this experiment!

UC2 YouSeeToo - Abbe Experiment Demonstration

Notes to the video:

  • In this demonstration of the experiment, two Alvium cameras from Allied vision are used, so we can show the PIP and BFP on the screen simultaneously
    • Find the cubes for the Alvium cameras here anch choose the adjustable insert for easy alignment.
  • The optical path is different from the one described in this tutorial. This is because of the use of the above mentioned cameras
    • The objective and eyepiece are both lenses with f' = 100 mm. The magnification of the microscope is therefore equal to 1. The "magnified" image is just a zoom into the camera view.
    • Thanks to the use of a 10 mm lens as an objective, the diffraction orders in BFP are more separated and easily accessible.
    • In the side arm, the first lens has f' = 100 mm and the second lens f' = 50 mm. The image of the BFP is therefore demagnified twice, to fit better in the field of view of the camera.

Bonus question: This magical image was taken by the RasPi camera in the BFP with the fish net as a sample. If you tell me what created this effect, I send you a chocolate ;-)

Participate

If you have a cool idea, please don't hesitate to write us a line, we are happy to incorporate it in our design to make it even better.

References:

1; 2; 3; Cat image source;
4 Advanced Optical Imaging Workshop; Plymouth; Noah Russell, 2009©

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryDiffraction/MicroscopyCore/index.html b/docs/Toolboxes/DiscoveryDiffraction/MicroscopyCore/index.html index c9c269a86..c54227eaa 100644 --- a/docs/Toolboxes/DiscoveryDiffraction/MicroscopyCore/index.html +++ b/docs/Toolboxes/DiscoveryDiffraction/MicroscopyCore/index.html @@ -10,13 +10,13 @@ - - + +

MicroscopyCore

The first version of this BOX was designed for the "Principles of Light Microscopy" Course of the Light Microscopy Facility of MPI-CBG in Dresden. The alignment procedure was developed and optimised by Sebastian Bundschuh. It follows the lectures of Peter Evennett that can be found here.

CourseBOX teaches the core principles of microscopy and basics of optical alignment. It is intended for microscopy courses for students that are rather on the side of users than designers. This BOX provides a hands-on experience with insight into the black box that microscope often seems to be. It comes with alignment tutorials and relies on basic components. By reusing the components and starting from the common ground, it shows that all the microscopy methods are based on only a few principles.

It is not yet a comprehensive and optimised toolbox but rather a collection of modules and experiments that are frequently taught in microscopy courses. There is still space for improvement and we're hoping that more universities and institutions adopt the CourseBOX in their courses, which will lead to it's improvement and (if successful) production.

Build the BOX

A list of 3D-printed parts and necessary components is found in BUILD_ME, together with assembly guidelines and some printing tips and tricks.

Setups

What can you build with the CourseBOX?

Compound microscope with proper Köhler illumination (finite optics)

A finite corrected microscope with proper Köhler illumination. All conjugate planes are accessible.

LINK for the detailed alignment procedure with image tutorial.

Abbe Diffraction Experiment (finite optics)

Classical experiment for explaining Fourier transform done by a lens. The illumination stays the same as in the previous experiment, but a beamsplitter and a relay lens are added, for simultaneous observation the Primary Image Plane and the Back Focal Plane.

LINK for the detailed alignment procedure with image tutorial.

Compound microscope with proper Köhler illumination (infinity optics)

An infinity corrected microscope with proper Köhler illumination. All conjugate planes are accessible.

LINK for the detailed alignment procedure with image tutorial.

Abbe Diffraction Experiment (infinity optics)

Classical experiment for explaining Fourier transform done by a lens. The setup of the previous experiment is reused and a laser pointer is added as a light source.

LINK for the detailed alignment procedure with image tutorial.

Coming soon:

Laser Scanning Confocal Microscope

Laser Scanning system is built on the detection side of the same setup. Scanning mirror can be rotated around one axis, which results in the translation of the point on the sample.

Light Sheet Microscope

The principle of Selective Plane illumination Microscopy is demonstrated with white light. The illumination path stays the same, only the collector lens is exchanged for a cylindrical one. The detection path is rotated by 90°.

Participate

If you have a cool idea, please don't hesitate to write us a line, we are happy to incorporate it in our design to make it even better.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryDiffraction/index.html b/docs/Toolboxes/DiscoveryDiffraction/index.html index 23cf6ca84..db087785f 100644 --- a/docs/Toolboxes/DiscoveryDiffraction/index.html +++ b/docs/Toolboxes/DiscoveryDiffraction/index.html @@ -10,15 +10,15 @@ - - + +

Building The CourseBOX

This is a guide for building the CourseBOX. If you were looking for another BOX version, click here.

This guide currently describes how to build both the finite-corrected version and the infinity version of the CourseBOX.

Content of each section

  1. Shopping
  2. 3D printing
  3. Tools
  4. Assembly

Infinity Optics

  • Total price: 300 € without a Raspberry Pi (190 €) (assuming only material costs and printing everything yourself)
  • Printing time including preparation: 4 days
  • Assembly time: 1 day

Shopping

What to buy

  • Check out the RESOURCES for more information!
Link - name of partAmountCommentPrice
3D printing material~580 gChoose material that works with your 3D printer. If unsure, have a look at the guide in 3D printing section15 €
Lens 50 mm5 piecesá 21 €
Lens 100 mm3 piecesArtikel 2004á 6 €
Lens for Eye Cube1 piece551.OALá 5 €
Beamsplitter1 pieceArtikel 2137á 27 €
Flashlight1 pieceLight source for microscope.á 7 €
Laser Pointer1 pieceLight source for the Abbe experiment. With this very one you don't even need the flashlight. More information below.á 5 €
Magnets64 piecesWhen using 3DP Cubes and baseplates. Ball magnets, diameter 5 mm.total 20 €
Screws7 piecesM2×16 - 6 pieces; M2 nut - 6 pieces; M3×18 - 4 piecestotal ~2 €
Screws112 piecesFor 3DP Cubes extra: (Art.-Nr. 00843 12) M3×12, galvanized steel - 64 pieces; (Art.-Nr. 00843 8) M3×8, galvanized steel - 64 pieces (or 128 pieces of M3×12) - BUT for this setup it isn't necessary to have screws on both sides ; (Art.-Nr. 025505 8) M5×8, galvanized steel - 96 pieces (half if one-sided)total ~4 €
Raspberry Pi with accessoriesHave a look in our Bill-of-Materials for a complete list and links.190 €
Chocolate1 barUse it as a reward when you're done.

2 in 1 light source

We propose the use of this Laser Pointer, because it also has a white LED. But we need to smartly adapt this for our experiments.

  • For beam expansion of the laser light, print a laser cap from the STL folder and put in it the RasPi lens that you removed from the camera
  • The LED here has a lens which cannot be removed. To be able to find a focussed image of your light source, take a thin permanent marker and make a cross on the surface of this lens. Now you'll be able to see a focussed image of the cross in the Field set of Aperture planes

3D Printing:

Parts

To acquire the STL-files use the UC2-Configurator. The files themselves are in the RAW folder. The BOXes can be built using injection-moulded (IM) or 3D-printed (3DP) cubes.

Note on the lens holders: If you use some other lens, you can generate a holder for it using our openSCAD design. Go to the Thingiverse page of this lens holder and use their in-built customizer to change the parameters of the insert.

Completely new to 3D printing? Have a look into this beginner's guide!

Our quick printing tutorial can be found here: UC2 YouSeeToo - How to print the base-cube?

We have a good experience with this printer and settings:

  • Prusa i3/MK3S
    • Prusament PLA 1,75 mm, for one Box: 0,58 kg = 195 m = 90 hours = 15 €
    • Profile Optimal 0,15 mm, infill 20%, no support, 215/60°C

Which tools to use

ToolImageComment
Electric screw driver with 2,5 mm hex bitFor putting the cubes together using M3×12 and M3×8 screws.
2,5 mm hex keyFor fine adjustment of all the M3 screws if needed.
Needle-nose PliersMight come handy

Assembly

Part - linkResultComment
Baseplates16× baseplate puzzle
Lens Cubes8× Lens Cube: 5× Lens Cube with 50 mm lens; 3× Lens Cube with 100 mm lens.
Sample Cubes2× Sample Holder Cube
Flashlight Cube1× Flashlight Cube
Circular Aperture Cube2× Circular Aperture Cube
Rectangular Aperture Cube1× Rectangular Aperture Cube
Beamsplitter Cube1× Beam Expander Cube
RasPi Camera Cube1× Camera Cube with Raspberry Pi camera with the lens removed
Laser Cube1× Laser Holder Cube and Laser Clamp with a cap for RasPi lens
Eye Cube1× Eyeball Cube

Software

Prepare the Raspberry Pi following our tutorial in UC2-Software-GIT!

Done! Great job!


Finite-corrected Optics

  • Printing time including preparation: 5 days
  • Assembly time: 1 day

Shopping

What to buy

  • Check out the RESOURCES for more information!
Link - name of partAmountCommentPrice per amount used
3D printing material~620 gChoose material that works with your 3D printer. If unsure, have a look at the guide in 3D printing section20 €
Microscope objective 4×1 piece10 €
Lens 35 mm1 pieceWe did the alignment with lenses of these focal lengths, but other combination are also possible. The alignment principle stays the same, but the positions of the element will be different.22 €
Lens 40 mm2 pieces44 €
Lens 50 mm1 piece21 €
Lens 75 mm1 piece20 €
Lens 100 mm1 piece20 €
Flashlight1 pieceLight source for the projector and microscope.7 €
Magnets128 piecesBall magnets, diameter 5 mm.30 €
Screws~120 piecesM3×12, galvanized steel - ~90 pieces; M3×8, galvanized steel - ~90 pieces; M3×18, galvanized steel - 2 pieces; M3×30, not magnetic - 1 piece; M3 nut~15 €
Chocolate1 barUse it as a reward when you're done.

3D Printing:

Completely new to 3D printing? Have a look into this beginner's guide!

Our quick printing tutorial can be found here: UC2 YouSeeToo - How to print the base-cube?

We have a good experience with this printer and settings:

  • Prusa i3/MK3S
    • PLA 1,75 mm, for one Box: 0,6 kg = 235 m = 85 hours = 20 €
    • Profile Optimal 0,15 mm, infill 20%, no support, 215/60°C

Note: The design of the mechanical Z-stage has recently been changed. The files here are not yet up-to-date. Please check the Mechanical Z-stage for the latest version. Same applies to the Lens Holder available here

Housing

Name of part - Link to STL fileAmount
(01) Basic Cube 2×11 piece
(02) Basic Lid 2×11 piece
(03) Basic Cube 1×120 pieces
(04) Basic Lid 1×120 pieces
(05) Baseplate 4×14 pieces
(06) Baseplate 4×21 piece
(07) Baseplate 1×11 piece
(08) Baseplate Connector 1×11 piece

Inserts

Name of part - Link to STL fileAmountComment
(09) Z-Stage Focusing Insert1 pieceRotate the part in your slicer before printing. Always print it laying on the flat side.
(10) Z-Stage Objective Mount1 pieceFor mounting the objective lens (RMS thread).
(11a) Z-Stage Bottom Plate1 pieceThe plate holds the gear and screw in position, allowing the only to rotate but not to wobble.
(11b) Z-Stage Top Plate1 pieceThe plate holds the gear and screw in position, allowing the only to rotate but not to wobble.
(12) Z-Stage Gear1 pieceKindly borrowed from openflexure.
(13) Lens Holder6 piecesDiameter fits for the listed lenses (25 mm).
(14) Lens Holder Clamp6 piecesDiameter fits for the listed lenses (25 mm).
(15) Cylindrical Lens Holder1 pieceDiameter fits for the listed lenses (25 mm).
(16) Generic Sample Holder5 piecesIn the SimpleBOX, it is used to hold the object in the projector setup.
(17) Generic Sample Holder Clamp5 piecesTo fix the sample.
(18) Mirror Holder 45° 30×30mm²1 pieceSize fits for the listed mirrors.
(19) Flashlight Holder2 pieces
(20) Circular Aperture Guide2 pieces
(21) Circular Aperture Wheel2 pieces
(22) Circular Aperture Lid2 pieces
(23) Circular Aperture Leaf14 pieces
(24) Laser Holder2 pieces
(25) Laser Clamp1 piece
(26) Beam Expander Insert1 piece
(27) Beam Expander Lens Adapter1 piece
(28) Beamsplitter Insert1 piece

Which tools to use

ToolImageComment
Electric screw driver with 2,5 mm hex bitFor putting the cubes together using M3×12 and M3×8 screws.
2,5 mm hex keyFor fine adjustment of all the M3 screws if needed.
1,5 mm hex key↑↑For mounting worm screws.
Needle-nose PliersMight come handy

Assembly

Part - linkResultComment
Baseplates1× "big" baseplate (4×2), 4× "small" baseplate (4×1), 1× "unit" baseplate (1×1), 1× "unit" baseplate connector (1×1)
Z-Stage Cube1× mechanical Z-Stage, Sample Clamp not necessary
Lens Cubes6× Lens Cube; Write the focal lengths of the lenses on the holders, so you can always easily find the right one when building the setups.
Cylindrical Lens Cube1× Cylindrical Lens Cube
Sample Cubes5× Sample Holder Cube
Mirror Cube1× Mirror Cube
Flashlight Cube1× Flashlight Cube
Circular Aperture Cube2× Circular Aperture Cube
Laser Cube1× Laser Holder Cube and Laser Clamp
Beam Expander Cube1× Beam Expander Cube
Beamsplitter Cube1× Beam Expander Cube

Done! Great job!

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryElectronics/Automation_intro/index.html b/docs/Toolboxes/DiscoveryElectronics/Automation_intro/index.html index adcef6c03..994034798 100644 --- a/docs/Toolboxes/DiscoveryElectronics/Automation_intro/index.html +++ b/docs/Toolboxes/DiscoveryElectronics/Automation_intro/index.html @@ -10,8 +10,8 @@ - - + +
@@ -34,7 +34,7 @@

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryElectronics/Camera Setup/index.html b/docs/Toolboxes/DiscoveryElectronics/Camera Setup/index.html index 8b56f1a7b..2083ad1bf 100644 --- a/docs/Toolboxes/DiscoveryElectronics/Camera Setup/index.html +++ b/docs/Toolboxes/DiscoveryElectronics/Camera Setup/index.html @@ -10,13 +10,13 @@ - - + +

openUC2 Camera Setup

The openUC2 Camera Setup provides guidance on configuring and using webcams and Daheng cameras for imaging purposes within the openUC2 ecosystem. This setup allows users to seamlessly integrate cameras into their experimental setups and utilize them for imaging and data acquisition. Below are detailed instructions for setting up cameras on different platforms:

Webcam

On Windows

  • Users can utilize the built-in webcam functionality provided by Windows. They need to open the webcam using the Windows internal software and start streaming.

On Mac

  • For Mac users, the Photobooth application can be used to access the webcam. Simply open the Photobooth application and select the camera to start capturing images or videos.

Alternative Method

  • Users can also use the openUC2 Web Serial interface available at https://youseetoo.github.io/indexWebSerialTest.html to open the camera stream.

Daheng Cameras

On Windows

  • To use Daheng cameras on Windows, users should visit https://www.get-cameras.com/customerdownloads?submissionGuid=93704570-544a-43e8-83d6-f5f3cf0b97fb.
  • From the provided options, select the "Windows SDK USB2+USB3+GigE (including Directshow + Python) Galaxy V1.23.2305.9161" package.
  • Install the software and drivers from the downloaded package.
  • Once installed, users can start the "Galaxy Viewer" application to begin capturing images using the Daheng camera.

On Android Phones

  • To use Daheng cameras on Android phones, users should first visit https://www.get-cameras.com/customerdownloads?submissionGuid=93704570-544a-43e8-83d6-f5f3cf0b97fb.
  • From the provided options, select the "Android USB3 SDK v1.2.2112.9201" package and download it.
  • After downloading, unzip the package and install the "GxViewer_GetRawImage.apk" on the Android phone (users may need to allow installation of apps from unknown sources or 3rd party apps).
  • Connect the Daheng camera to the Android phone using a USB-C to Daheng cable (adapter).
  • Open the installed app ("GxViewer_GetRawImage") and grant access to the USB connection when prompted.
  • Users can adjust camera settings by swiping left in the app and then proceed to capture images.

Video Tutorial

A video tutorial demonstrating the camera setup is available at https://youtu.be/PtdU5qE6BSc.

The openUC2 Camera Setup provides users with easy-to-follow instructions for configuring and utilizing webcams and Daheng cameras on different platforms, enabling seamless integration into various imaging applications and experiments.

XIAO Sense Camera

Coming Soon.

You can have a glimpse here https://github.com/openUC2/openUC2-SEEED-XIAO-Camera/

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryElectronics/XYZ_stage_mico/index.html b/docs/Toolboxes/DiscoveryElectronics/XYZ_stage_mico/index.html index 812b95500..5c867002a 100644 --- a/docs/Toolboxes/DiscoveryElectronics/XYZ_stage_mico/index.html +++ b/docs/Toolboxes/DiscoveryElectronics/XYZ_stage_mico/index.html @@ -10,8 +10,8 @@ - - + +
@@ -20,7 +20,7 @@ Fully assembled XYZ stage with high precision stepper motors, designed for seamless automation in microscopy setups.

Key Features:

  • Mounting Flexibility: The XYZ stage can be easily mounted on top of a cube or suspended at the side, offering flexibility in integrating it into various experimental setups.

  • Interferometer and Microscopy Applications: This stage finds application in interferometers and light-sheet/fluorescence microscopes, where it plays a crucial role in precisely manipulating the sample in all directions.

  • Durable Construction: Constructed entirely from metal, the XYZ stage ensures robustness and stability during delicate experiments.

  • High Precision Stepper Motors: The stage is equipped with non-captive stepper motors, delivering exceptional precision during positioning operations.

XYZ Stage in an Interferometer Setup Image showing two XYZ stages (one motorized and one manual stage) employed in an OCT / Michelson type interferometer.

Setup and Integration: To assist users in setting up and integrating the XYZ stage into their experimental configurations, a comprehensive video guide is available. This instructional video can be viewed at https://www.youtube.com/embed/E_hhclFqx5g.

For further information or inquiries regarding the openUC2 XYZ Micrometer Stage, interested parties can refer to the official openOCT project page at https://github.com/openUC2/openUC2-Hackathon-openOCTRemote. The project page contains additional details, resources, and support for utilizing the XYZ stage effectively in diverse research settings.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryElectronics/seeedmicroscope/index.html b/docs/Toolboxes/DiscoveryElectronics/seeedmicroscope/index.html index 8a5bfaaad..385bdd9ee 100644 --- a/docs/Toolboxes/DiscoveryElectronics/seeedmicroscope/index.html +++ b/docs/Toolboxes/DiscoveryElectronics/seeedmicroscope/index.html @@ -10,8 +10,8 @@ - - + +
@@ -55,7 +55,7 @@ Seeedmicroscope_40

Focus sample with manual focusing stage Seeedmicroscope_41

Using an Android APP

For Android users, plesae have a look here: https://matchboxscope.github.io/docs/APP

This app will help you connect and capture images using this microscope.

Conclusion

Congratulations! You have successfully assembled your modular microscope. With this microscope, you can now observe various samples and capture images using the camera connected to your smartphone or computer. This modular design allows for easy customization and experimentation, making it a versatile tool for exploring the microscopic world.

Remember, the performance of the microscope might be affected by the modifications made to the objective lens, so adjust your expectations accordingly. Enjoy exploring and discovering the hidden wonders of the microcosmos!

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryElectronics/spectrometer/index.html b/docs/Toolboxes/DiscoveryElectronics/spectrometer/index.html index fc1c4f4b6..1222af651 100644 --- a/docs/Toolboxes/DiscoveryElectronics/spectrometer/index.html +++ b/docs/Toolboxes/DiscoveryElectronics/spectrometer/index.html @@ -10,8 +10,8 @@ - - + +
@@ -31,7 +31,7 @@ 8. Example Plot of a spectrum (white light)

Operating the Spectrometer

  • Calibration: Essential for accurate measurements.
  • Usage: Can be used to analyze spectra from various light sources.

10. Example Plot of a spectrum (red LED)

10. Example Plot of a spectrum (green LED)

Further Reading and Resources

For more in-depth information on spectroscopy and related subjects, refer to resources provided by Public Lab and other scientific publications.

Public Lab: https://publiclab.org/wiki/spectrometry

Gaudi Lab: https://www.gaudi.ch/GaudiLabs/?page_id=825

ESPectrometer: https://matchboxscope.github.io/docs/Variants/ESPectrometer

Youtube: https://www.youtube.com/watch?app=desktop&v=T_goVwwxKE4&ab_channel=Les%27Lab

Software: https://github.com/leswright1977/PySpectrometer

Contributing and Collaboration

This open-source project welcomes contributions from everyone. Whether you're experienced in CAD design or programming,

or just starting out, there are many ways to contribute. Check out our CONTRIBUTING guide for more details.

Licensing and Collaboration Notes

This project is licensed under the CERN open hardware license. We encourage users to share their modifications and improvements. All design files are available for free, but we appreciate feedback and collaboration.

For details on the licensing, please visit License.md.

Note: Design files were created using Autodesk Inventor 2019 (EDUCATION).

Stay Connected

If you find this project beneficial, please star this repository, follow us on Twitter, and cite our webpage in your work!

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryFluorescence/index.html b/docs/Toolboxes/DiscoveryFluorescence/index.html index 40c4c441d..86cdc248d 100644 --- a/docs/Toolboxes/DiscoveryFluorescence/index.html +++ b/docs/Toolboxes/DiscoveryFluorescence/index.html @@ -10,13 +10,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryInterferometer/InlineHolography/index.html b/docs/Toolboxes/DiscoveryInterferometer/InlineHolography/index.html index b63f483dc..aa4eb23a8 100644 --- a/docs/Toolboxes/DiscoveryInterferometer/InlineHolography/index.html +++ b/docs/Toolboxes/DiscoveryInterferometer/InlineHolography/index.html @@ -10,8 +10,8 @@ - - + +
@@ -26,7 +26,7 @@ Here you will finde a guide how to setup the ImSwitch Software:

  • Download the Software package from Dropbox
  • Install Anaconda (Important: When you're asked to add Anaconda to the PATH environment, say YES!)
  • Install Arduino + all drivers
  • Install the CH340 driver
  • Extract ImSwitch.zip to /User/$USER$/Documents/ImSwitch (clone or download from GitHub)
  • Extract ImSwitchConfig.zip to /User/$USER$/Documents/ImSwitchConfig (clone or download from GitHub)
  • Optional: Install Visual Studio Code + the Python plugin => setup the Visual studio code IDE for Python

Install ImSwitch for UC2

  • Open the anaconda command (Windows + R => "CMD" => enter)
  • Type: conda create -n imswitch
  • Wait until environment is created
  • Type: conda activate imswitch
  • Type: cd /User/$USER$/Documents/ImSwitch
  • Type: pip intall -r requirements.txt
  • Type: pip intall -e ./
  • Type: imswitch

Reconstruction

This video will show you how to reconstruct holographic data using UC2 and ImSwitch.

https://youtu.be/CWXx0Dw-Jro

Things to explore:

  • Get Familiar with ImSwitch
  • Get a sparse sample e.g. plankton on coverslip would be best, or just dust/sand/cheeck cells and try to acquire some holograms

Refocusing using ImSwitch

Using the In-line Holography plug-in widget in ImSwitch we can refocus the sample by using a propagator in reverse from the recorded hologram in real-time.

The In-line holography experiment can also be produced with a laser source. In this version of the In-line holography setup, we use white light as source and we use filters to have quasi-monochromatic light illuminating the sample.

ADDITIONAL Speach-to-text

The first experiment will be the inline holographic microscope. This is a relatively simple experiment where we can show both the temporal and especially coherence. We will create a lensless microscope where we use an LED that is filtered by a color filter and pinhole to create a quasi one of chromatic coherent light source. This is then illuminating the transparent sample that is sparse before the scattered wave is sitting the camera sensor. This is relatively simple to build with the C2 system; for this, we only need the LED holder, a gel color filter, as it sees from theaters, aluminum foil where we'll stitch in a hole in order to create a local pinhole, some space between this created light source and the sample, and then the sample that this ultimately glued onto the sensor very closely so that the pinhole virtually scales in size as the ratio between the distance of the light source to the sample and sample to the sensor. In order to build the system, we will place the here created light source on the far left; then another empty cube follows right next to it; then another empty cube follows on the right-hand side; and then we combine the sample mount and the camera into one cube so that the distance between the sample and the camera is minimized. All these cubes should be mounted on puzzle pieces on the lower end and the upper bar so that the whole system becomes stable. We will turn on the camera and also turn on the lights source. Then we go to the web app after connecting to the camera through Wi-Fi, and then we will try to see any variation in the contrast of the camera. If the contrast is not high enough because of this scattering background light, we have to cover the system with a box or with some closing so that there's no straight lights hitting the sensor. This will make a very bad result in the reconstruction. When you're lucky, you can see the sample as a kind of shadow on the sensor already. The core idea now is to reconstruct this digital hologram, where we have to carefully maximize the quality of the file image. Compression artifacts from the ESP32 camera are unavoidable and will eventually degrade the final image results. What we are going to do now is to temper in image and then back propagate the distance from the sensor to the sandal plane using a numerical transformation. What this really means is that we take the image and take every pixel and back propagated by a certain distance numerically. This is done using a fast-year transform where we first fiatransform the image so that it is in frequency space; then we multiply it with a parabolic face Factor, and then we inverse full-year transform the results to end up in real space again. This becomes a convolution of the Fresnel colonel, which essentially propagates every pixel edge of certain distance depending on the wavelength and sampling rate. We can conveniently do that in Python with the Script that is provided by the Jupiter notebook. For this, we go to the website of the ESP32, hit the capture button, and download the image onto the computer. Then we start the Jupiter notebook server by opening the command line in Windows or in Linux and enter Jupiter notebook. Then we go to the browser and open the example Jupiter notebook that will reconstruct our hologram. We will enter the path of our downloaded image file and then reconstruct the results. There are several problems which we can describe but not solve at the moment for stop inland holography, as the name already says, has the problem that the light source and the scattered wave interfere in line. That means the point source will create spherical waves that are propagating its free space and will become almost a plain wave when it's the sample. Here some parts of the wave are scattered where which means that a plane wave is altered in its face depending on the face of the microscopic example, and some portion of the wave is an altered. That means after the sample the unchecked and scattered wave are propagating to the sensor where the two amplitudes are superposing. That means they add up for stuff since our camera detector cannot record amplitudes since the object of frequency is very very high. We are averaging out over time. That means that we will record intensity values in the end. This also means that the information about the face is getting lost. When we are reconstructing the hologram, the color will differentiate whether the sample is before or behind the sensor since the face information is that anymore. This means that in the reconstruction, the so-called twin image always overlays the real image in the end. This causes an avoidable ringing artifacts in the reconstruction. There are some ways to remove it, for example by estimating the face using iterative algorithms or model-based approaches, where we take the full image acquisition process into account. Alternatively, suit also be machine learning algorithms where an algorithm estimates the background and remove these artifacts. However, here we won't use these algorithms as we just want to learn how we can reconstruct the simple.

Some notes on the transform that we have just used here. Briefly, it is a transformation from spatial to frequency coordinates. This sounds very abstract, but for example, our ear does this all the time. When we talk, our voice generates a vibration of the air. That means different frequencies are oscillating and add up to something like noise. Our ear, in turn, has the cochlear where many nerve cells, in turn, are oscillating depending on the resonance frequency of every cell. In a way, they are unmixing the noise and modulate the different frequencies. That means that if you're singing like an A, there is the fundamental frequency and several higher and lower harmonics. And lens does something very similar but in two dimensions. You can have optical frequencies where, for example, a grating that is having stripes that represent on and off and on and off

at a certain distance represent periodic structure. It lens when you place something in the focal plane will then flea transform this into the demodulated frequency components. When you, for example, have a periodic structure like a grating, it will produce two pieces in its Fourier transform or in its focal length on the object side. A fast Fourier transform is its equivalent in the computational science. You can take an image and then represent it in its frequency components for stock that means it tries to estimate the sum of all the different frequency components that make up the image. We use this fast Fourier transform in our code to bring it from real space to frequency space and back again. But since we start with an image without an amplitude or without the face, lack the information.

This property creates additional artifacts since relax the information of the face when we record intensity values on our camera, we also limited to samples that I see like just for the tomt capture in the watcher. The optical resolution of our microscope is bound to the pixel size and the opening angle or the numerical aperture that is created by the illumination and the sensor size that we use to detect the image. However, it is a very nice way of demonstrating how long profil works and how we can detect images without a lens. For stop many different have used it, for example, to detect Malaria in blood. New sins the field of view is very Deutsch.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryInterferometer/Interferometer_intro/index.html b/docs/Toolboxes/DiscoveryInterferometer/Interferometer_intro/index.html index 24a3a5941..3a57457c1 100644 --- a/docs/Toolboxes/DiscoveryInterferometer/Interferometer_intro/index.html +++ b/docs/Toolboxes/DiscoveryInterferometer/Interferometer_intro/index.html @@ -10,13 +10,13 @@ - - + +

openUC2 Interferometer Introduction

This is a a collection of different mini-tutorials to assemble the different optical systems using UC2. First, we will introduce the setup with a brief text. Afterwards, a little video will help you assembling the device. If you have any questions, please feel free to post a question in the Forum or in the Github Issue section.

What will you learn?

  • What's inside the box?
  • How can we start different experiments?

What's inside the box?

Duration: 3

Inside the box you will find a number of different cubes, all coming with different functionalities. Below you will find a list of all modules inside the discovery kit.

Lasers and Beamexpanders

Duration: 3

Lasers and Interferometers

Duration: 3

Microscopes

Duration: 3

Polarization

Duration: 3

Microscope with Webcam

Duration: 3

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryInterferometer/MachZenderInterferometer/index.html b/docs/Toolboxes/DiscoveryInterferometer/MachZenderInterferometer/index.html index 8221c6d79..7d823d215 100644 --- a/docs/Toolboxes/DiscoveryInterferometer/MachZenderInterferometer/index.html +++ b/docs/Toolboxes/DiscoveryInterferometer/MachZenderInterferometer/index.html @@ -10,8 +10,8 @@ - - + +
@@ -20,7 +20,7 @@

Step 6: Setup and alignment

Place the camera on the sample arm as shown. Put the screen on the other arm exit. Place the sample holder using one half of the cube at a time to not collide with the microscope objective.

Turn the laser on and use the screen to align both beams using the screws on the reference mirror.

Step 7: Connect and adjust in the MVS app

Connect the camera to the computer and open the MVS app. Block the reference beam. Move the coverslide such that your sample enters the FoV (Field of View). Unblock the reference beam. Zoom into the image to distinguish the fringe pattern in the MVS camera display. Adjust the angles of the reference mirror using the screws to change the fringe pattern as shown.

Step 7: Data processing

Process the data. Phase unwrapping possible.

First Tests with Modifications to the Original Setup

Using Lei code, the need of a linear stage for the sample was identified. Adjusting the objective and tube lens enhances the interference, making it crucial to use the ImSwitch interface to see the FFT in real time and optimize. The final goal is to move the position of the first order interference to use Lei algorithm (or some Phase unwrapping algorithm) to retrieve the Phase. To achieve this, two images need to be acquired: a sample image and a background image (without a cover slide or a slide region with no specimen).

Result of Phase Unwrapping

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryInterferometer/MichelsonInterferometer/index.html b/docs/Toolboxes/DiscoveryInterferometer/MichelsonInterferometer/index.html index 43f5c8547..37b34ed97 100644 --- a/docs/Toolboxes/DiscoveryInterferometer/MichelsonInterferometer/index.html +++ b/docs/Toolboxes/DiscoveryInterferometer/MichelsonInterferometer/index.html @@ -10,8 +10,8 @@ - - + +
@@ -35,7 +35,7 @@

Step 12: Adjust the camera exposure

Adjust the exposure time of the camera. You should see a fringe pattern. Try to adjust the reference mirror screws finely to bring the center of the interference pattern to the center of the camera.

Experimental Data

This is the fully assembled UC2 interferometer with a green laser diode, a camera representing a scree and to digitize the inteference, a beamsplitter, a kinematic mirror and a mirror that can be translated along Z.

If you bring the two beams on top of each other, you will be able to observe the interference pattern, which in case of one beam exactly overlaying the other will be a ring pattern. These rings are also called Newton rings and come from the fact that we interfere two divergent beams, leading to a super position of two spherical caps/waves.

Using the ESP32 camera, we can quantify the motion of the beams and e.g. measure distances or angles.

Conclusion

Congratulations! You have successfully built a Michelson Interferometer using the UC2 modular microscope toolbox. This device allows you to explore the interference properties of light and perform fascinating experiments. As you move one of the arms, you will observe constructive and destructive interference patterns on the camera, demonstrating the wave-like nature of light. Have fun experimenting with different setups and learning more about the wave-particle duality of light!

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryInterferometer/SoftwareTutorial/index.html b/docs/Toolboxes/DiscoveryInterferometer/SoftwareTutorial/index.html index f80ce6d1f..f2929f664 100644 --- a/docs/Toolboxes/DiscoveryInterferometer/SoftwareTutorial/index.html +++ b/docs/Toolboxes/DiscoveryInterferometer/SoftwareTutorial/index.html @@ -10,14 +10,14 @@ - - + +

HIK-Camera Software Installation

Install MVS App for Camera Utilization

Camera model: MV-CE060-10UC. Visit the HIKROBOTICS website and download the MVS software suitable for your computer. Below are steps exemplifying the software installation for Mac.

Install the downloaded file.

Open the MVS Software.

You should see the following window.

Connect the camera. Refresh the USB line to detect the camera.

Select the make-link button on the detected camera.

The following window should be displayed.

Click on the play button in the actions bar of the camera.

If properly connected, you should see a real-time image. Adjust the exposure if the image is overexposed.

To adjust the exposure time, go to the Feature tree, select the Acquisition Control Category, and change the Exposure Auto option to Continuous.

Now, a clear image with good contrast should be visible.

To stop recording, click on the stop button in the camera's actions bar.

To disconnect the camera, click on the break-link button next to the detected camera in the USB devices list.

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPhaseMicroscopy/DPCmicroscopy/index.html b/docs/Toolboxes/DiscoveryPhaseMicroscopy/DPCmicroscopy/index.html index 8f7e5a987..165c5bb76 100644 --- a/docs/Toolboxes/DiscoveryPhaseMicroscopy/DPCmicroscopy/index.html +++ b/docs/Toolboxes/DiscoveryPhaseMicroscopy/DPCmicroscopy/index.html @@ -10,8 +10,8 @@ - - + +
@@ -19,7 +19,7 @@

Step 3: Build the DPC setup

Substep 1

Build the camera module as shown. It comprises of a tube lens and a Hikrobot Camera. Adjust the screw which binds the camera to the camera base plate to get the right distance between the camera and the tube lens.

Substep 2

Insert the non-kinematic mirror, the microscope objective in the fixed mount and the XYZ stage accordingly.

Substep 3

Build the illumination module which comprises of the LED array and the condenser lens as shown.

Substep 4

Finally, on top of the module built in substep 2 add the illimination module.

Step 4: Adjust the Source-sample distance

First, adjust the distance between the LED array and the condenser lens by placing them a focal distance (f = 50 mm) apart. This assures the plane wave illumination. Then, adjust the XYZ to the central positions. Adjust the Microscope objective position so that it matches roughly the working distance.

Step 5: Focus on the sample

Use Imswitch to turn one of the central LEDs, place a test sample to focus on it by coarse moving the microscope objective and finely tuning the height using the XYZ stage. Once it is in focus, adjust the distance from the condenser to the sample to be the focal length (f = 50 mm). In this geometry the LED array dimensions are near the match illumination condition. Hence, some LEDs illuminate at the objective NA (NAi = NAobj).

Note: If your sample is transparent be careful not to crash the sample with the microscope objective! For more information about this experimental setup look at: 3D differential phase-contrast microscopy with computational illumination using an LED array.

Example of illuminating sample with one half circle illumination. We should be able to see the phase gradient using oblique illumination. In the figure we can compare a defocused and focused image of a cheek cells sample.

Step 6: Run the ImDPC experiment!

Once you have focused on the sample, adjust the desired FoV. Now you are set. Click Start on the DPC widget!

Congrats! You have created a DPC microscope with OpenUC2!

DPC Images

Using the reconstruction algorithm we can retrieve the phase of the sample.

First test with the OpenUC2-DPC setup:

In the animation you can compare the contrast that we can get with brightfield illumination and the DPC reconstruction generated by the four images taken with the half circle illumination.

Taking a series of DPC images at different focal planes. Cropped DPC image of Unknown cells (top) and Cheek cells (bottom) captured with 0.25 NA microscope objective with 10x magnification.

Left:Cropped DPC image captured with 0.17 NA microscope objective with 4x magnification.

Reconstruction algorithm (Waller-Lab)

The reconstruction algorithm works with the development of the Weak Object Transfer Function (WOTF). Using the code implemented by Waller (Waller-Lab/DPC), we are able to reconstruct the absorption and phase of the samples. Here we explain each step and implementation of the code using Imswitch.

We are going to revise each part of the code and understand it.

Acquisition

We need four images corresponding to each half-circle illumination pattern. With a good exposure time for the camera to reduce noise. In the figure we can see an example of the four captured DPC images.

We can correct the images using flatfield correction. Flatfield correction consists on taking an image without the sample, then we take the image to be corrected and divided by the flatfield image. This enables us to get rid of noise like dust on the camera, for instance.

The code

The code consist of a Jupyter notebook and one python script.

Python script: dpc_algorithm.py

This script contains the core algorithm to solve the DPC problem and from the four acquired images retrieve the phase.

import numpy as np
from scipy.ndimage import uniform_filter
pi = np.pi
naxis = np.newaxis
F = lambda x: np.fft.fft2(x)
IF = lambda x: np.fft.ifft2(x)

def pupilGen(fxlin, fylin, wavelength, na, na_in=0.0):
pupil = np.array(fxlin[naxis, :]**2+fylin[:, naxis]**2 <= (na/wavelength)**2)
if na_in != 0.0:
pupil[fxlin[naxis, :]**2+fylin[:, naxis]**2 < (na_in/wavelength)**2] = 0.0
return pupil

def _genGrid(size, dx):
xlin = np.arange(size, dtype='complex128')
return (xlin-size//2)*dx

class DPCSolver:
def __init__(self, dpc_imgs, wavelength, na, na_in, pixel_size, rotation, dpc_num=4):
self.wavelength = wavelength
self.na = na
self.na_in = na_in
self.pixel_size = pixel_size
self.dpc_num = 4
self.rotation = rotation
self.fxlin = np.fft.ifftshift(_genGrid(dpc_imgs.shape[-1], 1.0/dpc_imgs.shape[-1]/self.pixel_size))
self.fylin = np.fft.ifftshift(_genGrid(dpc_imgs.shape[-2], 1.0/dpc_imgs.shape[-2]/self.pixel_size))
self.dpc_imgs = dpc_imgs.astype('float64')
self.normalization()
self.pupil = pupilGen(self.fxlin, self.fylin, self.wavelength, self.na)
self.sourceGen()
self.WOTFGen()

def setTikhonovRegularization(self, reg_u = 1e-6, reg_p = 1e-6):
self.reg_u = reg_u
self.reg_p = reg_p

def normalization(self):
for img in self.dpc_imgs:
img /= uniform_filter(img, size=img.shape[0]//2)
meanIntensity = img.mean()
img /= meanIntensity # normalize intensity with DC term
img -= 1.0 # subtract the DC term

def sourceGen(self):
self.source = []
pupil = pupilGen(self.fxlin, self.fylin, self.wavelength, self.na, na_in=self.na_in)
for rotIdx in range(self.dpc_num):
self.source.append(np.zeros((self.dpc_imgs.shape[-2:])))
rotdegree = self.rotation[rotIdx]
if rotdegree < 180:
self.source[-1][self.fylin[:, naxis]*np.cos(np.deg2rad(rotdegree))+1e-15>=
self.fxlin[naxis, :]*np.sin(np.deg2rad(rotdegree))] = 1.0
self.source[-1] *= pupil
else:
self.source[-1][self.fylin[:, naxis]*np.cos(np.deg2rad(rotdegree))+1e-15<
self.fxlin[naxis, :]*np.sin(np.deg2rad(rotdegree))] = -1.0
self.source[-1] *= pupil
self.source[-1] += pupil
self.source = np.asarray(self.source)

def WOTFGen(self):
self.Hu = []
self.Hp = []
for rotIdx in range(self.source.shape[0]):
FSP_cFP = F(self.source[rotIdx]*self.pupil)*F(self.pupil).conj()
I0 = (self.source[rotIdx]*self.pupil*self.pupil.conj()).sum()
self.Hu.append(2.0*IF(FSP_cFP.real)/I0)
self.Hp.append(2.0j*IF(1j*FSP_cFP.imag)/I0)
self.Hu = np.asarray(self.Hu)
self.Hp = np.asarray(self.Hp)

def solve(self, xini=None, plot_verbose=False, **kwargs):
dpc_result = []
AHA = [(self.Hu.conj()*self.Hu).sum(axis=0)+self.reg_u, (self.Hu.conj()*self.Hp).sum(axis=0),\
(self.Hp.conj()*self.Hu).sum(axis=0) , (self.Hp.conj()*self.Hp).sum(axis=0)+self.reg_p]
determinant = AHA[0]*AHA[3]-AHA[1]*AHA[2]
for frame_index in range(self.dpc_imgs.shape[0]//self.dpc_num):
fIntensity = np.asarray([F(self.dpc_imgs[frame_index*self.dpc_num+image_index]) for image_index in range(self.dpc_num)])
AHy = np.asarray([(self.Hu.conj()*fIntensity).sum(axis=0), (self.Hp.conj()*fIntensity).sum(axis=0)])
absorption = IF((AHA[3]*AHy[0]-AHA[1]*AHy[1])/determinant).real
phase = IF((AHA[0]*AHy[1]-AHA[2]*AHy[0])/determinant).real
dpc_result.append(absorption+1.0j*phase)

return np.asarray(dpc_result)

Jupyer notebook: main_dpc.ipynb

With this Jupyter notebook you can test the DPC reconstruction algorithm using your own images!

Import Modules

%load_ext autoreload
%autoreload 2
%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
from os import listdir
from skimage import io
from mpl_toolkits.axes_grid1 import make_axes_locatable
from dpc_algorithm import DPCSolver

Load DPC Measurements

data_path  = "../sample_data/" #INSERT YOUR DATA PATH HERE
image_list = listdir(data_path)
image_list = [image_file for image_file in image_list if image_file.endswith(".tif")]
image_list.sort()
dpc_images = np.array([io.imread(data_path+image_list[image_index]) for image_index in range(len(image_list))])
#plot first set of measured DPC measurements
f, ax = plt.subplots(2, 2, sharex=True, sharey=True, figsize=(6, 6))

for plot_index in range(4):
plot_row = plot_index//2
plot_col = np.mod(plot_index, 2)
ax[plot_row, plot_col].imshow(dpc_images[plot_index], cmap="gray",\
extent=[0, dpc_images[0].shape[-1], 0, dpc_images[0].shape[-2]])
ax[plot_row, plot_col].axis("off")
ax[plot_row, plot_col].set_title("DPC {:02d}".format(plot_index))
plt.show()

Output (example):

Set System Parameters

wavelength     =  0.514 #micron
mag = 40.0
na = 0.40 #numerical aperture
na_in = 0.0
pixel_size_cam = 6.5 #pixel size of camera
dpc_num = 4 #number of DPC images captured for each absorption and phase frame
pixel_size = pixel_size_cam/mag
rotation = [0, 180, 90, 270] #degree

DPC Absorption and Phase Retrieval

Initialize DPC Solver

dpc_solver_obj = DPCSolver(dpc_images, wavelength, na, na_in, pixel_size, rotation, dpc_num=dpc_num)

Visualize Source Patterns

#plot the sources
max_na_x = max(dpc_solver_obj.fxlin.real*dpc_solver_obj.wavelength/dpc_solver_obj.na)
min_na_x = min(dpc_solver_obj.fxlin.real*dpc_solver_obj.wavelength/dpc_solver_obj.na)
max_na_y = max(dpc_solver_obj.fylin.real*dpc_solver_obj.wavelength/dpc_solver_obj.na)
min_na_y = min(dpc_solver_obj.fylin.real*dpc_solver_obj.wavelength/dpc_solver_obj.na)
f, ax = plt.subplots(2, 2, sharex=True, sharey=True, figsize=(6, 6))
for plot_index, source in enumerate(list(dpc_solver_obj.source)):
plot_row = plot_index//2
plot_col = np.mod(plot_index, 2)
ax[plot_row, plot_col].imshow(np.fft.fftshift(dpc_solver_obj.source[plot_index]),\
cmap='gray', clim=(0,1), extent=[min_na_x, max_na_x, min_na_y, max_na_y])
ax[plot_row, plot_col].axis("off")
ax[plot_row, plot_col].set_title("DPC Source {:02d}".format(plot_index))
ax[plot_row, plot_col].set_xlim(-1.2, 1.2)
ax[plot_row, plot_col].set_ylim(-1.2, 1.2)
ax[plot_row, plot_col].set_aspect(1)

Output (example):

Visualize Weak Object Transfer Functions

#plot the transfer functions
f, ax = plt.subplots(2, 4, sharex=True, sharey=True, figsize = (10, 4))
for plot_index in range(ax.size):
plot_row = plot_index//4
plot_col = np.mod(plot_index, 4)
divider = make_axes_locatable(ax[plot_row, plot_col])
cax = divider.append_axes("right", size="5%", pad=0.05)
if plot_row == 0:
plot = ax[plot_row, plot_col].imshow(np.fft.fftshift(dpc_solver_obj.Hu[plot_col].real), cmap='jet',\
extent=[min_na_x, max_na_x, min_na_y, max_na_y], clim=[-2., 2.])
ax[plot_row, plot_col].set_title("Absorption WOTF {:02d}".format(plot_col))
plt.colorbar(plot, cax=cax, ticks=[-2., 0, 2.])
else:
plot = ax[plot_row, plot_col].imshow(np.fft.fftshift(dpc_solver_obj.Hp[plot_col].imag), cmap='jet',\
extent=[min_na_x, max_na_x, min_na_y, max_na_y], clim=[-.8, .8])
ax[plot_row, plot_col].set_title("Phase WOTF {:02d}".format(plot_col))
plt.colorbar(plot, cax=cax, ticks=[-.8, 0, .8])
ax[plot_row, plot_col].set_xlim(-2.2, 2.2)
ax[plot_row, plot_col].set_ylim(-2.2, 2.2)
ax[plot_row, plot_col].axis("off")
ax[plot_row, plot_col].set_aspect(1)

Output (example):

Solve DPC Least Squares Problem

#parameters for Tikhonov regurlarization [absorption, phase] ((need to tune this based on SNR)
dpc_solver_obj.setTikhonovRegularization(reg_u = 1e-1, reg_p = 5e-3)
dpc_result = dpc_solver_obj.solve()
_, axes  = plt.subplots(1, 2, figsize=(10, 6), sharex=True, sharey=True)
divider = make_axes_locatable(axes[0])
cax_1 = divider.append_axes("right", size="5%", pad=0.05)
plot = axes[0].imshow(dpc_result[0].real, clim=[-0.15, 0.02], cmap="gray", extent=[0, dpc_result[0].shape[-1], 0, dpc_result[0].shape[-2]])
axes[0].axis("off")
plt.colorbar(plot, cax=cax_1, ticks=[-0.15, 0.02])
axes[0].set_title("Absorption")
divider = make_axes_locatable(axes[1])
cax_2 = divider.append_axes("right", size="5%", pad=0.05)
plot = axes[1].imshow(dpc_result[0].imag, clim=[-1.0, 3.0], cmap="gray", extent=[0, dpc_result[0].shape[-1], 0, dpc_result[0].shape[-2]])
axes[1].axis("off")
plt.colorbar(plot, cax=cax_2, ticks=[-1.0, 3.0])
axes[1].set_title("Phase")

Output (example):

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPhaseMicroscopy/index.html b/docs/Toolboxes/DiscoveryPhaseMicroscopy/index.html index 94f3fccbc..d8772b0bf 100644 --- a/docs/Toolboxes/DiscoveryPhaseMicroscopy/index.html +++ b/docs/Toolboxes/DiscoveryPhaseMicroscopy/index.html @@ -10,13 +10,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Brewster_Angle_Experiment/index.html b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Brewster_Angle_Experiment/index.html index 2aa29c713..a923ff3ca 100644 --- a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Brewster_Angle_Experiment/index.html +++ b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Brewster_Angle_Experiment/index.html @@ -10,8 +10,8 @@ - - + +
@@ -20,7 +20,7 @@ The amount of reflected light is specified by the optical properties of the reflecting surface, such as plastic sheets, glass, or highways.
The incident angle of the incoming electromagnetic lightwave and refractive indices of media in which light travels through them have an essential role in the polarization degree of the reflected and refracted polarized light beams.

You can see the reflection and transmission of unpolarized light with most of the incident angle (𝜃) values below.

What is the Brewster angle?

When the incident ray travels from a less dense medium (n1) to a higher dense medium (n2) with a critical angle (𝜃_B), the reflected ray is perfectly s-polarized in which the orientation of the electric field vectors are perpendicular to the plane of incidence. Otherwise, the refracted beam has a 90-degree polarization angle, partially p-polarized. This critical angle is called a Brewster angle or polarization angle and is represented by 𝜃_B in the scheme below.

Brewster angle can be easily calculated using refractive indices of traveling media of light. In our experiment, we used air (n1 = 1) as the first medium in which light comes first and reflects in this part and microscope slide glass (n2 = 1.5) as the second medium, and the light transmits through. When we calculate the Brewster angle for our experiment, it equals approximately 57 degrees, and we can find the equation below.

Parts

Modules for this setup

NamePropertiesPriceLink#
4×4 BaseplateSkeleton of the System21.79 €Base-plate1
MODULE: Polarizer CubeIt holds the linearly polarizing filter4.31 €Linear Polarizer1
MODULE: Kinematic Microscope Slide HolderIt is used to insert the microscope slide with Brewster angle (53 degrees)3.7 €Microscope Slide Holder1
MODULE: Laser CubeLASER source holder17.68 €Light Source 1
EXTRA MODULE: Screen Holder CubeIt holds the Display Screen (Not Used in Practice)1 €Screen1

Parts to print

Additional components

  • Check out the RESOURCES for more information!
  • 1 × Linear Polarizing Sheet 🢂
  • 67 × 5 mm Ball magnets 🢂
  • 28 x Screws DIN912 ISO 4762 - M3×12 mm 🢂
  • 3 x Screws DIN912 ISO 4762 M2×16 mm 🢂
  • Microscope Rectangular Coverslips 🢂
  • 1 × 5 mW Blue UV Laser Pointer 🢂

Assembly

All necessary parts to assemble a Microscope Slide Glass Holder Module be gathered in the image below:

Results

Brewster's angle experiment setup can be prepared easily. After printing and assembling the module parts, we try to find a critical angle or Brewster's angle as much as we can.

In this setup, we use LASER as a light source because it is easier to observe the polarization degree changes by reflection. As a first step, LASER light beams reflect from microscope slide glass and pass through a linear polarizer. Then a piece of paper is inserted on the sample holder comb. Finally, we can observe the totally polarized reflected light.

We should make a good alignment to find the Brewster angle as the incidence angle of the incoming light. In practice, it is hard because of using screws, we could not find the exact incidence angle of a microscope slide. Nevertheless, I could take results that are almost perfectly polarized light after reflection in almost critical angle.
You can see the reflected laser light beam without alignment at a random incident angle above.

In the image below, the incoming beam is reflected with almost Brewster angle, 57 degrees for microscope slide glass:

Let's look at our almost perfectly polarized light by reflection experiment video records. The orientation direction of the linear polarizer only changes in 1st and 2nd videos, and we see that reflected light is totally polarized almost. The light is blocked, and we can see almost no light after the polarizer when the orientation of the linear polarizer is perpendicular to the polarization orientation of the reflected beam.

New Ideas

We are open to new ideas. Please contribute to the project freely, this place is a free country which is built by codes and machines :robot:

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Circular_Polarizer/index.html b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Circular_Polarizer/index.html index 72f48aac3..ea77cfafc 100644 --- a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Circular_Polarizer/index.html +++ b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Circular_Polarizer/index.html @@ -10,8 +10,8 @@ - - + +
@@ -21,7 +21,7 @@ The incoming light passes through a linear polarizer (grey UC2 cube). In the next step, new demonstrated linearly polarized light travels to the circular polarizer module (black UC2 cube). When an observer looks from the circular polarizer side, she/he can see the circularly polarized light.

The circular polarizer filter was taken out of 3D cinema glasses, and it was inserted into a sample holder insert. This new circular polarizer filter insert was assembled with a UC2 unit block. Ta-da! The circular polarizer cube is ready for flight.

The effect of the propagation direction of the linear polarizer can be seen in the video below. The polarization direction of light before the circular polarizer changes with turning the wheel of the linear polarizer and changing its orientation.

New Ideas

Dear Visitor,
you have an opportunity to view our experiments. If you have a new idea, just open a new issue and shine our eyes with your light.
Greetings from UC2 Team

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Crossed_Polarizers/index.html b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Crossed_Polarizers/index.html index df595bfa9..3ee15429c 100644 --- a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Crossed_Polarizers/index.html +++ b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Crossed_Polarizers/index.html @@ -10,15 +10,15 @@ - - + +

Crossed Polarizers

Crossed Polarizers are used to analyze the polarization of light. We use two linear polarizers, which are located perpendicular to each other. [1]

In the experiment, the polarizing direction of the first polarizer is oriented vertically to the incoming beam, and it will allow passing only vertical electric field vectors. After the first polarizer, we have an s-polarized light wave. [2]

The second polarizer is located horizontally to the electric field vector. It blocks the wave which passes through the first polarizer. These two polarizers should be oriented at the right angle with respect to each other. You can see the orientation of the linear filters and light polarization change during the experiment in the figure below.

Time to build a Crossed Polarizers setup!

Parts

Modules for this setup

NamePropertiesPriceLink#
4×1 BaseplateSkeleton of the System5.47 €Base-plate1
MODULE: Polarizer CubeIt holds the linearly polarizing filter8.62 €Linear Polarizer2
EXTRA MODULE: Sample Holder CubeIt holds the Sample (Not Used in Practice)1.3 €Sample Holder1
EXTRA MODULE: Screen Holder CubeIt holds the Display Screen (Not Used in Practice)1 €Screen1
EXTRA MODULE: Flashlight Lamp CubeLight Source7.2 €Flashlight1

Parts to print

Additional components

  • Check out the RESOURCES for more information!
  • 1 × Linear Polarizing Sheet 🢂
  • 16 × 5 mm Ball magnets 🢂
  • 16 x Screws DIN912 ISO 4762 - M3×12 mm 🢂
  • 6 x Screws DIN912 ISO 4762 M2×16 mm 🢂
  • NOT USED 1 × flashlight 🢂

Assembly

If all written modules are used in the experiment, the setup will look like:

Results

We printed and assembled two Linear Polarizer module parts. Then, we bought the necessary components and inserted them into cubes.
You will find the basic version of Crossed Polarization experiment without a specific sample and additional light source below. We demonstrated the experiment with a room light.

We can observe the direct effect of the angle between two linear polarizers in the video below. The intensity of passing light through crossed polarizers changes when the direction angle of the polarization filter changes 360 degrees.

New Ideas

We are open to new ideas. Please contribute to the project freely, this place is a free country which is built by codes and machines :robot:

References

[1] Introduction to Polarized Light. (n.d.). Nikon’s MicroscopyU. Retrieved February 15, 2021, from https://www.microscopyu.com/techniques/polarized-light/introduction-to-polarized-light
[2] Logiurato, F. (2018). Teaching Light Polarization by Putting Art and Physics Together. The Physics Teachers, 1–5. https://arxiv.org/ftp/arxiv/papers/1803/1803.09645.pdf

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Many_Microscope_Slides_Experiment/index.html b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Many_Microscope_Slides_Experiment/index.html index a8b017700..def963377 100644 --- a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Many_Microscope_Slides_Experiment/index.html +++ b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Many_Microscope_Slides_Experiment/index.html @@ -10,8 +10,8 @@ - - + +
@@ -19,7 +19,7 @@ The printed and assembled Sample Holder Comb module with nine microscope glasses:

You will find the basic version of the experiment without a Screen adn Linear Polarizer module below.

Images of the resulting experimental setup;
side view (top) , top view (bottom)

We can observe the direct effect of the rotational angle of the linear polarizer in the video below. Laser light travels to microscope slides and air gap media several times and gets close to fully polarized light. We can see this effect eith adding Linear Polarizer cube.
The intensity of passing light through linear polarizer changes when the direction angle of the polarization filter changes 360 degrees.

We can see the change with two videos below. They demonstrates the experiment from two different views.

New Ideas

Rat-Tat! We are here to hear new ideas. Please don't shy and have a heart-to-heart talk with us. 💝

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Newtons_Rings_Experiment/index.html b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Newtons_Rings_Experiment/index.html index 1ed202f6b..50779f632 100644 --- a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Newtons_Rings_Experiment/index.html +++ b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Newtons_Rings_Experiment/index.html @@ -10,13 +10,13 @@ - - + +

Newton's Rings Experiment

Soap bubbles, oil slicks, or oxidized metal surfaces can create interference patterns under the white light illumination. In Newton's fringes, light reflects as a constructively or destructively interfered when the light waves travel through two surfaces. These combinations can be created using glass-air or air-glass contacts. These two interferences generate a concentric ring pattern of rainbow colours in white light illumination. In the same way, monochromatic light creates dark-light rings.

The simplest example can be made using two well-cleaned microscope slides as interfaces. Air film is enclosed between two slides inconsistently, and irregular-coloured fringes are generated under the daily light. When the pressure on the microscope slides changes, fringes move and change.

In the Newton's Rings Experiment, we used a convex lens whose surface is placed on an optical plane glass, a microscope glass, from its long focal length side. These two pieces are held together with non-uniform thin air film. After light illumination through these surfaces,the air gap and random pressures on the microscope slide and plano-convex lens cause the generation of irregular coloured or single-colour fringes; Newton's Rings.

The details of Experiment Modules

Linear Polarizer is used in this experiment to visualize the polarization change of reflected lights from two media on the interference pattern.

Additional module design was made for combining the microscope glass slide and plano-convex lens inside one cube insert. You can see rendered image of the Newton's Rings Lens-Slide Holder Module from Inventor.

s

We used laser as a light souce in the setup. During the experiment, we extended beam size of the pen laser from 2 mm to 6 mm using a regular Beam Expander Module.

Parts

Modules for this setup

NamePropertiesPriceLink#
4×4 BaseplateSkeleton of the System21.79 €Base-plate1
MODULE: Beam Expander CubeIt expands the laser beam size13.55 €Beam Expander1
MODULE: Beam Splitter CubeIt splits the incoming beam and recombine them29.17 €Beam Splitter Holder1
MODULE: Newton's Rings Slide-Lens Holder CubeIt creates Newton's Rings7.54 €Lens - Slide Holder1
MODULE: Polarizer CubeIt holds the linearly polarizing filter4.31 €Linear Polarizer1
MODULE: Laser CubeLASER source holder17.68 €Light Source1
EXTRA MODULE: Screen Holder CubeIt holds the Display Screen (Not Used in Practice)1 €Screen1

Parts to print

Additional components

  • Check out the RESOURCES for more information!
  • 1 × Linear Polarizing Sheet 🢂
  • 64 × 5 mm Ball magnets 🢂
  • 44 x Screws DIN912 ISO 4762 - M3×12 mm 🢂
  • 3 x Screws DIN912 ISO 4762 M2×16 mm 🢂
  • 1 x Beamsplitter Cube (Art. 2137) 🢂
  • 1 x Microscope Rectangular Coverslips 🢂
  • 1 x Plano-Convex Lens 🢂
  • 1 × 5 mW Blue UV Laser Pointer 🢂
  • 1 x iPhone 5 Lens f'=3mm (separated from an iPhone camera spare part) 🢂
  • 1 x Achromat Lens f' = 26,5 mm 🢂

Assembly

Results

We started with building of UC2 Modules: design, print, assemble and be ready for testing. You can see our Beam Expander Cube on the 4x1 Baseplate below.

Lens - Slide Holder Module is the key element for the generation of Newton's Rings. Necessary Module parts are shown in the image below.

Assembled and Ready-To-Use module should look like ...

The experimental procedure begins with

  • installation the Laser and Beam Expander Modules on the 4x4 Baseplate.

  • After checking the expansion of the laser beam width, Beam Splitter Cube is added to the setup.

  • One of the divided incoming beams is directed to the Newton's Rings Lens & Microscope Holder cube, and light reflects from the convex lens-plate glass combination through the beam splitter cube, then on observation screen.

Demonstrating the experiment is much easier with a laser light source and results in visible fringes. The Newton's Fringes will vary in colour from inner to outer circles if a white light source is replaced with a laser source.

Let's zoom in Newton's Fringes with more experiment images!

The effect of the polarization angle change of the Linear Polarizer Filter can be seen in the video.

New Ideas

We are open to new ideas. Please contribute to the project freely, this place is a free country which is built by codes and machines :robot:

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Polarization_using_optically_active_solution/index.html b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Polarization_using_optically_active_solution/index.html index 96706201d..5ab6f25f0 100644 --- a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Polarization_using_optically_active_solution/index.html +++ b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Polarization_using_optically_active_solution/index.html @@ -10,14 +10,14 @@ - - + +

Polarization Experiment using Optically Active Solution

The optical activity was discovered by Arago in the quartz in 1811. In 1847, molecular chirality was observed by scientist Louis Pasteur. He found that natural tartaric acid is optically active, and its external crystals have isomerism and chiral morphology [1].

Two molecules with the same chemical formula, the mirror image of the other, describe molecular chirality. These come in two varieties: dextrorotatory (rotate plane-polarized light clockwise) and levorotatory (counterclockwise).

Sucrose is a disaccharide made of glucose and fructose and dextrorotatory, which rotates the plane-polarized light to the right. A well-known example of sucrose is table sugar produced naturally in plants. Fructose is a simple ketonic sugar and levorotatory which rotates the plane-polarized light to the left. Glucose is a simple sugar that belongs to the carbohydrate family and is dextrorotatory. The molecules of fructose and glucose are mirror images of each other. Corn syrup is one of the most commonly used sugar solutions [2].

Two simple sugar-water solutions were prepared and used in the experiment. The first solution was produced with one cup of table sugar and one cup of water. Table sugar is sucrose and dextrorotatory, turning clockwise to the right plane-polarized light. Grape sugar is dextrorotatory and glucose, and the second solution mixes grape sugar (Traubenzucker) and water components in the same amount. It rotates the incoming light polarization state to the right, clockwise direction. However, two solutions have different polarization states at the same time because of their molecular structure and demonstrate different colors inside the crossed polarizers.

s

In the image, Table sugar-water solution is shown in left-side, Grape sugar-water solution is in the right glass.

Parts

Modules for this setup

NamePropertiesPriceLink#
4×1 BaseplateSkeleton of the System5.47 €Base-plate1
MODULE: Polarizer CubeIt holds the linearly polarizing filter8.62 €Linear Polarizer2
MODULE: Active Solution ChamberIt contains sugar-water solutions.7.32 €Active Solution Chambers1
EXTRA MODULE: Flashlight Lamp CubeLight Source7.2 €Flashlight1

Parts to print

Additional components

  • Check out the RESOURCES for more information!
  • 1 × Linear Polarizing Sheet 🢂
  • 24 × 5 mm Ball magnets 🢂
  • 20 x Screws DIN912 ISO 4762 - M3×12 mm 🢂
  • 6 x Screws DIN912 ISO 4762 M2×16 mm 🢂
  • 2 x metal plates
  • Microscope Rectangular Coverslips 🢂
  • NOT USED 1 × flashlight 🢂

Assembly

Results

We printed and assembled two Linear Polarizer and Active Solution Chamber module parts. Then, we bought the necessary components and inserted them into cubes.
You can see the datils of the Active Solution Chamber designs.

Two different chamber design is shown in the image below. Left-side chamber has a container only for 1 active solution. In the other one, two different mixtures can be observed in the same time.

You can find the basic version of Polarization Using Optically Active Solution experiment with an additional flashlight source below. Depends on the experiment place conditions, you can add an extra light source.

The chamber module was inserted between two linear polarizers, the Crossed Polarizers. We can observe the direct effect of the angle between two linear polarizers in the video below. The intensity of passing light through crossed polarizers changes when the direction angle of the polarization filter changes 360 degrees.

Experimental result of two optically active solutions is shown in the video:

  • Left Is Grape Sugar-water Solution (Glucose) Table,
  • Right Is Sugar-water Solution (Sucrose

References

[1] Gal, J. (2017). Pasteur and the art of chirality. Nature Chemistry, 9(7), 604–605. https://doi.org/10.1038/nchem.2790

[2] Logiurato, F. (2018). Teaching Light Polarization by Putting Art and Physics Together. The Physics Teachers, 1–5. https://arxiv.org/ftp/arxiv/papers/1803/1803.09645.pdf

New Ideas

We are open to new ideas. Please contribute the project freely, this place is a free country which is built by codes and machines :robot:

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Stress_Birefringence/index.html b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Stress_Birefringence/index.html index 56151b13b..e904995a8 100644 --- a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Stress_Birefringence/index.html +++ b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Stress_Birefringence/index.html @@ -10,8 +10,8 @@ - - + +
@@ -19,7 +19,7 @@ Birefringence is the optical property of a material that has a dependent refractive index to polarization and propagation direction of light. These optically anisotropic materials are said to be birefringent.

In general, birefringence is the double refraction of light. Each incoming light through the birefringent material such as calcite crystal is split by polarization into two rays; an ordinary and an extraordinary ray. These rays have different paths and polarizations.

Common birefringent materials are;

* best characterized birefringent materials are crystals
* many plastics under mechanical stress such as cellophane or plastic boxes
* many biological materials such as collagen, found in cartilage, tendon, bone, corneas, and several other areas in the body or some proteins.
Polarized light microscopy is commonly used in biological tissue.

Birefringence is used in many optical and medical devices. In medical applications, it can be used for the measurement of the optical nerve thickness or the diagnosis of glaucoma.

Well then, what is the connection with polarization?

Let's think. You ordered a new T-shirt from Amazon. You tried it and liked it. How beautiful! But wait. You can use a plastic cargo package for a polarization experiment and demonstrate the stress birefringence of a plastic sheet easily. Yesss, you can make science using 'garbage' too.
Let's look at that more closely!

Polarizers are frequently used to detect stress in plastics; birefringence. In this experiment, we use basic materials from our daily life as samples and see birefringence with our naked eyes. Let's collect simple objects such as plastic boxes, plastic cutlery (Image 1) or plastic packages. Even we can prepare our own birefringent object (Image 2) using a plastic punched pocket and sticky tape.

Image 1 :

Image 2:

Stress Birefringence

Stress birefringence results with stressed or deformation of isotropic materials and applying stressed causes a loss of physical isotropy and generates birefringence.

How can stress be applied? Externally or as another method can be used. A birefringent plastic object is manufactured using injection molding and is cooled.

Parts

Modules for this setup

NamePropertiesPriceLink#
4×1 BaseplateSkeleton of the System5.47 €Base-plate1
MODULE: Polarizer CubeIt holds the linearly polarizing filter8.62 €Linear Polarizer2
MODULE: Sample Holder CubeIt holds the Birefringent Samples3.47 €Sample Holder1
EXTRA MODULE: Screen Holder CubeIt holds the Display Screen (Not Used in Practice)1 €Screen1
EXTRA MODULE: Flashlight Lamp CubeLight Source7.2 €Flashlight1

Parts to print

Additional components

  • Check out the RESOURCES for more information!
  • 1 × Linear Polarizing Sheet 🢂
  • 16 × 5 mm Ball magnets 🢂
  • 24 x Screws DIN912 ISO 4762 - M3×12 mm 🢂
  • 6 x Screws DIN912 ISO 4762 M2×16 mm 🢂
  • Birefringent Materials or Samples
  • NOT USED 1 × flashlight 🢂

Assembly

If all written modules are used in the experiment, the setup will look like:

Results

You will find the basic version of the Stress Birefringence experiment without an extra light source and sample holder below.
A sample is placed into the Crossed Polarizers in the setup, and color patterns can be observed clearly. The polarization of a light ray is rotated after passing through a birefringent material and the amount of rotation is dependent on wavelength.

The printed cube parts were assembled and the result images of experiences were taken for 3 different birefringent materials.

In the 1st Experiment, we prepared our sample using a plastic punched pocket and randomly applied sticky tape on it.

In the 2nd Experiment, we used a plastic piece as a sample for the setup.

In the 3rd Experiment, plastic cutlery was used.

New Ideas

Rat-Tat! We are here to hear new ideas. Please don't shy and have a heart-to-heart talk with us. 💝

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Three_Polarizers/index.html b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Three_Polarizers/index.html index 22c817c9b..e9301cd8e 100644 --- a/docs/Toolboxes/DiscoveryPolarization/APP_POL_Three_Polarizers/index.html +++ b/docs/Toolboxes/DiscoveryPolarization/APP_POL_Three_Polarizers/index.html @@ -10,8 +10,8 @@ - - + +
@@ -20,7 +20,7 @@ Some light will pass through three polarizers if we add a third polarizer between these two crossed polarizers.

In the Three Linear Polarizers setup, the amount of light passing through the polarizers can be calculated by the Law of Malus, cosine-squared law.

I : the intensity of passing light through polarizers (total amount of passing light into three polarizers setup)
I(0) : the intensity of incoming light
θ : the angle between the transmission axes of two polarizers

The polarization direction of the first polarizer is oriented vertically to the incoming beam at 0 degrees. Incoming unpolarized light passes through the first polarizer (linear s-polarized). After the first polarizer, the vertically polarized light travels to the second linear polarizer, which is rotated by 45 degrees to the first polarizer. Then the traveling light passes through the third polarizer (linear p-polarized), oriented at 90 degrees tilted for the first polarizer. Due to the orientation angle of each linear polarizer, transmitted light intensity changes based on the Law of Malus.

Three linear polarizers are used in the experiment, and each of them has different angles concerning the transmission axis.

Parts

Modules for this setup

NamePropertiesPriceLink#
4×1 BaseplateSkeleton of the System5.47 €Base-plate1
MODULE: Polarizer CubeIt holds the linearly polarizing filter13.43 €Linear Polarizer3
EXTRA MODULE: Sample Holder CubeIt holds the Sample (Not Used in Practice)1.3 €Sample Holder1
EXTRA MODULE: Screen Holder CubeIt holds the Display Screen (Not Used in Practice)1 €Screen1
EXTRA MODULE: Flashlight Lamp CubeLight Source7.2 €Flashlight1

Parts to print

Additional components

  • Check out the RESOURCES for more information!
  • 1 × Linear Polarizing Sheet 🢂
  • 16 × 5 mm Ball magnets 🢂
  • 24 x Screws DIN912 ISO 4762 - M3×12 mm 🢂
  • 9 x Screws DIN912 ISO 4762 M2×16 mm 🢂
  • NOT USED 1 × flashlight 🢂

If all written modules are used in the experiment, the setup will look like:

Assembly

Results

The basic version of the Three Polarizers experiment without a specific sample and extra light source below is demonstrated. You can see the experiment images below.

The effect of the angle between two linear polarizers can be seen in the video below. The intensity of passing light on the eye of the observer through the polarizers changes when the wheel insert of polarization filter wheeled 45 angles.

New Ideas

We are open to new idea source (dad joke about the open-source project 😐 ). Just open a new issue and spread your idea!

- - + + \ No newline at end of file diff --git a/docs/Toolboxes/DiscoveryPolarization/index.html b/docs/Toolboxes/DiscoveryPolarization/index.html index 916c17d8a..9e52bb4ef 100644 --- a/docs/Toolboxes/DiscoveryPolarization/index.html +++ b/docs/Toolboxes/DiscoveryPolarization/index.html @@ -10,13 +10,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/Toolboxes/index.html b/docs/Toolboxes/index.html index 5f63de68e..eba12451d 100644 --- a/docs/Toolboxes/index.html +++ b/docs/Toolboxes/index.html @@ -10,13 +10,13 @@ - - + +

Educational Kits

CoreBox: Entry-Level Education Box

 - Features and Specifications
- Assembling the CoreBox
- Core Lens, Telescope, and Microscope

Discovery Kit: Extension of CoreBox

 - Adding Modules to the Discovery Kit
- Enhanced Functionality

Interferometer Kit

 - You can build a Michelson Interferometer
- Try enhancing it to become a MAch Zhender Microscope
- Ultimatively test the microscope extension and reconstruct images using holography
-
- - + + \ No newline at end of file diff --git a/docs/WORKSHOPS/Workshop Nigeria/index.html b/docs/WORKSHOPS/Workshop Nigeria/index.html index eafa9395d..5aa5c1e6a 100644 --- a/docs/WORKSHOPS/Workshop Nigeria/index.html +++ b/docs/WORKSHOPS/Workshop Nigeria/index.html @@ -10,13 +10,13 @@ - - + +

UC2 Microscopy Building Workshop at BioRTC Yobe University, Nigeria

Welcome to the UC2 Microscopy Workshop! 📷🔬

If you've ever been curious about the fascinating world of microscopy, you're in the right place! In this workshop, we will take you on a journey through the core concepts of microscopy, starting with lenses and interferometry, where you'll learn how different waves superpose to create powerful imaging techniques.

Our approach centers around the open-source modular toolbox, UC2. This revolutionary system is built on the idea that every optical, mechanical, or electrical component can be mounted inside a compact 50mm cube. With a wide variety of components already available in our extensive library, you'll have the flexibility to design and build your own optical setups, limited only by your creativity.

We'll kick off the workshop with the fully lensless microscope, utilizing just an LED, spatial filter, sample, and camera sensor. As we progress, you'll upgrade to a finite corrected objective lens, improving the resolution and focusing capabilities on the camera chip. We'll explore different microscopy techniques, including directional microscopy and light sheet microscopy, where the alignment of light enhances optical resolution along the axis.

The heart of our workshop is the UC2-produced microscope, aptly named "sub." Although basic, it is the perfect tool to grasp the fundamental concepts of microscopy. From there, the possibilities are limitless as you delve into designing and printing specific inserts to adapt the system for your experiments.

The UC2 system was born out of a quest for a small, affordable microscope for lifestyle microscopy imaging inside an incubator. As it evolved, we expanded its modularity, adding different contrast mechanisms and extensions like fluorescence and more. The success of this open-source initiative has been demonstrated through various publications, showcasing its applications in structured illumination microscopy, focal microscopene, and beyond.

Our mission is to bridge the gap between education and real-world applications, providing a platform where anyone, regardless of experience, can get creative with optics. We strive to make microscopy accessible and affordable for all, and we are excited to announce the birth of our company, now headquartered in Gina, as we embark on a journey to revolutionize microscopy.

So, if you're ready to dive into the world of microscopy, join us in this workshop as we build and enhance simple microscopes, bring them to life with software and image processing, and unlock the incredible potential of UC2 and open-source hardware.

Let's embark on this adventure together! Happy exploring! 🚀✨

Inline Holographic Microscope:

Simple SEEED ESP32S3 Xiao Sense-based microscope:

Michelson Interferometer:

Light-sheet microscope:

- - + + \ No newline at end of file diff --git a/docs/WORKSHOPS/index.html b/docs/WORKSHOPS/index.html index c10a3c265..93767166b 100644 --- a/docs/WORKSHOPS/index.html +++ b/docs/WORKSHOPS/index.html @@ -10,13 +10,13 @@ - - + +

openUC2 Workshops

From time to time we try to share our knowledge in various formats. If you want to learn more how you can have an openUC2 workshop near you, please contact us! We would be happy to introduce you into the world of open optics.

- - + + \ No newline at end of file diff --git a/docs/intro/index.html b/docs/intro/index.html index 0a443313b..9d7015a5e 100644 --- a/docs/intro/index.html +++ b/docs/intro/index.html @@ -10,13 +10,13 @@ - - + +

openUC2 Documentation

Here you can find all information to enhance, repair, improve, use, communicate,.... our optical toolbox openUC2. Did not find what you were looking for? No problem. Send us a mail or write an issue in our github repository https://github.com/openUC2/UC2-GIT/issues.

Looking for...

TopicDescription
Geometrical Optics [EN, DE]
Wave Optics [EN]
Microsocpy [EN, DE]
Telescope [EN, DE]
Electronics (BOX) [EN]
Electronics (PCB) [EN]
ImSwitch [EN]
Light-Sheet Microscopy [EN]
STORM Microscopy [EN]
openUC2 FiveD [EN]
Workshops [EN]]
Production [EN]
- - + + \ No newline at end of file diff --git a/index.html b/index.html index d855e7952..63d8c4bd8 100644 --- a/index.html +++ b/index.html @@ -10,13 +10,13 @@ - - + +

openUC2 Documentation

Seeing is believing. But better with the docs!

Learning Kits (Explorer/Discovery)

Learning Kits (Explorer/Discovery)

Step by step guides to learn everything about optics.

Cutting the Edge! (Investigator)

Cutting the Edge! (Investigator)

Get the most of your ready-to-use microscopes.

Anything else.

Anything else.

Anything that is yet missing.

- - + + \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html index 26a900b3d..aa5c311a7 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -10,13 +10,13 @@ - - + +

Markdown page example

You don't need React to write simple standalone pages.

- - + + \ No newline at end of file diff --git a/search/index.html b/search/index.html index 1d724f4c6..08612add7 100644 --- a/search/index.html +++ b/search/index.html @@ -10,13 +10,13 @@ - - + +

Search the documentation

- - + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 59e4feb94..29d9ff539 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://docs.youseetoo.org/blogweekly0.5https://docs.youseetoo.org/blog/archiveweekly0.5https://docs.youseetoo.org/blog/first-blog-postweekly0.5https://docs.youseetoo.org/blog/long-blog-postweekly0.5https://docs.youseetoo.org/blog/mdx-blog-postweekly0.5https://docs.youseetoo.org/blog/tagsweekly0.5https://docs.youseetoo.org/blog/tags/docusaurusweekly0.5https://docs.youseetoo.org/blog/tags/facebookweekly0.5https://docs.youseetoo.org/blog/tags/helloweekly0.5https://docs.youseetoo.org/blog/tags/holaweekly0.5https://docs.youseetoo.org/blog/welcomeweekly0.5https://docs.youseetoo.org/markdown-pageweekly0.5https://docs.youseetoo.org/searchweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/Encoderweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/Homeweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/INTROweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/LEDArrayweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/Motorweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/PinConfigweekly0.5https://docs.youseetoo.org/docs/Electronics/PS4-Controllerweekly0.5https://docs.youseetoo.org/docs/Electronics/UC2-ESP/Setup_Buildenvironmentweekly0.5https://docs.youseetoo.org/docs/Electronics/UC2-REST/ESP32_Messaging_Callbackweekly0.5https://docs.youseetoo.org/docs/Electronics/UC2-REST/ESP32_Motorweekly0.5https://docs.youseetoo.org/docs/Electronics/UC2-REST/INTROweekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e1weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e2weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e3weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e5weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e5.1weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e5.2weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e6weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e7weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e8weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e9weekly0.5https://docs.youseetoo.org/docs/ImSwitch/DahengCameraweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchClientweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchConfigweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchExperimentalweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallerweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallerCondaweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallUbuntuweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallWindowsweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchUpdateweekly0.5https://docs.youseetoo.org/docs/introweekly0.5https://docs.youseetoo.org/docs/Investigator/FlowStopper/weekly0.5https://docs.youseetoo.org/docs/Investigator/Lightsheet/LightSheetweekly0.5https://docs.youseetoo.org/docs/Investigator/Lightsheet/LightSheet%20Sampleweekly0.5https://docs.youseetoo.org/docs/Investigator/Lightsheet/LightsheetCalibrationweekly0.5https://docs.youseetoo.org/docs/Investigator/Lightsheet/LightSheetOldweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Electronicsweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Illuminationweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Mainweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Resultsweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Softwareweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Stabilityweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/AlignLaserweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/FiveD_v1weekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/FiveD_v2weekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/FiveD_v3weekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/HistoScanweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/MCTPluginweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/ROIScannerweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/SetupPhasecontrastweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/SetupTubelensweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/StageCalibrationweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/StageScanningweekly0.5https://docs.youseetoo.org/docs/Investigator/ZMicroscope/UpackZMicroscopeweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/INVESTIGATOR/ProductionXYZMicroscopeweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/APERTURESweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/BEAMSPLITTERweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/Cameraweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/Eyepieceweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/KIN_MIR_45weekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/KIN_MIR_90weekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/KIN_XY_LASERweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/LENSweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/MIR_45weekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/POLARIZER_ROTATINGweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/SAMPLE_HOLDErweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/STAGE_Z_MANUALweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/STAGE_Z_NEMAweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/TORCHweekly0.5https://docs.youseetoo.org/docs/Toolboxes/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/CHINESE/uc2miniboxCNweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreLensweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/ENGLISH/coreMicroscopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreTelescopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/ENGLISH/uc2miniboxENweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/FRENCH/CoreLensFRweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/FRENCH/coreMicroscopeFRweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/FRENCH/CoreTelescopeFRweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/FRENCH/uc2miniboxFRweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/GERMAN/CoreLensweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/GERMAN/coreMicroscopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/GERMAN/CoreTelescopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/GERMAN/uc2miniboxDEweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/Opticsintroweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/Smartphone%20Microscopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/SPANISH/core_introweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryDiffraction/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_FinOptics/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_InfOptics/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryDiffraction/MicroscopyCoreweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/Automation_introweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/Camera%20Setupweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/seeedmicroscopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/spectrometerweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/XYZ_stage_micoweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryFluorescence/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/InlineHolographyweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/Interferometer_introweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/MachZenderInterferometerweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/MichelsonInterferometerweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/SoftwareTutorialweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPhaseMicroscopy/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPhaseMicroscopy/DPCmicroscopyweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Brewster_Angle_Experiment/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Circular_Polarizer/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Crossed_Polarizers/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Many_Microscope_Slides_Experiment/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Newtons_Rings_Experiment/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Polarization_using_optically_active_solution/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Stress_Birefringence/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Three_Polarizers/weekly0.5https://docs.youseetoo.org/docs/WORKSHOPS/weekly0.5https://docs.youseetoo.org/docs/WORKSHOPS/Workshop%20Nigeriaweekly0.5https://docs.youseetoo.org/weekly0.5 \ No newline at end of file +https://docs.youseetoo.org/blogweekly0.5https://docs.youseetoo.org/blog/archiveweekly0.5https://docs.youseetoo.org/blog/first-blog-postweekly0.5https://docs.youseetoo.org/blog/long-blog-postweekly0.5https://docs.youseetoo.org/blog/mdx-blog-postweekly0.5https://docs.youseetoo.org/blog/tagsweekly0.5https://docs.youseetoo.org/blog/tags/docusaurusweekly0.5https://docs.youseetoo.org/blog/tags/facebookweekly0.5https://docs.youseetoo.org/blog/tags/helloweekly0.5https://docs.youseetoo.org/blog/tags/holaweekly0.5https://docs.youseetoo.org/blog/welcomeweekly0.5https://docs.youseetoo.org/markdown-pageweekly0.5https://docs.youseetoo.org/searchweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/Encoderweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/Homeweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/INTROweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/LEDArrayweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/Motorweekly0.5https://docs.youseetoo.org/docs/Electronics/APIDescription/PinConfigweekly0.5https://docs.youseetoo.org/docs/Electronics/PS4-Controllerweekly0.5https://docs.youseetoo.org/docs/Electronics/UC2-ESP/Setup_Buildenvironmentweekly0.5https://docs.youseetoo.org/docs/Electronics/UC2-REST/ESP32_Messaging_Callbackweekly0.5https://docs.youseetoo.org/docs/Electronics/UC2-REST/ESP32_Motorweekly0.5https://docs.youseetoo.org/docs/Electronics/UC2-REST/INTROweekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e1weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e2weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e3weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e5weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e5.1weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e5.2weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e6weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e7weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e8weekly0.5https://docs.youseetoo.org/docs/Electronics/uc2e9weekly0.5https://docs.youseetoo.org/docs/ImSwitch/DahengCameraweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchClientweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchConfigweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchExperimentalweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallerweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallerCondaweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallUbuntuweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchInstallWindowsweekly0.5https://docs.youseetoo.org/docs/ImSwitch/ImSwitchUpdateweekly0.5https://docs.youseetoo.org/docs/introweekly0.5https://docs.youseetoo.org/docs/Investigator/FlowStopper/weekly0.5https://docs.youseetoo.org/docs/Investigator/Lightsheet/LightSheetweekly0.5https://docs.youseetoo.org/docs/Investigator/Lightsheet/LightSheet%20Sampleweekly0.5https://docs.youseetoo.org/docs/Investigator/Lightsheet/LightsheetCalibrationweekly0.5https://docs.youseetoo.org/docs/Investigator/Lightsheet/LightSheetOldweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Electronicsweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Illuminationweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Mainweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Resultsweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Softwareweekly0.5https://docs.youseetoo.org/docs/Investigator/STORM/Stabilityweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/AlignLaserweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/FiveD_v1weekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/FiveD_v2weekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/FiveD_v3weekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/HistoScanweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/MCTPluginweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/ROIScannerweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/SetupPhasecontrastweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/SetupTubelensweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/SmartMicroscopyweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/StageCalibrationweekly0.5https://docs.youseetoo.org/docs/Investigator/XYZMicroscope/StageScanningweekly0.5https://docs.youseetoo.org/docs/Investigator/ZMicroscope/UpackZMicroscopeweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/INVESTIGATOR/ProductionXYZMicroscopeweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/APERTURESweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/BEAMSPLITTERweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/Cameraweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/Eyepieceweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/KIN_MIR_45weekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/KIN_MIR_90weekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/KIN_XY_LASERweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/LENSweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/MIR_45weekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/POLARIZER_ROTATINGweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/SAMPLE_HOLDErweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/STAGE_Z_MANUALweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/STAGE_Z_NEMAweekly0.5https://docs.youseetoo.org/docs/PRODUCTION/Modules/TORCHweekly0.5https://docs.youseetoo.org/docs/Toolboxes/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/CHINESE/uc2miniboxCNweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreLensweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/ENGLISH/coreMicroscopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreTelescopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/ENGLISH/uc2miniboxENweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/FRENCH/CoreLensFRweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/FRENCH/coreMicroscopeFRweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/FRENCH/CoreTelescopeFRweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/FRENCH/uc2miniboxFRweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/GERMAN/CoreLensweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/GERMAN/coreMicroscopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/GERMAN/CoreTelescopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/GERMAN/uc2miniboxDEweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/Opticsintroweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/Smartphone%20Microscopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryCore/SPANISH/core_introweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryDiffraction/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_FinOptics/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_InfOptics/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryDiffraction/MicroscopyCoreweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/Automation_introweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/Camera%20Setupweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/seeedmicroscopeweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/spectrometerweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryElectronics/XYZ_stage_micoweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryFluorescence/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/InlineHolographyweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/Interferometer_introweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/MachZenderInterferometerweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/MichelsonInterferometerweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryInterferometer/SoftwareTutorialweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPhaseMicroscopy/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPhaseMicroscopy/DPCmicroscopyweekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Brewster_Angle_Experiment/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Circular_Polarizer/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Crossed_Polarizers/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Many_Microscope_Slides_Experiment/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Newtons_Rings_Experiment/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Polarization_using_optically_active_solution/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Stress_Birefringence/weekly0.5https://docs.youseetoo.org/docs/Toolboxes/DiscoveryPolarization/APP_POL_Three_Polarizers/weekly0.5https://docs.youseetoo.org/docs/WORKSHOPS/weekly0.5https://docs.youseetoo.org/docs/WORKSHOPS/Workshop%20Nigeriaweekly0.5https://docs.youseetoo.org/weekly0.5 \ No newline at end of file
    ;aJ#f2MeVf}eSSO=6Xf>|9g6(p5h(cnWFePpouF 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

    In order to test several commands, you can find a useful list of json files in this file: json_api_BD.txt

    V1: Source-code, Compiling and Binaries (Deprecated)

    The current version of the firmware can be found here: https://github.com/openUC2/UC2-REST/tree/master/ESP32

    Additional information on how to install and compile the board can be found in the README

    Precompiled binaries that can be installed through ImSwitch (more information coming soon) or the esptool.pycan be found here https://github.com/openUC2/UC2-REST/tree/master/ESP32/build

    V1: Install necessary software for UC2 rest (flash and interact) (Deprecated)

    Here you learn how to install the necessary software (Arduino IDE, drivers, ESP-IDF, Arduino libraries) that are necessary for the system to be working. Everything is explained in the video below.

    Additional information about the UC2 electronics and UC2-REST are provided here: https://github.com/openUC2/UC2-REST

    Download and install the software:

    To simplify life, we host a dropbox folder containing all the necessary drivers and Software pieces for this workshop. It will run on a Windows 10 64 Bit system:

    List of relevant files

    for the UC2-REST

    • Arduino IDE: arduino-1.8.18-windows.exe
    • ESP32 USB driver: CH341SER.exe
    • UC2 Rest firmware: UC2-REST.zip

    Alternative GitHub links that provide you with the latest version of the software:

    Steps to install the software

    1. Download all relevant files from the Dropbox folder above
    2. Install the Arduino IDE (including all drivers if you are asked during the installation)
    3. Install the CH340 USB Serial driver https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers/all
    4. Extract BenesArduinoLibraries-master.zip to /User/$USER$/Documents/Aduino/libraries
    5. Open the Arduino IDE and add the ESP32 board configuration. For this you need to add the following URL to the settings tag: https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json. For additional information please have a look in this tutorial
    6. Once done, open the Board manager and add the ESP32version 2.0.3
    7. Unzip the folder UC2-REST and open the file /ESP32/main/main.ino
    8. Select the board, the port and hit the compile and upload button
    9. IMPORTANT when setting up the build + upload, make sure you add this setting for the partition scheme (and potentially all others if not already set as default):

    The system accepts different hardware configurations (pins, devices, etc.). All of this is defined in the pindef_XXXX.h. Please have a look in the UC2-REST repository for additional information: https://github.com/openUC2/UC2-REST

    VIDEO Tutorial: Steps to install the software

    - - + + \ No newline at end of file diff --git a/docs/Electronics/uc2e9/index.html b/docs/Electronics/uc2e9/index.html index ddfbb5817..88182f2b3 100644 --- a/docs/Electronics/uc2e9/index.html +++ b/docs/Electronics/uc2e9/index.html @@ -10,13 +10,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/ImSwitch/DahengCamera/index.html b/docs/ImSwitch/DahengCamera/index.html index f3f7adffe..1cfac3f35 100644 --- a/docs/ImSwitch/DahengCamera/index.html +++ b/docs/ImSwitch/DahengCamera/index.html @@ -10,14 +10,14 @@ - - + +

    Install driver for Daheng Camera

    Windows

    Have a look here: https://www.get-cameras.com/requestdownload and install the drivers. / SDK (newer version of ImSwitch ships drivers.)

    Linux

    ARM

    You can use the camera on the Raspberry Pi or Jetson Nano. For this you can do the following steps:

    cd ~
    cd Downloads
    wget https://dahengimaging.com/downloads/Galaxy_Linux-armhf_Gige-U3_32bits-64bits_1.5.2303.9202.zip
    cd Galaxy_Linux-armhf_Gige-U3_32bits-64bits_1.5.2303.9202
    chmod +x Galaxy_camera.run
    sudo ./Galaxy_camera.run
    # go through questionaire
    sudo reboot

    Install Python bindings

    cd ~/Downlodas
    wget https://dahengimaging.com/downloads/Galaxy_Linux_Python_2.0.2106.9041.tar.gz
    tar -xvf Galaxy_Linux_Python_2.0.2106.9041.tar.gz
    cd ~/Downlodas/Galaxy_Linux_Python_2.0.2106.9041/api
    # conda activate ****ENV
    pip install -e .
    cd ~/Downlodas/Galaxy_Linux_Python_2.0.2106.9041/api
    python ~/Downloads/Galaxy_Linux_Python_2.0.2106.9041/sample/GxSingleCamMono GxSingleCamMono.py

    The result will be:

    /home/uc2/Downloads/Galaxy_Linux_Python_2.0.2106.9041/sample/GxSingleCamMono/GxSingleCamMono.py:19: SyntaxWarning: "is" with a literal. Did you mean "=="?
    if dev_num is 0:

    -------------------------------------------------------------
    Sample to show how to acquire mono image continuously and show acquired image.
    -------------------------------------------------------------

    Initializing......

    Frame ID: 0 Height: 3036 Width: 4024

    Sample Script

    # version:1.0.1905.9051
    import gxipy as gx
    from PIL import Image


    def main():
    # print the demo information
    print("")
    print("-------------------------------------------------------------")
    print("Sample to show how to acquire mono image continuously and show acquired image.")
    print("-------------------------------------------------------------")
    print("")
    print("Initializing......")
    print("")

    # create a device manager
    device_manager = gx.DeviceManager()
    dev_num, dev_info_list = device_manager.update_device_list()
    if dev_num is 0:
    print("Number of enumerated devices is 0")
    return

    # open the first device
    cam = device_manager.open_device_by_index(1)

    # exit when the camera is a color camera
    if cam.PixelColorFilter.is_implemented() is True:
    print("This sample does not support color camera.")
    cam.close_device()
    return

    # set continuous acquisition
    cam.TriggerMode.set(gx.GxSwitchEntry.OFF)

    # set exposure
    cam.ExposureTime.set(10000)

    # set gain
    cam.Gain.set(10.0)

    # start data acquisition
    cam.stream_on()

    # acquire image: num is the image number
    num = 1
    for i in range(num):
    # get raw image
    raw_image = cam.data_stream[0].get_image()
    if raw_image is None:
    print("Getting image failed.")
    continue

    # create numpy array with data from raw image
    numpy_image = raw_image.get_numpy_array()
    if numpy_image is None:
    continue

    # print height, width, and frame ID of the acquisition image
    print("Frame ID: %d Height: %d Width: %d"
    % (raw_image.get_frame_id(), raw_image.get_height(), raw_image.get_width()))

    # stop data acquisition
    cam.stream_off()

    # close device
    cam.close_device()

    if __name__ == "__main__":
    main()
    - - + + \ No newline at end of file diff --git a/docs/ImSwitch/ImSwitchClient/index.html b/docs/ImSwitch/ImSwitchClient/index.html index d3344cde8..d4cd1fd38 100644 --- a/docs/ImSwitch/ImSwitchClient/index.html +++ b/docs/ImSwitch/ImSwitchClient/index.html @@ -10,13 +10,13 @@ - - + +

    ImSwitchClient Documentation

    ImSwitchClient is a Python package designed to connect to the ImSwitch REST API, enabling remote control of ImSwitchUC2 functionalities directly from Jupyter Notebooks. This client facilitates easy integration with the ImSwitch ecosystem, offering programmable access to various features like laser control, stage manipulation, and image acquisition.

    PyPI Version

    Features

    Installation

    To install ImSwitchClient, use the following pip command:

    pip install imswitchclient

    Quick Start Example

    This example demonstrates basic usage of ImSwitchClient for moving a positioner and acquiring an image.

    import imswitchclient.ImSwitchClient as imc
    import numpy as np
    import matplotlib.pyplot as plt
    import time

    # Initialize the client
    client = imc.ImSwitchClient()

    # Retrieve the first positioner's name and current position
    positioner_names = client.positionersManager.getAllDeviceNames()
    positioner_name = positioner_names[0]
    currentPositions = client.positionersManager.getPositionerPositions()[positioner_name]
    initialPosition = (currentPositions["X"], currentPositions["Y"])

    # Define and move to a new position
    newPosition = (initialPosition[0] + 10, initialPosition[1] + 10)
    client.positionersManager.movePositioner(positioner_name, "X", newPosition[0], is_absolute=True, is_blocking=True)
    client.positionersManager.movePositioner(positioner_name, "Y", newPosition[1], is_absolute=True, is_blocking=True)

    # Acquire and display an image
    time.sleep(0.5) # Allow time for the move
    lastFrame = client.recordingManager.snapNumpyToFastAPI()
    plt.imshow(lastFrame)
    plt.show()

    # Return the positioner to its initial position
    client.positionersManager.movePositioner(positioner_name, "X", initialPosition[0], is_absolute=True, is_blocking=True)
    client.positionersManager.movePositioner(positioner_name, "Y", initialPosition[1], is_absolute=True, is_blocking=True)

    Contributing

    Contributions to ImSwitchClient are welcome! Please refer to the project's GitHub repository for contribution guidelines: https://github.com/openUC2/imswitchclient/.

    License

    ImSwitchClient is licensed under the MIT License. For more details, see the LICENSE file in the project repository.

    - - + + \ No newline at end of file diff --git a/docs/ImSwitch/ImSwitchConfig/index.html b/docs/ImSwitch/ImSwitchConfig/index.html index 590753b04..9f012d735 100644 --- a/docs/ImSwitch/ImSwitchConfig/index.html +++ b/docs/ImSwitch/ImSwitchConfig/index.html @@ -10,13 +10,13 @@ - - + +

    ImSwitchConfig

    ImSwitch Config File

    This is a sample uc2_hik_histo.jsonconfiguration file:

    {
    "positioners": {
    "ESP32Stage": {
    "managerName": "ESP32StageManager",
    "managerProperties": {
    "rs232device": "ESP32",
    "isEnable": true,
    "enableauto": false,
    "stepsizeX": -0.3125,
    "stepsizeY": -0.3125,
    "stepsizeZ": 0.3125,
    "homeSpeedX": 15000,
    "homeSpeedY": 15000,
    "homeSpeedZ": 15000,
    "isDualaxis": true,
    "homeDirectionX": 1,
    "backlashXOld": 15,
    "backlashYOld": 40,
    "backlashX": 0,
    "backlashY": 0,
    "homeEndstoppolarityY": 0,
    "homeDirectionY": -1,
    "homeDirectionZ": 0,
    "homeXenabled": 1,
    "homeYenabled": 1,
    "homeZenabled": 0,
    "initialSpeed": {
    "X": 15000,
    "Y": 15000,
    "Z": 15000
    }
    },
    "axes": [
    "X",
    "Y",
    "Z"
    ],
    "forScanning": true,
    "forPositioning": true
    }
    },
    "rs232devices": {
    "ESP32": {
    "managerName": "ESP32Manager",
    "managerProperties": {
    "host_": "192.168.43.129",
    "serialport": "COM3"
    }
    }
    },
    "lasers": {
    "LED": {
    "analogChannel": null,
    "digitalLine": null,
    "managerName": "ESP32LEDLaserManager",
    "managerProperties": {
    "rs232device": "ESP32",
    "channel_index": 1
    },
    "wavelength": 635,
    "valueRangeMin": 0,
    "valueRangeMax": 1023
    }
    },
    "detectors": {
    "WidefieldCamera": {
    "analogChannel": null,
    "digitalLine": null,
    "managerName": "HikCamManager",
    "managerProperties": {
    "isRGB": 1,
    "cameraListIndex": 0,
    "cameraEffPixelsize": 0.2257,
    "hikcam": {
    "exposure": 0,
    "gain": 0,
    "blacklevel": 100,
    "image_width": 1000,
    "image_height": 1000
    }
    },
    "forAcquisition": true,
    "forFocusLock": true
    },
    "Observer": {
    "analogChannel": null,
    "digitalLine": null,
    "managerName": "OpenCVCamManager",
    "managerProperties": {
    "cameraListIndex": 1,
    "cameraListIndexWIN": 0,
    "isRGB":1,
    "opencvcam": {
    "exposure": 10
    }
    },
    "forAcquisition": true
    }
    },
    "autofocus": {
    "camera": "WidefieldCamera",
    "positioner": "ESP32Stage",
    "updateFreq": 10,
    "frameCropx": 780,
    "frameCropy": 400,
    "frameCropw": 500,
    "frameCroph": 100
    },
    "mct": {
    "monitorIdx": 2,
    "width": 1080,
    "height": 1920,
    "wavelength": 0,
    "pixelSize": 0,
    "angleMount": 0,
    "patternsDirWin": "C:\\Users\\wanghaoran\\Documents\\ImSwitchConfig\\imcontrol_slm\\488\\",
    "patternsDir": "/users/bene/ImSwitchConfig/imcontrol_sim/488"
    },
    "dpc": {
    "wavelength": 0.53,
    "pixelsize": 0.2,
    "NA": 0.3,
    "NAi": 0.3,
    "n": 1.0,
    "rotations": [
    0,
    180,
    90,
    270
    ]
    },
    "webrtc": {},
    "PixelCalibration": {},
    "focusLock": {
    "camera": "WidefieldCamera",
    "positioner": "ESP32StageManager",
    "updateFreq": 4,
    "frameCropx": 0,
    "frameCropy": 0,
    "frameCropw": 0,
    "frameCroph": 0
    },
    "LEDMatrixs": {
    "ESP32 LEDMatrix": {
    "analogChannel": null,
    "digitalLine": null,
    "managerName": "ESP32LEDMatrixManager",
    "managerProperties": {
    "rs232device": "ESP32",
    "Nx": 4,
    "Ny": 4,
    "wavelength": 488,
    "valueRangeMin": 0,
    "valueRangeMax": 32768
    }
    }
    },
    "availableWidgets": [
    "Settings",
    "View",
    "Recording",
    "Image",
    "Laser",
    "Positioner",
    "Autofocus",
    "MCT",
    "UC2Config",
    "ImSwitchServer",
    "PixelCalibration",
    "HistoScan",
    "LEDMatrix",
    "Joystick",
    "Flatfield",
    "ROIScan"
    ],
    "nonAvailableWidgets": [
    "STORMRecon",
    "DPC",
    "Hypha",
    "FocusLock",
    "HistoScan",
    "FocusLock",
    "FOVLock"
    ]
    }

    Configuration File Documentation

    Overview

    This configuration file is designed to manage settings and properties of various components in a complex system, such as positioners, RS232 devices, lasers, detectors, autofocus settings, etc. It is structured in JSON format for ease of reading and editing.

    Sections

    1. Positioners

      • ESP32Stage
        • managerName: Specifies the manager responsible for handling this positioner, in this case, ESP32StageManager.
        • managerProperties: Contains detailed settings for the positioner, such as RS232 device identification, step sizes for different axes, home speeds, axis enable/disable settings, and other mechanical properties.
        • axes: Lists the axes controlled by this positioner (X, Y, Z).
        • forScanning & forPositioning: Boolean flags to indicate if the positioner is used for scanning and/or positioning.
    2. RS232 Devices

      • ESP32
        • managerName: The manager handling RS232 devices, here ESP32Manager.
        • managerProperties: Network and port settings for the RS232 device.
    3. Lasers

      • LED
        • Details for managing LED laser settings, including the manager name (ESP32LEDLaserManager), RS232 device reference, channel index, wavelength, and value range.
    4. Detectors

      • WidefieldCamera & Observer
        • Configuration for different camera detectors, including manager names (HikCamManager, OpenCVCamManager), properties like RGB support, camera indexes, pixel size, and acquisition settings.
    5. Autofocus

      • Configuration for autofocus feature, linking a camera with a positioner and setting parameters like update frequency and frame cropping dimensions.
    6. MCT (Multichannel Tissue)

      • Settings for monitor index, dimensions, wavelength, pixel size, angle mount, and directories for pattern files.
    7. DPC (Differential Phase Contrast)

      • Settings related to DPC imaging, including wavelength, pixel size, numerical aperture, refractive index, and rotation angles.
    8. WebRTC

      • An empty section possibly reserved for WebRTC configuration.
    9. Pixel Calibration

      • An empty section likely intended for pixel calibration settings.
    10. Focus Lock

      • Focus lock settings similar to autofocus but with its distinct configuration.
    11. LED Matrixes

      • ESP32 LEDMatrix
        • Configuration for LED matrixes, specifying manager details, RS232 device, dimensions, wavelength, and value range.
    12. Available Widgets

      • A list of widgets that are available in the system, indicating the features or components that can be controlled or monitored.
    13. Non-Available Widgets

      • A list of widgets that are not available, possibly indicating features not supported or deactivated in the current setup.

    Conclusion

    This configuration file is a comprehensive document that outlines the settings and parameters for various hardware and software components in a specialized system. It is critical for ensuring the correct operation of the equipment it is designed to control.

    - - + + \ No newline at end of file diff --git a/docs/ImSwitch/ImSwitchExperimental/index.html b/docs/ImSwitch/ImSwitchExperimental/index.html index a7caedbf1..883ebe714 100644 --- a/docs/ImSwitch/ImSwitchExperimental/index.html +++ b/docs/ImSwitch/ImSwitchExperimental/index.html @@ -10,15 +10,15 @@ - - + +

    ImSwitch Experimental Features Documentation

    Overview

    This document details the new experimental features for the microscopy control software, ImSwitch. These features include a headless version of the software, suitable for resource-constrained environments, and a Docker container setup for easy deployment and testing. The headless version allows operation on resource-limited devices, while the Docker container facilitates easy deployment and testing. Please provide feedback and report any issues encountered to help improve these experimental features.

    Headless Version in Google Colab

    We have developed a headless version of ImSwitch that operates without the need for the QT graphical interface. This version allows remote control and UI element access solely through the REST API or Jupyter Notebook. Please note that some functions are still under development, and this version is experimental.

    Use Cases

    This headless version is particularly useful on devices such as Raspberry Pis and Nvidia Jetsons, which may struggle with the resource demands of installing and running PyQT.

    Getting Started in Google Colab

    To try the headless version of ImSwitch in Google Colab, follow these steps:

    1. Install ImSwitch:

      !pip install https://github.com/openUC2/ImSwitch/archive/refs/heads/NOQT.zip #--no-deps ##--force-reinstall
    2. Access the public version in Google Colab: Google Colab Link

    3. Clone the repository and checkout the NOQT branch:

      %cd ~
      !git clone https://github.com/openUC2/ImSwitch
      !git pull
      %cd ./ImSwitch
      !git checkout NOQT
    4. Install the package:

      !pip install -e .
    5. Configure and run ImSwitch in headless mode:

      from google.colab.output import eval_js
      print(eval_js("google.colab.kernel.proxyPort(8002)"))
      from imswitch.__main__ import main
      import imswitch
      imswitch.IS_HEADLESS = True
      main(is_headless=True, default_config="example_virtual_microscope.json")
      input() # Prevent from closing the cell

    Docker Container

    A Docker container is available for ImSwitch, providing a convenient way to deploy and test the software.

    Docker Container Details

    Running the Docker Container

    1. Launch the Docker container:

      docker run -it --rm -p 9876:9876 -p 8001:8001 -p 2222:22 imswitch
    2. Access the GUI and REST API:

      • Open your browser and go to localhost:9876 to access the GUI.
      • Go to localhost:8001 to access the REST API.

    Notes

    • This Docker setup is primarily a demo version to freeze system dependencies.
    • The next step involves integrating actual hardware for complete functionality.
    - - + + \ No newline at end of file diff --git a/docs/ImSwitch/ImSwitchInstall/index.html b/docs/ImSwitch/ImSwitchInstall/index.html index 352d81606..de65ee2dd 100644 --- a/docs/ImSwitch/ImSwitchInstall/index.html +++ b/docs/ImSwitch/ImSwitchInstall/index.html @@ -10,13 +10,13 @@ - - + +

    Install ImSwitch

    What will you learn?

    • How to install the main GUI software to control the Optics components
    • How to intsall the drivers

    Download the software

    Duration: 1

    Please go to our ImSwitch Repository and download the latest Build-artefact:

    GitHub Actions -> "bundle"

    Extract the ZIP folder

    Duration: 2

    Right click on the downloaded ZIP folder and select "extract all". This may take a while.

    Download and Install the drivers for the Camera/UC2 Electronics board

    Electronics Board (CH340)

    For the CH340 driver, please follow these instructions

    The driver is available here

    Download the Windows CH340 Driver
    Unzip the file
    Run the installer which you unzipped
    In the Device Manager when the CH340 is connected you will see a COM Port in the Tools > Serial Port menu, the COM number for your device may vary depending on your system.

    Electronics Board (CP210x)

    The driver for the CP210x is available here

    Download the Windows CP210x Driver
    Unzip the file
    Run the installer which you unzipped
    In the Device Manager when the CP210x is connected you will see a COM Port in the Tools > Serial Port menu, the COM number for your device may vary depending on your system.

    Daheng Imaging Cameras

    Download the Windows SDK USB2+USB3+GigE (including Directshow + Python) Galaxy V1.18.2208.9301 for the Daheng USB3 Cameras from the Get-Cameras Website

    Install the packages on your computer.

    Duration: 2

    Prepare ImSwitch

    1. Connect the Camera with your computer (optionally test its proper functioning using Daheng Galaxy Viewer(x64)) using the USB3 cable
    2. Connect the UC2 electronics with the computer (USB micro) and hook up the 12V power supply with the power connection
    3. Check if you can see the USB COM Port in your device manager:

    Duration: 2

    Install the UC2 ImSwitch Configurations

    In order to use the UC2 Hardware and the Daheng USB Camera, you need the UC2 config files. Please go to https://github.com/openUC2/ImSwitchConfig/tree/stable and download the Repository as a zip file following this link.

    Once it has been downloaded, unzip it to C:\Users\YOURUSERNAME\Documents\ImSwitchConfig

    It should look like this:

    Duration: 2

    Start ImSwitch

    1. Open a Windows Terminal by typing WIN+R, then type CMD and hit enter.

    1. in the Windows Terminal navigate to the folder where you downloaded the softare - e.g. cd C:\Users\UC2\Downloads\imswitch-windows-latest\ImSwitch and hit enter
    2. start the executable BUT we need to add one comment in advance:set SETUPTOOLS_USE_DISTUTILS=stdlib
    3. Type ImSwitch.exe and hit enter, the executable will open the ImSwitch GUI

    If everything has been configured correctly, the GUI should open and look like this. Additional information on its functionality can be found in the Read-The-Docs: https://imswitch.readthedocs.io/en/stable/

    If you have any additional questions or issues, please post them in the ISSUE section here.

    Explanatory Video on how to get started with ImSwitch

    Duration: 3

    https://www.youtube.com/watch?v=Om6GWZZ_0So

    - - + + \ No newline at end of file diff --git a/docs/ImSwitch/ImSwitchInstallUbuntu/index.html b/docs/ImSwitch/ImSwitchInstallUbuntu/index.html index c6fd1e2f6..5193a7db4 100644 --- a/docs/ImSwitch/ImSwitchInstallUbuntu/index.html +++ b/docs/ImSwitch/ImSwitchInstallUbuntu/index.html @@ -10,13 +10,13 @@ - - + +

    ImSwitchInstallUbuntu

    ImSwitch Installation Ubuntu

    Step 1: Install Visual Studio Code (VS Code)

    1. Open a web browser and navigate to the VS Code download page.
    2. Download the Debian package for your 64-bit system.
    3. Once downloaded, open a terminal window and navigate to the directory where the .deb file is located.
    4. Run the following command to install VS Code:
      sudo dpkg -i <filename>.deb
      sudo apt-get install -f

    Step 2: Install Miniconda

    1. Open a terminal window and run the following command to download Miniconda:
      wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.5.2-0-Linux-x86_64.sh
    2. Make the script executable and run it:
      bash Miniconda3-py310_23.5.2-0-Linux-x86_64.sh
    3. Follow the on-screen instructions to complete the installation.
    4. Create a new environment named imswitch with Python 3.10:
      conda create -n imswitch python=3.10 -y

    Step 3: Clone Necessary Repositories

    1. Navigate to the Downloads directory:
      cd ~/Downloads
    2. Clone the required repositories:
      git clone https://github.com/openUC2/UC2-REST
      git clone https://github.com/openUC2/ImSwitch
      git clone https://gitlab.com/bionanoimaging/nanoimagingpack
    1. Activate the imswitch environment:
      conda activate imswitch
    2. Navigate to the ImSwitch directory and install it:
      cd ~/Downloads/imswitch
      pip install -e .
    3. Repeat for UC2-REST and nanoimagingpack:
      cd ~/Downloads/UC2-REST
      pip install -e .
      cd ~/Downloads/nanoimagingpack # Correcting typo from original logs
      pip install -e .

    Step 5: Install Camera Drivers

    1. Clone the camera drivers:
      cd ~/Downloads
      git clone https://github.com/hongquanli/octopi-research/
    2. Navigate to the camera drivers directory and run the installation script:
      cd octopi-research/software/drivers\ and\ libraries/daheng\ camera/Galaxy_Linux-x86_Gige-U3_32bits-64bits_1.2.1911.9122/
      ./Galaxy_camera.run

    Step 6: Clone ImSwitch Configuration and Set Permissions

    1. Navigate to the Documents directory:
      cd ~/Documents
    2. Clone the ImSwitch configuration:
      git clone https://github.com/openUC2/ImSwitchConfig
    3. Change the ownership of the device:
      sudo chown pi:pi /dev/ttyUSB0

    Congratulations! You have successfully installed ImSwitch and related dependencies.

    - - + + \ No newline at end of file diff --git a/docs/ImSwitch/ImSwitchInstallWindows/index.html b/docs/ImSwitch/ImSwitchInstallWindows/index.html index 0745fb90b..6d41928e6 100644 --- a/docs/ImSwitch/ImSwitchInstallWindows/index.html +++ b/docs/ImSwitch/ImSwitchInstallWindows/index.html @@ -10,14 +10,14 @@ - - + +

    ImSwitchInstallWindows

    ImSwitch Installation on Windows

    Step 1: Install Visual Studio Code (VS Code)

    1. Open a web browser and go to the VS Code download page.
    2. Download the Windows Installer.
    3. Once the download is complete, locate the installer and double-click to run it.
    4. Follow the on-screen instructions to complete the installation.

    Step 2: Install Miniconda

    1. Open a web browser and navigate to the Miniconda download page.
    2. Download the Windows installer for the 64-bit version of Miniconda.
    3. Run the installer by double-clicking the downloaded file.
    4. Follow the installer prompts to install Miniconda to a directory of your choice (e.g., C:\Miniconda3).
    5. During installation, ensure that the option to "Add Anaconda to my PATH environment variable" is selected.

    Step 3: Clone Necessary Repositories

    1. Ensure you have installed GIT for windows
    2. Open the Command Prompt:
      • Press Win + R, type cmd, and press Enter.
    3. Navigate to your preferred directory where you want to clone the repositories (e.g., C:\Users\<YourUsername>\Downloads):
      cd C:\Users\<YourUsername>\Downloads
    4. Clone the required repositories:
      git clone https://github.com/openUC2/UC2-REST
      git clone https://github.com/openUC2/ImSwitch
      git clone https://gitlab.com/bionanoimaging/nanoimagingpack
    1. Open the Command Prompt.
    2. Create a new Conda environment named imswitch with Python 3.10:
      conda create -n imswitch python=3.10
    3. Activate the imswitch environment:
      conda activate imswitch
    4. Navigate to the ImSwitch directory and install it: (The e just states to install the packages in editable mode)
      cd C:\Users\<YourUsername>\Downloads\ImSwitch
      pip install -e .
    5. Repeat for UC2-REST and nanoimagingpack:
      cd C:\Users\<YourUsername>\Downloads\UC2-REST
      pip install -e .
      cd C:\Users\<YourUsername>\Downloads\nanoimagingpack
      pip install -e .

    Step 5: Install Camera Drivers for Daheng Cameras

    1. Download the galaxy camera sdk for windows here https://www.get-cameras.com/requestdownload
    2. Double-click on the installation executable file (Galaxy_camera.exe) to run it.
    3. Follow the on-screen instructions to complete the installation.

    Step 6: Clone ImSwitch Configuration and Set Permissions

    1. Navigate to the Documents directory using the Command Prompt:
      cd C:\Users\<YourUsername>\Documents
    2. Clone the ImSwitch configuration:
      git clone https://github.com/openUC2/ImSwitchConfig

    Step 7: Start

    conda activate imswitch
    imswitch

    Problems and Solutions

    Very likely, there will be a PyQt issue.

    Try:

    pip install PyQt5 --force-reinstall

    Congratulations! You have successfully installed ImSwitch and related dependencies on Windows.

    - - + + \ No newline at end of file diff --git a/docs/ImSwitch/ImSwitchInstaller/index.html b/docs/ImSwitch/ImSwitchInstaller/index.html index 6341a21df..4360ba75a 100644 --- a/docs/ImSwitch/ImSwitchInstaller/index.html +++ b/docs/ImSwitch/ImSwitchInstaller/index.html @@ -10,8 +10,8 @@ - - + +
    @@ -20,7 +20,7 @@ :::

    ImSwitch Installer

    Introduction

    The ImSwitch Installer is an Electron-based application designed to streamline the installation process of the ImSwitch environment. It automates the download and setup of a Mamba environment along with all necessary dependencies from GitHub via pip. This tool simplifies the installation process, reducing it to a few clicks and eliminating the need for executing multiple complex commands.

    Installation Process

    The following youtube video shows you how to install ImSwitch using the installer. IMAGE ALT TEXT HERE

    Features

    • Easy Installation: Downloads and installs all necessary dependencies automatically.
    • Cross-Platform Support: Available for ARM64 and Intel-based Mac, Windows, and Linux systems.
    • Simple Uninstallation: Remove by deleting the ImSwitch folder.
    • Security: Instructions provided for bypassing system security warnings due to unsigned code.
    • Update Mechanism: Integrated update functionality to easily fetch the latest versions.

    Requirements

    • Disk Space: Minimum of 5GB.
    • Memory: 8GB RAM.
    • Processor: Intel i5 or Apple Silicon.

    Installation Guide

    1. Download the Installer: Choose the appropriate installer (ARM64 for Mac, Windows) from the releases section.
    2. Run the Installer: Double-click the downloaded file. Ignore any security warnings as the installer is not yet signed.
      • For macOS, follow Apple's guide for running unsigned code.
      • On Windows, grant permission to run the application.
    3. Installation Process: The installer will set up a Python environment using Mamba in /User/yourname/ImSwitch and install all dependencies. This process may take between 10 to 30 minutes depending on your internet connection.
    4. Starting ImSwitch: Once installed, launch ImSwitch by executing start imswitch. https://camo.githubusercontent.com/d12b826a278a7dcb877c8524a22cc3408b82883a27edc9464f865b7d5403e6ef/68747470733a2f2f69332e7974696d672e636f6d2f76692f4e345031734832453952552f6d617872657364656661756c742e6a7067Installation Screen 1Installation Screen 2

    Updating ImSwitch

    To update, click the update button within the application. This will download the latest ZIP from GitHub, unzip it, and execute pip install -e . within the Mamba base environment.

    Driver Installation

    Drivers for Daheng and HIK Vision cameras can be found under the "Driver Installation" link provided within the installer.

    Upcoming Features

    • Flashing the latest version of the UC2 firmware.
    • Building the ImSwitch Hardware Configuration using a drag-and-drop GUI.

    Install from Source

    For those interested in building from source:

    # Clone the repository
    git clone https://github.com/openuc2/imswitchinstaller.git

    # Install dependencies (skip if you already have yarn)
    npm install

    # Run the Electron app
    npm start

    Debugging

    Python Environment Locations

    • Windows Installation Path: C:\Users\UCadmin2\ImSwitch\miniforge\condabin
    • Python Executable: C:\\Users\\UCadmin2\\ImSwitch\\miniforge\\python.exe
    • ImSwitch Package Location: C:\\Users\\UCadmin2\\ImSwitch\\miniforge\\lib\\site-packages\\imswitch\\__init__.py'
    • Conda Environment /Users/ImSwitch/miniforge/condabin/mamba install devbio-napari -c conda-forge

    Disclaimer

    This installer is based on the BellJar project. Thanks a lot for making it open-source! :)

    - - + + \ No newline at end of file diff --git a/docs/ImSwitch/ImSwitchInstallerConda/index.html b/docs/ImSwitch/ImSwitchInstallerConda/index.html index 126690777..6a231c39e 100644 --- a/docs/ImSwitch/ImSwitchInstallerConda/index.html +++ b/docs/ImSwitch/ImSwitchInstallerConda/index.html @@ -10,8 +10,8 @@ - - + +
    @@ -22,7 +22,7 @@

  1. Choose a path to install the conda environment to (Hint: path should not exceed 40 digits)

    1. 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 M zUI;#l=BeVe9}gHI{ZYZyN%e(*k@g|qJ98XtOxUqAp_8vWFv($R4(s1qthc|;H1xH4 zw{|22FvmkswYNb{#T+mneAnHvZSdUv2H*e0%zG7zN+OVX{M{DG4lb~>a5O9#$uKcp zNzL%+?Zb#$+}mXQ@tKPj@@a1v*VN^$o8z{-$tni0iP<$$!QzHdaDWIH4}zI zkn_SU%zVgKP5DI*t3sHWC<_PKkQ4-FH4r(Dnv%Cj%y29ZM`grlOn+*}qqvEFt1yg? zNEYEGstJR-*9Ql*NRt5VW5H*-B*<{m;O7%+);dk7JejT#)oCaF3BB?9F!Ftm0QBt& z2)vn8VXpL>-g<*mO(^| zR8NG4zzGvoPBWOg(Jmc_FimD+(+x#vvT(gn)%V;YlQ-I>ajnPt)Tv4{9&Jr~AgCc1 zxynNN+v@y$(-$Lrh+lf+u)*jLS=dN1(!`Q^#d`2`eIN)Z_~z^mt73mciG5{?FDrrR zkFBE$)lRZ!D+l~fZL`r}J1wQiRomyr9Gs0bcL_Ju@JTg|0BCx8hkU>w%#Kndwvpq{ zPyfzhfplV0wfE7tt$FU2?&ql*-=_(Ej{Bz`07@+gR(^X{t_T4I0DwZ6+=dZ&?n8^I z4WgCbK^S=G{TbF9z%;po^6Pnk45cni8p#j|Qgnby@g@*6cNeGQd5ATJO-mul2!BnZ z9V$!$VR(F(FXNMY|Y z>WhzR3j+`vGfl}@deJpWdgF^G54k%u$CZ2=G7lKcps@fD?ouFHq-!!r3r`4mJP9Dm zHUPrJXu_lU4hTl-I^+|0or^nk$fQ&_sYjt0jb-fx5IG#_+js&%W{uzfPMTYHR?a0U zHkGUEZpk)y{pFVFMKe(V<(cj!OQ>l<*x|!qBpNPBdNTMoe!Z>PXKP^hM%zB8zpWp4!?rEyUcA*4uGXstb{;8Q zc`XPmKTfxFKmEJ(#U<3)dweQSA>MkSQQn4AdJc9hhYsF)-Zps5`L1)`>kHXI>1#sALSrG2uWaQEGV5bX^? zKH>|fW(7ke`ZXO==2&|}gF@5%uwhe~j21L)T;|ktk2OfyCSKlFDtnRuia8aca^3g9 z#BykPFeU;*9I&Kr1D2W0e`P>;5vp4kU~k^B^h9zIedjX<^|VplAqKGN1AQ)j0W8Dz zx+pY&&W9eC zG!N5#O2)slUw(}f;O+@W=8xMiE3b!74(&@bzRo4!ej9D=Cm0hfs?kBJ&gkhDhdIIh~2K`@*oATQ2XbP=Fl%!!z52Hb`P zI>14KOqT=9b3y=XCBY7Ox@60Nd8`7c+nfr#79bpp&{>v)B+HU!Ks;_}kcN-OC@3h^ z)OZphnc~-^k(AsPR$F#@49m z=P1YEs9E0VKOSmR8qv$C(FnZK1EtZM&(UjiYTLXq+jPC8nMsEk*BG#@2P>8%dvo$fH%B2D9-?}MjYIUKV(`QQn)`Xd`z1K2z@0M zF)eza!A1KygcQdfB2kd#5yOL1T{0vNH9Q)+7XWn)h*t*y92`nM!_hAWz-s`60lX?K zKz78)9p*RNi9zf$AbJ@9-wVi-az#K3hR}>(`K(!k07A_GR1g3h1qZKv2vA%xiX8W0{h}29W2#=A|jHb6t5r+q$<^s?GR%mhIK_F<` z6$6dp-+h6_G|&2>v+Ff)@*GiH2*i}h!UM@u{6O$i1I7r?=^e=dSb>CbAzoIZXFWtK zR}A6ObBWYMk;da7$D^~Jvv%Otf@cR@07JR4wM8FIXpYA+dK0s@;4kBx@4MH)yyBf?j zz;?CxnOiUqF4E;N>{AMCq*ZM3)7cxLn2pCmJX};Tu6Pi))L1LC11^WWwK#&HSev21 zT2eEfpxD<+4b!2_0Ktt;Jx}c@ER(>gCD3EhWj0pJfgqG5XL|`rV zZFf=pVGRp#i%-=75tOA_SypM4)E{zMtX8bjmKX4QS4EV6NJy?!EF&VQ zg*CNTh80*xxO0zwnqcMJVOT2#%R`W4IW*#FBe92%$FO zU%AV;SFKBgnk_#7U7&b6U5?qnV%@-lv?BkFq2A`TxCgHS9>%nhp^jFdxGL1$ycFmW zV$O0VAh%cR&tGT!v(Bi!3~%ChdvZ0{{SogvUGrkK{D*ZptaW3xmV*ddBe#E6a#78n z^q3`v3f_uf$cj?9v;0<=W<%}9J%o}&IX6&aZsE_SbuYDB2A{zF<|OLoce!S6tXjv^ zW@&+@aY;=rffAXwpK^p{z8RGvgr({oEwr@O#@Y?0zZzECOH%mr@3_iQXIr_kOV-<~ z+e=D3t<~}~>hGajGvyjyTib%PBcWI!S~EJ@J325~6No$|dfxKyxdl44JKF@p(ycm& zI>P&`QTsFOTPiv`1riqNx;h0?X5TvB%>auX9i`a7I3N5u(pV+ee$`QKdOkQ>;Ud-93{%2syFM5- zUUX}bE6v*$q2(x!-#I2X?D{^S{o0yx+Rh-SxwWSD%0DXlK8%1hl8Y$HbzTv3KHxqX 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 #2~ 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�YGp8 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.d(n,{Zo:()=>c,kt:()=>g});var i=t(67294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function a(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=i.createContext({}),p=function(e){var n=i.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},c=function(e){var n=p(e.components);return i.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},u=i.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(t),g=o,d=u["".concat(l,".").concat(g)]||u[g]||m[g]||r;return t?i.createElement(d,a(a({ref:n},c),{},{components:t})):i.createElement(d,a({ref:n},c))}));function g(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,a=new Array(r);a[0]=u;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:o,a[1]=s;for(var p=2;p{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var i=t(87462),o=(t(67294),t(3905));const r={},a="Smart Microscopy Using openUC2 and ImSwitch",s={unversionedId:"Investigator/XYZMicroscope/SmartMicroscopy",id:"Investigator/XYZMicroscope/SmartMicroscopy",title:"Smart Microscopy Using openUC2 and ImSwitch",description:"This tutorial will guide you through setting up a smart microscopy workflow using the openUC2 microscope and the ImSwitch software. We will perform a closed-loop experiment where the microscope follows a line based on image processing results.",source:"@site/docs/02_Investigator/02_XYZMicroscope/SmartMicroscopy.md",sourceDirName:"02_Investigator/02_XYZMicroscope",slug:"/Investigator/XYZMicroscope/SmartMicroscopy",permalink:"/docs/Investigator/XYZMicroscope/SmartMicroscopy",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"openUC2 Setting up the tube lens",permalink:"/docs/Investigator/XYZMicroscope/SetupTubelens"},next:{title:"Stage Mapping and Stage Calibration",permalink:"/docs/Investigator/XYZMicroscope/StageCalibration"}},l={},p=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Closed-Loop Feedback Pipeline",id:"closed-loop-feedback-pipeline",level:2},{value:"Installation",id:"installation",level:3},{value:"Code Implementation",id:"code-implementation",level:3},{value:"Result",id:"result",level:3}],c={toc:p};function m(e){let{components:n,...r}=e;return(0,o.kt)("wrapper",(0,i.Z)({},c,r,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"smart-microscopy-using-openuc2-and-imswitch"},"Smart Microscopy Using openUC2 and ImSwitch"),(0,o.kt)("p",null,"This tutorial will guide you through setting up a smart microscopy workflow using the openUC2 microscope and the ImSwitch software. We will perform a closed-loop experiment where the microscope follows a line based on image processing results."),(0,o.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"ImSwitch Software"),": Ensure that ImSwitch is running and accessible. For example, if running on the same computer, the URL might be ",(0,o.kt)("inlineCode",{parentName:"li"},"https://localhost:8002")," (check logs for the exact port)."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"SSL Certificate"),": Access the REST API (e.g., https://localhost:8002/docs) in a browser and accept the security warning to use the web viewer (",(0,o.kt)("a",{parentName:"li",href:"https://youseetoo.github.io/imswitch/index.html"},"https://youseetoo.github.io/imswitch/index.html"),"). Enter the URL and port under connections.")),(0,o.kt)("h2",{id:"closed-loop-feedback-pipeline"},"Closed-Loop Feedback Pipeline"),(0,o.kt)("p",null,"The pipeline will:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Snap an image"),(0,o.kt)("li",{parentName:"ol"},"Create a background image"),(0,o.kt)("li",{parentName:"ol"},"Subtract the background"),(0,o.kt)("li",{parentName:"ol"},"Compute edges using the Canny filter"),(0,o.kt)("li",{parentName:"ol"},"Perform Hough transform to find straight lines"),(0,o.kt)("li",{parentName:"ol"},"Determine the mean orientation of the lines"),(0,o.kt)("li",{parentName:"ol"},"Compute the next XY coordinate to move"),(0,o.kt)("li",{parentName:"ol"},"Return to the initial position")),(0,o.kt)("h3",{id:"installation"},"Installation"),(0,o.kt)("p",null,"Install the necessary package:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sh"},"pip install https://github.com/openUC2/imswitchclient/archive/refs/heads/main.zip\n")),(0,o.kt)("h3",{id:"code-implementation"},"Code Implementation"),(0,o.kt)("p",null,"You can run the following code in a Jupyter notebook or Visual Studio Code. Adjust the client initialization to match your setup."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python"},'# Load dependencies\nimport cv2\nimport numpy as np\nimport tifffile as tif\nimport matplotlib.pyplot as plt\nimport os\nimport imswitchclient.ImSwitchClient as imc\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport time\nfrom simple_pid import PID\n\n# Setup PID controller\ncontroller = PID(2, 0.1, 2)\ncontroller.send(None)\n\n# Initialize the client\nclient = imc.ImSwitchClient(host="192.168.137.1", port=8002)\n\n# Retrieve the first positioner\'s name and current position\npositioner_names = client.positionersManager.getAllDeviceNames()\npositioner_name = positioner_names[0]\ncurrentPositions = client.positionersManager.getPositionerPositions()[positioner_name]\ninitialPosition = (currentPositions["X"], currentPositions["Y"])\n\n# Loop through the process\nfor iimage in range(10):\n # Snap image\n scalingFactor = .5\n pixel_to_stage = 1 / scalingFactor\n gaussianKernel = 201\n print("Taking image")\n iImage = client.recordingManager.snapNumpyToFastAPI(scalingFactor)\n mCrop = np.max(iImage.shape)\n Ny, Nx = iImage.shape\n\n # Remove background\n mBackground = cv2.GaussianBlur(iImage, (gaussianKernel, gaussianKernel), 0)\n iImage = iImage / mBackground\n iImage = iImage[Nx//2-mCrop:Nx//2+mCrop, Ny//2-mCrop:Ny//2+mCrop]\n\n # Process image\n image = np.uint8(iImage * 255)[:, :, np.newaxis]\n image[image > 100] = 0\n edges = cv2.Canny(image, 50, 150, apertureSize=3)\n lines = cv2.HoughLines(edges, 1, np.pi / 180, 100)\n\n # Calculate main orientation\n angles = [np.degrees(theta) for rho, theta in lines[:, 0]] if lines is not None else []\n main_orientation = np.mean(angles)\n dy = np.cos(np.radians(main_orientation)) * Nx / 2\n dx = np.sin(np.radians(main_orientation)) * Ny / 2\n\n # Handle NaN values\n dx = dx if not np.isnan(dx) else np.random.randint(-100, 100)\n dy = dy if not np.isnan(dy) else np.random.randint(-100, 100)\n\n newPosition = (dx * pixel_to_stage, dy * pixel_to_stage)\n print(f"We are moving the microscope in x:/y: {round(newPosition[0], 2)} / {round(newPosition[1], 2)}")\n\n client.positionersManager.movePositioner(positioner_name, "X", newPosition[0], is_absolute=False, is_blocking=True)\n client.positionersManager.movePositioner(positioner_name, "Y", newPosition[1], is_absolute=False, is_blocking=True)\n\n# Return to the initial position\nclient.positionersManager.movePositioner(positioner_name, "X", initialPosition[0], is_absolute=True, is_blocking=True)\nclient.positionersManager.movePositioner(positioner_name, "Y", initialPosition[1], is_absolute=True, is_blocking=True)\n')),(0,o.kt)("h3",{id:"result"},"Result"),(0,o.kt)("p",null,"The microscope will follow a line for 10 steps and then return to the initial position."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Result",src:t(22891).Z,width:"800",height:"518"})),(0,o.kt)("p",null,"This workflow demonstrates a basic smart microscopy setup using openUC2 and ImSwitch, allowing for closed-loop experiments based on real-time image processing. Adapt and expand this pipeline for your specific experiments and applications."))}m.isMDXComponent=!0},22891:(e,n,t)=>{t.d(n,{Z:()=>i});const i=t.p+"assets/images/trackpen-9cf48bfcc00e098078e888fd3f448fa2.gif"}}]); \ No newline at end of file diff --git a/assets/js/608ae6a4.36566353.js b/assets/js/608ae6a4.b4fe9852.js similarity index 75% rename from assets/js/608ae6a4.36566353.js rename to assets/js/608ae6a4.b4fe9852.js index 947701d70..1e9d07532 100644 --- a/assets/js/608ae6a4.36566353.js +++ b/assets/js/608ae6a4.b4fe9852.js @@ -1 +1 @@ -"use strict";(self.webpackChunkuc_2_docs=self.webpackChunkuc_2_docs||[]).push([[6938],{84545:s=>{s.exports=JSON.parse('{"permalink":"/blog/tags/docusaurus","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkuc_2_docs=self.webpackChunkuc_2_docs||[]).push([[3011],{84545:s=>{s.exports=JSON.parse('{"permalink":"/blog/tags/docusaurus","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/7f6a1755.5d17abb6.js b/assets/js/7f6a1755.5d17abb6.js new file mode 100644 index 000000000..30cfebd65 --- /dev/null +++ b/assets/js/7f6a1755.5d17abb6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkuc_2_docs=self.webpackChunkuc_2_docs||[]).push([[822],{3905:(e,t,a)=>{a.d(t,{Zo:()=>o,kt:()=>g});var n=a(67294);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var p=n.createContext({}),l=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},o=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},A=n.forwardRef((function(e,t){var a=e.components,s=e.mdxType,i=e.originalType,p=e.parentName,o=m(e,["components","mdxType","originalType","parentName"]),A=l(a),g=s,h=A["".concat(p,".").concat(g)]||A[g]||c[g]||i;return a?n.createElement(h,r(r({ref:t},o),{},{components:a})):n.createElement(h,r({ref:t},o))}));function g(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=a.length,r=new Array(i);r[0]=A;var m={};for(var p in t)hasOwnProperty.call(t,p)&&(m[p]=t[p]);m.originalType=e,m.mdxType="string"==typeof e?e:s,r[1]=m;for(var l=2;l{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>m,toc:()=>l});var n=a(87462),s=(a(67294),a(3905));const i={},r="Stage Mapping and Stage Calibration",m={unversionedId:"Investigator/XYZMicroscope/StageCalibration",id:"Investigator/XYZMicroscope/StageCalibration",title:"Stage Mapping and Stage Calibration",description:"Stage Coordinates",source:"@site/docs/02_Investigator/02_XYZMicroscope/StageCalibration.md",sourceDirName:"02_Investigator/02_XYZMicroscope",slug:"/Investigator/XYZMicroscope/StageCalibration",permalink:"/docs/Investigator/XYZMicroscope/StageCalibration",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Smart Microscopy Using openUC2 and ImSwitch",permalink:"/docs/Investigator/XYZMicroscope/SmartMicroscopy"},next:{title:"Stage Scanning and Image Stitching (ASHLAR)",permalink:"/docs/Investigator/XYZMicroscope/StageScanning"}},p={},l=[{value:"Stage Coordinates",id:"stage-coordinates",level:2},{value:"Alignment of Axes",id:"alignment-of-axes",level:3},{value:"Understanding Axes in NumPy",id:"understanding-axes-in-numpy",level:3},{value:"Stage Coordinate System",id:"stage-coordinate-system",level:3},{value:"Aligning Axes with Imswitch",id:"aligning-axes-with-imswitch",level:3},{value:"Steps for Aligning Axes:",id:"steps-for-aligning-axes",level:4},{value:"Stage Calibration",id:"stage-calibration",level:2},{value:"Interpreation of the Matrix",id:"interpreation-of-the-matrix",level:2},{value:"Calibration Matrix image_to_stage_displacement",id:"calibration-matrix-image_to_stage_displacement",level:3},{value:"Entries and Their Names",id:"entries-and-their-names",level:4},{value:"Summary of the Matrix Entries",id:"summary-of-the-matrix-entries",level:3},{value:"Interpretation of the Values",id:"interpretation-of-the-values",level:2},{value:"1. image_to_stage_displacement Matrix",id:"1-image_to_stage_displacement-matrix",level:3},{value:"2. backlash_vector Matrix",id:"2-backlash_vector-matrix",level:3}],o={toc:l};function c(e){let{components:t,...i}=e;return(0,s.kt)("wrapper",(0,n.Z)({},o,i,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"stage-mapping-and-stage-calibration"},"Stage Mapping and Stage Calibration"),(0,s.kt)("h2",{id:"stage-coordinates"},"Stage Coordinates"),(0,s.kt)("p",null,"In this tutorial, we will guide you through the process of aligning the coordinate systems for the UC2 microscope stage. Proper alignment ensures that the movement of the stage corresponds accurately with the image displayed on the screen, facilitating an intuitive user experience. In principle all of this can be handled in software (e.g. flipping the camera image, changing stage axis), but it's always good to start with a common ground from the hardware side."),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(14006).Z,width:"1792",height:"948"}),"\n",(0,s.kt)("em",{parentName:"p"},"This is the microscope (UC2 XYZ v3) with the ingredients controlled by ImSwitch")),(0,s.kt)("h3",{id:"alignment-of-axes"},"Alignment of Axes"),(0,s.kt)("p",null,"The goal of aligning the coordinate systems is to ensure they are correctly matched. The alignment of the stage is considered from the origin point (zero point). The desired behavior is as follows:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"When the stage moves to the right (x+), the image on the screen should also move to the right."),(0,s.kt)("li",{parentName:"ul"},"When the stage moves upwards (y+), the image on the screen should move upwards as well.")),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(95223).Z,width:"3217",height:"751"})),(0,s.kt)("p",null,"This is illustrated in the following Figure. When viewing the sample from above with the microscope positioned in front, the image should match what is shown in Imswitch.\nThis is also represented by the ",(0,s.kt)("inlineCode",{parentName:"p"},"VirtualMicroscope")," with the ",(0,s.kt)("inlineCode",{parentName:"p"},"VirtualStage")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"VirtualCamera")," in this config (Config: ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json"},"https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json"),")."),(0,s.kt)("h3",{id:"understanding-axes-in-numpy"},"Understanding Axes in NumPy"),(0,s.kt)("p",null,"It's important to note the labeling of axes. In NumPy, x = 1 and y = 0. This means:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"The x-axis is the second axis (index 1) of an array."),(0,s.kt)("li",{parentName:"ul"},"The y-axis is the first axis (index 0) of an array.")),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(55828).Z,width:"1272",height:"652"})),(0,s.kt)("p",null,"NumPy arrays are multidimensional, with axes numbered as follows:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Axis 0 is the first axis (often the vertical direction)."),(0,s.kt)("li",{parentName:"ul"},"Axis 1 is the second axis (often the horizontal direction).")),(0,s.kt)("h3",{id:"stage-coordinate-system"},"Stage Coordinate System"),(0,s.kt)("p",null,"When viewing the stage from above, the coordinate system is arranged as follows:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"X-Axis (Horizontal)"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Positive direction: Right"),(0,s.kt)("li",{parentName:"ul"},"Negative direction: Left"))),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Y-Axis (Vertical)"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Positive direction: Up"),(0,s.kt)("li",{parentName:"ul"},"Negative direction: Down")))),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(6161).Z,width:"857",height:"646"})),(0,s.kt)("h3",{id:"aligning-axes-with-imswitch"},"Aligning Axes with Imswitch"),(0,s.kt)("p",null,'To enable intuitive operation, the stage and camera axes must be correctly aligned with the coordinate system in Imswitch. To achieve this, the commands "flip x" and "flip y" are used. These commands invert the direction of the axes in the coordinate system, meaning that movement or position along the axes is reversed.'),(0,s.kt)("h4",{id:"steps-for-aligning-axes"},"Steps for Aligning Axes:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Initial Setup:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Ensure the microscope and stage are properly connected to the control software (e.g., Imswitch)."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Define Origin:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Identify the origin (zero point) of the stage coordinate system. (in Hardware this would be defined by the Endstops that are used for homing the axes; The motor will run - if the direction is set correctly - until it hits the switch)"))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Test Movement:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Move the stage to the right and observe the direction of the image on the screen.",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},'If the image moves left, apply the "flip x" command.'))),(0,s.kt)("li",{parentName:"ul"},"Move the stage upwards and observe the direction of the image on the screen.",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},'If the image moves down, apply the "flip y" command.'))))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Adjust Axes:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"Use the following commands as needed to align the axes:"),(0,s.kt)("pre",{parentName:"li"},(0,s.kt)("code",{parentName:"pre",className:"language-python"},"# Flip the x-axis if necessary\nif x_movement_incorrect:\n stage.flip_x()\n\n# Flip the y-axis if necessary\nif y_movement_incorrect:\n stage.flip_y()\n"))))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Verify Alignment:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"After applying the flips, verify that the stage movements correspond correctly with the image movements on the screen."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Save Configuration:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Save the configuration settings to ensure the alignment persists across sessions.")))),(0,s.kt)("h2",{id:"stage-calibration"},"Stage Calibration"),(0,s.kt)("p",null,"Richard Bowman and his team provided a very nice way to calibrate stage coordinates to camera pixel coordinates. We burtally integrated the open-source software which you can find here: ",(0,s.kt)("a",{parentName:"p",href:"https://gitlab.com/openflexure/microscope-extensions/camera-stage-mapping"},"https://gitlab.com/openflexure/microscope-extensions/camera-stage-mapping")," into ImSwitch. If you activate the ",(0,s.kt)("inlineCode",{parentName:"p"},"HistoScan")," Controller and Widget you can start it either by the GUI or using the HTTP interface by calling http://localhost:8002/HistoScanController/startStageMapping (URL and PORT may differ). What the stage will do is moving a certain series of steps in XY, performs a cross-correlation of the images and computes the shift in XY of the mciroscope image on the camera, compares it to the expected shift on and returns the Image-To-Stage-Displacement Matrix as well as the Backlashvector. Both matrices/vectors are microscope specificand will help you matching e.g. stage coordinates for stitching software such as ASHLAR or OFM Stitching. This document should give you a rough idea of what's happening."),(0,s.kt)("p",null,"Some terminology:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Combine X and Y calibrations"),": The calibration involves combining two separate measurements or calibration runs for the x and y directions, ensuring that the directions are orthogonal (at right angles to each other).")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"2x2 transformation matrix"),": The ",(0,s.kt)("inlineCode",{parentName:"p"},"image_to_stage_displacement")," matrix maps image displacements to stage displacements. This ensures that movements in the image coordinate system are accurately translated to movements in the stage coordinate system.")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"backlash_vector"),": This is a vector estimating the backlash (mechanical slack or play in the system) in each direction. In this case, the estimated backlash is zero, indicating a precise calibration with no noticeable mechanical play.")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"backlash"),": The function is expected to return the highest element of ",(0,s.kt)("inlineCode",{parentName:"p"},"backlash_vector")," as a scalar value, which would be zero in this case."))),(0,s.kt)("h2",{id:"interpreation-of-the-matrix"},"Interpreation of the Matrix"),(0,s.kt)("h3",{id:"calibration-matrix-image_to_stage_displacement"},"Calibration Matrix ",(0,s.kt)("inlineCode",{parentName:"h3"},"image_to_stage_displacement")),(0,s.kt)("p",null,"The entries of the calibration matrix ",(0,s.kt)("inlineCode",{parentName:"p"},"image_to_stage_displacement")," can be given specific names and meanings based on their positions within the matrix. Let's denote the matrix as follows:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mtext",{parentName:"mrow"},"image_to_stage_displacement"),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"("),(0,s.kt)("mtable",{parentName:"mrow",rowspacing:"0.16em",columnalign:"center center",columnspacing:"1em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mn",{parentName:"mstyle"},"0"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mo",{parentName:"mrow"},"\u2212"),(0,s.kt)("mn",{parentName:"mrow"},"1.0"))))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mo",{parentName:"mrow"},"\u2212"),(0,s.kt)("mn",{parentName:"mrow"},"1.0")))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mn",{parentName:"mstyle"},"0"))))),(0,s.kt)("mo",{parentName:"mrow",fence:"true"},")"))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\text{image\\_to\\_stage\\_displacement} = \\begin{pmatrix} 0 & -1.0 \\\\ -1.0 & 0 \\end{pmatrix}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1.0044em",verticalAlign:"-0.31em"}}),(0,s.kt)("span",{parentName:"span",className:"mord text"},(0,s.kt)("span",{parentName:"span",className:"mord"},"image_to_stage_displacement")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"2.4em",verticalAlign:"-0.95em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size3"},"(")),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-c"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.45em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.61em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"0"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"\u2212"),(0,s.kt)("span",{parentName:"span",className:"mord"},"1.0")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.95em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"col-align-c"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.45em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.61em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"\u2212"),(0,s.kt)("span",{parentName:"span",className:"mord"},"1.0"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"0")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.95em"}},(0,s.kt)("span",{parentName:"span"}))))))),(0,s.kt)("span",{parentName:"span",className:"mclose delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size3"},")")))))))),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"("),(0,s.kt)("mtable",{parentName:"mrow",rowspacing:"0.16em",columnalign:"center center",columnspacing:"1em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mi",{parentName:"mstyle"},"a"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mi",{parentName:"mstyle"},"b")))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mi",{parentName:"mstyle"},"c"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mi",{parentName:"mstyle"},"d"))))),(0,s.kt)("mo",{parentName:"mrow",fence:"true"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\begin{pmatrix} a & b \\\\ c & d \\end{pmatrix}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"2.4em",verticalAlign:"-0.95em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size3"},"(")),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-c"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.45em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.61em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"a"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"c")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.95em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"col-align-c"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.45em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.61em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"b"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"d")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.95em"}},(0,s.kt)("span",{parentName:"span"}))))))),(0,s.kt)("span",{parentName:"span",className:"mclose delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size3"},")")))))))),(0,s.kt)("h4",{id:"entries-and-their-names"},"Entries and Their Names"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"a (0)"),":"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Name:")," ",(0,s.kt)("inlineCode",{parentName:"li"},"a")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Meaning:")," Represents the scaling factor from the x-coordinate in the image to the x-coordinate in the stage. Here, it is 0, indicating no direct mapping from image x to stage x."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"b (-1.0)"),":"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Name:")," ",(0,s.kt)("inlineCode",{parentName:"li"},"b")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Meaning:")," Represents the scaling factor from the y-coordinate in the image to the x-coordinate in the stage. The value -1.0 indicates an inverse and slightly scaled mapping from image y to stage x."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"c (-1.0)"),":"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Name:")," ",(0,s.kt)("inlineCode",{parentName:"li"},"c")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Meaning:")," Represents the scaling factor from the x-coordinate in the image to the y-coordinate in the stage. The value -1.0 indicates an inverse and slightly scaled mapping from image x to stage y."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"d (0)"),":"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Name:")," ",(0,s.kt)("inlineCode",{parentName:"li"},"d")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Meaning:")," Represents the scaling factor from the y-coordinate in the image to the y-coordinate in the stage. Here, it is 0, indicating no direct mapping from image y to stage y.")))),(0,s.kt)("h3",{id:"summary-of-the-matrix-entries"},"Summary of the Matrix Entries"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"a (0)"),": No direct mapping from image x to stage x."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"b (-1.0)"),": Inverse mapping from image y to stage x."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"c (-1.0)"),": Inverse mapping from image x to stage y."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"d (0)"),": No direct mapping from image y to stage y.")),(0,s.kt)("p",null,"This calibration matrix indicates that there is a transformation involving a 90-degree rotation combined with an inverse scaling factor slightly above 1 between the image coordinates and the stage coordinates. The exact interpretation may depend on the specific application, but generally, it implies that movements in one direction in the image are mapped to movements in the perpendicular direction on the stage with a slight scaling adjustment."),(0,s.kt)("h2",{id:"interpretation-of-the-values"},"Interpretation of the Values"),(0,s.kt)("p",null,"The following simulation of the ",(0,s.kt)("inlineCode",{parentName:"p"},"VirtualMicroscope")," inside ImSwitch (Config: ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json"},"https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json"),"):"),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(15346).Z,width:"480",height:"311"})),(0,s.kt)("p",null,"The result of the stage mapping is a json file containing (under ",(0,s.kt)("inlineCode",{parentName:"p"},"/ImSwitch/calibFile.json"),") the following important element:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},' "camera_stage_mapping_calibration": {\n "backlash": 0.0,\n "backlash_vector": [\n 0.0,\n 0.0,\n 0.0\n ],\n "image_to_stage_displacement": [\n [\n 0.0,\n -1.0\n ],\n [\n -1.0,\n 0.0\n ]\n ]\n }\n')),(0,s.kt)("p",null,"The provided matrices explains transforming image coordinates to stage coordinates and estimating backlash. Let's break down the interpretation of the entries:"),(0,s.kt)("h3",{id:"1-image_to_stage_displacement-matrix"},"1. ",(0,s.kt)("inlineCode",{parentName:"h3"},"image_to_stage_displacement")," Matrix"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-python"},'mData["camera_stage_mapping_calibration"]["image_to_stage_displacement"] =\narray([[ 0. , -1.00135997],\n [-1.00135997, 0. ]])\n')),(0,s.kt)("p",null,"This matrix is a 2x2 transformation matrix used to map image coordinates to stage coordinates. Each entry in this matrix has a specific meaning:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"[","0,0","]"," = 0"),": There is no direct transformation of the x-coordinate in the image to the x-coordinate in the stage."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"[","0,1","]"," = -1.00135997"),": The y-coordinate in the image inversely affects the x-coordinate in the stage."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"[","1,0","]"," = -1.00135997"),": The x-coordinate in the image inversely affects the y-coordinate in the stage."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"[","1,1","]"," = 0"),": There is no direct transformation of the y-coordinate in the image to the y-coordinate in the stage.")),(0,s.kt)("p",null,"The presence of -1.00135997 off-diagonal elements indicates that the transformation involves a negative and approximately unit scaling between the coordinates, implying a possible 90-degree rotation combined with a scaling factor close to -1."),(0,s.kt)("h3",{id:"2-backlash_vector-matrix"},"2. ",(0,s.kt)("inlineCode",{parentName:"h3"},"backlash_vector")," Matrix"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-python"},'mData["camera_stage_mapping_calibration"]["backlash_vector"] =\narray([ 0., 0., 0.])\n')),(0,s.kt)("p",null,"This vector represents the estimated backlash in each direction (x, y, and possibly z, though z is not utilized in a 2D context). Here, all elements are zero, indicating no measurable backlash in the x and y directions."))}c.isMDXComponent=!0},15346:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/StageMapping1-c4576ec64061a4416996e558150edf24.gif"},95223:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/StageMapping2-d11998287b8c6da911a5e7300276200f.png"},6161:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/StageMappingSampleView-0688332923e7a42a80b02895e1013c90.png"},14006:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/StageOverview-4d690420657841eae78311f94bd0ece2.png"},55828:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABPgAAAKMCAAAAABTT1mrAAAmRUlEQVR42u3deXhM9+LH8c9kEXspilqrSJAiCImlQmir2qo92lJSqq3b1dLl9keri1C6aqu0llJrW62lFVtL1b5EEUuCIPYlSpCQ5Pz+mMlksiGWOzM579fz3Oeec2bmOP2e8fY9M5OJxRAAmIsHQwCA8AEA4QMAwgcAhA8ACB8AED4AIHwAQPgAgPABAOEDAMIHAIQPAAgfABA+ACB8AAgfABA+ACB8AED4AIDwAQDhAwDCBwCEDwAIHwAQPgAgfABA+ACA8AEA4QMAwgeA8AEA4QMAwgcAhA8ACB8AED4AIHwAQPgAgPABAOEDAMIHAIQPAAgfABA+ACB8AAgfABA+ACB8AED4AIDwAQDhAwDCBwCEDwAIHwAQPgAgfABA+ACA8AEA4QMAwgeA8AEA4QMAwgcAhA8ACB8AED4AIHwAQPgAgPABAOEDAMIHAIQPAAgfABA+ACB8AAgfABA+5FOp+xkDgPCZy8yq1e5bxzAAksVgDEziStUj0oOLruOeO/fYF+vew8AhH/JiCMzi+BFJO67nntM+tC9++QIDBy514b4q3i/pScYBYMZnJlO/jA7pdz13rMJYIZ/jNT5klyJJWvYQl7pgxgeTPSt4biDf4jU+AIQPALjUhevat3LNkdPehatXr9XG/i/Ym3HSf/0z7mMMPiy9HCRp9RdShP2Ni8SfYw8cPH13tWr3BFVgJEH44CY2DVluX27wWfP0OfxMacuGYvZbRoyR6teTpLUzpddt4Uv44vPTkrRNkleHF1symuBSF24g7snAjO5pc4v+tqXhodLuvvYblg+VSvxYKOtU8b5hp+0rKT+FPMB4ghkfXN+u+smSVNbf/464XesljW8VJknynNEgXrObvWS925EeqbJMuTfLg8+GHpZUo+3dReP37f3HkJoxoCB8cH01626Qz8BXykiSVry6RXqpbSlJUpnZLa9oUOMgSUrpfkJ6/bGsD54YJ5Wa+pBFkrR95MxSAxlQcKkLNzhxX3l03vmBtXtqubqmdHKs7abgMdKVbqck6Y1VUqv3sz14smT5rZ21e/KfumdBUQYUhA9uoNGRHzO+OaXgdxZpe/raiz2kQ0+mSXPHSBVmemZ77D6pTuOM1XsaMZwgfHALZR1XmleWdtvXJtSWFr+n2D6S9+y7cjzr3gwgCB/cXS0pJi19pchPxaThv3b5V/qoaQ53vlfa8hNjBsIHN1ddSkqwr/l9J6U9vlXq9nJOd24uqUv3WEYNZsW7um4sLfrQoUNnrd+vs0qSwzftdH3l0/QA5mDo1H+l2XPqNGvQ6D6ueUH44D5SZ3ywK/dbP1q6XdLPOb9dW2bjs39IxvbtUsEGrR5twmCCS124hYT6Pa/SPZ0+JeX+TfPVl39r+wHdpNUfBD1xguEEMz64gZRu2yU1bXd3+QKSpK8zv1mRGnZMksL9/XJ5/DPP7Phz/fo9aZI0Y9HkxxhRED64vMVLpVK/ZXwYb2Hmm//7p2QxdL7T+lw/m1ynzgBd2Lpq2jYpoU/MnQwpuNSFq/tV0uzGud46Siq5t4e0s+9V91Kk6ZCo6WWlM7MYURA+uLwNUolWDuv/Ot64t7chy5R7xvtJsz691jOgx0RJexhRED64g0IWh9T94HBDUpez0uBHVXROYWnwqmvtp4GkkwwnCB9cXj3paJx97cqAZIfbBkRJ938oyf8rKaXbsWwPnvbNFYe19ZL4EmYQPri+QEk90muX+Eikw00TJ0plrV9N8HS4dLR7SpbHHn3+uZoT7Rv3PS8piBEF4YPL61BaWhs444qkkxG1FjvcEjVA8pxR3roytq608o0sj307UXHP+PYe+eueEzt+71P3iFSrAyMKM+HjLG6qwqwHUrXtiZ53p106I8mn6zTbDWe7JEnvpr/vUWhOo/MaE9Ql02PLe6RJ+/ZlbCgzg38AwYwPbqD19EqSUg8dPiOp9qr0Hzszeu+V2r1lv1vNbyWFZ/4Zj/f/esDhfRFZ2q2sx3iC8MEddIv5vMEdklSg3eTNjUrati74Vao8zaFr3QZI51+VpEKSpYQkqWnk3hHtrY8o6td/x285/3hHSdv/gHzHYjAG7uzMAc9ypW/sXy/j39OpVyqUYAxB+ACAS10AIHwAQPgAgPABAOEDAMIH4LodZAgIH2A24SMOMQi3Gp/jA1xbqCytn6rMOBA+wFThE+kjfID5wkf6CB9gwvCRPsIHmDB8pI/wASYMH+kjfIAJw0f6CB9gwvCRPsIHmDB8kqVVT9JH+ABzhY/0ET7AhOEjfYQPMGH4SB/hA0wYPtJH+AATho/0ET7+KsCcf4NJH+EjfCB9IHyED2b4WxzSi/QRPsIH0gfCR/hA+uCI37kB5AsGc5g88GIIAPef77XsVYVRIHwA2QPhA8geCB9A9kw8bLwiCri0ULLHjA8A2SN8gFmzF9KT7BE+gOyB8AFkD4QPIHsgfADZI3wAyB7hA0D2CB8Askf4AJA9wgeA7BE+AGSP8AEge4QPwFWzx2/TuPWDytdSAS7tINkjfABw0/gtawAIHwAQPgAgfABA+ACA8AEA4QMAwgcAhA8ACB8AED4AIHwAQPgAgPABAOEDAMIHgPABAOEDAMIHAIQPAAgfABA+ACB8AED4AIDwAQDhAwDCBwCEDwAIHwAQPgAgfAAIHwAQPgAgfABA+ACA8AEA4QMAwgcAhA95tmIFB8FQuOT5IHwAQPgAgPABAOEDAMIHAIQPAAgfABA+ACB8AED4ABA+hgAA4QMAwgcAhA8ACB8AED4AIHwAQPgAgPABAOEDAMIHAIQPAAgfABA+ACB8AED4ABA+ACB8AED4AIDwAQDhAwDCBwCEDwCcyYshMJlL65Ik6R7f67p36s+rNxQPfKCZUw9CSlpy9FlnD8XuqVuPVq7/YBOnHsTeGXtiC9YK6FWAJ/JNMuB2/vzzJh483Hre+1zXnRMetN77tcvOPIhpnYuogbOH4l3rnS0vnHfeQRzpZZuo+P5xaw/CfJjxmc3jcSlS3Mrrm2gF77qzT9tzkVM+PjLDWQcxefqfV5w/FKnPT/B4smvlg0u/+mrtmgJOOoj9bfZ5P9u4rrF1xO4H1wbwVGbGx4wvjyIVfj13+0SF1hqGYSzw1lInHcRxyaP5mL9vy4wvD0PxvEpvNAzDMDZX0svOOoheqrXJMAzDuNhZNZOZ8d0M3txAri6M0PdNJKn9kxrupGO4a9yko3+9dq+TR2LfeI/IhpKkgOmen8U76Sie/e+GBpKkQpOq7Ini+XkzCB9y9fUJ3y7WpcGWlXuddBD9e9/l/JFYkdqpgW2x+aNa66SjaPZ+EdtSsfbawPOT8OG2WK9w21LtB/SzmUci+KmMGW+A/nH+ARXQRZ6fN4M3N/IJY9bqrdu9atdq9+iByKd90reuWhgVdaVe/bYP3dgFnrqmLzaJjHPSQbjEUPhNzVg+qbJOH4qk3+XHc/7mniXID29u7A1JP6FtH9Ji28bE5y22jWGnbuTF9JKeKemLP+gxJx2EYRiGcSwPb27cvqMwDMMwjpbQ384+iMvhqsibG7y5gaV1/7xn/LrExB0fll2ySBesGw/V/drjlSUnz/zxts/MOtvzvtOzCeU905d9ddg5B+EaQ+EwUXj+bJumzjyIhL0bJjWYWGYGH2Fmxmf6Gd/Ziup21rp4vqU01zAMw0hrI9+11o07Gqpecp5nGHEKtC+fUR3nHEReZ3y38ygMwzBeVZHdzjyIU96SVDmODzDzAWYMim85y7ZYdGHlM9alr5aWWFrR9t7EUv+t73yY++M3L8+06v2yJMkib4cX06845yBcYyjs3vrEa05NZx5E8Q6rj0inl4XzrGfGZ/YZ378Wj6iMtQGy3lxRUx2mFBafy7nPMD7I8UlxQE3t90hUTeccRB5nfLf1KAzjDXnOcvpBxE1vLL3DjI/X+Mxuu9GmXsbae4tbSNLJ+ApPZWx8oH5ydO478Mhx1VCSfdNlZx2EawyFbUD+E+E5tZucPRRVeqx8Wu/8yvP+ZnCpmw/8o7oOayXbWi+XlOmnOQO2bKmX6w4GZv7qE9tbGnco1r7piEo65yBcYygkSSnhU72nd3HyQUiSfCaXjxjagSc+4TO3faqcfeOhzBtL6VTuO/C+M6etJYqeO1bOthyvas45CNcYCklKDvvFZ86jTj6IdEO/++dQJZ75N45L3XygqvZn3+ir3Y6r8bo7z/utrD3pi7HXDN/tOgjXGArpwiO/FJr3qJMPwq5QI8XwxCd85lZXW7NvrG/ZkuKwulGN8rzf6lqVvjjzmuG7XQfhGkOhhDZLi/72gJMPwsFxFeKJT/jM7T7LCsefm089LknF/M44fGBifEyJGnneb1d9kWxd2rPKo6mTDsI1huJ4yNo7l4Q4+SAcHN5apBFPfMJnbnf0T+2T8Qbs6oDyhyRpjN7blL5t70CNsuR5v52KHZtiXRqmHn5OOgiXGIqDLf6ptCrIupy25pJzDmLzZPsfnNI9tY03T/ybwSd68sFPbpyrosBtts+QPW9RtYuGYRjGsyr+nXXjT3ep/Y38bOj7KvuPYRjG2/KKcdpB5O0nN27LUSRUUu1D6Su/6QPnDEVHVZhg/eHp+EdV6iCf47sZFoP2u50Vaplly6pOJ737BNa+sG3r4mNq+ksZSVJit9/V+uH6nv8sna/gudavFDFe2ytJhzeXbSxJRd656u+4SW4QXbxzm3MLFuqNEU46iMsvHZF0YXmhNpK873/ZKUext7qa2d9o3bdj4GinDMXGsL3ye6hOtcNRE84X/vnBa44EmPHl8xmfYZzskX5Cg+am2bd+W9y6zWdUqm3LpYKZT//Uq/9JZ60f1/X6wmkHcSLTizGBzjmKLG+gDnTS+Uh8u7Ttbg/u42d1mfEx45OkjRu3HUyrXr1RcKbX5FdGbbPUDGie8RGyI6cd31sscs2fO12xeqdH49Z+zjuI+NNpGSs1izjlKNK2ZvprUvEuZ52PlL+XHLxUyj+g2XWeD+SG8OWX8JnyIBgKwndjeFcXAOEDAMIHAIQPAAgfABA+ACB8AED4AIDwAQDhAwDCBwCEDwAIHwAQPgAgfABA+AAQPgAgfABA+ACA8AEA4QMAwgcAhA8ACB8AED4AIHwAQPgAgPABAOEDAMIHAIQPAOEDAMIHAIQPAAgfALghL4Ygb1a4wkGEcB6QxZ8MAeEDzCZEBoNw/SwuN1qbJhUNr3nb/5RQ+9IyNzxpinb+QdR2hYNwjaNwkYMgfO4841seKo3ZV+kGHmlYOJ0ArofLvbkxXlLKxLw+asWL7WoUKFq/8//FcUoBuN2Mr7gklcnbYxZ8uEaSUrZu/TniiTdqcVYBuNeM7wUfqdRTeXlEap9H19hXUr6v+wNnFYB7zfjqxy/07FQ4Dw9IDvtFkor6VkuKiU2RUnqeeZHzCsCdwqfST+ft/l0WSLpryAuFJB38YNIVGS95P8eJBeBGl7p5NWeBpPtjBxaSpMrfbCgtachRTiyA/Bu+CwMlNf+tWPp6vaWlpPMDObEA8m/4Rh6Sis8tkrGh3nhJM1ZxZgHk6ra/xnd0xcrdp0573Vu9eqNW9o1f/io1ec/hXqn9D0ph4ZKMsAT5fmG/4fz0XQcPHClerVq16q2L5rD7qZJeL+24pVPwGun75pxaAE4K35Ghk1MlSQeWS20/rW3b7PdSmpbU7Jlxv6HfSeWmSJIxWzqbvvnM558nSNLR3ZIKPvx646z73xYnlX0l87YRIdJ8fowDgHMudc+9XeO71IzVJfXety2FDpf03Hb7LQtHSJ4zy2d9fEyddxMy1pJ+bvJF1nvMk9Q+y4df7i8rHVvHqQXgjBnfvzVOSpLu9q95IXZ7gpQyNMR2CfrW2gW62GWD7T2JuF6GNKJl1scfb3NMUpG2Fcuc3rcv9rJkCc56l4WSHsiyzdLmB2lBEOcWgBPCd0eDSOm+D5uVlKTEiDFJMvpF+Vjj9H3D/drdd5YkKbnrGanj4GyP//Kg5BnR7w5J0qnPxyZ0b5T1LnslS2jWjQ/8IMVyagE45VL3C5/SX295pKQkqej7yz2kXeNtN5X8qaA0+3NJ0qsbpRqTsz98gqRvB1m7p9LDD3wZkfUeaaekcqWzbvWXdIJTC8Ap4auxLOY5T/ta8CuSNqevBYyVNGitpB++lgr/VDzboxOOSWV7Z6wXe6FK1rucSpNKZXtgKUnHObUAnBI+NSvhuDZY0m772jPh0pVupxTdX9K4+7I/+JKkclff/wlJ2SZ8Ks2MD4DzwpdZuZLSrozVLwOkQ0+e63xBeq5nTncvKEVvveoez0i6I9vWIp7WWwDA6eGTn5Rg/4yeCv5YQlp81y4p8NMcD81PuvLQt6lX2WFRSRezbU1Otd4CADn6X3w7y5kjl60LJyVdydhebepjhpKlUnN8cnzcm92lY/3GdGvRsGQue75L0ulsW0/bbgEAp4Tvty9j4y/mduMjb34oyWNalZxv7vbbFEm7hkv3NG7cLNAj5/CdyjF8ZTm1AJxzqbu8Ufvf9lzM/fZ+klQ2NLebJ39ie8t2/6yBQaVfz76jAiWkY0lZt+5nxgfAaeHb0H6TJBWrGRQcHBwcHFwiy+2Xe0jS0UG57uCVg1OeSH9jN2GUf2S2O1SQLv+VdeMySRU5tQCccal7qWOSVOHFPvbZV7tFme8wcK0k6fOgHrntonCvXjq4YVPUujOS9j80IyzL7W12SEvaZtm4WFJbTi0AZ8z4lh6Wyq95PderzpljJa++kvrtuNpuKnf+8LdTax6WpEGXs9z2mKw/r+to3y6pcBtOLQBnhG++pFG5/2rwnf0kRUwIly50Pn+NXVmCFi72lg7vybK9RQkpek7mbe9KeqAQpxaAM8J3QFJDh/XkXY63JnZOlB4fqLF1pd19rr23tk9Jismy0fsxSW9dcdy0dZqkLpxZAE4JX3FJ5xzWP41zvLXfTuneyVKhOcWkn0Zfe3cFJGX7etF3C0mxrztsONc3TWrYgzMLwCnhC5T1m0Jt1rzveOMXM6WCc+6QVPNbSW+syP74ruH7HdaSlkvK9i17Vd+U9ElG+c49uFGyfOXBmQXgtPBF2Mv3S2iiw21rB0r6PECS1G2AlNr9SNaHz/9xku9z8elr57vESPdm/9KCwfdKGvVYlCTJmNNkraR+jTmxAHJnMW7fvq+0XiVZOrxy351ph//+zPrRFZ0oI0mnGhySen5vu+PlZhulZn94S1KapxS4XpJ890gqULtWLb+K/x7/c84FSeP6Z/9T9rXdJ8nSNuBOn9g/t0tSxxk+1zy2jA9NL3PDk6Zo5x9EbVc4CNc4Chc5CEO4brfzc3zePzY8LOOXXySPNEmqETjddkvaE4ekOuPS71hgToME/T3os8wPfzg2TbocFZWxZWgO3VO1VQ9sl4zFi9M3hI/35LwCcNKlrspG2iZWaZL05Dr7dw28u0Qq+mPGLwmqOtkifT4z86M/Wf1YpoJV/OTdHP+U8itfdvh1Q5W/+o7uAXBe+FRn6R/tKnlIUrkXVk2zd+/Ie5Im+Dnc8bFBkv6TKslS0L6xya8HPulk/bYBr0qtp+9/JZc/peSnB/7rV0CSigdNjn0+v5yamDFdm/Qd/y/PUeCWs9z+FwYux50pVf7Gvx/v3OkzaXeXv2ag0w4lXL6nzHXv1fVf4/ux9wVJqjarUfaTxgtbLnUUvMbnfv4H38dXoOZNPbx48Xuua+papUq+OjGTw43QLrXWTN/WbON9PE0BtwsfbsClt4wuszzU8qUOSwesZDiAW4tP+rqmsUcbTvWQVHic519/MBwA4TOB5JEaZH2X597OmsR4AITPBPaeLtnRtviq5vKqNXBr8RrfzUmbflLSw77Sgd8XHQ8YUjX9hsRJm6NiqtQP6G37vb/rVkuydKpsndDNSJB059O57nafHk3/6ZOGXomnyjDQAOFzHTt6SlIx3+Rho1OltZN/amfd/kd4nKTo6OkfjbNO3cKjJSne+i00q6xfw9X83tzDVy190fuemHjCB3Cp60LqjIuIuF+KDxqZ2nbCXyGX+lo3vx8aV3vKtqSdMwJPdBogSRr7liwRH79ovbn52Iha6jil2lVmfBm/NMRXhxlngBmfK/3D0V+6tHLj0KNlJrWXlkRYL2xXDtOQ4T6Sn1/XUcO+atlNUquQbxJeKGZ7lM8ALd75WvPcd3tO5e3L1ZTEOAOEz+V8o8B55SR5vS1JSuydNnCk9RbPN72GPN+ivCRL0ML1oVLyq2l9G0lpG7ysX049NnPVWgamX+HaNxXQFUYYIHyup9M0x1/yMWt/nQ/sKwPn/zVhqCQFL1wdKi3+WpcnSjvPN7Q+4rXMVRsWyGACt/9SjSG4Bfr8mOmXG23WyxnfCOgxSFskScFaI2mWNDdZWpf+ZdIeuZyPjIngZcYXYMbngppm/l0gW9TAYS3AFr5Az7WGJWmepUL8og4Z4TuRkumhti9zKK5Y+6YjKskIA4TP1R1UVYe1CjotSSrmv3W336LzTcNemuEQvuI57qGSdtuX41WNIQW41HV1vtrpsBab/tGUYK3WbHXv6jH/woXtpatfbQ+VZf8NwsY+j6oMKUD4XF2A1jusbVBAevjWXJrv0bVcy4vzNqU2ueoeqmvLRdvi8hMVCjCkAOFzdY018qR95cI7CrSH7/fEFuUVppnrsv+izMzprH72W9vid2rOiAKEz+V1Dj7xnH1lcGwN2+9IqlEqerzCpM5eiyKvET710hjrux5Rcz2HMaIA4XN5nt8X/vkh628EPh32tefU9N+FFGxEenaWSrW5vMzjGr/698UyB18xJB1qn9TTlxEFbi3e1b05w2KlTfp4niR51xtq21p9anikf9+AGnFRE48X/Mz+cl7wArUuIylskWoVv/p+S4zp9eWGDrVWzT5S9h1GGSB8riT5o0uStNP6Lu7m9PCpU+NnFo+RJDWZnPHb5IKl7pL0uE9y0LX23LNk7/XrJTWaW5FhBgifK/GJOePwAWSHb5mqGPn35qgjpQPqt3T4Lb/NNqb5S9IdG5OuXbNHdkSuP1UtuG1BRhm41Swm/XZf1//1klc7afxORZc6Cn69pPvhzQ0AhA8ACB8AED4AIHwAQPgAgPABAOEDAMIHAIQPAAgfABA+ACB8AED4AIDwAQDhA0D4AIDwAQDhAwDCBwCEDwAIHwAQPgAgfABA+ACA8AEA4QMAwgcAhA8ACB8AED4AhA8ACB8AED4AIHwA4IYshjn/u0PtS8vy9sAVrnD0ITxxkY3BEDDjA4BceTEEedPSFabpinb+QdR2hYNwjaNwkYMAMz4AIHwAQPgAED4AIHwAQPgAgPABAOEDAMIHAIQPAAgfABA+ACB8AED4AIDwAQDhAwDCBwCEDwDhAwDCBwCEDwAIHwAQPgAgfABA+ACA8AEA4QMAwgcAhA8ACB8AED4AIHwAQPgAED64rJjR+xgE4DbwYghc1KZf5u6QbzUGAiB8JhH3yS8HGQWAS11TGfX5wbJ9F/ZhIABmfObxYpXmwR6az0AAhM88atViDAAudQGAGZ+LSJt+UtLDvtKB3xcdDxhSNf2GxEmbo2Kq1A/oXdq6vm61JEunypKk5BkJku58mvEDCJ8b2tFTkor5Jg8bnSqtnfxTO+v2P8LjJEVHT/9oXEdJUni0JMWPliStsr5t0fxeBhDgUtf91BkXEXG/FB80MrXthL9CLvW1bn4/NK72lG1JO2cEnug0QJI09i1ZIj5+0Xpz87ERtdRxCh/SA5jxueU/HP2lSys3Dj1aZlJ7aUmE9cJ25TANGe4j+fl1HTXsq5bdJLUK+SbhhWK2R/kM0OKdrzVn+ADC576+UeC8cpK83pYkJfZOGzjSeovnm15Dnm9RXpIlaOH6UCn51bS+jaS0DV4NrTPBpEx7ahnIaAKEzz10mlbIYW3W/jof2FcGzv9rwlBJCl64OlRa/LUuT5R2nm9ofcRrVzLtaBjhA/4Hl2oMwS3Q50fH7mmzXvbJGOFB2iJJCtYaSbOkucnSOgXleAI4HwAzPjfR1JJpdYsaOKwF2MIX6LnWsCTNs1SIX9QhI3wnUjI9tCiDCRA+t3RQVR3WKui0JKmY/9bdfovONw17aYZD+IozXACXuvmBr3Y6rMWqomzXuqs1W927esy/cGF76eqME0D48pEArXdY26CA9PCtuTTfo2u5lhfnbUptwjABhC8/aayRJ+0rF95RoD18vye2KK8wzbRf6QIgfPlD5+ATz9lXBsfW6G9dqlEqerzCpM5eiyIJH0D48hfP7wv//FC8JOl02NeeUwvbtgcbkZ6dpVJtLi/zaMwwAU7Du7o3Z1istEkfz5Mk73pDbVurTw2P9O8bUCMuauLxgp/ZX84LXqDWZSSFLVKtq7+bG/lNiqSNGjpBUqnhlRhogPC5jOSPLknSTuu7uJvTw6dOjZ9ZPEaS1GSyn/3ewVJ3SXrcJ/kaV7oL5lr/PypKkroRPoDwuQ6fmDMOH0B2+JapipF/b446UjqgfkvPjI3NNqb5S9IdG5MqXn2/nwy4lLFSnG+vAgifK6lQIbdbmjXLtqlAQ9uC/zVPix9DC9w+vLkBgPABAOEDAMIHAIQPAAgfABA+ACB8AED4AIDwAQDhAwDCBwCEDwAIHwAQPgAgfAAIHwAQPgAgfABA+ACA8AEA4QMAwgcAhA8ACB8AED4AIHwAQPgAgPABAOEDAMIHgPABAOEDAMIHAPmBxTDnf3eofWlZ3h64whWOPoQnLrIxGAJmfACQKy+GIG9ausI0XdHOP4jarnAQrnEULnIQYMYHAIQPAAgfAMIHAIQPAAgfABA+ACB8AED4AIDwAQDhAwDCBwCEDwAIHwAQPgAgfABA+ACA8AEgfABA+ACA8AEA4QMAwgcAhA8ACB8AED4AIHwAQPgAgPABAOEDAMIHAIQPAAgfALPzYghcVPIvC/frvoAnijAUAOEzib3tYiSt0ohvWzMYAJe6prCxaUzVL/5eM77O/jZzGA2A8JnBvpATz+75T9OgfptfNfrFMR4A4TOB9y50HOctSQXGPPTvB4wHQPhMYLlluMW6ZInQGsYDuLV4c8Ml9Tf80xf9vXemcJYAwudC0qaflPSwr3Tg90XHA4ZUTb8hcdLmqJgq9QN6l7aur1stydKpsiQpeUaCpDufznW3b2Usnr1SmpMEED5XsqOnJBXzTR42OlVaO/mndtbtf4THSYqOnv7RuI6SpPBoSYofLUla1UeS1Pze6/gTRiuAYQZuLV7juzl1xkVE3C/FB41MbTvhr5BLfa2b3w+Nqz1lW9LOGYEnOg2QJI19S5aIj1+03tx8bEQtdZxS7Tr+gA2j9X8MM3BrWQxz/neH2peW3fS+3nm3/7yjZSa1l1IiSj8nSStbGYOH+0hS6qhhV2Z1kySjTMLZYg4HsPyv5tex79hmJ/qNz3bSFO38EaztCgfhGkfhIgdh0r/KXOo6zzcKnFdOktfbkqTE3mkDR1pv8XzTa8jzLcpLsgQtXB8qJb+a1reRlLbBq6F1JpiUaU8tAzOt7mt1otVYxhcgfK6o07RCDmuz9tfJ+OzdwPl/TRgqScELV4dKi7/W5YnSzvMNrY947UqmHQ3LFL6Y0PjgXwswvMAtxmt8t0KfHx27p8162SdjhAdpiyQpWGskzZLmJkvrFJTjCci0+k+LQ0GLijG8ADM+V9TUkml1ixo4rAXYwhfoudawJM2zVIhf1CEjfCdSMj20qMPy2ocTWiykewDhcwsHVdVhrYJOS5KK+W/d7bfofNOwl2Y4hK94rntZ9nhim18LM5oAl7puwVc7HdZiVVG2a93Vmq3uXT3mX7iwvXT1a+zk1/aJD8+newDhcxMBWu+wtiH9E8jBWnNpvkfXci0vztuU2uQa+5jWJbnj3IKMJUD43ERjjTxpX7nwjgLt4fs9sUV5hWmm/Uo3N1/1Suk1m/dzAcLnNjoHn3jOvjI4tkZ/61KNUtHjFSZ19loUeY3wjRhgDJ5se/01ficjChA+l+f5feGfH4qXJJ0O+9pzavordcFGpGdnqVSby8s8Gl9tB2Pesowelf5OcadGKQwpcEuZ5V3dQ31y+4Ge0ExrlkmV8rTfYbHSJn08T5K86w21ba0+NTzSv29AjbioiccLfmZ/OS94gVqXkRS2SLWKX22vUdKKFfaVK0lFeaIChC/vKoUuva77heate8kfXZKkndar0c3p4VOnxs8sHiNJajLZz37vYKm7JD3uk3yNl/hkzHdc4XkKEL4b8eSy68mH5am87dUn5ozDdajDt0xVjPx7c9SR0gH1W3pmbGy2Mc1fku7YmFTxqrsd+Wqmc8SHmAHCd0Mqt76er2FpXSmPu61QIbdbmjXLtqlAQ9uC/zX2evfdPDOB28g8b248Zbn1Ez4AhM/Fp3zXMeGrzDMCIHzmmvIx4QMIn+mmfEz4AMJntikfEz6A8JluyseEDyB8ZpvyMeEDCJ/ppnxM+ADCZ7YpHxM+gPCZbsrHhA8gfGab8jHhAwif6aZ8TPgAwme2KR8TPoDwmW7Kx4QPIHxmm/Ix4QMIX36e8rXKaWsrJnwA4cvHeuYw5bP05JkAED6TTfmY8AGEz2xTPiZ8AOEz3ZSPCR9A+Mw25WPCBxA+0035mPABhM9sUz4mfADhM92UjwkfQPjMNuVjwgcQPtNN+ZjwAYTPbFM+JnwA4TPdlI8JH0D4zDblY8IHED7TTfmY8AGEz2xTPiZ8AOEz05QvRJJCmPABhM9EelkkSy+eAQDhM9mUjwkfQPjMNuVjwgeYk8Uw73/7+3o77w9a4QpHHsITF9kYDMH18zLxfzvzPYAZHwCYgwdDAIDwAQDhAwDCBwCEDwAIHwAQPgAgfABA+ACA8AEA4QMAwgcAhA8ACB8AED4AIHwACB8AED4AIHwAQPgAgPABAOEDAMIHAIQPAAgfABA+ACB8AED4AIDwAQDhAwDCB4DwAQDhAwDCBwCEDwAIHwAQPgAgfABA+ACA8AEA4QMAwgcAhA8ACB8AED4AIHwACB8AED4AIHwAQPgAgPABAOEDAMIHAIQPAAgfABA+ACB8AED4AIDwAQDhAwDCB4DwAQDhAwDCBwCEDwAIHwAQPgAgfADgEv4fNS7SXkUzLQcAAAAASUVORK5CYII="}}]); \ No newline at end of file diff --git a/assets/js/7f6a1755.f9c91d8f.js b/assets/js/7f6a1755.f9c91d8f.js deleted file mode 100644 index b47ff1f6c..000000000 --- a/assets/js/7f6a1755.f9c91d8f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkuc_2_docs=self.webpackChunkuc_2_docs||[]).push([[822],{3905:(e,t,a)=>{a.d(t,{Zo:()=>o,kt:()=>g});var n=a(67294);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var p=n.createContext({}),l=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},o=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},A=n.forwardRef((function(e,t){var a=e.components,s=e.mdxType,i=e.originalType,p=e.parentName,o=m(e,["components","mdxType","originalType","parentName"]),A=l(a),g=s,h=A["".concat(p,".").concat(g)]||A[g]||c[g]||i;return a?n.createElement(h,r(r({ref:t},o),{},{components:a})):n.createElement(h,r({ref:t},o))}));function g(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=a.length,r=new Array(i);r[0]=A;var m={};for(var p in t)hasOwnProperty.call(t,p)&&(m[p]=t[p]);m.originalType=e,m.mdxType="string"==typeof e?e:s,r[1]=m;for(var l=2;l{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>m,toc:()=>l});var n=a(87462),s=(a(67294),a(3905));const i={},r="Stage Mapping and Stage Calibration",m={unversionedId:"Investigator/XYZMicroscope/StageCalibration",id:"Investigator/XYZMicroscope/StageCalibration",title:"Stage Mapping and Stage Calibration",description:"Stage Coordinates",source:"@site/docs/02_Investigator/02_XYZMicroscope/StageCalibration.md",sourceDirName:"02_Investigator/02_XYZMicroscope",slug:"/Investigator/XYZMicroscope/StageCalibration",permalink:"/docs/Investigator/XYZMicroscope/StageCalibration",draft:!1,tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"openUC2 Setting up the tube lens",permalink:"/docs/Investigator/XYZMicroscope/SetupTubelens"},next:{title:"Stage Scanning and Image Stitching (ASHLAR)",permalink:"/docs/Investigator/XYZMicroscope/StageScanning"}},p={},l=[{value:"Stage Coordinates",id:"stage-coordinates",level:2},{value:"Alignment of Axes",id:"alignment-of-axes",level:3},{value:"Understanding Axes in NumPy",id:"understanding-axes-in-numpy",level:3},{value:"Stage Coordinate System",id:"stage-coordinate-system",level:3},{value:"Aligning Axes with Imswitch",id:"aligning-axes-with-imswitch",level:3},{value:"Steps for Aligning Axes:",id:"steps-for-aligning-axes",level:4},{value:"Stage Calibration",id:"stage-calibration",level:2},{value:"Interpreation of the Matrix",id:"interpreation-of-the-matrix",level:2},{value:"Calibration Matrix image_to_stage_displacement",id:"calibration-matrix-image_to_stage_displacement",level:3},{value:"Entries and Their Names",id:"entries-and-their-names",level:4},{value:"Summary of the Matrix Entries",id:"summary-of-the-matrix-entries",level:3},{value:"Interpretation of the Values",id:"interpretation-of-the-values",level:2},{value:"1. image_to_stage_displacement Matrix",id:"1-image_to_stage_displacement-matrix",level:3},{value:"2. backlash_vector Matrix",id:"2-backlash_vector-matrix",level:3}],o={toc:l};function c(e){let{components:t,...i}=e;return(0,s.kt)("wrapper",(0,n.Z)({},o,i,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"stage-mapping-and-stage-calibration"},"Stage Mapping and Stage Calibration"),(0,s.kt)("h2",{id:"stage-coordinates"},"Stage Coordinates"),(0,s.kt)("p",null,"In this tutorial, we will guide you through the process of aligning the coordinate systems for the UC2 microscope stage. Proper alignment ensures that the movement of the stage corresponds accurately with the image displayed on the screen, facilitating an intuitive user experience. In principle all of this can be handled in software (e.g. flipping the camera image, changing stage axis), but it's always good to start with a common ground from the hardware side."),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(14006).Z,width:"1792",height:"948"}),"\n",(0,s.kt)("em",{parentName:"p"},"This is the microscope (UC2 XYZ v3) with the ingredients controlled by ImSwitch")),(0,s.kt)("h3",{id:"alignment-of-axes"},"Alignment of Axes"),(0,s.kt)("p",null,"The goal of aligning the coordinate systems is to ensure they are correctly matched. The alignment of the stage is considered from the origin point (zero point). The desired behavior is as follows:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"When the stage moves to the right (x+), the image on the screen should also move to the right."),(0,s.kt)("li",{parentName:"ul"},"When the stage moves upwards (y+), the image on the screen should move upwards as well.")),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(95223).Z,width:"3217",height:"751"})),(0,s.kt)("p",null,"This is illustrated in the following Figure. When viewing the sample from above with the microscope positioned in front, the image should match what is shown in Imswitch.\nThis is also represented by the ",(0,s.kt)("inlineCode",{parentName:"p"},"VirtualMicroscope")," with the ",(0,s.kt)("inlineCode",{parentName:"p"},"VirtualStage")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"VirtualCamera")," in this config (Config: ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json"},"https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json"),")."),(0,s.kt)("h3",{id:"understanding-axes-in-numpy"},"Understanding Axes in NumPy"),(0,s.kt)("p",null,"It's important to note the labeling of axes. In NumPy, x = 1 and y = 0. This means:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"The x-axis is the second axis (index 1) of an array."),(0,s.kt)("li",{parentName:"ul"},"The y-axis is the first axis (index 0) of an array.")),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(55828).Z,width:"1272",height:"652"})),(0,s.kt)("p",null,"NumPy arrays are multidimensional, with axes numbered as follows:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Axis 0 is the first axis (often the vertical direction)."),(0,s.kt)("li",{parentName:"ul"},"Axis 1 is the second axis (often the horizontal direction).")),(0,s.kt)("h3",{id:"stage-coordinate-system"},"Stage Coordinate System"),(0,s.kt)("p",null,"When viewing the stage from above, the coordinate system is arranged as follows:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"X-Axis (Horizontal)"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Positive direction: Right"),(0,s.kt)("li",{parentName:"ul"},"Negative direction: Left"))),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Y-Axis (Vertical)"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Positive direction: Up"),(0,s.kt)("li",{parentName:"ul"},"Negative direction: Down")))),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(6161).Z,width:"857",height:"646"})),(0,s.kt)("h3",{id:"aligning-axes-with-imswitch"},"Aligning Axes with Imswitch"),(0,s.kt)("p",null,'To enable intuitive operation, the stage and camera axes must be correctly aligned with the coordinate system in Imswitch. To achieve this, the commands "flip x" and "flip y" are used. These commands invert the direction of the axes in the coordinate system, meaning that movement or position along the axes is reversed.'),(0,s.kt)("h4",{id:"steps-for-aligning-axes"},"Steps for Aligning Axes:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Initial Setup:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Ensure the microscope and stage are properly connected to the control software (e.g., Imswitch)."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Define Origin:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Identify the origin (zero point) of the stage coordinate system. (in Hardware this would be defined by the Endstops that are used for homing the axes; The motor will run - if the direction is set correctly - until it hits the switch)"))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Test Movement:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Move the stage to the right and observe the direction of the image on the screen.",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},'If the image moves left, apply the "flip x" command.'))),(0,s.kt)("li",{parentName:"ul"},"Move the stage upwards and observe the direction of the image on the screen.",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},'If the image moves down, apply the "flip y" command.'))))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Adjust Axes:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"Use the following commands as needed to align the axes:"),(0,s.kt)("pre",{parentName:"li"},(0,s.kt)("code",{parentName:"pre",className:"language-python"},"# Flip the x-axis if necessary\nif x_movement_incorrect:\n stage.flip_x()\n\n# Flip the y-axis if necessary\nif y_movement_incorrect:\n stage.flip_y()\n"))))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Verify Alignment:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"After applying the flips, verify that the stage movements correspond correctly with the image movements on the screen."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Save Configuration:")),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"Save the configuration settings to ensure the alignment persists across sessions.")))),(0,s.kt)("h2",{id:"stage-calibration"},"Stage Calibration"),(0,s.kt)("p",null,"Richard Bowman and his team provided a very nice way to calibrate stage coordinates to camera pixel coordinates. We burtally integrated the open-source software which you can find here: ",(0,s.kt)("a",{parentName:"p",href:"https://gitlab.com/openflexure/microscope-extensions/camera-stage-mapping"},"https://gitlab.com/openflexure/microscope-extensions/camera-stage-mapping")," into ImSwitch. If you activate the ",(0,s.kt)("inlineCode",{parentName:"p"},"HistoScan")," Controller and Widget you can start it either by the GUI or using the HTTP interface by calling http://localhost:8002/HistoScanController/startStageMapping (URL and PORT may differ). What the stage will do is moving a certain series of steps in XY, performs a cross-correlation of the images and computes the shift in XY of the mciroscope image on the camera, compares it to the expected shift on and returns the Image-To-Stage-Displacement Matrix as well as the Backlashvector. Both matrices/vectors are microscope specificand will help you matching e.g. stage coordinates for stitching software such as ASHLAR or OFM Stitching. This document should give you a rough idea of what's happening."),(0,s.kt)("p",null,"Some terminology:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"Combine X and Y calibrations"),": The calibration involves combining two separate measurements or calibration runs for the x and y directions, ensuring that the directions are orthogonal (at right angles to each other).")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"2x2 transformation matrix"),": The ",(0,s.kt)("inlineCode",{parentName:"p"},"image_to_stage_displacement")," matrix maps image displacements to stage displacements. This ensures that movements in the image coordinate system are accurately translated to movements in the stage coordinate system.")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"backlash_vector"),": This is a vector estimating the backlash (mechanical slack or play in the system) in each direction. In this case, the estimated backlash is zero, indicating a precise calibration with no noticeable mechanical play.")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"backlash"),": The function is expected to return the highest element of ",(0,s.kt)("inlineCode",{parentName:"p"},"backlash_vector")," as a scalar value, which would be zero in this case."))),(0,s.kt)("h2",{id:"interpreation-of-the-matrix"},"Interpreation of the Matrix"),(0,s.kt)("h3",{id:"calibration-matrix-image_to_stage_displacement"},"Calibration Matrix ",(0,s.kt)("inlineCode",{parentName:"h3"},"image_to_stage_displacement")),(0,s.kt)("p",null,"The entries of the calibration matrix ",(0,s.kt)("inlineCode",{parentName:"p"},"image_to_stage_displacement")," can be given specific names and meanings based on their positions within the matrix. Let's denote the matrix as follows:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mtext",{parentName:"mrow"},"image_to_stage_displacement"),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"("),(0,s.kt)("mtable",{parentName:"mrow",rowspacing:"0.16em",columnalign:"center center",columnspacing:"1em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mn",{parentName:"mstyle"},"0"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mo",{parentName:"mrow"},"\u2212"),(0,s.kt)("mn",{parentName:"mrow"},"1.0"))))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mo",{parentName:"mrow"},"\u2212"),(0,s.kt)("mn",{parentName:"mrow"},"1.0")))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mn",{parentName:"mstyle"},"0"))))),(0,s.kt)("mo",{parentName:"mrow",fence:"true"},")"))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\text{image\\_to\\_stage\\_displacement} = \\begin{pmatrix} 0 & -1.0 \\\\ -1.0 & 0 \\end{pmatrix}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1.0044em",verticalAlign:"-0.31em"}}),(0,s.kt)("span",{parentName:"span",className:"mord text"},(0,s.kt)("span",{parentName:"span",className:"mord"},"image_to_stage_displacement")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"2.4em",verticalAlign:"-0.95em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size3"},"(")),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-c"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.45em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.61em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"0"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"\u2212"),(0,s.kt)("span",{parentName:"span",className:"mord"},"1.0")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.95em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"col-align-c"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.45em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.61em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"\u2212"),(0,s.kt)("span",{parentName:"span",className:"mord"},"1.0"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"0")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.95em"}},(0,s.kt)("span",{parentName:"span"}))))))),(0,s.kt)("span",{parentName:"span",className:"mclose delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size3"},")")))))))),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"("),(0,s.kt)("mtable",{parentName:"mrow",rowspacing:"0.16em",columnalign:"center center",columnspacing:"1em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mi",{parentName:"mstyle"},"a"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mi",{parentName:"mstyle"},"b")))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mi",{parentName:"mstyle"},"c"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mi",{parentName:"mstyle"},"d"))))),(0,s.kt)("mo",{parentName:"mrow",fence:"true"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\begin{pmatrix} a & b \\\\ c & d \\end{pmatrix}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"2.4em",verticalAlign:"-0.95em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size3"},"(")),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-c"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.45em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.61em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"a"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"c")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.95em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"col-align-c"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.45em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.61em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"b"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"d")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.95em"}},(0,s.kt)("span",{parentName:"span"}))))))),(0,s.kt)("span",{parentName:"span",className:"mclose delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size3"},")")))))))),(0,s.kt)("h4",{id:"entries-and-their-names"},"Entries and Their Names"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"a (0)"),":"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Name:")," ",(0,s.kt)("inlineCode",{parentName:"li"},"a")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Meaning:")," Represents the scaling factor from the x-coordinate in the image to the x-coordinate in the stage. Here, it is 0, indicating no direct mapping from image x to stage x."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"b (-1.0)"),":"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Name:")," ",(0,s.kt)("inlineCode",{parentName:"li"},"b")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Meaning:")," Represents the scaling factor from the y-coordinate in the image to the x-coordinate in the stage. The value -1.0 indicates an inverse and slightly scaled mapping from image y to stage x."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"c (-1.0)"),":"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Name:")," ",(0,s.kt)("inlineCode",{parentName:"li"},"c")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Meaning:")," Represents the scaling factor from the x-coordinate in the image to the y-coordinate in the stage. The value -1.0 indicates an inverse and slightly scaled mapping from image x to stage y."))),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},(0,s.kt)("strong",{parentName:"p"},"d (0)"),":"),(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Name:")," ",(0,s.kt)("inlineCode",{parentName:"li"},"d")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"Meaning:")," Represents the scaling factor from the y-coordinate in the image to the y-coordinate in the stage. Here, it is 0, indicating no direct mapping from image y to stage y.")))),(0,s.kt)("h3",{id:"summary-of-the-matrix-entries"},"Summary of the Matrix Entries"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"a (0)"),": No direct mapping from image x to stage x."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"b (-1.0)"),": Inverse mapping from image y to stage x."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"c (-1.0)"),": Inverse mapping from image x to stage y."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"d (0)"),": No direct mapping from image y to stage y.")),(0,s.kt)("p",null,"This calibration matrix indicates that there is a transformation involving a 90-degree rotation combined with an inverse scaling factor slightly above 1 between the image coordinates and the stage coordinates. The exact interpretation may depend on the specific application, but generally, it implies that movements in one direction in the image are mapped to movements in the perpendicular direction on the stage with a slight scaling adjustment."),(0,s.kt)("h2",{id:"interpretation-of-the-values"},"Interpretation of the Values"),(0,s.kt)("p",null,"The following simulation of the ",(0,s.kt)("inlineCode",{parentName:"p"},"VirtualMicroscope")," inside ImSwitch (Config: ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json"},"https://github.com/openUC2/ImSwitchConfig/blob/master/imcontrol_setups/example_virtualmicroscope.json"),"):"),(0,s.kt)("p",null,(0,s.kt)("img",{src:a(15346).Z,width:"480",height:"311"})),(0,s.kt)("p",null,"The result of the stage mapping is a json file containing (under ",(0,s.kt)("inlineCode",{parentName:"p"},"/ImSwitch/calibFile.json"),") the following important element:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},' "camera_stage_mapping_calibration": {\n "backlash": 0.0,\n "backlash_vector": [\n 0.0,\n 0.0,\n 0.0\n ],\n "image_to_stage_displacement": [\n [\n 0.0,\n -1.0\n ],\n [\n -1.0,\n 0.0\n ]\n ]\n }\n')),(0,s.kt)("p",null,"The provided matrices explains transforming image coordinates to stage coordinates and estimating backlash. Let's break down the interpretation of the entries:"),(0,s.kt)("h3",{id:"1-image_to_stage_displacement-matrix"},"1. ",(0,s.kt)("inlineCode",{parentName:"h3"},"image_to_stage_displacement")," Matrix"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-python"},'mData["camera_stage_mapping_calibration"]["image_to_stage_displacement"] =\narray([[ 0. , -1.00135997],\n [-1.00135997, 0. ]])\n')),(0,s.kt)("p",null,"This matrix is a 2x2 transformation matrix used to map image coordinates to stage coordinates. Each entry in this matrix has a specific meaning:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"[","0,0","]"," = 0"),": There is no direct transformation of the x-coordinate in the image to the x-coordinate in the stage."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"[","0,1","]"," = -1.00135997"),": The y-coordinate in the image inversely affects the x-coordinate in the stage."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"[","1,0","]"," = -1.00135997"),": The x-coordinate in the image inversely affects the y-coordinate in the stage."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("strong",{parentName:"li"},"[","1,1","]"," = 0"),": There is no direct transformation of the y-coordinate in the image to the y-coordinate in the stage.")),(0,s.kt)("p",null,"The presence of -1.00135997 off-diagonal elements indicates that the transformation involves a negative and approximately unit scaling between the coordinates, implying a possible 90-degree rotation combined with a scaling factor close to -1."),(0,s.kt)("h3",{id:"2-backlash_vector-matrix"},"2. ",(0,s.kt)("inlineCode",{parentName:"h3"},"backlash_vector")," Matrix"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-python"},'mData["camera_stage_mapping_calibration"]["backlash_vector"] =\narray([ 0., 0., 0.])\n')),(0,s.kt)("p",null,"This vector represents the estimated backlash in each direction (x, y, and possibly z, though z is not utilized in a 2D context). Here, all elements are zero, indicating no measurable backlash in the x and y directions."))}c.isMDXComponent=!0},15346:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/StageMapping1-c4576ec64061a4416996e558150edf24.gif"},95223:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/StageMapping2-d11998287b8c6da911a5e7300276200f.png"},6161:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/StageMappingSampleView-0688332923e7a42a80b02895e1013c90.png"},14006:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/StageOverview-4d690420657841eae78311f94bd0ece2.png"},55828:(e,t,a)=>{a.d(t,{Z:()=>n});const n="data:image/png;base64,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"}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.4d4bf693.js b/assets/js/935f2afb.4d4bf693.js new file mode 100644 index 000000000..2b13f98f0 --- /dev/null +++ b/assets/js/935f2afb.4d4bf693.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkuc_2_docs=self.webpackChunkuc_2_docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Educational Kits","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"DiscoveryCore","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Optics and Imaging for Medical Photonics Students","href":"/docs/Toolboxes/DiscoveryCore/Opticsintro","docId":"Toolboxes/DiscoveryCore/Opticsintro"},{"type":"link","label":"openUC2 Smartphone Microscope with a finite corrected objective lens","href":"/docs/Toolboxes/DiscoveryCore/Smartphone Microscope","docId":"Toolboxes/DiscoveryCore/Smartphone Microscope"},{"type":"category","label":"CHINESE","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"uc2miniboxCN","href":"/docs/Toolboxes/DiscoveryCore/CHINESE/uc2miniboxCN","docId":"Toolboxes/DiscoveryCore/CHINESE/uc2miniboxCN"}]},{"type":"category","label":"ENGLISH","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"UC2 miniBOX (english)","href":"/docs/Toolboxes/DiscoveryCore/ENGLISH/uc2miniboxEN","docId":"Toolboxes/DiscoveryCore/ENGLISH/uc2miniboxEN"},{"type":"link","label":"Lens","href":"/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreLens","docId":"Toolboxes/DiscoveryCore/ENGLISH/CoreLens"},{"type":"link","label":"Telescope","href":"/docs/Toolboxes/DiscoveryCore/ENGLISH/CoreTelescope","docId":"Toolboxes/DiscoveryCore/ENGLISH/CoreTelescope"},{"type":"link","label":"Microscope","href":"/docs/Toolboxes/DiscoveryCore/ENGLISH/coreMicroscope","docId":"Toolboxes/DiscoveryCore/ENGLISH/coreMicroscope"}]},{"type":"category","label":"FRENCH","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"UC2 miniBOX (fran\xe7ais)","href":"/docs/Toolboxes/DiscoveryCore/FRENCH/uc2miniboxFR","docId":"Toolboxes/DiscoveryCore/FRENCH/uc2miniboxFR"},{"type":"link","label":"Lentille","href":"/docs/Toolboxes/DiscoveryCore/FRENCH/CoreLensFR","docId":"Toolboxes/DiscoveryCore/FRENCH/CoreLensFR"},{"type":"link","label":"T\xe9lescope","href":"/docs/Toolboxes/DiscoveryCore/FRENCH/CoreTelescopeFR","docId":"Toolboxes/DiscoveryCore/FRENCH/CoreTelescopeFR"},{"type":"link","label":"Microscope","href":"/docs/Toolboxes/DiscoveryCore/FRENCH/coreMicroscopeFR","docId":"Toolboxes/DiscoveryCore/FRENCH/coreMicroscopeFR"}]},{"type":"category","label":"GERMAN","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"UC2 miniBOX (deutsch)","href":"/docs/Toolboxes/DiscoveryCore/GERMAN/uc2miniboxDE","docId":"Toolboxes/DiscoveryCore/GERMAN/uc2miniboxDE"},{"type":"link","label":"Linse","href":"/docs/Toolboxes/DiscoveryCore/GERMAN/CoreLens","docId":"Toolboxes/DiscoveryCore/GERMAN/CoreLens"},{"type":"link","label":"Teleskop","href":"/docs/Toolboxes/DiscoveryCore/GERMAN/CoreTelescope","docId":"Toolboxes/DiscoveryCore/GERMAN/CoreTelescope"},{"type":"link","label":"Mikroskop","href":"/docs/Toolboxes/DiscoveryCore/GERMAN/coreMicroscope","docId":"Toolboxes/DiscoveryCore/GERMAN/coreMicroscope"}]},{"type":"category","label":"SPANISH","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"core_intro","href":"/docs/Toolboxes/DiscoveryCore/SPANISH/core_intro","docId":"Toolboxes/DiscoveryCore/SPANISH/core_intro"}]}]},{"type":"category","label":"DiscoveryElectronics","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"openUC2 Electronics kit that enables automation","href":"/docs/Toolboxes/DiscoveryElectronics/Automation_intro","docId":"Toolboxes/DiscoveryElectronics/Automation_intro"},{"type":"link","label":"openUC2 Camera Setup","href":"/docs/Toolboxes/DiscoveryElectronics/Camera Setup","docId":"Toolboxes/DiscoveryElectronics/Camera Setup"},{"type":"link","label":"XYZ Micrometer Stage for Precise Motion Control","href":"/docs/Toolboxes/DiscoveryElectronics/XYZ_stage_mico","docId":"Toolboxes/DiscoveryElectronics/XYZ_stage_mico"},{"type":"link","label":"ESP32 XIAO Sense-based microscope","href":"/docs/Toolboxes/DiscoveryElectronics/seeedmicroscope","docId":"Toolboxes/DiscoveryElectronics/seeedmicroscope"},{"type":"link","label":"openUC2 *Spectrometer*","href":"/docs/Toolboxes/DiscoveryElectronics/spectrometer","docId":"Toolboxes/DiscoveryElectronics/spectrometer"}]},{"type":"category","label":"DiscoveryInterferometer","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"openUC2 Interferometer Introduction","href":"/docs/Toolboxes/DiscoveryInterferometer/Interferometer_intro","docId":"Toolboxes/DiscoveryInterferometer/Interferometer_intro"},{"type":"link","label":"openUC2 In-line holography","href":"/docs/Toolboxes/DiscoveryInterferometer/InlineHolography","docId":"Toolboxes/DiscoveryInterferometer/InlineHolography"},{"type":"link","label":"openUC2 Michelson Interferometer","href":"/docs/Toolboxes/DiscoveryInterferometer/MichelsonInterferometer","docId":"Toolboxes/DiscoveryInterferometer/MichelsonInterferometer"},{"type":"link","label":"openUC2 Mach-Zender Interferometer","href":"/docs/Toolboxes/DiscoveryInterferometer/MachZenderInterferometer","docId":"Toolboxes/DiscoveryInterferometer/MachZenderInterferometer"},{"type":"link","label":"HIK-Camera Software Installation","href":"/docs/Toolboxes/DiscoveryInterferometer/SoftwareTutorial","docId":"Toolboxes/DiscoveryInterferometer/SoftwareTutorial"}]},{"type":"category","label":"Building The CourseBOX","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"The Course BOX Alignment Procedure (Finite Optics)","href":"/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_FinOptics/","docId":"Toolboxes/DiscoveryDiffraction/ALIGNMENT_FinOptics/Readme"},{"type":"link","label":"CourseBOX: Light Microscopy and Optical Alignment (Infinity Optics)","href":"/docs/Toolboxes/DiscoveryDiffraction/ALIGNMENT_InfOptics/","docId":"Toolboxes/DiscoveryDiffraction/ALIGNMENT_InfOptics/Readme"},{"type":"link","label":"MicroscopyCore","href":"/docs/Toolboxes/DiscoveryDiffraction/MicroscopyCore","docId":"Toolboxes/DiscoveryDiffraction/MicroscopyCore"}],"href":"/docs/Toolboxes/DiscoveryDiffraction/"},{"type":"category","label":"Polarisation Experiments","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Brewster Angle Experiment","href":"/docs/Toolboxes/DiscoveryPolarization/APP_POL_Brewster_Angle_Experiment/","docId":"Toolboxes/DiscoveryPolarization/APP_POL_Brewster_Angle_Experiment/Readme"},{"type":"link","label":"Circular Polarizer","href":"/docs/Toolboxes/DiscoveryPolarization/APP_POL_Circular_Polarizer/","docId":"Toolboxes/DiscoveryPolarization/APP_POL_Circular_Polarizer/Readme"},{"type":"link","label":"Crossed Polarizers","href":"/docs/Toolboxes/DiscoveryPolarization/APP_POL_Crossed_Polarizers/","docId":"Toolboxes/DiscoveryPolarization/APP_POL_Crossed_Polarizers/Readme"},{"type":"link","label":"Many Microscope Slides Experiment","href":"/docs/Toolboxes/DiscoveryPolarization/APP_POL_Many_Microscope_Slides_Experiment/","docId":"Toolboxes/DiscoveryPolarization/APP_POL_Many_Microscope_Slides_Experiment/Readme"},{"type":"link","label":"Newton\'s Rings Experiment","href":"/docs/Toolboxes/DiscoveryPolarization/APP_POL_Newtons_Rings_Experiment/","docId":"Toolboxes/DiscoveryPolarization/APP_POL_Newtons_Rings_Experiment/Readme"},{"type":"link","label":"Polarization Experiment using Optically Active Solution","href":"/docs/Toolboxes/DiscoveryPolarization/APP_POL_Polarization_using_optically_active_solution/","docId":"Toolboxes/DiscoveryPolarization/APP_POL_Polarization_using_optically_active_solution/Readme"},{"type":"link","label":"Stress Birefringence Experiment","href":"/docs/Toolboxes/DiscoveryPolarization/APP_POL_Stress_Birefringence/","docId":"Toolboxes/DiscoveryPolarization/APP_POL_Stress_Birefringence/Readme"},{"type":"link","label":"Three Polarizers (0, 45, 90 degrees)","href":"/docs/Toolboxes/DiscoveryPolarization/APP_POL_Three_Polarizers/","docId":"Toolboxes/DiscoveryPolarization/APP_POL_Three_Polarizers/Readme"}],"href":"/docs/Toolboxes/DiscoveryPolarization/"},{"type":"link","label":"Fluorescence Extension","href":"/docs/Toolboxes/DiscoveryFluorescence/","docId":"Toolboxes/DiscoveryFluorescence/README"},{"type":"category","label":"Phase Microscopy","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Differential Phase Contrast Microscopy","href":"/docs/Toolboxes/DiscoveryPhaseMicroscopy/DPCmicroscopy","docId":"Toolboxes/DiscoveryPhaseMicroscopy/DPCmicroscopy"}],"href":"/docs/Toolboxes/DiscoveryPhaseMicroscopy/"}],"href":"/docs/Toolboxes/"},{"type":"category","label":"Investigator","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"ZMicroscope","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Unpack the openUC2 Z-Microscope","href":"/docs/Investigator/ZMicroscope/UpackZMicroscope","docId":"Investigator/ZMicroscope/UpackZMicroscope"}]},{"type":"category","label":"XYZMicroscope","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Aligning the Beamsplitter Cube","href":"/docs/Investigator/XYZMicroscope/AlignLaser","docId":"Investigator/XYZMicroscope/AlignLaser"},{"type":"link","label":"openUC2 FiveD v1","href":"/docs/Investigator/XYZMicroscope/FiveD_v1","docId":"Investigator/XYZMicroscope/FiveD_v1"},{"type":"link","label":"openUC2 FiveD v2","href":"/docs/Investigator/XYZMicroscope/FiveD_v2","docId":"Investigator/XYZMicroscope/FiveD_v2"},{"type":"link","label":"openUC2 FiveD v3","href":"/docs/Investigator/XYZMicroscope/FiveD_v3","docId":"Investigator/XYZMicroscope/FiveD_v3"},{"type":"link","label":"Histo Scanner Plugin Documentation","href":"/docs/Investigator/XYZMicroscope/HistoScan","docId":"Investigator/XYZMicroscope/HistoScan"},{"type":"link","label":"MCT (Multi-Colour Timelapse) Imaging Plugin","href":"/docs/Investigator/XYZMicroscope/MCTPlugin","docId":"Investigator/XYZMicroscope/MCTPlugin"},{"type":"link","label":"ROI Scanner","href":"/docs/Investigator/XYZMicroscope/ROIScanner","docId":"Investigator/XYZMicroscope/ROIScanner"},{"type":"link","label":"openUC2 Phase-Contrast Setup Tutorial","href":"/docs/Investigator/XYZMicroscope/SetupPhasecontrast","docId":"Investigator/XYZMicroscope/SetupPhasecontrast"},{"type":"link","label":"openUC2 Setting up the tube lens","href":"/docs/Investigator/XYZMicroscope/SetupTubelens","docId":"Investigator/XYZMicroscope/SetupTubelens"},{"type":"link","label":"Smart Microscopy Using openUC2 and ImSwitch","href":"/docs/Investigator/XYZMicroscope/SmartMicroscopy","docId":"Investigator/XYZMicroscope/SmartMicroscopy"},{"type":"link","label":"Stage Mapping and Stage Calibration","href":"/docs/Investigator/XYZMicroscope/StageCalibration","docId":"Investigator/XYZMicroscope/StageCalibration"},{"type":"link","label":"Stage Scanning and Image Stitching (ASHLAR)","href":"/docs/Investigator/XYZMicroscope/StageScanning","docId":"Investigator/XYZMicroscope/StageScanning"}]},{"type":"category","label":"Lightsheet","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"openUC2 Light-Sheet Microscope","href":"/docs/Investigator/Lightsheet/LightSheet","docId":"Investigator/Lightsheet/LightSheet"},{"type":"link","label":"openUC2 Light-Sheet Microscope (Old Version)","href":"/docs/Investigator/Lightsheet/LightSheetOld","docId":"Investigator/Lightsheet/LightSheetOld"},{"type":"link","label":"openUC2 Light-Sheet Tips and Tricks","href":"/docs/Investigator/Lightsheet/LightSheet Sample","docId":"Investigator/Lightsheet/LightSheet Sample"},{"type":"link","label":"Light-sheet alignment","href":"/docs/Investigator/Lightsheet/LightsheetCalibration","docId":"Investigator/Lightsheet/LightsheetCalibration"}]},{"type":"category","label":"STORM","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"U.C.*STORM*","href":"/docs/Investigator/STORM/Main","docId":"Investigator/STORM/Main"},{"type":"link","label":"Setting up the laser","href":"/docs/Investigator/STORM/Illumination","docId":"Investigator/STORM/Illumination"},{"type":"link","label":"Stability","href":"/docs/Investigator/STORM/Stability","docId":"Investigator/STORM/Stability"},{"type":"link","label":"Software","href":"/docs/Investigator/STORM/Software","docId":"Investigator/STORM/Software"},{"type":"link","label":"Electronics","href":"/docs/Investigator/STORM/Electronics","docId":"Investigator/STORM/Electronics"},{"type":"link","label":"Results","href":"/docs/Investigator/STORM/Results","docId":"Investigator/STORM/Results"}]},{"type":"link","label":"README","href":"/docs/Investigator/FlowStopper/","docId":"Investigator/FlowStopper/README"}]},{"type":"category","label":"Electronics","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/docs/Electronics/uc2e1","docId":"Electronics/uc2e1"},{"type":"link","label":"Hardware","href":"/docs/Electronics/uc2e2","docId":"Electronics/uc2e2"},{"type":"link","label":"Getting Started","href":"/docs/Electronics/uc2e3","docId":"Electronics/uc2e3"},{"type":"link","label":"REST principle","href":"/docs/Electronics/uc2e5","docId":"Electronics/uc2e5"},{"type":"link","label":"REST commands","href":"/docs/Electronics/uc2e5.1","docId":"Electronics/uc2e5.1"},{"type":"link","label":"Connecting devices","href":"/docs/Electronics/uc2e6","docId":"Electronics/uc2e6"},{"type":"link","label":"Controlling the UC2e","href":"/docs/Electronics/uc2e7","docId":"Electronics/uc2e7"},{"type":"link","label":"Compiling from Scratch","href":"/docs/Electronics/uc2e8","docId":"Electronics/uc2e8"},{"type":"link","label":"Replace Hardware","href":"/docs/Electronics/uc2e9","docId":"Electronics/uc2e9"},{"type":"link","label":"PS4-Controller","href":"/docs/Electronics/PS4-Controller","docId":"Electronics/PS4-Controller"},{"type":"link","label":"Python commands","href":"/docs/Electronics/uc2e5.2","docId":"Electronics/uc2e5.2"},{"type":"category","label":"APIDescription","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"UC2-ESP","href":"/docs/Electronics/APIDescription/INTRO","docId":"Electronics/APIDescription/INTRO"},{"type":"link","label":"AS 5311 linear encoder for real-time feedback loop","href":"/docs/Electronics/APIDescription/Encoder","docId":"Electronics/APIDescription/Encoder"},{"type":"link","label":"Home","href":"/docs/Electronics/APIDescription/Home","docId":"Electronics/APIDescription/Home"},{"type":"link","label":"LED array","href":"/docs/Electronics/APIDescription/LEDArray","docId":"Electronics/APIDescription/LEDArray"},{"type":"link","label":"Motor","href":"/docs/Electronics/APIDescription/Motor","docId":"Electronics/APIDescription/Motor"},{"type":"link","label":"PinConfig","href":"/docs/Electronics/APIDescription/PinConfig","docId":"Electronics/APIDescription/PinConfig"}]},{"type":"category","label":"UC2-ESP","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"UC2-ESP Firmware for the openUC2 UC2e electronics","href":"/docs/Electronics/UC2-ESP/Setup_Buildenvironment","docId":"Electronics/UC2-ESP/Setup_Buildenvironment"}]},{"type":"category","label":"UC2-REST","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"UC2-REST","href":"/docs/Electronics/UC2-REST/INTRO","docId":"Electronics/UC2-REST/INTRO"},{"type":"link","label":"UC2-REST: Messaging","href":"/docs/Electronics/UC2-REST/ESP32_Messaging_Callback","docId":"Electronics/UC2-REST/ESP32_Messaging_Callback"},{"type":"link","label":"UC2-REST: Motor","href":"/docs/Electronics/UC2-REST/ESP32_Motor","docId":"Electronics/UC2-REST/ESP32_Motor"}]}]},{"type":"category","label":"ImSwitch","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Install driver for Daheng Camera","href":"/docs/ImSwitch/DahengCamera","docId":"ImSwitch/DahengCamera"},{"type":"link","label":"ImSwitchClient Documentation","href":"/docs/ImSwitch/ImSwitchClient","docId":"ImSwitch/ImSwitchClient"},{"type":"link","label":"ImSwitchConfig","href":"/docs/ImSwitch/ImSwitchConfig","docId":"ImSwitch/ImSwitchConfig"},{"type":"link","label":"ImSwitch Experimental Features Documentation","href":"/docs/ImSwitch/ImSwitchExperimental","docId":"ImSwitch/ImSwitchExperimental"},{"type":"link","label":"Install ImSwitch","href":"/docs/ImSwitch/ImSwitchInstall","docId":"ImSwitch/ImSwitchInstall"},{"type":"link","label":"ImSwitchInstallUbuntu","href":"/docs/ImSwitch/ImSwitchInstallUbuntu","docId":"ImSwitch/ImSwitchInstallUbuntu"},{"type":"link","label":"ImSwitchInstallWindows","href":"/docs/ImSwitch/ImSwitchInstallWindows","docId":"ImSwitch/ImSwitchInstallWindows"},{"type":"link","label":"Install ImSwitch using the ImSwitch Installer (Electron updated Version)","href":"/docs/ImSwitch/ImSwitchInstaller","docId":"ImSwitch/ImSwitchInstaller"},{"type":"link","label":"Install ImSwitch using the ImSwitch Installer (CONDA INSTALLER OUTDATED)","href":"/docs/ImSwitch/ImSwitchInstallerConda","docId":"ImSwitch/ImSwitchInstallerConda"},{"type":"link","label":"ImSwitchUpdate","href":"/docs/ImSwitch/ImSwitchUpdate","docId":"ImSwitch/ImSwitchUpdate"}]},{"type":"category","label":"openUC2 Workshops","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"openUC2 Workshop at BioRTC in Nigeria","href":"/docs/WORKSHOPS/Workshop Nigeria","docId":"WORKSHOPS/Workshop Nigeria"}],"href":"/docs/WORKSHOPS/"},{"type":"category","label":"PRODUCTION","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"INVESTIGATOR","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Assemble the XYZ Microscope","href":"/docs/PRODUCTION/INVESTIGATOR/ProductionXYZMicroscope","docId":"PRODUCTION/INVESTIGATOR/ProductionXYZMicroscope"}]},{"type":"category","label":"Modules","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"USB Camera","href":"/docs/PRODUCTION/Modules/Camera","docId":"PRODUCTION/Modules/Camera"},{"type":"link","label":"Eyepiece","href":"/docs/PRODUCTION/Modules/Eyepiece","docId":"PRODUCTION/Modules/Eyepiece"},{"type":"link","label":"LENS","href":"/docs/PRODUCTION/Modules/LENS","docId":"PRODUCTION/Modules/LENS"},{"type":"link","label":"KINEMATIC MIRROR (45\xb0)","href":"/docs/PRODUCTION/Modules/KIN_MIR_45","docId":"PRODUCTION/Modules/KIN_MIR_45"},{"type":"link","label":"KINEMATIC MIRROR (90\xb0)","href":"/docs/PRODUCTION/Modules/KIN_MIR_90","docId":"PRODUCTION/Modules/KIN_MIR_90"},{"type":"link","label":"KINEMATIC MIRROR (90\xb0)","href":"/docs/PRODUCTION/Modules/BEAMSPLITTER","docId":"PRODUCTION/Modules/BEAMSPLITTER"},{"type":"link","label":"Mirror (45\xb0)","href":"/docs/PRODUCTION/Modules/MIR_45","docId":"PRODUCTION/Modules/MIR_45"},{"type":"link","label":"Kinematic XY Mount","href":"/docs/PRODUCTION/Modules/KIN_XY_LASER","docId":"PRODUCTION/Modules/KIN_XY_LASER"},{"type":"link","label":"Kinematic XY Mount / Laser","href":"/docs/PRODUCTION/Modules/STAGE_Z_MANUAL","docId":"PRODUCTION/Modules/STAGE_Z_MANUAL"},{"type":"link","label":"Z-Stage Motorized NEMA12 25mm","href":"/docs/PRODUCTION/Modules/STAGE_Z_NEMA","docId":"PRODUCTION/Modules/STAGE_Z_NEMA"},{"type":"link","label":"Torch","href":"/docs/PRODUCTION/Modules/TORCH","docId":"PRODUCTION/Modules/TORCH"},{"type":"link","label":"Sample Holder","href":"/docs/PRODUCTION/Modules/SAMPLE_HOLDEr","docId":"PRODUCTION/Modules/SAMPLE_HOLDEr"},{"type":"link","label":"Polarization Rotator","href":"/docs/PRODUCTION/Modules/POLARIZER_ROTATING","docId":"PRODUCTION/Modules/POLARIZER_ROTATING"},{"type":"link","label":"Apertures","href":"/docs/PRODUCTION/Modules/APERTURES","docId":"PRODUCTION/Modules/APERTURES"}]}]},{"type":"link","label":"openUC2 Documentation","href":"/docs/intro","docId":"intro"}]},"docs":{"Electronics/APIDescription/Encoder":{"id":"Electronics/APIDescription/Encoder","title":"AS 5311 linear encoder for real-time feedback loop","description":"The relevant code can be found here:","sidebar":"tutorialSidebar"},"Electronics/APIDescription/Home":{"id":"Electronics/APIDescription/Home","title":"Home","description":"UC2-ESP Motor Homing Interface API Description","sidebar":"tutorialSidebar"},"Electronics/APIDescription/INTRO":{"id":"Electronics/APIDescription/INTRO","title":"UC2-ESP","description":"This is the API description for the UC2 firmware running on the ESP32 boards. It\'s under heavy active development. You can find the current version here:","sidebar":"tutorialSidebar"},"Electronics/APIDescription/LEDArray":{"id":"Electronics/APIDescription/LEDArray","title":"LED array","description":"This API provides a convenient method for controlling individual LEDs within a NeoPixel LED array using the UC2-ESP firmware. The interface facilitates the manipulation of LED colors and array display modes. It operates through JSON documents sent over USB serial communication.","sidebar":"tutorialSidebar"},"Electronics/APIDescription/Motor":{"id":"Electronics/APIDescription/Motor","title":"Motor","description":"This API provides a straightforward way to control and manage motors using the UC2-ESP firmware. The interface operates over USB serial communication and accepts JSON documents to control motor movements. The main endpoint for motor control is /motor_act.","sidebar":"tutorialSidebar"},"Electronics/APIDescription/PinConfig":{"id":"Electronics/APIDescription/PinConfig","title":"PinConfig","description":"UC2 System Version 2 and 3, and WEMOS Board Pinout Description","sidebar":"tutorialSidebar"},"Electronics/PS4-Controller":{"id":"Electronics/PS4-Controller","title":"PS4-Controller","description":"If you are using the webserial online flashing tool provided by UC2 (https://youseetoo.github.io/) to flash the firmware onto your ESP8266 or ESP32 development board, the process of connecting the PS4 controller to the UC2-ESP remains similar to the steps mentioned earlier. However, please note that the flashing tool is a separate tool for uploading firmware, and the Bluetooth communication with the PS4 controller needs to be implemented in your firmware code.","sidebar":"tutorialSidebar"},"Electronics/UC2-ESP/Setup_Buildenvironment":{"id":"Electronics/UC2-ESP/Setup_Buildenvironment","title":"UC2-ESP Firmware for the openUC2 UC2e electronics","description":"This refers to the UC2-ESP firmware that can be found here//github.com/youseetoo/uc2-esp32","sidebar":"tutorialSidebar"},"Electronics/UC2-REST/ESP32_Messaging_Callback":{"id":"Electronics/UC2-REST/ESP32_Messaging_Callback","title":"UC2-REST: Messaging","description":"This documentation covers the callback functionality integrated into the firmware, particularly focusing on the Message class. The Message class is designed to parse incoming messages from the ESP32, facilitating the conversion of hardware inputs and other events into software actions.","sidebar":"tutorialSidebar"},"Electronics/UC2-REST/ESP32_Motor":{"id":"Electronics/UC2-REST/ESP32_Motor","title":"UC2-REST: Motor","description":"This section provides detailed documentation on the Motor class designed for controlling motors via the firmware. The Motor class includes functionality for motor movement, triggering, position tracking, and stage scanning, among other features.","sidebar":"tutorialSidebar"},"Electronics/UC2-REST/INTRO":{"id":"Electronics/UC2-REST/INTRO","title":"UC2-REST","description":"This explains the basic functionality of the UC2-REST Python interface in conjunction with the UC2-ESP32 mainboard. This was mostly designed to interface with ImSwitch.","sidebar":"tutorialSidebar"},"Electronics/uc2e1":{"id":"Electronics/uc2e1","title":"Introduction","description":"Overview","sidebar":"tutorialSidebar"},"Electronics/uc2e2":{"id":"Electronics/uc2e2","title":"Hardware","description":"\ud83d\udd0c Board layout and schematics","sidebar":"tutorialSidebar"},"Electronics/uc2e3":{"id":"Electronics/uc2e3","title":"Getting Started","description":"First Steps, Getting Started, Flashing - Simply Quick Start!","sidebar":"tutorialSidebar"},"Electronics/uc2e5":{"id":"Electronics/uc2e5","title":"REST principle","description":"Introduction into the ESP32 microcontroller firmware","sidebar":"tutorialSidebar"},"Electronics/uc2e5.1":{"id":"Electronics/uc2e5.1","title":"REST commands","description":"Controlling hardware using the WebSerial Standard","sidebar":"tutorialSidebar"},"Electronics/uc2e5.2":{"id":"Electronics/uc2e5.2","title":"Python commands","description":"Using UC2-REST in Python","sidebar":"tutorialSidebar"},"Electronics/uc2e6":{"id":"Electronics/uc2e6","title":"Connecting devices","description":"Connect devices","sidebar":"tutorialSidebar"},"Electronics/uc2e7":{"id":"Electronics/uc2e7","title":"Controlling the UC2e","description":"Controlling the ESP32","sidebar":"tutorialSidebar"},"Electronics/uc2e8":{"id":"Electronics/uc2e8","title":"Compiling from Scratch","description":"UC2-ESP Firmware for the openUC2 UC2e electronics","sidebar":"tutorialSidebar"},"Electronics/uc2e9":{"id":"Electronics/uc2e9","title":"Replace Hardware","description":"\u274c Replacing parts","sidebar":"tutorialSidebar"},"ImSwitch/DahengCamera":{"id":"ImSwitch/DahengCamera","title":"Install driver for Daheng Camera","description":"Windows","sidebar":"tutorialSidebar"},"ImSwitch/ImSwitchClient":{"id":"ImSwitch/ImSwitchClient","title":"ImSwitchClient Documentation","description":"ImSwitchClient is a Python package designed to connect to the ImSwitch REST API, enabling remote control of ImSwitchUC2 functionalities directly from Jupyter Notebooks. This client facilitates easy integration with the ImSwitch ecosystem, offering programmable access to various features like laser control, stage manipulation, and image acquisition.","sidebar":"tutorialSidebar"},"ImSwitch/ImSwitchConfig":{"id":"ImSwitch/ImSwitchConfig","title":"ImSwitchConfig","description":"ImSwitch Config File","sidebar":"tutorialSidebar"},"ImSwitch/ImSwitchExperimental":{"id":"ImSwitch/ImSwitchExperimental","title":"ImSwitch Experimental Features Documentation","description":"Overview","sidebar":"tutorialSidebar"},"ImSwitch/ImSwitchInstall":{"id":"ImSwitch/ImSwitchInstall","title":"Install ImSwitch","description":"What will you learn?","sidebar":"tutorialSidebar"},"ImSwitch/ImSwitchInstaller":{"id":"ImSwitch/ImSwitchInstaller","title":"Install ImSwitch using the ImSwitch Installer (Electron updated Version)","description":"This is a work-in-progress installer. Please have a look for updates or file an issue here https://github.com/openUC2/ImSwitchInstaller/issues","sidebar":"tutorialSidebar"},"ImSwitch/ImSwitchInstallerConda":{"id":"ImSwitch/ImSwitchInstallerConda","title":"Install ImSwitch using the ImSwitch Installer (CONDA INSTALLER OUTDATED)","description":"This tutorial is outdated! Please look for the Standalone Electron-based version!","sidebar":"tutorialSidebar"},"ImSwitch/ImSwitchInstallUbuntu":{"id":"ImSwitch/ImSwitchInstallUbuntu","title":"ImSwitchInstallUbuntu","description":"ImSwitch Installation Ubuntu","sidebar":"tutorialSidebar"},"ImSwitch/ImSwitchInstallWindows":{"id":"ImSwitch/ImSwitchInstallWindows","title":"ImSwitchInstallWindows","description":"ImSwitch Installation on Windows","sidebar":"tutorialSidebar"},"ImSwitch/ImSwitchUpdate":{"id":"ImSwitch/ImSwitchUpdate","title":"ImSwitchUpdate","description":"Updated openUC2 ImSwitch","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"openUC2 Documentation","description":"Here you can find all information to enhance, repair, improve, use, communicate,.... our optical toolbox openUC2. Did not find what you were looking for? No problem. Send us a mail or write an issue in our github repository https://github.com/openUC2/UC2-GIT/issues.","sidebar":"tutorialSidebar"},"Investigator/FlowStopper/README":{"id":"Investigator/FlowStopper/README","title":"README","description":"Setup Wifi Access Point on the Raspi","sidebar":"tutorialSidebar"},"Investigator/Lightsheet/LightSheet":{"id":"Investigator/Lightsheet/LightSheet","title":"openUC2 Light-Sheet Microscope","description":"In this experiment, we will explore the concept of optical sectioning to improve the resolution along the optical axis and the XY plane. The Light-Sheet Microscope, also known as the Light-Sheet Microscopy or Lattice Light-Sheet Microscopy, is a powerful technique used to acquire volumetric images of samples, such as zebrafishes. This technique enables us to visualize biological specimens in three dimensions with high resolution and minimal phototoxicity.","sidebar":"tutorialSidebar"},"Investigator/Lightsheet/LightSheet Sample":{"id":"Investigator/Lightsheet/LightSheet Sample","title":"openUC2 Light-Sheet Tips and Tricks","description":"Introduction to the openUC2 Light-Sheet Microscope","sidebar":"tutorialSidebar"},"Investigator/Lightsheet/LightsheetCalibration":{"id":"Investigator/Lightsheet/LightsheetCalibration","title":"Light-sheet alignment","description":"This tutorial will show you how to find the light-sheet and align this w.r.t. the camera plane.","sidebar":"tutorialSidebar"},"Investigator/Lightsheet/LightSheetOld":{"id":"Investigator/Lightsheet/LightSheetOld","title":"openUC2 Light-Sheet Microscope (Old Version)","description":"This is the manual for the Light sheet Microscope.","sidebar":"tutorialSidebar"},"Investigator/STORM/Electronics":{"id":"Investigator/STORM/Electronics","title":"Electronics","description":"Here we make use of the ESP32 Wemos D1 R32 microcontroller board in combination with the CNC Shield v3. The wiring of the different components is straight forward as the Stepper Motors are attached to the stepper drivers and the Laser is triggered by the SpinEn pin. The NeoPixel LED mounts to the Hold pin.","sidebar":"tutorialSidebar"},"Investigator/STORM/Illumination":{"id":"Investigator/STORM/Illumination","title":"Setting up the laser","description":"Laser illumination","sidebar":"tutorialSidebar"},"Investigator/STORM/Main":{"id":"Investigator/STORM/Main","title":"U.C.*STORM*","description":"---","sidebar":"tutorialSidebar"},"Investigator/STORM/Results":{"id":"Investigator/STORM/Results","title":"Results","description":"Imaging with the UC2-STORM setup","sidebar":"tutorialSidebar"},"Investigator/STORM/Software":{"id":"Investigator/STORM/Software","title":"Software","description":"For the control and acquisition software, we use ImSwitch. This is an open-source software centered around Napari as a multi-layer viewer and a rich framework for QT-based widgets. We make use of the open-source localization framework \\"microEye\\" ()","sidebar":"tutorialSidebar"},"Investigator/STORM/Stability":{"id":"Investigator/STORM/Stability","title":"Stability","description":"Setup stability","sidebar":"tutorialSidebar"},"Investigator/XYZMicroscope/AlignLaser":{"id":"Investigator/XYZMicroscope/AlignLaser","title":"Aligning the Beamsplitter Cube","description":"The new xyz microscope has a special 2x1 cube that holds the fluorescence optics. Inside the beamsplitter cube is mounted kinematically and can be adjusted with 3 set screws. It\'s important that the fiber coupled laser is focussed / reimaged in the back focal plane of the objective lens. Therefore, we have created a little tutorial to get you starting how this works.","sidebar":"tutorialSidebar"},"Investigator/XYZMicroscope/FiveD_v1":{"id":"Investigator/XYZMicroscope/FiveD_v1","title":"openUC2 FiveD v1","description":"Unpacking the microscope","sidebar":"tutorialSidebar"},"Investigator/XYZMicroscope/FiveD_v2":{"id":"Investigator/XYZMicroscope/FiveD_v2","title":"openUC2 FiveD v2","description":"Design Files","sidebar":"tutorialSidebar"},"Investigator/XYZMicroscope/FiveD_v3":{"id":"Investigator/XYZMicroscope/FiveD_v3","title":"openUC2 FiveD v3","description":"Design Files","sidebar":"tutorialSidebar"},"Investigator/XYZMicroscope/HistoScan":{"id":"Investigator/XYZMicroscope/HistoScan","title":"Histo Scanner Plugin Documentation","description":"Welcome to the documentation page for the Histo Scanner Plugin, a powerful tool for scanning large areas and stitching images onto a large canvas. This page provides detailed information on how to configure and use the plugin effectively.","sidebar":"tutorialSidebar"},"Investigator/XYZMicroscope/MCTPlugin":{"id":"Investigator/XYZMicroscope/MCTPlugin","title":"MCT (Multi-Colour Timelapse) Imaging Plugin","description":"More information are coming soon","sidebar":"tutorialSidebar"},"Investigator/XYZMicroscope/ROIScanner":{"id":"Investigator/XYZMicroscope/ROIScanner","title":"ROI Scanner","description":"Starting ImSwitch on Ubuntu and Start the ROI Scanner","sidebar":"tutorialSidebar"},"Investigator/XYZMicroscope/SetupPhasecontrast":{"id":"Investigator/XYZMicroscope/SetupPhasecontrast","title":"openUC2 Phase-Contrast Setup Tutorial","description":"Introduction: Understanding Phase-Contrast Microscopy","sidebar":"tutorialSidebar"},"Investigator/XYZMicroscope/SetupTubelens":{"id":"Investigator/XYZMicroscope/SetupTubelens","title":"openUC2 Setting up the tube lens","description":" - - + + \ No newline at end of file diff --git a/docs/Electronics/uc2e7/index.html b/docs/Electronics/uc2e7/index.html index 90f02fe03..341743b35 100644 --- a/docs/Electronics/uc2e7/index.html +++ b/docs/Electronics/uc2e7/index.html @@ -10,15 +10,15 @@ - - + +

      Controlling the UC2e

      Controlling the ESP32

      The unified "REST-API" (inspired, not following full protocol), enables you to control the functionalities from multiple different clients (e.g. Python, Webrowser, Android Phone). The Core idea is to file post/get requests (serial/wifi) that send/receive JSON files that do "something".

      Installing the USB Serial Driver Install the CH340 USB Serial driver is explained in more detail here: Sparkfun

      🐍 Python Bindings

      In order to interact with the electronics, we implemented a Python library called UC2-REST, available here that will help you to work with the device. The easiest way to install it would be:

      pip install uc2-rest

      It will automatically detect your UC2e (if the driver is installed), connect and will offer you the basic functionalities such as moving the motor, etc.

      In order to give you a deep dive in what's possible, we provide a Jupyter Notebook that guides you through all the functionalities. You can find it here Start Jupiter Tutorial

      📲 Android APP

      This is coming soon. You will be able to control the electronics using the Wifi connection of your Android phone.

      💻 Browser APP

      If the ESP32 is offereing an access point or is connected to your wifi router, you can access the webserver running on the ESP32 using a browser. It offers limited control over the Endpoints by filing post and get requests.

      More information are coming soon!

      🎮 Playstation 3 or Playstation 4 Controller (comming soon)

      With the open-source libraries PS3Controller and PS4Controller we are able to make use of the Bluetooth-able joysticks from your beloved game console.

      When a PS4 controller is 'paired' to a PS4 console, it just means that it has stored the console's Bluetooth MAC address, which is the only device the controller will connect to. Usually, this pairing happens when you connect the controller to the PS4 console using a USB cable, and press the PS button. This initiates writing the console's MAC address to the controller.

      Therefore, if you want to connect your PS4 controller to the ESP32, you either need to figure out what the Bluetooth MAC address of your PS4 console is and set the ESP32's address to it, or change the MAC address stored in the PS4 controller.

      Whichever path you choose, you might want a tool to read and/or write the currently paired MAC address from the PS4 controller. You can try using sixaxispairer for this purpose.

      If you opted to change the ESP32's MAC address, you'll need to include the ip address in the PS4.begin() function during within the setup() Arduino function like below where 1a:2b:3c:01:01:01 is the MAC address (note that MAC address must be unicast):

      void setup()
      {
      PS4.begin("1a:2b:3c:01:01:01");
      Serial.println("Ready.");
      }

      Controlling using ImSwitch

      Please have a look here for more information about how to install ImSwitch and here for the UC2-related setup files including the UC2-REST serial interface.

      - - + + \ No newline at end of file diff --git a/docs/Electronics/uc2e8/index.html b/docs/Electronics/uc2e8/index.html index 6619c0930..db23899b5 100644 --- a/docs/Electronics/uc2e8/index.html +++ b/docs/Electronics/uc2e8/index.html @@ -10,8 +10,8 @@ - - + +
      @@ -19,7 +19,7 @@ 4.1. Go to Platformio Home and navigate to Devices 4.2 Copy the Device port (if connected) and insert that into the platformio.ini, e.g. upload_port = /dev/cu.SLAB_USBtoUART or COM3 for windows
    2. Hit the PlatformIO upload button; The following task will be run: platformio run --target upload; The code is getting compiled and saved into ./.pio/build/ 5.1 The code will be uploaded. If everything goes right the terminal says: `Leaving... Hard resetting via RTS pin...``
    3. open the PlatformIO serial monitor (remember to also change the port in the platform.io accordingly) and check the ESP32's output (eventually hit the reset button)
    4. In case you have any problems: File an issue :-)