Skip to content

Repository files navigation

README file for the HexDMserver project

Purpose

Server driving the Hex 507 BMC deformable mirror (HexDM) originally part of the KERNEL project test-bench and now used for the PEPR Origins - PHOTONICS project. The intended architecture follows the approach used for the SCExAO instrument: the program operates like a server that monitors the state of several shared memory data (shm) structures that will be refered to as channels. A channel is an entry point for an external program to interact with the DM.

Whenever one channel gets updated by an external program, the server combines the commands available on all channels (a simple addition) into what is the overall desired HexDM state, converts this state into a set of commands for the HexDM electronic driver and sends these commands to the driver.

This code relies on the ImageStreamIO C library developed by O. Guyon that is a part of the milk-org organisation. Most of my software projects in python (like XAOSIM) use read/write access to shared memory.

Mechanics

The HexDM is a segmented mirror: it is made of 169 individual segments that can each be driven by three separate actuators (3 * 169 = 507), therefore enabling control of piston and tip-tilt. The HexDM driver takes commands that address actuators individuallly.

Each shm input channel will be a two dimensional floating point array of size 3 × 169. The three columns are expected to be:

column indextype of valueunit
0pistonnanometers (nm)
1horizontal tipmilliradians (mrad)
2vertical tiltmilliradians (mrad)

Compilation & Installation

Refer to the provided Makefile and ensure that you have all the required libraries installed. Assuming that all is in place, simply compile the code with:

make
sudo make install

About

Server program written to drive a BMC Hex-507 segmented deformable mirror

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages