cacao  Release 0.1.03-dev
Compute And Control For Adaptive Optics
AOloopControl_computeCalib.h File Reference

Function prototypes for Adaptive Optics Control loop engine compute calibration. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void __attribute__ ((constructor)) libinit_AOloopControl_computeCalib()
 Initialize module. More...
 
AOloopControl_computeCalib - 1. COMPUTING CALIBRATION

Compute control matrix, modes

imageID AOloopControl_computeCalib_mkHadamardModes (const char *DMmask_name, const char *outname)
 
imageID AOloopControl_computeCalib_Hadamard_decodeRM (const char *inname, const char *Hmatname, const char *indexname, const char *outname)
 
imageID AOloopControl_computeCalib_mkloDMmodes (const char *ID_name, uint32_t msizex, uint32_t msizey, float CPAmax, float deltaCPA, double xc, double yc, double r0, double r1, int MaskMode)
 
errno_t AOcontrolLoop_computeCalib_ComputeCM_FPCONF (char *fpsname, uint32_t CMDmode)
 Configuration for compute calib FPS. More...
 
errno_t AOcontrolLoop_computeCalib_ComputeCM_RUN (char *fpsname)
 Compute control matrix. More...
 
errno_t AOloopControl_computeCalib_mkCalib_map_mask (long loop, const char *zrespm_name, const char *WFSmap_name, const char *DMmap_name, float dmmask_perclow, float dmmask_coefflow, float dmmask_perchigh, float dmmask_coeffhigh, float wfsmask_perclow, float wfsmask_coefflow, float wfsmask_perchigh, float wfsmask_coeffhigh)
 
errno_t AOloopControl_computeCalib_Process_zrespM (long loop, const char *IDzrespm0_name, const char *IDwfsref_name, const char *IDzrespm_name, const char *WFSmap_name, const char *DMmap_name)
 
errno_t AOloopControl_computeCalib_ProcessZrespM_medianfilt (long loop, const char *zrespm_name, const char *WFSref0_name, const char *WFSmap_name, const char *DMmap_name, double rmampl, int normalize)
 
errno_t AOloopControl_computeCalib_mkCM_FPCONF (char *fpsname, uint32_t CMDmode)
 
errno_t AOloopControl_computeCalib_mkCM_RUN (char *fpsname)
 
errno_t AOloopControl_computeCalib_mkCM (const char *respm_name, float SVDlim)
 
long AOloopControl_computeCalib_mkSlavedAct (const char *IDmaskRM_name, float pixrad, const char *IDout_name)
 
long AOloopControl_computeCalib_DMedgeDetect (const char *IDmaskRM_name, const char *IDout_name)
 
long AOloopControl_computeCalib_DMextrapolateModes (const char *IDin_name, const char *IDmask_name, const char *IDcpa_name, const char *IDout_name)
 
long AOloopControl_computeCalib_DMslaveExt (const char *IDin_name, const char *IDmask_name, const char *IDsl_name, const char *IDout_name, float r0)
 
imageID AOloopControl_computeCalib_mkModes (const char *ID_name, uint32_t msizex, uint32_t msizey, float CPAmax, float deltaCPA, double xc, double yc, double r0, double r1, int MaskMode, int BlockNB, float SVDlim, char *stagedir)
 
imageID AOloopControl_computeCalib_mkModes_Simple (const char *IDin_name, long NBmblock, long Cmblock, float SVDlim)
 
imageID AOloopControl_computeCalib_compute_ControlMatrix (long loop, long NB_MODE_REMOVED, const char *ID_Rmatrix_name, const char *ID_Cmatrix_name, const char *ID_VTmatrix_name, double Beta, long NB_MODE_REMOVED_STEP, float eigenvlim)
 
errno_t AOloopControl_computeCalib_compute_CombinedControlMatrix (const char *IDcmat_name, const char *IDmodes_name, const char *IDwfsmask_name, const char *IDdmmask_name, const char *IDcmatc_name, const char *IDcmatc_active_name)
 
imageID AOloopControl_computeCalib_loadCM (long loop, const char *CMfname)
 

Detailed Description

Function prototypes for Adaptive Optics Control loop engine compute calibration.

AO engine uses stream data structure

Bug:
No known bugs.

Function Documentation

◆ __attribute__()

void __attribute__ ( (constructor)  )

Initialize module.

◆ AOloopControl_computeCalib_compute_CombinedControlMatrix()

errno_t AOloopControl_computeCalib_compute_CombinedControlMatrix ( const char *  IDcmat_name,
const char *  IDmodes_name,
const char *  IDwfsmask_name,
const char *  IDdmmask_name,
const char *  IDcmatc_name,
const char *  IDcmatc_active_name 
)

◆ AOloopControl_computeCalib_compute_ControlMatrix()

imageID AOloopControl_computeCalib_compute_ControlMatrix ( long  loop,
long  NB_MODE_REMOVED,
const char *  ID_Rmatrix_name,
const char *  ID_Cmatrix_name,
const char *  ID_VTmatrix_name,
double  Beta,
long  NB_MODE_REMOVED_STEP,
float  eigenvlim 
)

◆ AOloopControl_computeCalib_DMedgeDetect()

long AOloopControl_computeCalib_DMedgeDetect ( const char *  IDmaskRM_name,
const char *  IDout_name 
)

◆ AOloopControl_computeCalib_DMextrapolateModes()

long AOloopControl_computeCalib_DMextrapolateModes ( const char *  IDin_name,
const char *  IDmask_name,
const char *  IDcpa_name,
const char *  IDout_name 
)

◆ AOloopControl_computeCalib_DMslaveExt()

long AOloopControl_computeCalib_DMslaveExt ( const char *  IDin_name,
const char *  IDmask_name,
const char *  IDsl_name,
const char *  IDout_name,
float  r0 
)

◆ AOloopControl_computeCalib_Hadamard_decodeRM()

imageID AOloopControl_computeCalib_Hadamard_decodeRM ( const char *  inname,
const char *  Hmatname,
const char *  indexname,
const char *  outname 
)

◆ AOloopControl_computeCalib_loadCM()

imageID AOloopControl_computeCalib_loadCM ( long  loop,
const char *  CMfname 
)

◆ AOloopControl_computeCalib_mkCalib_map_mask()

errno_t AOloopControl_computeCalib_mkCalib_map_mask ( long  loop,
const char *  zrespm_name,
const char *  WFSmap_name,
const char *  DMmap_name,
float  dmmask_perclow,
float  dmmask_coefflow,
float  dmmask_perchigh,
float  dmmask_coeffhigh,
float  wfsmask_perclow,
float  wfsmask_coefflow,
float  wfsmask_perchigh,
float  wfsmask_coeffhigh 
)

◆ AOloopControl_computeCalib_mkCM()

errno_t AOloopControl_computeCalib_mkCM ( const char *  respm_name,
float  SVDlim 
)

◆ AOloopControl_computeCalib_mkCM_FPCONF()

errno_t AOloopControl_computeCalib_mkCM_FPCONF ( char *  fpsname,
uint32_t  CMDmode 
)

◆ AOloopControl_computeCalib_mkCM_RUN()

errno_t AOloopControl_computeCalib_mkCM_RUN ( char *  fpsname)

◆ AOloopControl_computeCalib_mkHadamardModes()

imageID AOloopControl_computeCalib_mkHadamardModes ( const char *  DMmask_name,
const char *  outname 
)

◆ AOloopControl_computeCalib_mkloDMmodes()

imageID AOloopControl_computeCalib_mkloDMmodes ( const char *  ID_name,
uint32_t  msizex,
uint32_t  msizey,
float  CPAmax,
float  deltaCPA,
double  xc,
double  yc,
double  r0,
double  r1,
int  MaskMode 
)

CPA for each Zernike (somewhat arbitrary... used to sort modes in CPA)

extract xc and yc from mask

Remove excluded modes

SLAVED ACTUATORS

◆ AOloopControl_computeCalib_mkModes()

imageID AOloopControl_computeCalib_mkModes ( const char *  ID_name,
uint32_t  msizex,
uint32_t  msizey,
float  CPAmax,
float  deltaCPA,
double  xc,
double  yc,
double  r0,
double  r1,
int  MaskMode,
int  BlockNB,
float  SVDlim,
char *  stagedir 
)

CPA for each Zernike (somewhat arbitrary... used to sort modes in CPA)

STEP 1: CREATE STARTING POINT : ZERNIKES + FOURIER MODES

if Mmask exists, use it, otherwise create it

extract xc and yc from mask

Remove excluded modes if they exist

Remove excluded modes if they exist

COMPUTE WFS RESPONSE TO MODES -> fmodesWFS00all.fits

STEP 2: SEPARATE DM MODES INTO BLOCKS AND MASK

STEP 3: REMOVE NULL SPACE WITHIN EACH BLOCK - USE SVDlim00 FOR CUTOFF -> fmodes1all.fits (DM space)

STEP 4: REMOVE MODES THAT ARE CONTAINED IN PREVIOUS BLOCKS, AND ENFORCE DM-SPACE ORTHOGONALITY BETWEEN BLOCKS -> fmodes2all.fits (DM space) fmodes1all -> fmodes2all

STEP 5: REMOVE NULL SPACE WITHIN EACH BLOCK - USE SVDlim01 FOR CUTOFF -> fmodes2ball.fits (DM space)

STEP 6: COMPUTE WFS RESPONSE TO MODES fmodes2ball -> fmodesWFS0all.fits

Load ... or create WFS mask

STEP 7: REMOVE WFS MODES THAT ARE CONTAINED IN PREVIOUS BLOCKS, AND ENFORCE WFS-SPACE ORTHOGONALITY BETWEEN BLOCKS Input: fmodesWFS0all (corresponding to fmodes2ball) Output -> fmodesWFS1all / fmodes3all

STEP 8: SVD WFS SPACE IN EACH BLOCK fmodesWFS1all, fmodes3 -> fmodesall

eigen mode index

WFS MODES, MODAL CONTROL MATRICES

◆ AOloopControl_computeCalib_mkModes_Simple()

imageID AOloopControl_computeCalib_mkModes_Simple ( const char *  IDin_name,
long  NBmblock,
long  Cmblock,
float  SVDlim 
)

◆ AOloopControl_computeCalib_mkSlavedAct()

long AOloopControl_computeCalib_mkSlavedAct ( const char *  IDmaskRM_name,
float  pixrad,
const char *  IDout_name 
)

◆ AOloopControl_computeCalib_Process_zrespM()

errno_t AOloopControl_computeCalib_Process_zrespM ( long  loop,
const char *  IDzrespm0_name,
const char *  IDwfsref_name,
const char *  IDzrespm_name,
const char *  WFSmap_name,
const char *  DMmap_name 
)

◆ AOloopControl_computeCalib_ProcessZrespM_medianfilt()

errno_t AOloopControl_computeCalib_ProcessZrespM_medianfilt ( long  loop,
const char *  zrespm_name,
const char *  WFSref0_name,
const char *  WFSmap_name,
const char *  DMmap_name,
double  rmampl,
int  normalize 
)