cgse 2024.7.0__py3-none-any.whl → 2025.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +27 -0
- bump.py +85 -0
- cgse-2025.0.1.dist-info/METADATA +38 -0
- cgse-2025.0.1.dist-info/RECORD +5 -0
- {cgse-2024.7.0.dist-info → cgse-2025.0.1.dist-info}/WHEEL +1 -2
- cgse-2024.7.0.dist-info/COPYING +0 -674
- cgse-2024.7.0.dist-info/COPYING.LESSER +0 -165
- cgse-2024.7.0.dist-info/METADATA +0 -144
- cgse-2024.7.0.dist-info/RECORD +0 -660
- cgse-2024.7.0.dist-info/entry_points.txt +0 -75
- cgse-2024.7.0.dist-info/top_level.txt +0 -2
- egse/__init__.py +0 -12
- egse/__main__.py +0 -32
- egse/aeu/aeu.py +0 -5238
- egse/aeu/aeu_awg.yaml +0 -265
- egse/aeu/aeu_crio.yaml +0 -273
- egse/aeu/aeu_cs.py +0 -627
- egse/aeu/aeu_devif.py +0 -321
- egse/aeu/aeu_main_ui.py +0 -903
- egse/aeu/aeu_metrics.py +0 -131
- egse/aeu/aeu_protocol.py +0 -463
- egse/aeu/aeu_psu.yaml +0 -204
- egse/aeu/aeu_ui.py +0 -873
- egse/aeu/arbdata/FccdRead.arb +0 -2
- egse/aeu/arbdata/FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/HeaterSync_FccdRead.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead50.arb +0 -2
- egse/aeu/arbdata/Heater_FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/ccdRead25.arb +0 -2
- egse/aeu/arbdata/ccdRead25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead50.arb +0 -2
- egse/aeu/arbdata/ccdRead50_150ms.arb +0 -2
- egse/alert/__init__.py +0 -1049
- egse/alert/alertman.yaml +0 -37
- egse/alert/alertman_cs.py +0 -233
- egse/alert/alertman_ui.py +0 -600
- egse/alert/gsm/beaglebone.py +0 -138
- egse/alert/gsm/beaglebone.yaml +0 -51
- egse/alert/gsm/beaglebone_cs.py +0 -108
- egse/alert/gsm/beaglebone_devif.py +0 -122
- egse/alert/gsm/beaglebone_protocol.py +0 -46
- egse/bits.py +0 -318
- egse/camera.py +0 -44
- egse/collimator/__init__.py +0 -0
- egse/collimator/fcul/__init__.py +0 -0
- egse/collimator/fcul/ogse.py +0 -1077
- egse/collimator/fcul/ogse.yaml +0 -14
- egse/collimator/fcul/ogse_cs.py +0 -154
- egse/collimator/fcul/ogse_devif.py +0 -358
- egse/collimator/fcul/ogse_protocol.py +0 -132
- egse/collimator/fcul/ogse_sim.py +0 -431
- egse/collimator/fcul/ogse_ui.py +0 -1108
- egse/command.py +0 -699
- egse/config.py +0 -410
- egse/confman/__init__.py +0 -1058
- egse/confman/confman.yaml +0 -70
- egse/confman/confman_cs.py +0 -240
- egse/confman/confman_ui.py +0 -381
- egse/confman/setup_ui.py +0 -565
- egse/control.py +0 -632
- egse/coordinates/__init__.py +0 -534
- egse/coordinates/avoidance.py +0 -100
- egse/coordinates/cslmodel.py +0 -127
- egse/coordinates/laser_tracker_to_dict.py +0 -122
- egse/coordinates/point.py +0 -707
- egse/coordinates/pyplot.py +0 -194
- egse/coordinates/referenceFrame.py +0 -1279
- egse/coordinates/refmodel.py +0 -737
- egse/coordinates/rotationMatrix.py +0 -85
- egse/coordinates/transform3d_addon.py +0 -419
- egse/csl/__init__.py +0 -50
- egse/csl/commanding.py +0 -78
- egse/csl/icons/hexapod-connected-selected.svg +0 -30
- egse/csl/icons/hexapod-connected.svg +0 -30
- egse/csl/icons/hexapod-homing-selected.svg +0 -68
- egse/csl/icons/hexapod-homing.svg +0 -68
- egse/csl/icons/hexapod-retract-selected.svg +0 -56
- egse/csl/icons/hexapod-retract.svg +0 -51
- egse/csl/icons/hexapod-zero-selected.svg +0 -56
- egse/csl/icons/hexapod-zero.svg +0 -56
- egse/csl/icons/logo-puna.svg +0 -92
- egse/csl/icons/stop.svg +0 -1
- egse/csl/initialisation.py +0 -102
- egse/csl/mech_pos_settings.yaml +0 -18
- egse/das.py +0 -1240
- egse/das.yaml +0 -7
- egse/data/conf/SETUP_CSL_00000_170620_150000.yaml +0 -5
- egse/data/conf/SETUP_CSL_00001_170620_151010.yaml +0 -69
- egse/data/conf/SETUP_CSL_00002_170620_151020.yaml +0 -69
- egse/data/conf/SETUP_CSL_00003_170620_151030.yaml +0 -69
- egse/data/conf/SETUP_CSL_00004_170620_151040.yaml +0 -69
- egse/data/conf/SETUP_CSL_00005_170620_151050.yaml +0 -69
- egse/data/conf/SETUP_CSL_00006_170620_151060.yaml +0 -69
- egse/data/conf/SETUP_CSL_00007_170620_151070.yaml +0 -69
- egse/data/conf/SETUP_CSL_00008_170620_151080.yaml +0 -75
- egse/data/conf/SETUP_CSL_00010_210308_083016.yaml +0 -138
- egse/data/conf/SETUP_INTA_00000_170620_150000.yaml +0 -4
- egse/data/conf/SETUP_SRON_00000_170620_150000.yaml +0 -4
- egse/decorators.py +0 -514
- egse/device.py +0 -269
- egse/dpu/__init__.py +0 -2698
- egse/dpu/ccd_ui.py +0 -514
- egse/dpu/dpu.py +0 -783
- egse/dpu/dpu.yaml +0 -153
- egse/dpu/dpu_cs.py +0 -272
- egse/dpu/dpu_ui.py +0 -671
- egse/dpu/fitsgen.py +0 -2096
- egse/dpu/fitsgen_ui.py +0 -399
- egse/dpu/hdf5_model.py +0 -332
- egse/dpu/hdf5_ui.py +0 -277
- egse/dpu/hdf5_viewer.py +0 -506
- egse/dpu/hk_ui.py +0 -468
- egse/dpu_commands.py +0 -81
- egse/dsi/__init__.py +0 -33
- egse/dsi/_libesl.py +0 -232
- egse/dsi/constants.py +0 -296
- egse/dsi/esl.py +0 -630
- egse/dsi/rmap.py +0 -444
- egse/dsi/rmapci.py +0 -39
- egse/dsi/spw.py +0 -335
- egse/dsi/spw_state.py +0 -29
- egse/dummy.py +0 -318
- egse/dyndummy.py +0 -179
- egse/env.py +0 -278
- egse/exceptions.py +0 -88
- egse/fdir/__init__.py +0 -26
- egse/fdir/fdir_manager.py +0 -85
- egse/fdir/fdir_manager.yaml +0 -37
- egse/fdir/fdir_manager_controller.py +0 -136
- egse/fdir/fdir_manager_cs.py +0 -164
- egse/fdir/fdir_manager_interface.py +0 -15
- egse/fdir/fdir_remote.py +0 -73
- egse/fdir/fdir_remote.yaml +0 -30
- egse/fdir/fdir_remote_controller.py +0 -30
- egse/fdir/fdir_remote_cs.py +0 -94
- egse/fdir/fdir_remote_interface.py +0 -9
- egse/fdir/fdir_remote_popup.py +0 -26
- egse/fee/__init__.py +0 -106
- egse/fee/f_fee_register.yaml +0 -43
- egse/fee/feesim.py +0 -914
- egse/fee/n_fee_hk.py +0 -768
- egse/fee/nfee.py +0 -188
- egse/filterwheel/__init__.py +0 -4
- egse/filterwheel/eksma/__init__.py +0 -49
- egse/filterwheel/eksma/fw8smc4.py +0 -657
- egse/filterwheel/eksma/fw8smc4.yaml +0 -121
- egse/filterwheel/eksma/fw8smc4_cs.py +0 -144
- egse/filterwheel/eksma/fw8smc4_devif.py +0 -473
- egse/filterwheel/eksma/fw8smc4_protocol.py +0 -82
- egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
- egse/filterwheel/eksma/fw8smc5.py +0 -115
- egse/filterwheel/eksma/fw8smc5.yaml +0 -105
- egse/filterwheel/eksma/fw8smc5_controller.py +0 -307
- egse/filterwheel/eksma/fw8smc5_cs.py +0 -141
- egse/filterwheel/eksma/fw8smc5_interface.py +0 -65
- egse/filterwheel/eksma/fw8smc5_simulator.py +0 -29
- egse/filterwheel/eksma/fw8smc5_ui.py +0 -1065
- egse/filterwheel/eksma/testpythonfw.py +0 -215
- egse/fov/__init__.py +0 -65
- egse/fov/fov_hk.py +0 -710
- egse/fov/fov_ui.py +0 -859
- egse/fov/fov_ui_controller.py +0 -140
- egse/fov/fov_ui_model.py +0 -200
- egse/fov/fov_ui_view.py +0 -345
- egse/gimbal/__init__.py +0 -32
- egse/gimbal/symetrie/__init__.py +0 -26
- egse/gimbal/symetrie/alpha.py +0 -586
- egse/gimbal/symetrie/generic_gimbal_ui.py +0 -1521
- egse/gimbal/symetrie/gimbal.py +0 -877
- egse/gimbal/symetrie/gimbal.yaml +0 -168
- egse/gimbal/symetrie/gimbal_cs.py +0 -183
- egse/gimbal/symetrie/gimbal_protocol.py +0 -138
- egse/gimbal/symetrie/gimbal_ui.py +0 -361
- egse/gimbal/symetrie/pmac.py +0 -1006
- egse/gimbal/symetrie/pmac_regex.py +0 -83
- egse/graph.py +0 -132
- egse/gui/__init__.py +0 -47
- egse/gui/buttons.py +0 -378
- egse/gui/focalplane.py +0 -1285
- egse/gui/formatter.py +0 -10
- egse/gui/led.py +0 -162
- egse/gui/limitswitch.py +0 -143
- egse/gui/mechanisms.py +0 -587
- egse/gui/states.py +0 -148
- egse/gui/stripchart.py +0 -729
- egse/gui/styles.qss +0 -48
- egse/gui/switch.py +0 -112
- egse/h5.py +0 -274
- egse/help/__init__.py +0 -0
- egse/help/help_ui.py +0 -126
- egse/hexapod/__init__.py +0 -32
- egse/hexapod/symetrie/__init__.py +0 -137
- egse/hexapod/symetrie/alpha.py +0 -874
- egse/hexapod/symetrie/dynalpha.py +0 -1387
- egse/hexapod/symetrie/hexapod_ui.py +0 -1516
- egse/hexapod/symetrie/pmac.py +0 -1010
- egse/hexapod/symetrie/pmac_regex.py +0 -83
- egse/hexapod/symetrie/puna.py +0 -1167
- egse/hexapod/symetrie/puna.yaml +0 -193
- egse/hexapod/symetrie/puna_cs.py +0 -195
- egse/hexapod/symetrie/puna_protocol.py +0 -134
- egse/hexapod/symetrie/puna_ui.py +0 -433
- egse/hexapod/symetrie/punaplus.py +0 -107
- egse/hexapod/symetrie/zonda.py +0 -872
- egse/hexapod/symetrie/zonda.yaml +0 -337
- egse/hexapod/symetrie/zonda_cs.py +0 -172
- egse/hexapod/symetrie/zonda_devif.py +0 -414
- egse/hexapod/symetrie/zonda_protocol.py +0 -123
- egse/hexapod/symetrie/zonda_ui.py +0 -449
- egse/hk.py +0 -791
- egse/icons/aeu-cs-start.svg +0 -117
- egse/icons/aeu-cs-stop.svg +0 -118
- egse/icons/aeu-cs.svg +0 -107
- egse/icons/aeu_cs-started.svg +0 -112
- egse/icons/aeu_cs-stopped.svg +0 -112
- egse/icons/aeu_cs.svg +0 -55
- egse/icons/alert.svg +0 -1
- egse/icons/arrow-double-left.png +0 -0
- egse/icons/arrow-double-right.png +0 -0
- egse/icons/arrow-up.svg +0 -11
- egse/icons/backward.svg +0 -1
- egse/icons/busy.svg +0 -1
- egse/icons/cleaning.svg +0 -115
- egse/icons/color-scheme.svg +0 -1
- egse/icons/cs-connected-alert.svg +0 -91
- egse/icons/cs-connected-disabled.svg +0 -43
- egse/icons/cs-connected.svg +0 -89
- egse/icons/cs-not-connected.svg +0 -44
- egse/icons/double-left-arrow.svg +0 -1
- egse/icons/double-right-arrow.svg +0 -1
- egse/icons/erase-disabled.svg +0 -19
- egse/icons/erase.svg +0 -59
- egse/icons/fitsgen-start.svg +0 -47
- egse/icons/fitsgen-stop.svg +0 -48
- egse/icons/fitsgen.svg +0 -1
- egse/icons/forward.svg +0 -1
- egse/icons/fov-hk-start.svg +0 -33
- egse/icons/fov-hk-stop.svg +0 -37
- egse/icons/fov-hk.svg +0 -1
- egse/icons/front-desk.svg +0 -1
- egse/icons/home-actioned.svg +0 -15
- egse/icons/home-disabled.svg +0 -15
- egse/icons/home.svg +0 -13
- egse/icons/info.svg +0 -1
- egse/icons/invalid.png +0 -0
- egse/icons/led-green.svg +0 -20
- egse/icons/led-grey.svg +0 -20
- egse/icons/led-orange.svg +0 -20
- egse/icons/led-red.svg +0 -20
- egse/icons/led-square-green.svg +0 -134
- egse/icons/led-square-grey.svg +0 -134
- egse/icons/led-square-orange.svg +0 -134
- egse/icons/led-square-red.svg +0 -134
- egse/icons/limit-switch-all-green.svg +0 -115
- egse/icons/limit-switch-all-red.svg +0 -117
- egse/icons/limit-switch-el+.svg +0 -116
- egse/icons/limit-switch-el-.svg +0 -117
- egse/icons/location-marker.svg +0 -1
- egse/icons/logo-dpu.svg +0 -48
- egse/icons/logo-gimbal.svg +0 -112
- egse/icons/logo-huber.svg +0 -23
- egse/icons/logo-ogse.svg +0 -31
- egse/icons/logo-puna.svg +0 -92
- egse/icons/logo-tcs.svg +0 -29
- egse/icons/logo-zonda.svg +0 -66
- egse/icons/maximize.svg +0 -1
- egse/icons/meter.svg +0 -1
- egse/icons/more.svg +0 -45
- egse/icons/n-fee-hk-start.svg +0 -24
- egse/icons/n-fee-hk-stop.svg +0 -25
- egse/icons/n-fee-hk.svg +0 -83
- egse/icons/observing-off.svg +0 -46
- egse/icons/observing-on.svg +0 -46
- egse/icons/open-document-hdf5.png +0 -0
- egse/icons/open-document-hdf5.svg +0 -21
- egse/icons/ops-mode.svg +0 -1
- egse/icons/play-green.svg +0 -17
- egse/icons/plugged-disabled.svg +0 -27
- egse/icons/plugged.svg +0 -21
- egse/icons/pm_ui.svg +0 -1
- egse/icons/power-button-green.svg +0 -27
- egse/icons/power-button-red.svg +0 -27
- egse/icons/power-button.svg +0 -27
- egse/icons/radar.svg +0 -1
- egse/icons/radioactive.svg +0 -2
- egse/icons/reload.svg +0 -1
- egse/icons/remote-control-off.svg +0 -28
- egse/icons/remote-control-on.svg +0 -28
- egse/icons/repeat-blue.svg +0 -15
- egse/icons/repeat.svg +0 -1
- egse/icons/settings.svg +0 -1
- egse/icons/shrink.svg +0 -1
- egse/icons/shutter.svg +0 -1
- egse/icons/sign-off.svg +0 -1
- egse/icons/sign-on.svg +0 -1
- egse/icons/sim-mode.svg +0 -1
- egse/icons/small-buttons-go.svg +0 -20
- egse/icons/small-buttons-minus.svg +0 -51
- egse/icons/small-buttons-plus.svg +0 -51
- egse/icons/sponge.svg +0 -220
- egse/icons/start-button-disabled.svg +0 -84
- egse/icons/start-button.svg +0 -50
- egse/icons/stop-button-disabled.svg +0 -84
- egse/icons/stop-button.svg +0 -50
- egse/icons/stop-red.svg +0 -17
- egse/icons/stop.svg +0 -1
- egse/icons/switch-disabled-square.svg +0 -87
- egse/icons/switch-disabled.svg +0 -15
- egse/icons/switch-off-square.svg +0 -87
- egse/icons/switch-off.svg +0 -72
- egse/icons/switch-on-square.svg +0 -87
- egse/icons/switch-on.svg +0 -61
- egse/icons/temperature-control.svg +0 -44
- egse/icons/th_ui_logo.svg +0 -1
- egse/icons/unplugged.svg +0 -23
- egse/icons/unvalid.png +0 -0
- egse/icons/user-interface.svg +0 -1
- egse/icons/vacuum.svg +0 -1
- egse/icons/valid.png +0 -0
- egse/icons/zoom-to-pixel-dark.svg +0 -64
- egse/icons/zoom-to-pixel-white.svg +0 -36
- egse/images/big-rotation-stage.png +0 -0
- egse/images/connected-100.png +0 -0
- egse/images/cross.svg +0 -6
- egse/images/disconnected-100.png +0 -0
- egse/images/gui-icon.png +0 -0
- egse/images/home.svg +0 -6
- egse/images/info-icon.png +0 -0
- egse/images/led-black.svg +0 -89
- egse/images/led-green.svg +0 -85
- egse/images/led-orange.svg +0 -85
- egse/images/led-red.svg +0 -85
- egse/images/load-icon.png +0 -0
- egse/images/load-setup.png +0 -0
- egse/images/load.png +0 -0
- egse/images/pause.png +0 -0
- egse/images/play-button.svg +0 -8
- egse/images/play.png +0 -0
- egse/images/process-status.png +0 -0
- egse/images/restart.png +0 -0
- egse/images/search.png +0 -0
- egse/images/sma.png +0 -0
- egse/images/start.png +0 -0
- egse/images/stop-button.svg +0 -8
- egse/images/stop.png +0 -0
- egse/images/switch-off.svg +0 -48
- egse/images/switch-on.svg +0 -48
- egse/images/undo.png +0 -0
- egse/images/update-button.svg +0 -11
- egse/imageviewer/exposureselection.py +0 -475
- egse/imageviewer/imageviewer.py +0 -198
- egse/imageviewer/matchfocalplane.py +0 -179
- egse/imageviewer/subfieldposition.py +0 -133
- egse/lampcontrol/__init__.py +0 -4
- egse/lampcontrol/beaglebone/beaglebone.py +0 -178
- egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
- egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
- egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
- egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
- egse/lampcontrol/energetiq/__init__.py +0 -22
- egse/lampcontrol/energetiq/eq99.yaml +0 -98
- egse/lampcontrol/energetiq/lampEQ99.py +0 -283
- egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
- egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
- egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
- egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -71
- egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
- egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
- egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
- egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
- egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
- egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
- egse/lib/ximc/libximc.framework/libbindy.so +0 -0
- egse/lib/ximc/libximc.framework/libximc +0 -0
- egse/lib/ximc/libximc.framework/libximc.so +0 -0
- egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
- egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
- egse/lib/ximc/pyximc.py +0 -922
- egse/listener.py +0 -179
- egse/logger/__init__.py +0 -243
- egse/logger/log_cs.py +0 -321
- egse/metrics.py +0 -102
- egse/mixin.py +0 -464
- egse/monitoring.py +0 -95
- egse/ni/alarms/__init__.py +0 -26
- egse/ni/alarms/cdaq9375.py +0 -300
- egse/ni/alarms/cdaq9375.yaml +0 -89
- egse/ni/alarms/cdaq9375_cs.py +0 -130
- egse/ni/alarms/cdaq9375_devif.py +0 -183
- egse/ni/alarms/cdaq9375_protocol.py +0 -48
- egse/obs_inspection.py +0 -165
- egse/observer.py +0 -41
- egse/obsid.py +0 -163
- egse/powermeter/__init__.py +0 -0
- egse/powermeter/ni/__init__.py +0 -38
- egse/powermeter/ni/cdaq9184.py +0 -224
- egse/powermeter/ni/cdaq9184.yaml +0 -73
- egse/powermeter/ni/cdaq9184_cs.py +0 -130
- egse/powermeter/ni/cdaq9184_devif.py +0 -201
- egse/powermeter/ni/cdaq9184_protocol.py +0 -48
- egse/powermeter/ni/cdaq9184_ui.py +0 -544
- egse/powermeter/thorlabs/__init__.py +0 -25
- egse/powermeter/thorlabs/pm100a.py +0 -380
- egse/powermeter/thorlabs/pm100a.yaml +0 -132
- egse/powermeter/thorlabs/pm100a_cs.py +0 -136
- egse/powermeter/thorlabs/pm100a_devif.py +0 -127
- egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
- egse/powermeter/thorlabs/pm100a_ui.py +0 -725
- egse/process.py +0 -451
- egse/procman/__init__.py +0 -834
- egse/procman/cannot_start_process_popup.py +0 -43
- egse/procman/procman.yaml +0 -49
- egse/procman/procman_cs.py +0 -201
- egse/procman/procman_ui.py +0 -2081
- egse/protocol.py +0 -605
- egse/proxy.py +0 -531
- egse/randomwalk.py +0 -140
- egse/reg.py +0 -585
- egse/reload.py +0 -122
- egse/reprocess.py +0 -693
- egse/resource.py +0 -333
- egse/rmap.py +0 -406
- egse/rst.py +0 -135
- egse/search.py +0 -182
- egse/serialdevice.py +0 -190
- egse/services.py +0 -247
- egse/services.yaml +0 -68
- egse/settings.py +0 -379
- egse/settings.yaml +0 -980
- egse/setup.py +0 -1181
- egse/shutter/__init__.py +0 -0
- egse/shutter/thorlabs/__init__.py +0 -19
- egse/shutter/thorlabs/ksc101.py +0 -205
- egse/shutter/thorlabs/ksc101.yaml +0 -105
- egse/shutter/thorlabs/ksc101_cs.py +0 -136
- egse/shutter/thorlabs/ksc101_devif.py +0 -201
- egse/shutter/thorlabs/ksc101_protocol.py +0 -71
- egse/shutter/thorlabs/ksc101_ui.py +0 -548
- egse/shutter/thorlabs/sc10.py +0 -82
- egse/shutter/thorlabs/sc10.yaml +0 -52
- egse/shutter/thorlabs/sc10_controller.py +0 -81
- egse/shutter/thorlabs/sc10_cs.py +0 -108
- egse/shutter/thorlabs/sc10_interface.py +0 -25
- egse/shutter/thorlabs/sc10_simulator.py +0 -30
- egse/simulator.py +0 -41
- egse/slack.py +0 -61
- egse/socketdevice.py +0 -218
- egse/sockets.py +0 -218
- egse/spw.py +0 -1401
- egse/stages/__init__.py +0 -12
- egse/stages/aerotech/ensemble.py +0 -245
- egse/stages/aerotech/ensemble.yaml +0 -205
- egse/stages/aerotech/ensemble_controller.py +0 -275
- egse/stages/aerotech/ensemble_cs.py +0 -110
- egse/stages/aerotech/ensemble_interface.py +0 -132
- egse/stages/aerotech/ensemble_parameters.py +0 -433
- egse/stages/aerotech/ensemble_simulator.py +0 -27
- egse/stages/aerotech/mgse_sim.py +0 -188
- egse/stages/arun/smd3.py +0 -110
- egse/stages/arun/smd3.yaml +0 -68
- egse/stages/arun/smd3_controller.py +0 -470
- egse/stages/arun/smd3_cs.py +0 -112
- egse/stages/arun/smd3_interface.py +0 -53
- egse/stages/arun/smd3_simulator.py +0 -27
- egse/stages/arun/smd3_stop.py +0 -16
- egse/stages/huber/__init__.py +0 -49
- egse/stages/huber/smc9300.py +0 -920
- egse/stages/huber/smc9300.yaml +0 -63
- egse/stages/huber/smc9300_cs.py +0 -178
- egse/stages/huber/smc9300_devif.py +0 -345
- egse/stages/huber/smc9300_protocol.py +0 -113
- egse/stages/huber/smc9300_sim.py +0 -547
- egse/stages/huber/smc9300_ui.py +0 -973
- egse/state.py +0 -173
- egse/statemachine.py +0 -274
- egse/storage/__init__.py +0 -1067
- egse/storage/persistence.py +0 -2295
- egse/storage/storage.yaml +0 -79
- egse/storage/storage_cs.py +0 -231
- egse/styles/dark.qss +0 -343
- egse/styles/default.qss +0 -48
- egse/synoptics/__init__.py +0 -417
- egse/synoptics/syn.yaml +0 -9
- egse/synoptics/syn_cs.py +0 -195
- egse/system.py +0 -1611
- egse/tcs/__init__.py +0 -14
- egse/tcs/tcs.py +0 -879
- egse/tcs/tcs.yaml +0 -14
- egse/tcs/tcs_cs.py +0 -202
- egse/tcs/tcs_devif.py +0 -292
- egse/tcs/tcs_protocol.py +0 -180
- egse/tcs/tcs_sim.py +0 -177
- egse/tcs/tcs_ui.py +0 -543
- egse/tdms.py +0 -171
- egse/tempcontrol/__init__.py +0 -23
- egse/tempcontrol/agilent/agilent34970.py +0 -109
- egse/tempcontrol/agilent/agilent34970.yaml +0 -44
- egse/tempcontrol/agilent/agilent34970_cs.py +0 -114
- egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
- egse/tempcontrol/agilent/agilent34970_protocol.py +0 -96
- egse/tempcontrol/agilent/agilent34972.py +0 -111
- egse/tempcontrol/agilent/agilent34972.yaml +0 -44
- egse/tempcontrol/agilent/agilent34972_cs.py +0 -115
- egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
- egse/tempcontrol/agilent/agilent34972_protocol.py +0 -98
- egse/tempcontrol/beaglebone/beaglebone.py +0 -341
- egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
- egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
- egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -134
- egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -674
- egse/tempcontrol/digalox/digalox.py +0 -115
- egse/tempcontrol/digalox/digalox.yaml +0 -36
- egse/tempcontrol/digalox/digalox_cs.py +0 -108
- egse/tempcontrol/digalox/digalox_protocol.py +0 -56
- egse/tempcontrol/keithley/__init__.py +0 -33
- egse/tempcontrol/keithley/daq6510.py +0 -662
- egse/tempcontrol/keithley/daq6510.yaml +0 -105
- egse/tempcontrol/keithley/daq6510_cs.py +0 -163
- egse/tempcontrol/keithley/daq6510_devif.py +0 -343
- egse/tempcontrol/keithley/daq6510_protocol.py +0 -79
- egse/tempcontrol/keithley/daq6510_sim.py +0 -186
- egse/tempcontrol/lakeshore/__init__.py +0 -33
- egse/tempcontrol/lakeshore/lsci.py +0 -361
- egse/tempcontrol/lakeshore/lsci.yaml +0 -162
- egse/tempcontrol/lakeshore/lsci_cs.py +0 -174
- egse/tempcontrol/lakeshore/lsci_devif.py +0 -292
- egse/tempcontrol/lakeshore/lsci_protocol.py +0 -76
- egse/tempcontrol/lakeshore/lsci_ui.py +0 -387
- egse/tempcontrol/ni/__init__.py +0 -0
- egse/tempcontrol/spid/spid.py +0 -109
- egse/tempcontrol/spid/spid.yaml +0 -81
- egse/tempcontrol/spid/spid_controller.py +0 -279
- egse/tempcontrol/spid/spid_cs.py +0 -136
- egse/tempcontrol/spid/spid_protocol.py +0 -107
- egse/tempcontrol/spid/spid_ui.py +0 -723
- egse/tempcontrol/srs/__init__.py +0 -22
- egse/tempcontrol/srs/ptc10.py +0 -867
- egse/tempcontrol/srs/ptc10.yaml +0 -227
- egse/tempcontrol/srs/ptc10_cs.py +0 -128
- egse/tempcontrol/srs/ptc10_devif.py +0 -116
- egse/tempcontrol/srs/ptc10_protocol.py +0 -39
- egse/tempcontrol/srs/ptc10_ui.py +0 -906
- egse/ups/apc/apc.py +0 -236
- egse/ups/apc/apc.yaml +0 -45
- egse/ups/apc/apc_cs.py +0 -101
- egse/ups/apc/apc_protocol.py +0 -125
- egse/user.yaml +0 -7
- egse/vacuum/beaglebone/beaglebone.py +0 -149
- egse/vacuum/beaglebone/beaglebone.yaml +0 -44
- egse/vacuum/beaglebone/beaglebone_cs.py +0 -108
- egse/vacuum/beaglebone/beaglebone_devif.py +0 -159
- egse/vacuum/beaglebone/beaglebone_protocol.py +0 -192
- egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
- egse/vacuum/instrutech/igm402.py +0 -91
- egse/vacuum/instrutech/igm402.yaml +0 -90
- egse/vacuum/instrutech/igm402_controller.py +0 -124
- egse/vacuum/instrutech/igm402_cs.py +0 -108
- egse/vacuum/instrutech/igm402_interface.py +0 -49
- egse/vacuum/instrutech/igm402_simulator.py +0 -36
- egse/vacuum/keller/kellerBus.py +0 -256
- egse/vacuum/keller/leo3.py +0 -100
- egse/vacuum/keller/leo3.yaml +0 -38
- egse/vacuum/keller/leo3_controller.py +0 -81
- egse/vacuum/keller/leo3_cs.py +0 -101
- egse/vacuum/keller/leo3_interface.py +0 -33
- egse/vacuum/mks/evision.py +0 -86
- egse/vacuum/mks/evision.yaml +0 -75
- egse/vacuum/mks/evision_cs.py +0 -101
- egse/vacuum/mks/evision_devif.py +0 -313
- egse/vacuum/mks/evision_interface.py +0 -60
- egse/vacuum/mks/evision_simulator.py +0 -24
- egse/vacuum/mks/evision_ui.py +0 -701
- egse/vacuum/pfeiffer/acp40.py +0 -87
- egse/vacuum/pfeiffer/acp40.yaml +0 -60
- egse/vacuum/pfeiffer/acp40_controller.py +0 -117
- egse/vacuum/pfeiffer/acp40_cs.py +0 -109
- egse/vacuum/pfeiffer/acp40_interface.py +0 -40
- egse/vacuum/pfeiffer/acp40_simulator.py +0 -37
- egse/vacuum/pfeiffer/tc400.py +0 -87
- egse/vacuum/pfeiffer/tc400.yaml +0 -83
- egse/vacuum/pfeiffer/tc400_controller.py +0 -136
- egse/vacuum/pfeiffer/tc400_cs.py +0 -109
- egse/vacuum/pfeiffer/tc400_interface.py +0 -70
- egse/vacuum/pfeiffer/tc400_simulator.py +0 -35
- egse/vacuum/pfeiffer/tpg261.py +0 -80
- egse/vacuum/pfeiffer/tpg261.yaml +0 -66
- egse/vacuum/pfeiffer/tpg261_controller.py +0 -150
- egse/vacuum/pfeiffer/tpg261_cs.py +0 -109
- egse/vacuum/pfeiffer/tpg261_interface.py +0 -59
- egse/vacuum/pfeiffer/tpg261_simulator.py +0 -23
- egse/version.py +0 -174
- egse/visitedpositions.py +0 -398
- egse/windowing.py +0 -213
- egse/zmq/__init__.py +0 -28
- egse/zmq/spw.py +0 -160
- egse/zmq_ser.py +0 -41
- scripts/alerts/cold.yaml +0 -278
- scripts/alerts/example_alerts.yaml +0 -54
- scripts/alerts/transition.yaml +0 -14
- scripts/alerts/warm.yaml +0 -49
- scripts/analyse_n_fee_hk_data.py +0 -52
- scripts/check_hdf5_files.py +0 -192
- scripts/check_register_sync.py +0 -47
- scripts/check_tcs_calib_coef.py +0 -90
- scripts/correct_ccd_cold_temperature_cal.py +0 -157
- scripts/create_hdf5_report.py +0 -293
- scripts/csl_model.py +0 -420
- scripts/csl_restore_setup.py +0 -229
- scripts/export-grafana-dashboards.py +0 -49
- scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -54
- scripts/fdir/fdir_table.yaml +0 -70
- scripts/fdir/fdir_test_recovery.py +0 -10
- scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
- scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -61
- scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -59
- scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
- scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
- scripts/fix_csv.py +0 -80
- scripts/ias/correct_ccd_temp_cal_elfique.py +0 -43
- scripts/ias/correct_ccd_temp_cal_floreffe.py +0 -43
- scripts/ias/correct_trp_swap_achel.py +0 -199
- scripts/inta/correct_ccd_temp_cal_duvel.py +0 -43
- scripts/inta/correct_ccd_temp_cal_gueuze.py +0 -43
- scripts/n_fee_supply_voltage_calculation.py +0 -92
- scripts/playground.py +0 -30
- scripts/print_hdf5_hk_data.py +0 -68
- scripts/print_register_map.py +0 -43
- scripts/remove_lines_between_matches.py +0 -188
- scripts/sron/commanding/control_heaters.py +0 -44
- scripts/sron/commanding/pumpdown.py +0 -46
- scripts/sron/commanding/set_pid_setpoint.py +0 -19
- scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
- scripts/sron/commanding/shutdown_pumps.py +0 -33
- scripts/sron/correct_mgse_coordinates_brigand_chimay.py +0 -272
- scripts/sron/correct_trp_swap_brigand.py +0 -204
- scripts/sron/gimbal_conversions.py +0 -75
- scripts/sron/tm_gen/tm_gen_agilent.py +0 -37
- scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
- scripts/sron/tm_gen/tm_gen_spid.py +0 -13
- scripts/update_operational_cgse.py +0 -268
- scripts/update_operational_cgse_old.py +0 -273
scripts/csl_model.py
DELETED
|
@@ -1,420 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
"""
|
|
4
|
-
Created on Tue Dec 10 17:09:04 2019
|
|
5
|
-
|
|
6
|
-
@author: pierre
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
"""
|
|
10
|
-
MGSE MODEL wrt Coordinate Systems
|
|
11
|
-
|
|
12
|
-
Two models are necessary, representing the same MGSE, but on diff. bases
|
|
13
|
-
* model M (for Mec)
|
|
14
|
-
- based on GL_FIX as a master
|
|
15
|
-
- filled progressively during the mechanical alignment of the MGSE
|
|
16
|
-
- never used to represent any actual movement
|
|
17
|
-
- only used to gather information, and then it is transfered to model A
|
|
18
|
-
|
|
19
|
-
* model A (for Alignment, or Active)
|
|
20
|
-
- based on HEX_MEC as a master
|
|
21
|
-
- filled in one go from a model M once it's complete
|
|
22
|
-
- used for the entire optical alignment
|
|
23
|
-
|
|
24
|
-
"""
|
|
25
|
-
|
|
26
|
-
import sys
|
|
27
|
-
|
|
28
|
-
sys.path
|
|
29
|
-
|
|
30
|
-
import numpy as np
|
|
31
|
-
|
|
32
|
-
# egse
|
|
33
|
-
from egse.coordinates.referenceFrame import ReferenceFrame
|
|
34
|
-
|
|
35
|
-
# Hexapod
|
|
36
|
-
from egse.hexapod.symetrie.puna import PunaController
|
|
37
|
-
from egse.hexapod.symetrie.puna import PunaSimulator
|
|
38
|
-
from egse.hexapod.symetrie.puna import HexapodError
|
|
39
|
-
|
|
40
|
-
from egse.coordinates.point import Points
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def printm(matrix, rounding=2):
|
|
44
|
-
import numpy as np
|
|
45
|
-
print(np.round(matrix, rounding))
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
################################################################################
|
|
49
|
-
|
|
50
|
-
# PREDEFINED CONSTANTS
|
|
51
|
-
# Rotation - identity
|
|
52
|
-
rdef = np.identity(3)
|
|
53
|
-
# Translation - null
|
|
54
|
-
tdef = np.array([0, 0, 0])
|
|
55
|
-
# Zoom - unit
|
|
56
|
-
zdef = np.array([1, 1, 1])
|
|
57
|
-
# Shear
|
|
58
|
-
sdef = np.array([0, 0, 0])
|
|
59
|
-
|
|
60
|
-
pi4 = np.pi / 4.
|
|
61
|
-
I = np.identity(4)
|
|
62
|
-
|
|
63
|
-
# Rotation around static axis, and around x, y and z in that order
|
|
64
|
-
rot_config = "sxyz"
|
|
65
|
-
|
|
66
|
-
try:
|
|
67
|
-
hex = PunaController()
|
|
68
|
-
hex.connect()
|
|
69
|
-
except HexapodError:
|
|
70
|
-
hex = PunaSimulator()
|
|
71
|
-
|
|
72
|
-
print(f"Hexapod is a simulator: {hex.is_simulator()}")
|
|
73
|
-
|
|
74
|
-
degrees = True
|
|
75
|
-
|
|
76
|
-
################################################################################
|
|
77
|
-
# MODEL M : mechanical alignment of the MGSE
|
|
78
|
-
################################################################################
|
|
79
|
-
|
|
80
|
-
## TODO : READ translations and rotations FROM CALIBRATION FILE
|
|
81
|
-
testtr = np.array([-2, -2, -2])
|
|
82
|
-
testrot = np.array([-3, -4, -5])
|
|
83
|
-
|
|
84
|
-
"""
|
|
85
|
-
## WORKING WITH GL_FIX = master until the end of the alignment.
|
|
86
|
-
|
|
87
|
-
# Master
|
|
88
|
-
master0 = ReferenceFrame.createMaster()
|
|
89
|
-
|
|
90
|
-
# GL_FIX = Identity
|
|
91
|
-
glfix0 = ReferenceFrame(transformation=np.identity(4), ref=master0,name="glfix0", rot_config=rot_config)
|
|
92
|
-
glfix0.addLink(master0)#,transformation=np.identity(4))
|
|
93
|
-
|
|
94
|
-
#print(glfix in masterM.linkedTo)
|
|
95
|
-
|
|
96
|
-
# GL_ROT --> GL_FIX -- no link
|
|
97
|
-
glrot0 = ReferenceFrame(transformation=np.identity(4), ref=glfix0,name="glrot0", rot_config=rot_config)
|
|
98
|
-
|
|
99
|
-
# GL_ISO --> GL_ROT
|
|
100
|
-
tr_gliso = testtr
|
|
101
|
-
rot_gliso = testrot
|
|
102
|
-
gliso0 = ReferenceFrame.fromTranslationRotation(tr_gliso,rot_gliso,rot_config=rot_config, ref=glrot0,name="gliso0",degrees=degrees)
|
|
103
|
-
gliso0.addLink(glrot0)#,transformation=gliso.transformation)
|
|
104
|
-
"""
|
|
105
|
-
|
|
106
|
-
# Master
|
|
107
|
-
master0fix = ReferenceFrame.createMaster()
|
|
108
|
-
|
|
109
|
-
##################
|
|
110
|
-
# REFERENCE FRAMES ## A. MGSE ALIGNMENT : GL_FIX as a master
|
|
111
|
-
##################
|
|
112
|
-
|
|
113
|
-
# GL_FIX = Identity
|
|
114
|
-
glfix0fix = ReferenceFrame(transformation=np.identity(4), ref=master0fix, name="glfix0fix", rot_config=rot_config)
|
|
115
|
-
glfix0fix.addLink(master0fix)
|
|
116
|
-
|
|
117
|
-
# print(glfix in masterM.linkedTo)
|
|
118
|
-
|
|
119
|
-
# GL_ROT --> GL_FIX -- no link
|
|
120
|
-
glrot0fix = ReferenceFrame(transformation=np.identity(4), ref=glfix0fix, name="glrot0fix", rot_config=rot_config)
|
|
121
|
-
|
|
122
|
-
# GL_ISO --> GL_ROT
|
|
123
|
-
tr_gliso = testtr
|
|
124
|
-
rot_gliso = testrot
|
|
125
|
-
gliso0fix = ReferenceFrame.fromTranslationRotation(tr_gliso, rot_gliso, rot_config=rot_config, ref=glrot0fix,
|
|
126
|
-
name="gliso0fix", degrees=degrees)
|
|
127
|
-
gliso0fix.addLink(glrot0fix)
|
|
128
|
-
|
|
129
|
-
##################
|
|
130
|
-
# CHANGE OF REFERENCE --> GL_ISO BECOMES THE MASTER
|
|
131
|
-
##################
|
|
132
|
-
|
|
133
|
-
# Master
|
|
134
|
-
master0 = ReferenceFrame.createMaster()
|
|
135
|
-
|
|
136
|
-
gliso0 = ReferenceFrame(transformation=np.identity(4), ref=master0, name="gliso0", rot_config=rot_config)
|
|
137
|
-
gliso0.addLink(master0)
|
|
138
|
-
|
|
139
|
-
# GL_ROT --> GL_ISO
|
|
140
|
-
transformation = glrot0fix.getActiveTransformationFrom(gliso0fix)
|
|
141
|
-
glrot0 = ReferenceFrame(transformation=transformation, ref=gliso0, name="glrot0", rot_config=rot_config)
|
|
142
|
-
glrot0.addLink(gliso0)
|
|
143
|
-
|
|
144
|
-
# GL_FIX
|
|
145
|
-
transformation = glfix0fix.getActiveTransformationFrom(glrot0fix)
|
|
146
|
-
glfix0 = ReferenceFrame(transformation=transformation, ref=glrot0, name="glfix0", rot_config=rot_config)
|
|
147
|
-
|
|
148
|
-
##################
|
|
149
|
-
# PROCEED DEFINING THE MODEL. GL_ISO IS NOW THE MASTER
|
|
150
|
-
##################
|
|
151
|
-
|
|
152
|
-
# HEX_IS0 --> GL_ISO
|
|
153
|
-
tr_hexiso = testtr
|
|
154
|
-
rot_hexiso = testrot
|
|
155
|
-
hexiso0 = ReferenceFrame.fromTranslationRotation(tr_hexiso, rot_hexiso, rot_config=rot_config, ref=gliso0,
|
|
156
|
-
name="hexiso0", degrees=degrees)
|
|
157
|
-
hexiso0.addLink(gliso0)
|
|
158
|
-
|
|
159
|
-
# HEX_MEC --> HEX_ISO
|
|
160
|
-
hexmec0 = ReferenceFrame(transformation=np.identity(4), ref=hexiso0, name="hexmec0", rot_config=rot_config)
|
|
161
|
-
hexmec0.addLink(hexiso0)
|
|
162
|
-
|
|
163
|
-
# HEX_PLT --> HEX_MEC -- no link
|
|
164
|
-
tr_hexplt = testtr
|
|
165
|
-
rot_hexplt = testrot
|
|
166
|
-
hexplt0 = ReferenceFrame(transformation=np.identity(4), ref=hexmec0, name="hexplt0", rot_config=rot_config)
|
|
167
|
-
|
|
168
|
-
# FPA_ALN --> GL_ISO -- no link
|
|
169
|
-
tr_fpaaln = testtr
|
|
170
|
-
rot_fpaaln = testrot
|
|
171
|
-
fpaaln0 = ReferenceFrame.fromTranslationRotation(tr_fpaaln, rot_fpaaln, rot_config=rot_config, ref=gliso0,
|
|
172
|
-
name="fpaaln0", degrees=degrees)
|
|
173
|
-
|
|
174
|
-
# FPA_SEN --> FPA_ALN
|
|
175
|
-
tr_fpasen = testtr
|
|
176
|
-
rot_fpasen = testrot
|
|
177
|
-
fpasen0 = ReferenceFrame.fromTranslationRotation(tr_fpasen, rot_fpasen, rot_config=rot_config, ref=fpaaln0,
|
|
178
|
-
name="fpasen0", degrees=degrees)
|
|
179
|
-
fpasen0.addLink(fpaaln0)
|
|
180
|
-
|
|
181
|
-
# HEX_OBJ --> FPA_SEN
|
|
182
|
-
transformation = fpasen0.getActiveTransformationFrom(hexplt0)
|
|
183
|
-
hexobj0 = ReferenceFrame(transformation=transformation, ref=hexplt0, name="hexobj0", rot_config=rot_config)
|
|
184
|
-
hexobj0.addLink(fpasen0)
|
|
185
|
-
|
|
186
|
-
# FPA_MEC --> FPA_ALN
|
|
187
|
-
tr_fpamec = testtr
|
|
188
|
-
rot_fpamec = testrot
|
|
189
|
-
fpamec0 = ReferenceFrame.fromTranslationRotation(tr_fpamec, rot_fpamec, rot_config=rot_config, ref=fpaaln0,
|
|
190
|
-
name="fpamec0", degrees=degrees)
|
|
191
|
-
fpamec0.addLink(fpaaln0)
|
|
192
|
-
|
|
193
|
-
# THE FOLLOWING ARE FOR CSL PURPOSE : TOU_ALN, TOU_OPT, CAM_MEC, MARI_ALN, CAM_BOR
|
|
194
|
-
# MARI_ALN wrt TOU_ALN and CAM_BOR wrt TOU_ALN are deliverables from CSL to the TH and the CM resp.
|
|
195
|
-
# The order in which we get the absolute location of these systems is TBD, cos it may differ
|
|
196
|
-
# from the order in which they are derived, because some may only positioned in orientation
|
|
197
|
-
# to start with. TBD.
|
|
198
|
-
|
|
199
|
-
# Originally TOU_ALN only measured in orientation, no abs. location wrt GL_ISO
|
|
200
|
-
# Changed later on : will be provided wrt TOU_MEC
|
|
201
|
-
# in order to be able to locate CAM_BOR (deliverable) and express MARI_ALN (deliverable)
|
|
202
|
-
|
|
203
|
-
# TOU_MEC --> GL_ISO
|
|
204
|
-
tr_toumec = testtr
|
|
205
|
-
rot_toumec = testrot
|
|
206
|
-
toumec0 = ReferenceFrame.fromTranslationRotation(tr_toumec, rot_toumec, rot_config=rot_config, ref=gliso0,
|
|
207
|
-
name="toumec0", degrees=degrees)
|
|
208
|
-
toumec0.addLink(gliso0)
|
|
209
|
-
|
|
210
|
-
# TOU_ALN --> TOU_MEC --> here or in B.
|
|
211
|
-
tr_toualn = testtr
|
|
212
|
-
rot_toualn = testrot
|
|
213
|
-
toualn0 = ReferenceFrame.fromTranslationRotation(tr_toualn, rot_toualn, rot_config=rot_config, ref=toumec0,
|
|
214
|
-
name="toualn0", degrees=degrees)
|
|
215
|
-
toualn0.addLink(toumec0)
|
|
216
|
-
|
|
217
|
-
# MARI_ALN --> TOU_ALN --> here or in B.
|
|
218
|
-
tr_marialn = testtr
|
|
219
|
-
rot_marialn = testrot
|
|
220
|
-
marialn0 = ReferenceFrame.fromTranslationRotation(tr_marialn, rot_marialn, rot_config=rot_config, ref=toualn0,
|
|
221
|
-
name="marialn0", degrees=degrees)
|
|
222
|
-
marialn0.addLink(toualn0)
|
|
223
|
-
|
|
224
|
-
# TOU_OPT --> TOU_ALN -- optional
|
|
225
|
-
tr_touopt = testtr
|
|
226
|
-
rot_touopt = testrot
|
|
227
|
-
touopt0 = ReferenceFrame.fromTranslationRotation(tr_touopt, rot_touopt, rot_config=rot_config, ref=toualn0,
|
|
228
|
-
name="touopt0", degrees=degrees)
|
|
229
|
-
touopt0.addLink(toualn0)
|
|
230
|
-
|
|
231
|
-
# CAM_MEC --> TOU_ALN -- optional
|
|
232
|
-
tr_cammec = testtr
|
|
233
|
-
rot_cammec = testrot
|
|
234
|
-
cammec0 = ReferenceFrame.fromTranslationRotation(tr_cammec, rot_cammec, rot_config=rot_config, ref=toualn0,
|
|
235
|
-
name="cammec0", degrees=degrees)
|
|
236
|
-
cammec0.addLink(toualn0)
|
|
237
|
-
|
|
238
|
-
# Note we establish the full model and then transfer it to another master (hexmec)
|
|
239
|
-
# In reality a number of frames could be established directly in the final master:
|
|
240
|
-
# fpasen, fpamec, toul6, hexusr
|
|
241
|
-
# In practice they will certainly be communicated at this stage -> more logical this way
|
|
242
|
-
|
|
243
|
-
# TOU_L6 --> TOU_MEC
|
|
244
|
-
tr_toul6 = testtr
|
|
245
|
-
rot_toul6 = testrot
|
|
246
|
-
toul60 = ReferenceFrame.fromTranslationRotation(tr_toul6, rot_toul6, rot_config=rot_config, ref=toumec0, name="toul60",
|
|
247
|
-
degrees=degrees)
|
|
248
|
-
toul60.addLink(toumec0)
|
|
249
|
-
|
|
250
|
-
# HEX_USR
|
|
251
|
-
# USR, defined in MEC --> first define a virtual frame in TOU_L6, then redefine it in HEX_MEC
|
|
252
|
-
tr_hexusr = [0, 0, -1.65]
|
|
253
|
-
rot_hexusr = [0, 0, 0]
|
|
254
|
-
hexusrtou = ReferenceFrame.fromTranslationRotation(tr_hexusr, rot_hexusr, rot_config=rot_config, ref=toul60,
|
|
255
|
-
name="hexusrtou", degrees=degrees)
|
|
256
|
-
transformation = hexusrtou.getActiveTransformationFrom(hexmec0)
|
|
257
|
-
hexusr0 = ReferenceFrame(transformation=transformation, ref=hexmec0, name="hexusr0", rot_config=rot_config)
|
|
258
|
-
hexusr0.addLink(hexmec0)
|
|
259
|
-
|
|
260
|
-
del hexusrtou
|
|
261
|
-
|
|
262
|
-
# HEX_OBUSR
|
|
263
|
-
transformation = hexusr0.getActiveTransformationTo(hexobj0)
|
|
264
|
-
hexobusr0 = ReferenceFrame(transformation=transformation, rot_config=rot_config, ref=hexusr0, name="hexobusr0")
|
|
265
|
-
hexobusr0.addLink(hexobj0)
|
|
266
|
-
|
|
267
|
-
"""
|
|
268
|
-
# At this stage, hexapod movements could intervene to recenter the FPA wrt TOU
|
|
269
|
-
|
|
270
|
-
# This should be delayed as long as hexusr (L6S2) and hexobj (FPA_SEN)
|
|
271
|
-
# haven't been properly defined, the avoidance volume can't be checked
|
|
272
|
-
|
|
273
|
-
# From this point on it's doable though (use is_avoidance_ok)
|
|
274
|
-
|
|
275
|
-
"""
|
|
276
|
-
|
|
277
|
-
##################
|
|
278
|
-
# REFERENCE FRAMES ## B. ALIGNMENT : TRANSFER MASTER to HEX_MEC & MODEL SIMPLIFICATION
|
|
279
|
-
##################
|
|
280
|
-
|
|
281
|
-
master = ReferenceFrame.createMaster()
|
|
282
|
-
|
|
283
|
-
# HEX_MEC
|
|
284
|
-
hexmec = ReferenceFrame(transformation=np.identity(4), ref=master, name="hexmec", rot_config=rot_config)
|
|
285
|
-
hexmec.addLink(master)
|
|
286
|
-
|
|
287
|
-
# HEX_PLT
|
|
288
|
-
transformation = hexplt0.getActiveTransformationFrom(hexmec0)
|
|
289
|
-
hexplt = ReferenceFrame(transformation=transformation, ref=hexmec, name="hexplt", rot_config=rot_config)
|
|
290
|
-
|
|
291
|
-
# HEX_OBJ
|
|
292
|
-
transformation = hexobj0.getActiveTransformationFrom(hexplt0)
|
|
293
|
-
hexobj = ReferenceFrame(transformation=transformation, ref=hexplt, name="hexobj", rot_config=rot_config)
|
|
294
|
-
hexobj.addLink(hexplt)
|
|
295
|
-
|
|
296
|
-
# FPA_MEC
|
|
297
|
-
transformation = fpamec0.getActiveTransformationFrom(hexobj0)
|
|
298
|
-
fpamec = ReferenceFrame(transformation=transformation, ref=hexobj, name="fpamec", rot_config=rot_config)
|
|
299
|
-
fpamec.addLink(hexobj)
|
|
300
|
-
|
|
301
|
-
# TOU_MEC
|
|
302
|
-
transformation = toumec0.getActiveTransformationFrom(hexmec0)
|
|
303
|
-
toumec = ReferenceFrame(transformation=transformation, ref=hexmec, name="toumec", rot_config=rot_config)
|
|
304
|
-
toumec.addLink(hexmec)
|
|
305
|
-
|
|
306
|
-
# HEX_USR
|
|
307
|
-
transformation = hexusr0.getActiveTransformationFrom(hexmec0)
|
|
308
|
-
hexusr = ReferenceFrame(transformation=transformation, ref=hexmec, name="hexusr", rot_config=rot_config)
|
|
309
|
-
hexusr.addLink(hexmec)
|
|
310
|
-
|
|
311
|
-
# CHANGE HEX_USR DEFINITION IN THE HEXAPOD CONTROLLER
|
|
312
|
-
|
|
313
|
-
# HEX_OBUSR
|
|
314
|
-
transformation = hexobj0.getActiveTransformationFrom(hexusr0)
|
|
315
|
-
hexobusr = ReferenceFrame(transformation=transformation, ref=hexusr, name="hexobusr", rot_config=rot_config)
|
|
316
|
-
hexobusr.addLink(hexobj)
|
|
317
|
-
|
|
318
|
-
# Deliverables : MARI_ALN & CAM_BOR --> unnecessary for the alignment
|
|
319
|
-
# but easier to represent them and get them for free in the end
|
|
320
|
-
# TOU_ALN --> TOU_MEC
|
|
321
|
-
transformation = toualn0.getActiveTransformationFrom(toumec0)
|
|
322
|
-
toualn = ReferenceFrame(transformation=transformation, ref=toumec, name="toualn", rot_config=rot_config)
|
|
323
|
-
toualn.addLink(toumec)
|
|
324
|
-
|
|
325
|
-
# MARI_ALN --> TOU_ALN
|
|
326
|
-
transformation = marialn0.getActiveTransformationFrom(toualn0)
|
|
327
|
-
marialn = ReferenceFrame(transformation=transformation, ref=toualn, name="marialn", rot_config=rot_config)
|
|
328
|
-
marialn.addLink(toualn)
|
|
329
|
-
|
|
330
|
-
######
|
|
331
|
-
# CAM_BOR is only established after the alignment. This is a "placeholder"
|
|
332
|
-
# CAM_BOR is // TOU_OPT with its origin == that of FPA_SEN
|
|
333
|
-
# 0. get TOU_OPT (fixed wrt TOU_ALN)
|
|
334
|
-
# 1. Define CAM_BOR == TOU_OPT with CAM_BOR.ref = TOU_ALN
|
|
335
|
-
# 2. Determine the translation vector from TOU_OPT.origin to FPA_SEN.origin (HEX_OBJ.origin)
|
|
336
|
-
# 3. Apply that translation to CAM_BOR. It is now properly defined
|
|
337
|
-
# 4. Deliverables : its translation-rotation vectors wrt TOU_ALN
|
|
338
|
-
|
|
339
|
-
# 0.
|
|
340
|
-
# TOU_OPT --> TOU_ALN
|
|
341
|
-
transformation = touopt0.getActiveTransformationFrom(toualn0)
|
|
342
|
-
touopt = ReferenceFrame(transformation=transformation, ref=toualn, name="touopt", rot_config=rot_config)
|
|
343
|
-
touopt.addLink(toualn)
|
|
344
|
-
|
|
345
|
-
# 1.
|
|
346
|
-
transformation = touopt.getActiveTransformationFrom(toualn)
|
|
347
|
-
cambor = ReferenceFrame(transformation=transformation, ref=toualn, name="cambor", rot_config=rot_config)
|
|
348
|
-
|
|
349
|
-
# 2. & 3.
|
|
350
|
-
translation = hexobj.getOrigin().expressIn(touopt)[:3]
|
|
351
|
-
rotation = [0., 0., 0.]
|
|
352
|
-
cambor.applyTranslationRotation(translation, rotation, rot_config=rot_config, degrees=degrees)
|
|
353
|
-
|
|
354
|
-
# 4.
|
|
355
|
-
translation, rotation = cambor.getActiveTranslationRotationVectorsFrom(toualn)
|
|
356
|
-
|
|
357
|
-
csl_model = [master, hexmec, hexplt, hexobj, hexusr, hexobusr, fpamec, toumec, toualn, touopt, marialn, cambor]
|
|
358
|
-
|
|
359
|
-
##################
|
|
360
|
-
# AVOIDANCE VOLUME
|
|
361
|
-
##################
|
|
362
|
-
|
|
363
|
-
"""
|
|
364
|
-
# NECESSARY FIELDS IN THE SETUP
|
|
365
|
-
|
|
366
|
-
setup.camera.fpa.avoidance.clearance_xy # Horizontal clearance around L6
|
|
367
|
-
setup.camera.fpa.avoidance.clearance_z # Vertical uncertainty on teh CCD location
|
|
368
|
-
setup.camera_fpa.avoidance.vertices_nb # nb of points to represent the avoidance volume above the FPA
|
|
369
|
-
setup.camera_fpa.avoidance.vertices_radius # radius of the circle to represend the avoidance volume above the FPA
|
|
370
|
-
|
|
371
|
-
"""
|
|
372
|
-
|
|
373
|
-
setup = load_setup()
|
|
374
|
-
|
|
375
|
-
"""
|
|
376
|
-
A. HORIZONTAL AVOIDANCE
|
|
377
|
-
Ensure that the center of L6, materialised by HEX_USR (incl. z-direction security wrt TOU_L6)
|
|
378
|
-
stays within a given radius of the origin of FPA_SEN
|
|
379
|
-
"""
|
|
380
|
-
|
|
381
|
-
# Clearance = the tolerance in every horizontal direction (3 mm; PLATO-KUL-PL-ICD-0001 v1.2)
|
|
382
|
-
clearance_xy = setup.camera.fpa.avoidance.clearance_xy
|
|
383
|
-
|
|
384
|
-
# l6xy = the projection of the origin of HEX_USR on the X-Y plane of FPA_SEN
|
|
385
|
-
l6xy = hexusr.getOrigin().expressIn(hexobj)[:2]
|
|
386
|
-
|
|
387
|
-
# !! This is a verification of the current situation --> need to replace by a simulation of the forthcoming movement in the building block
|
|
388
|
-
assert ((l6xy[0] ** 2. + l6xy[1] ** 2.) < clearance_xy * clearance_xy)
|
|
389
|
-
|
|
390
|
-
"""
|
|
391
|
-
B. VERTICAL AVOIDANCE
|
|
392
|
-
Ensure that the CCD never hits L6.
|
|
393
|
-
The definition of HEX_USR includes a tolerance below L6 (1.65 mm)
|
|
394
|
-
We include a tolerance above FPA_SEN here (0.3 mm)
|
|
395
|
-
We define a collection of points to act at the vertices of the avoidance volume above the FPA
|
|
396
|
-
"""
|
|
397
|
-
|
|
398
|
-
# Clearance = vertical uncertainty on the CCD location (0.3 mm; PLATO-KUL-PL-ICD-0001 v1.2)
|
|
399
|
-
clearance_z = setup.camera.fpa.avoidance.clearance_z
|
|
400
|
-
|
|
401
|
-
# Vertices = Points representing the vertices of the avoidance volume above the FPA (60)
|
|
402
|
-
vertices_nb = setup.camera.fpa.avoidance.vertices_nb
|
|
403
|
-
# All vertices are on a circle of radius 'vertices_radius' (100 mm)
|
|
404
|
-
vertices_radius = setup.camera.fpa.avoidance.vertices_radius
|
|
405
|
-
|
|
406
|
-
angles = np.linspace(0, np.pi * 2, vertices_nb, endpoint=False)
|
|
407
|
-
vertices_x = np.cos(angles) * vertices_radius
|
|
408
|
-
vertices_y = np.sin(angles) * vertices_radius
|
|
409
|
-
vertices_z = np.ones_like(angles) * clearance_z
|
|
410
|
-
|
|
411
|
-
# The collection of Points defining the avoidance volume around FPA_SEN
|
|
412
|
-
vert_obj = Points(coordinates=np.array([vertices_x, vertices_y, vertices_z]), ref=hexobj, name="vertices")
|
|
413
|
-
|
|
414
|
-
# Their coordinates in HEX_USR
|
|
415
|
-
# NB: vert_obj is a Points, vert_usr is an array
|
|
416
|
-
vert_usr = vert_obj.expressIn(hexusr)
|
|
417
|
-
|
|
418
|
-
# !! Same as above : this is verifying the current situation, not the one after a planned movement
|
|
419
|
-
# Verify that all vertices ("protecting" FPA_SEN) are below the x-y plane of HEX_USR ("protecting" L6)
|
|
420
|
-
assert (np.all(vert_usr[2, :] < 0.))
|
scripts/csl_restore_setup.py
DELETED
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
"""
|
|
4
|
-
Created on Thu Sep 10 16:54:25 2020
|
|
5
|
-
|
|
6
|
-
@author: pierre
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import os
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import numpy as np
|
|
13
|
-
|
|
14
|
-
#import pandas
|
|
15
|
-
|
|
16
|
-
# egse
|
|
17
|
-
from egse.coordinates.cslmodel import CSLReferenceFrameModel
|
|
18
|
-
from egse.state import Setup
|
|
19
|
-
from scripts.laser_tracker_to_dict import laser_tracker_to_dict
|
|
20
|
-
|
|
21
|
-
# Hexapod
|
|
22
|
-
#from egse.hexapod.symetrie.puna import PunaController
|
|
23
|
-
from egse.hexapod.symetrie.puna import PunaSimulator
|
|
24
|
-
#from egse.hexapod.symetrie.puna import HexapodError
|
|
25
|
-
|
|
26
|
-
#from egse.coordinates.point import Points
|
|
27
|
-
|
|
28
|
-
from egse.coordinates import ref_model_to_dict, dict_to_ref_model
|
|
29
|
-
|
|
30
|
-
from camtest import list_setups, load_setup
|
|
31
|
-
|
|
32
|
-
from camtest.core import submit_setup
|
|
33
|
-
|
|
34
|
-
# submit_setup
|
|
35
|
-
|
|
36
|
-
from scripts.avoidance import is_avoidance_ok
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def printm(matrix,rounding=2):
|
|
40
|
-
import numpy as np
|
|
41
|
-
print(np.round(matrix,rounding))
|
|
42
|
-
|
|
43
|
-
"""
|
|
44
|
-
def check_positions(out, expected, rel=0.0001, abs=0.0001):
|
|
45
|
-
assert len(out) == len(expected)
|
|
46
|
-
for idx, element in enumerate(out):
|
|
47
|
-
assert element == approx(expected[idx], rel=rel, abs=abs)
|
|
48
|
-
"""
|
|
49
|
-
|
|
50
|
-
def positions_match(hexapod,hexsim,atol=0.0001,rtol=0.0001):
|
|
51
|
-
return np.allclose(hexapod.get_user_positions(), hexsim.get_user_positions(), atol=atol, rtol=rtol)
|
|
52
|
-
|
|
53
|
-
confdir = os.getenv("PLATO_CONF_DATA_LOCATION")
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
################################################################################
|
|
57
|
-
|
|
58
|
-
list_setups()
|
|
59
|
-
|
|
60
|
-
setupnr = 9
|
|
61
|
-
|
|
62
|
-
setup = load_setup(setupnr)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
#===================== Ingest model from xls file =============================
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
filexls = "/Users/pierre/plato/csl_refFrames.xls"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
refFrames = laser_tracker_to_dict(filexls)
|
|
73
|
-
|
|
74
|
-
print(refFrames)
|
|
75
|
-
|
|
76
|
-
dict_model = dict_to_ref_model(refFrames)
|
|
77
|
-
|
|
78
|
-
csl_model = CSLReferenceFrameModel(refFrames)
|
|
79
|
-
|
|
80
|
-
transformation = csl_model.get_frame("hexusr").getActiveTransformationTo(csl_model.get_frame("hexobj"))
|
|
81
|
-
csl_model.add_frame(name="hexobusr", transformation=transformation, ref="hexusr")
|
|
82
|
-
|
|
83
|
-
# create hex_iso ?
|
|
84
|
-
|
|
85
|
-
## Add the links
|
|
86
|
-
csl_model.add_link("hexplt","hexobj")
|
|
87
|
-
csl_model.add_link("hexobj","hexobusr")
|
|
88
|
-
csl_model.add_link("hexmec","hexusr")
|
|
89
|
-
|
|
90
|
-
# fpa links ?
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
#=============================== POSITION 2 ===================================
|
|
94
|
-
|
|
95
|
-
# Run csl_model up to the definition of HEX_OBUSR (egse/scripts)
|
|
96
|
-
|
|
97
|
-
## Instantiate a hexapod simulator
|
|
98
|
-
|
|
99
|
-
#hexsim = PunaSimulator(hex_mec=hexmec0, hex_plt=hexplt0, hex_obj=hexobj0, hex_usr=hexusr0, hex_obusr=hexobusr0)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
# 1. Save setup before going to retracted position == save FPA_SEN position
|
|
106
|
-
"""
|
|
107
|
-
csl_list = [master0, gliso0, glrot0, glfix0, hexmec0,hexplt0, fpaaln0, fpasen0, \
|
|
108
|
-
hexobj0,fpamec0,toumec0,toualn0,marialn0,touopt0,cammec0,toul60, \
|
|
109
|
-
hexusr0,hexobusr0]
|
|
110
|
-
|
|
111
|
-
csl_dict = ref_model_to_dict(csl_list)
|
|
112
|
-
|
|
113
|
-
#setup.csl_model = csl_dict
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
csl_model = CSLReferenceFrameModel(csl_dict)
|
|
117
|
-
"""
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
csl_dict = csl_model.serialize()
|
|
121
|
-
|
|
122
|
-
setup.csl_model = csl_dict
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
#newsetupfile = confdir+f"setup_{setupnr}_cslmodel.yaml"
|
|
127
|
-
|
|
128
|
-
#setup.to_yaml_file(newsetupfile)
|
|
129
|
-
|
|
130
|
-
setup = submit_setup(setup, "STM - FPA in place")
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
# 2. Goto retracted position
|
|
134
|
-
|
|
135
|
-
# 2a. simulation
|
|
136
|
-
|
|
137
|
-
hexsim.goto_retracted_position()
|
|
138
|
-
|
|
139
|
-
# 2b. hardware
|
|
140
|
-
|
|
141
|
-
execute(hexapod_puna_goto_retracted_position,wait=True)
|
|
142
|
-
|
|
143
|
-
# 2c. Check that model still coincides with new HW position
|
|
144
|
-
# MAKE SURE HEX IS NOT A SIMULATOR...
|
|
145
|
-
|
|
146
|
-
print(f"Hexapod & Model match: {positions_match(hex,hexsim)}")
|
|
147
|
-
|
|
148
|
-
# 3. Save setup in retracted position
|
|
149
|
-
|
|
150
|
-
# 3a. Save full model, for the record
|
|
151
|
-
|
|
152
|
-
csl_dict = ref_model_to_dict(csl_model)
|
|
153
|
-
|
|
154
|
-
setup.csl_model = csl_dict
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
# 3b. Save partial model, to be restored after the egse_sleep --> exclude glfix and glrot
|
|
158
|
-
csl_model_to_restore = [master0, gliso0, hexmec0,hexplt0, fpaaln0, fpasen0, \
|
|
159
|
-
hexobj0,fpamec0,toumec0,toualn0,marialn0,touopt0,cammec0,toul60, \
|
|
160
|
-
hexusr0,hexobusr0]
|
|
161
|
-
|
|
162
|
-
csl_dict = ref_model_to_dict(csl_model_to_restore)
|
|
163
|
-
|
|
164
|
-
setup.csl_model_to_restore = csl_dict
|
|
165
|
-
|
|
166
|
-
setup = submit_setup(setup, "STM - Retracted")
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
#=============== EGSE SLEEP --> POSITION 1 --> WAKEUP ========================
|
|
171
|
-
|
|
172
|
-
#=============================== POSITION 1 ===================================
|
|
173
|
-
|
|
174
|
-
list_setups()
|
|
175
|
-
|
|
176
|
-
# 1. Restore the retracted setup
|
|
177
|
-
|
|
178
|
-
setup = load_setup(TODO) # "STM - Retracted"
|
|
179
|
-
|
|
180
|
-
#setreup = Setup.from_yaml_file(newsetupfile)
|
|
181
|
-
|
|
182
|
-
# 2. Extract the csl_model from the setup -- select the retracted setup, without
|
|
183
|
-
|
|
184
|
-
csl_dict = setup.csl_model_to_restore
|
|
185
|
-
|
|
186
|
-
csl_model = dict_to_ref_model(csl_dict)
|
|
187
|
-
|
|
188
|
-
# 3. Instantiate hexapod model
|
|
189
|
-
|
|
190
|
-
hexsim = PunaSimulator(hex_mec=csl_model["hexmec0"],hex_plt=csl_model["hexplt0"],hex_obj=csl_model["hexobj0"],hex_usr=csl_model["hexusr0"],hex_obusr=csl_model["hexobusr0"])
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
# 4. Read model with FPA_SEN in position
|
|
194
|
-
|
|
195
|
-
newsetupfile = confdir + "TODO.yaml"
|
|
196
|
-
|
|
197
|
-
# TODO : REPLACE NEXT LINE BY get_setup(setup_id)
|
|
198
|
-
setup_high = Setup.from_yaml_file(newsetupfile) # "STM - FPA in place"
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
# 5. Extract model with FPA high
|
|
202
|
-
|
|
203
|
-
csl_dict_high = setup_high.csl_model
|
|
204
|
-
|
|
205
|
-
csl_model_high = dict_to_ref_model(csl_dict_high)
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
# 6. Extract FPA_SEN position to be restored
|
|
209
|
-
|
|
210
|
-
vtrans, vrot = csl_model_high["fpasen0"].getActiveTranslationRotationVectorsFrom(csl_model_high["hexmec0"])
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
# 7. Command the hexapod to that same location
|
|
214
|
-
|
|
215
|
-
hexsim.move_absolute(*vtrans,*vrot)
|
|
216
|
-
|
|
217
|
-
avoidance_respected = is_avoidance_ok(csl_model["hexusr0"], csl_model["hexobj0"], setup=None, verbose=True)
|
|
218
|
-
|
|
219
|
-
print(f"Avoidance OK after movement : {avoidance_respected}")
|
|
220
|
-
|
|
221
|
-
if avoidance_respected:
|
|
222
|
-
|
|
223
|
-
execute(hexapod_puna_move_absolute_user,*vtrans,*vrot,wait=True)
|
|
224
|
-
|
|
225
|
-
else:
|
|
226
|
-
|
|
227
|
-
print("Call your local EGSE manager")
|
|
228
|
-
|
|
229
|
-
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
|
-
"""
|
|
4
|
-
Grafana dashboard exporter
|
|
5
|
-
|
|
6
|
-
The exported dashboards are saved in a directory 'exported-dashboards-<datetime>'
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import json
|
|
10
|
-
import os
|
|
11
|
-
from pathlib import Path
|
|
12
|
-
|
|
13
|
-
import requests
|
|
14
|
-
|
|
15
|
-
from egse.system import format_datetime
|
|
16
|
-
|
|
17
|
-
HOST = 'http://lin-plato-2.sron.rug.nl:3000'
|
|
18
|
-
API_KEY = os.environ["GRAFANA_API_KEY"]
|
|
19
|
-
|
|
20
|
-
DIR = f'exported-dashboards-{format_datetime(fmt="%Y%m%d%H%M%S")}'
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def main():
|
|
24
|
-
headers = {'Authorization': f'Bearer {API_KEY}'}
|
|
25
|
-
response = requests.get(f'{HOST}/api/search?query=&', headers=headers)
|
|
26
|
-
response.raise_for_status()
|
|
27
|
-
dashboards = response.json()
|
|
28
|
-
# print_json(data=dashboards)
|
|
29
|
-
|
|
30
|
-
if not os.path.exists(DIR):
|
|
31
|
-
print(f"Creating folder {DIR}")
|
|
32
|
-
os.makedirs(DIR)
|
|
33
|
-
|
|
34
|
-
for dashboard in dashboards:
|
|
35
|
-
response = requests.get(f"{HOST}/api/dashboards/uid/{dashboard['uid']}", headers=headers)
|
|
36
|
-
# print_json(data=response.json())
|
|
37
|
-
data = response.json()['dashboard']
|
|
38
|
-
dash = json.dumps(data, sort_keys=True, indent=4, separators=(',', ': '))
|
|
39
|
-
name = data['title'].replace(' ', '_').replace('/', '_').replace(':', '').replace('[', '').replace(']', '').replace('.', '_')
|
|
40
|
-
|
|
41
|
-
print(f"Saving: {dashboard['title']} as {name}")
|
|
42
|
-
|
|
43
|
-
with open(Path(DIR, name).with_suffix('.json'), 'w') as fd:
|
|
44
|
-
fd.write(dash)
|
|
45
|
-
fd.write('\n')
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if __name__ == '__main__':
|
|
49
|
-
main()
|