{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Motion control with Katsu on the UASAL Gromit Polarimeter\n", "\n", "_written by Jaren N. Ashcraft_\n", "\n", "In order to perform some of the polarimetry routines in `katsu` we require a rotating retarder of some kind. It is extremely convenient (bordering on necessary) to have computer-controlled rotation stages for high accuracy and repeatability. In the pursuit of open-source instrumentation, as well as software, the [UA Space Astrophysics Laboratory](https://uasal.github.io/) created the [Gromit Polarimeter](https://github.com/uasal/gromit) to showcase efforts in dual-rotating-retarder Mueller polarimetry.\n", "\n", "Gromit currently uses the [Agilis series Piezo Rotation Stages](https://www.newport.com/p/AG-PR100), which operate using a serial communication protocol, which are shown in this [instruction manual](https://www.newport.com/mam/celum/celum_assets/np/resources/Agilis_Piezo_Motor_Driven_Components_User_Manual.pdf?0).\n", "\n", "To provide users with a more Pythonic interface than sending bytestrings to the controllers, we created the `AgilisRotationStage` class in `katsu.motion`, whose methods wrap these bytestrings. They are initialized by specifying the channel, axis, and port the device is on.\n", "\n", "```python\n", "from katsu.motion import AgilisRotationStage\n", "stage1 = AgilisRotationStage(channel=1, axis=1, port='COM1')\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In lieu of providing a demo in the `katsu` documentation, we direct you to the [Gromit Polarimeter Repository](https://github.com/uasal/gromit) to learn how the Agilis rotation stage interface is used to set up and calibrate a dual rotating retarder Mueller polarimeter. Specifically, the following jupyter notebooks:\n", "\n", "- [Setting up a polarimeter ](https://github.com/uasal/gromit/blob/main/Setup_Polarimeter.ipynb)\n", "- [Calibrating a polarimeter and measuring a linear polarizer](https://github.com/uasal/gromit/blob/main/Calibrate_Polarimeter.ipynb)\n", "\n", "The construction of the `AgilisRotationStage` class is such that it inherits from a `BaseRotationStage` base class. The hope is that as `katsu` grows we will be able to add support for a greater number of rotation stages for a unified platform for polarimeter control and operation. " ] } ], "metadata": { "kernelspec": { "display_name": "katsudev", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 2 }