cgse 2024.7.0__py3-none-any.whl → 2025.0.2__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.2.dist-info/METADATA +38 -0
- cgse-2025.0.2.dist-info/RECORD +5 -0
- {cgse-2024.7.0.dist-info → cgse-2025.0.2.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
egse/gimbal/__init__.py
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
The Gimbal package provides the components to interact with the gimbal of
|
|
3
|
-
Symétrie, i.e.
|
|
4
|
-
|
|
5
|
-
* The Gimbal commanding concept with Command, and CommandProtocol
|
|
6
|
-
* The client server access through Proxy and ControlServer
|
|
7
|
-
* The interface to the hardware controller: HexapodController and its simulator
|
|
8
|
-
|
|
9
|
-
This package also contains the Gimbal GUI which can be used to monitor the
|
|
10
|
-
gimbal positions in different reference frames and apply simple movements.
|
|
11
|
-
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class GimbalError(Exception):
|
|
16
|
-
"""A Gimbal specific error."""
|
|
17
|
-
pass
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# These are the classes and function that we would like to export. This is mainly
|
|
21
|
-
# to simplify import statements in scripts. The user can now use the following:
|
|
22
|
-
#
|
|
23
|
-
# >>> from egse.gimbal import GimbalProxy
|
|
24
|
-
#
|
|
25
|
-
# while she previously had to import the class as follows:
|
|
26
|
-
#
|
|
27
|
-
# >>> from egse.gimbal.gimbalProxy import GimbalProxy
|
|
28
|
-
#
|
|
29
|
-
|
|
30
|
-
__all__ = [
|
|
31
|
-
'GimbalError',
|
|
32
|
-
]
|
egse/gimbal/symetrie/__init__.py
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Device control for the Symétrie's Gimbal
|
|
3
|
-
|
|
4
|
-
This package contains the modules and classes to work with the gimbal from [Symétrie](www.symetrie.fr).
|
|
5
|
-
|
|
6
|
-
The main entry point for the user of this package is through the terminal commands to start the
|
|
7
|
-
control server for the gimbal, along with the corresponding interactive GUI.
|
|
8
|
-
|
|
9
|
-
The following command starts the control server for the Gimbal in the background:
|
|
10
|
-
|
|
11
|
-
$ gimbal_cs start-bg
|
|
12
|
-
|
|
13
|
-
The GUI can be started with the following command:
|
|
14
|
-
|
|
15
|
-
$ gimbal_ui
|
|
16
|
-
|
|
17
|
-
For developers, the `GimbalProxy` class is the main interface to command the
|
|
18
|
-
hardware.
|
|
19
|
-
|
|
20
|
-
>>> from egse.gimbal.symetrie.gimbal import GimbalProxy
|
|
21
|
-
>>> gimbal = GimbalProxy()
|
|
22
|
-
|
|
23
|
-
This class will connect to its control server and provide all commands to
|
|
24
|
-
control the gimbal and monitor its position and status.
|
|
25
|
-
|
|
26
|
-
"""
|
egse/gimbal/symetrie/alpha.py
DELETED
|
@@ -1,586 +0,0 @@
|
|
|
1
|
-
from egse.decorators import dynamic_interface
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class AlphaControllerInterface:
|
|
5
|
-
@dynamic_interface
|
|
6
|
-
def info(self):
|
|
7
|
-
"""Returns basic information about the gimbal and the controller.
|
|
8
|
-
|
|
9
|
-
Returns:
|
|
10
|
-
a multiline response message containing the device info.
|
|
11
|
-
Raises:
|
|
12
|
-
GimbalError: when information can not be retrieved.
|
|
13
|
-
"""
|
|
14
|
-
raise NotImplementedError
|
|
15
|
-
|
|
16
|
-
@dynamic_interface
|
|
17
|
-
def reset(self, wait=True):
|
|
18
|
-
"""Completely resets the Gimbal hardware controller with the standard boot cycle.
|
|
19
|
-
|
|
20
|
-
Args:
|
|
21
|
-
wait (bool): after the reset command has been sent to the controller, wait
|
|
22
|
-
for 30 seconds which should complete the cycle, i.e. this command will
|
|
23
|
-
only return after 30 seconds.
|
|
24
|
-
|
|
25
|
-
.. Note::
|
|
26
|
-
This command is equivalent to power cycling the controller manually.
|
|
27
|
-
|
|
28
|
-
"""
|
|
29
|
-
raise NotImplementedError
|
|
30
|
-
|
|
31
|
-
@dynamic_interface
|
|
32
|
-
def homing(self):
|
|
33
|
-
"""Start the homing cycle for the Gimbal.
|
|
34
|
-
|
|
35
|
-
Homing is required before performing a control movement. Without absolute encoders,
|
|
36
|
-
the homing is performed with a gimbal movement until detecting the reference sensor
|
|
37
|
-
on each of the actuators. The Gimbal will go to a position were the sensors are
|
|
38
|
-
reached that signal a known calibrated position and then returns to the zero position.
|
|
39
|
-
|
|
40
|
-
Whenever a homing is performed, the method will return before the actual movement
|
|
41
|
-
is finished.
|
|
42
|
-
|
|
43
|
-
The homing cycle takes about two minutes to complete, but the ``homing()`` method
|
|
44
|
-
returns almost immediately. Therefore, to check if the homing is finished, use
|
|
45
|
-
the is_homing_done() method.
|
|
46
|
-
|
|
47
|
-
Returns:
|
|
48
|
-
0 on success.
|
|
49
|
-
Raises:
|
|
50
|
-
GimbalError: when there is a time out or when there is a communication error with
|
|
51
|
-
the gimbal.
|
|
52
|
-
"""
|
|
53
|
-
raise NotImplementedError
|
|
54
|
-
|
|
55
|
-
#
|
|
56
|
-
# Gimbal does not support virtual homing
|
|
57
|
-
#
|
|
58
|
-
# @dynamic_interface
|
|
59
|
-
# def set_virtual_homing(self, tx, ty, tz, rx, ry, rz):
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
@dynamic_interface
|
|
63
|
-
def stop(self):
|
|
64
|
-
"""Stop the current motion. This command can be send during a motion of the Gimbal.
|
|
65
|
-
|
|
66
|
-
Returns:
|
|
67
|
-
0 on success.
|
|
68
|
-
Raises:
|
|
69
|
-
GimbalError: when there is a time out or when there is a communication error with
|
|
70
|
-
the gimbal.
|
|
71
|
-
"""
|
|
72
|
-
raise NotImplementedError
|
|
73
|
-
|
|
74
|
-
@dynamic_interface
|
|
75
|
-
def clear_error(self):
|
|
76
|
-
"""Clear all errors in the controller software.
|
|
77
|
-
|
|
78
|
-
Returns:
|
|
79
|
-
0 on success.
|
|
80
|
-
Raises:
|
|
81
|
-
GimbalError: when there is Time-Out or when there is a communication error with the
|
|
82
|
-
gimbal.
|
|
83
|
-
"""
|
|
84
|
-
raise NotImplementedError
|
|
85
|
-
|
|
86
|
-
@dynamic_interface
|
|
87
|
-
def activate_control_loop(self):
|
|
88
|
-
"""Activates the control loop on motors.
|
|
89
|
-
|
|
90
|
-
Returns:
|
|
91
|
-
0 on success, -1 when ignored, -2 on error.
|
|
92
|
-
Raises:
|
|
93
|
-
GimbalError: when there is a time out or when there is a communication error with
|
|
94
|
-
the gimbal
|
|
95
|
-
hardware controller.
|
|
96
|
-
"""
|
|
97
|
-
raise NotImplementedError
|
|
98
|
-
|
|
99
|
-
@dynamic_interface
|
|
100
|
-
def deactivate_control_loop(self):
|
|
101
|
-
"""Disables the control loop on the servo motors.
|
|
102
|
-
|
|
103
|
-
Returns:
|
|
104
|
-
0 on success.
|
|
105
|
-
Raises:
|
|
106
|
-
GimbalError: when there is a time out or when there is a communication error with
|
|
107
|
-
the gimbal.
|
|
108
|
-
"""
|
|
109
|
-
raise NotImplementedError
|
|
110
|
-
|
|
111
|
-
@dynamic_interface
|
|
112
|
-
def jog(self, axis: int, inc: float) -> int:
|
|
113
|
-
"""Perform a JOG-type movement on the specified actuator.
|
|
114
|
-
|
|
115
|
-
.. note::
|
|
116
|
-
This is a maintenance feature.
|
|
117
|
-
|
|
118
|
-
Args:
|
|
119
|
-
axis (int): number of the actuator (1 to 2)
|
|
120
|
-
inc (float): increment to achieve in [deg]
|
|
121
|
-
Returns:
|
|
122
|
-
0 on success, -1 if command was ignored due to non-compliance.
|
|
123
|
-
Raises:
|
|
124
|
-
GimbalError: when there is a time out or when there is a communication error with
|
|
125
|
-
the gimbal.
|
|
126
|
-
"""
|
|
127
|
-
raise NotImplementedError
|
|
128
|
-
|
|
129
|
-
@dynamic_interface
|
|
130
|
-
def get_debug_info(self):
|
|
131
|
-
"""
|
|
132
|
-
Request debug information from the Gimbal Controller.
|
|
133
|
-
|
|
134
|
-
The method returns four values that represent the following status:
|
|
135
|
-
|
|
136
|
-
1. ``Homing``: state of the homing
|
|
137
|
-
2. ``PosRef``: state of the Position Reference command
|
|
138
|
-
3. ``KinError``: error in kinematic calculation
|
|
139
|
-
4. ``Panel``: Panel state
|
|
140
|
-
|
|
141
|
-
Note many of these codes overlap PUNA's debug codes. These have been
|
|
142
|
-
thoroughly reviewed before defining the interface.
|
|
143
|
-
|
|
144
|
-
The Homing can take the following values:
|
|
145
|
-
|
|
146
|
-
===== ==================
|
|
147
|
-
Value Meaning
|
|
148
|
-
===== ==================
|
|
149
|
-
0 Undefined
|
|
150
|
-
1 Homing in progress
|
|
151
|
-
2 Homing done
|
|
152
|
-
3 Error
|
|
153
|
-
===== ==================
|
|
154
|
-
|
|
155
|
-
The PosRef can take the following values:
|
|
156
|
-
|
|
157
|
-
======= =====================
|
|
158
|
-
Value Meaning
|
|
159
|
-
======= =====================
|
|
160
|
-
0 Undefined
|
|
161
|
-
1 Abort input error
|
|
162
|
-
2 Movement in progress
|
|
163
|
-
3 Position reached
|
|
164
|
-
4 Error
|
|
165
|
-
======= =====================
|
|
166
|
-
|
|
167
|
-
The KinError can take the following values:
|
|
168
|
-
|
|
169
|
-
======= ===============================================
|
|
170
|
-
Value Meaning
|
|
171
|
-
======= ===============================================
|
|
172
|
-
0 none
|
|
173
|
-
1 Homing not done
|
|
174
|
-
2 Inverse kinematic model (MGI) – workspace
|
|
175
|
-
3 Inverse kinematic model (MGI) – joint angle
|
|
176
|
-
4 Forward kinematic model (MGD) – workspace
|
|
177
|
-
5 Forward kinematic model (MGD) – max iteration
|
|
178
|
-
6 Position calculation (PLCC) – workspace
|
|
179
|
-
7 Position calculation (PLCC) – max iteration.
|
|
180
|
-
======= ===============================================
|
|
181
|
-
|
|
182
|
-
The Panel status can take the following values:
|
|
183
|
-
|
|
184
|
-
====== ===============
|
|
185
|
-
Index Command
|
|
186
|
-
====== ===============
|
|
187
|
-
-2 Command error
|
|
188
|
-
-1 Ignored / Command not allowed
|
|
189
|
-
**0** **None**
|
|
190
|
-
1 Homing
|
|
191
|
-
2 Stop
|
|
192
|
-
3 Control ON
|
|
193
|
-
4 Control OFF
|
|
194
|
-
10 Valid POS
|
|
195
|
-
11 Move
|
|
196
|
-
12 Sequence
|
|
197
|
-
13 Specific POS
|
|
198
|
-
15 Clear Error
|
|
199
|
-
**Family “Set config”**
|
|
200
|
-
------------------------
|
|
201
|
-
21 Config CS
|
|
202
|
-
22 Config Limits_mTn
|
|
203
|
-
23 Config Limits_uTo
|
|
204
|
-
24 Config Limits_Enabled
|
|
205
|
-
25 Config Speed
|
|
206
|
-
26 Config Current
|
|
207
|
-
27 Config Backlash
|
|
208
|
-
**Family “Get config”**
|
|
209
|
-
------------------------
|
|
210
|
-
31 Config CS
|
|
211
|
-
32 Config Limits_mTn
|
|
212
|
-
33 Config Limits_uTo
|
|
213
|
-
34 Config Limits_Enabled
|
|
214
|
-
35 Config Speed
|
|
215
|
-
36 Config Current
|
|
216
|
-
37 Config Backlash
|
|
217
|
-
**Family “Maintenance”**
|
|
218
|
-
------------------------
|
|
219
|
-
41 Jog
|
|
220
|
-
50 Config Save
|
|
221
|
-
51 Config Default
|
|
222
|
-
52 Config Saved?
|
|
223
|
-
55 Version
|
|
224
|
-
====== ===============
|
|
225
|
-
|
|
226
|
-
"""
|
|
227
|
-
raise NotImplementedError
|
|
228
|
-
|
|
229
|
-
@dynamic_interface
|
|
230
|
-
def configure_offsets(self, grx, gry):
|
|
231
|
-
"""
|
|
232
|
-
Changes the definition of offsets. This is the Gimbal's equivalent of changing the
|
|
233
|
-
PUNA's coordinate system.
|
|
234
|
-
|
|
235
|
-
The parameters grx and gry are used to define axes offsets. The position with
|
|
236
|
-
offset is named Position or User position. The position without offset is named
|
|
237
|
-
Machine position.
|
|
238
|
-
|
|
239
|
-
Args:
|
|
240
|
-
grx (float): offset on the Rx axis [deg]
|
|
241
|
-
gry (float): offset on the Ry axis [deg]
|
|
242
|
-
|
|
243
|
-
Returns:
|
|
244
|
-
0 on success and -1 when the configuration is ignored, e.g. when password protection
|
|
245
|
-
is enabled.
|
|
246
|
-
"""
|
|
247
|
-
raise NotImplementedError
|
|
248
|
-
|
|
249
|
-
@dynamic_interface
|
|
250
|
-
def get_offsets(self):
|
|
251
|
-
"""Retrieve the definition of the gimbal offsets.
|
|
252
|
-
|
|
253
|
-
Returns:
|
|
254
|
-
grx and gry in [deg].
|
|
255
|
-
Raises:
|
|
256
|
-
GimbalError: when an error occurred while trying to retrieve the information.
|
|
257
|
-
"""
|
|
258
|
-
raise NotImplementedError
|
|
259
|
-
|
|
260
|
-
@dynamic_interface
|
|
261
|
-
def move_absolute(self, grx, gry):
|
|
262
|
-
"""Rotates the gimbal in both axes, absolute coordinates.
|
|
263
|
-
|
|
264
|
-
Args:
|
|
265
|
-
grx (float): rotation around the X-axis [deg]
|
|
266
|
-
gry (float): rotation around the Y-axis [deg]
|
|
267
|
-
|
|
268
|
-
Returns:
|
|
269
|
-
return_code: 0 on success, -1 when ignored, -2 on error
|
|
270
|
-
|
|
271
|
-
Raises:
|
|
272
|
-
GimbalError: when the arguments do not match up, or when there is a time out or when
|
|
273
|
-
there is a
|
|
274
|
-
socket communication error.
|
|
275
|
-
|
|
276
|
-
.. note::
|
|
277
|
-
When the command was not successful, this method will query the
|
|
278
|
-
POSVALID? using the checkAbsolutePosition() and print a summary
|
|
279
|
-
of the error messages to the log file.
|
|
280
|
-
|
|
281
|
-
.. todo::
|
|
282
|
-
do we want to check if the movement is valid before actually performing
|
|
283
|
-
the movement?
|
|
284
|
-
|
|
285
|
-
"""
|
|
286
|
-
raise NotImplementedError
|
|
287
|
-
|
|
288
|
-
@dynamic_interface
|
|
289
|
-
def move_relative(self, grx, gry):
|
|
290
|
-
"""Move the gimbal relative to its current position.
|
|
291
|
-
|
|
292
|
-
Args:
|
|
293
|
-
grx (float): rotation around the X-axis [deg]
|
|
294
|
-
gry (float): rotation around the Y-axis [deg]
|
|
295
|
-
|
|
296
|
-
Returns:
|
|
297
|
-
0 on success, -1 when ignored, -2 on error.
|
|
298
|
-
|
|
299
|
-
Raises:
|
|
300
|
-
GimbalError: when the arguments do not match up, or when there is a time out or when
|
|
301
|
-
there is a
|
|
302
|
-
socket communication error.
|
|
303
|
-
|
|
304
|
-
.. todo:: do we want to check if the movement is valid before actually performing
|
|
305
|
-
the movement?
|
|
306
|
-
|
|
307
|
-
"""
|
|
308
|
-
raise NotImplementedError
|
|
309
|
-
|
|
310
|
-
@dynamic_interface
|
|
311
|
-
def check_absolute_movement(self, grx, gry):
|
|
312
|
-
"""Check if the requested gimbal movement is valid.
|
|
313
|
-
|
|
314
|
-
Args:
|
|
315
|
-
grx (float): rotation around the X-axis [deg]
|
|
316
|
-
gry (float): rotation around the Y-axis [deg]
|
|
317
|
-
|
|
318
|
-
Returns:
|
|
319
|
-
tuple: where the first element is an integer that represents the
|
|
320
|
-
bitfield encoding the errors. The second element is a dictionary
|
|
321
|
-
with the bit numbers that were (on) and the corresponding error
|
|
322
|
-
description.
|
|
323
|
-
|
|
324
|
-
.. todo:: either provide a more user friendly return value or a method/function
|
|
325
|
-
to process the information into a human readable form. Also update
|
|
326
|
-
the documentation of this method with more information about the
|
|
327
|
-
bitfields etc.
|
|
328
|
-
"""
|
|
329
|
-
raise NotImplementedError
|
|
330
|
-
|
|
331
|
-
@dynamic_interface
|
|
332
|
-
def check_relative_movement(self, grx, gry):
|
|
333
|
-
"""Check if the requested object movement is valid.
|
|
334
|
-
|
|
335
|
-
The relative motion is expressed in the object coordinate system.
|
|
336
|
-
|
|
337
|
-
Args:
|
|
338
|
-
grx (float): rotation around the X-axis [deg]
|
|
339
|
-
gry (float): rotation around the Y-axis [deg]
|
|
340
|
-
|
|
341
|
-
Returns:
|
|
342
|
-
tuple: where the first element is an integer that represents the
|
|
343
|
-
bitfield encoding the errors. The second element is a dictionary
|
|
344
|
-
with the bit numbers that were (on) and the corresponding error
|
|
345
|
-
description.
|
|
346
|
-
|
|
347
|
-
.. todo:: either provide a more user friendly return value or a method/function
|
|
348
|
-
to process the information into a human readable form. Also update
|
|
349
|
-
the documentation of this method with more information about the
|
|
350
|
-
bitfields etc.
|
|
351
|
-
"""
|
|
352
|
-
raise NotImplementedError
|
|
353
|
-
|
|
354
|
-
@dynamic_interface
|
|
355
|
-
def get_user_positions(self):
|
|
356
|
-
"""Retreive the current position of the gimbal.
|
|
357
|
-
|
|
358
|
-
Asks the current position of the gimbal. Position returned corresponds to the
|
|
359
|
-
user position (position with offsets).
|
|
360
|
-
|
|
361
|
-
Returns:
|
|
362
|
-
array: an array of two float values for grx, gry
|
|
363
|
-
None: when an Exception was raised and logs the error message.
|
|
364
|
-
|
|
365
|
-
.. note:: This is equivalent to the POSUSER? command.
|
|
366
|
-
"""
|
|
367
|
-
raise NotImplementedError
|
|
368
|
-
|
|
369
|
-
@dynamic_interface
|
|
370
|
-
def get_machine_positions(self):
|
|
371
|
-
"""Retreive the current position of the gimbal.
|
|
372
|
-
|
|
373
|
-
Asks the current position of the gimbal. Position returned corresponds to the
|
|
374
|
-
machine position (position without offsets).
|
|
375
|
-
|
|
376
|
-
Returns:
|
|
377
|
-
array: an array of two float values for grx, gry
|
|
378
|
-
None: when a PMACError was raised and logs the error message.
|
|
379
|
-
|
|
380
|
-
.. note:: This is equivalent to the POSMACH? command.
|
|
381
|
-
"""
|
|
382
|
-
raise NotImplementedError
|
|
383
|
-
|
|
384
|
-
@dynamic_interface
|
|
385
|
-
def get_motor_temperatures(self):
|
|
386
|
-
"""Retreive the current temperatures of the Gimbal motors.
|
|
387
|
-
|
|
388
|
-
Asks the current temperatures of the motors as measured by their
|
|
389
|
-
corresponding thermocouples. Results are in Celsius.
|
|
390
|
-
|
|
391
|
-
Returns:
|
|
392
|
-
array: an array of two float values for grx, gry
|
|
393
|
-
None: when a PMACError was raised and logs the error message.
|
|
394
|
-
|
|
395
|
-
.. note:: This is equivalent to the STATE#AI? command.
|
|
396
|
-
"""
|
|
397
|
-
raise NotImplementedError
|
|
398
|
-
|
|
399
|
-
@dynamic_interface
|
|
400
|
-
def get_actuator_length(self):
|
|
401
|
-
"""Retrieve the current length of the gimbal actuators.
|
|
402
|
-
|
|
403
|
-
Returns:
|
|
404
|
-
array: an array of 2 float values for actuator length L1 to L2 in [mm], and \
|
|
405
|
-
None: when an Exception was raised and logs the error message.
|
|
406
|
-
"""
|
|
407
|
-
|
|
408
|
-
raise NotImplementedError
|
|
409
|
-
|
|
410
|
-
@dynamic_interface
|
|
411
|
-
def set_speed(self, sr):
|
|
412
|
-
"""Set the speed of the gimbal movements.
|
|
413
|
-
|
|
414
|
-
Args:
|
|
415
|
-
sr (float): The angular speed, expressed in deg per second [deg/s].
|
|
416
|
-
|
|
417
|
-
The argument sr is automatically limited by the controller between the
|
|
418
|
-
minimum and maximum speeds allowed for the gimbal.
|
|
419
|
-
|
|
420
|
-
Returns:
|
|
421
|
-
0 on success and -1 when the configuration is ignored, e.g. when password protection
|
|
422
|
-
is enabled.
|
|
423
|
-
"""
|
|
424
|
-
raise NotImplementedError
|
|
425
|
-
|
|
426
|
-
@dynamic_interface
|
|
427
|
-
def get_speed(self):
|
|
428
|
-
"""Retrieve the configuration of the movement speed.
|
|
429
|
-
|
|
430
|
-
Returns:
|
|
431
|
-
sr, sr_min, sr_max
|
|
432
|
-
|
|
433
|
-
Where:
|
|
434
|
-
* ``sr`` is the angular speed of the gimbal in deg per second [deg/s]
|
|
435
|
-
* ``sr_min``, ``sr_max`` are the limits for the rotation speed [deg/s]
|
|
436
|
-
|
|
437
|
-
"""
|
|
438
|
-
raise NotImplementedError
|
|
439
|
-
|
|
440
|
-
@dynamic_interface
|
|
441
|
-
def get_general_state(self):
|
|
442
|
-
"""Retrieve general state information of the gimbal.
|
|
443
|
-
|
|
444
|
-
Returns:
|
|
445
|
-
tuple: where the first element is an integer where the bits represent each state, and
|
|
446
|
-
the second element is an array of True/False flags for each state described in
|
|
447
|
-
Gimbal
|
|
448
|
-
Controller API, section 2.5.6.
|
|
449
|
-
|
|
450
|
-
None: when an Exception was raised and logs the error message.
|
|
451
|
-
|
|
452
|
-
.. note:: This is equivalent to the STATE#GIMBAL? Command.
|
|
453
|
-
"""
|
|
454
|
-
raise NotImplementedError
|
|
455
|
-
|
|
456
|
-
@dynamic_interface
|
|
457
|
-
def get_actuator_state(self):
|
|
458
|
-
"""Retreive general state information of the actuators.
|
|
459
|
-
|
|
460
|
-
For each of the two actuators, an integer value is returned that should be interpreted as a
|
|
461
|
-
bit field containing status bits for that actuator.
|
|
462
|
-
|
|
463
|
-
====== ========================
|
|
464
|
-
Bit Function
|
|
465
|
-
====== ========================
|
|
466
|
-
0 In position
|
|
467
|
-
1 Control loop on servo motors active
|
|
468
|
-
2 Homing done
|
|
469
|
-
3 Input "Home Switch"
|
|
470
|
-
4 Input "Positive limit switch"
|
|
471
|
-
5 Input "Negative limit switch"
|
|
472
|
-
6 Brake control output
|
|
473
|
-
7 Following error (warning)
|
|
474
|
-
8 Following error (Fatal)
|
|
475
|
-
9 Actuator out of bounds error
|
|
476
|
-
10 Amplifier error
|
|
477
|
-
11 Encoder error
|
|
478
|
-
12 Phasing error (brushless engine only)
|
|
479
|
-
13-23 Reserved
|
|
480
|
-
====== ========================
|
|
481
|
-
|
|
482
|
-
Returns:
|
|
483
|
-
array: an array of two (2) dictionaries with True/False flags for each actuator state
|
|
484
|
-
as described in
|
|
485
|
-
Gimbal Controller API, section 2.5.5.
|
|
486
|
-
None: when an Exception was raised and logs the error message.
|
|
487
|
-
|
|
488
|
-
.. note:: This is equivalent to the STATE#ACTUATOR? Command.
|
|
489
|
-
"""
|
|
490
|
-
raise NotImplementedError
|
|
491
|
-
|
|
492
|
-
@dynamic_interface
|
|
493
|
-
def goto_specific_position(self, pos):
|
|
494
|
-
"""Ask to go to a specific position.
|
|
495
|
-
|
|
496
|
-
* pos=0 Machine zero position (jog & maintenance only!)
|
|
497
|
-
* pos=1 Unused (not valid for the Gimbal)
|
|
498
|
-
* pos=2 User zero position (with offsets)
|
|
499
|
-
|
|
500
|
-
Returns:
|
|
501
|
-
0 on success, -1 when ignored, -2 for an invalid movement command
|
|
502
|
-
|
|
503
|
-
Raises:
|
|
504
|
-
GimbalError: when there is Time-Out or when there is a communication error with the
|
|
505
|
-
gimbal controller.
|
|
506
|
-
"""
|
|
507
|
-
raise NotImplementedError
|
|
508
|
-
|
|
509
|
-
@dynamic_interface
|
|
510
|
-
def goto_zero_position(self):
|
|
511
|
-
"""Ask the gimbal to go to the user zero position.
|
|
512
|
-
|
|
513
|
-
Returns:
|
|
514
|
-
0 on success, -1 when ignored, -2 for an invalid movement command
|
|
515
|
-
|
|
516
|
-
Raises:
|
|
517
|
-
GimbalError: when there is Time-Out or when there is a socket communication error.
|
|
518
|
-
"""
|
|
519
|
-
raise NotImplementedError
|
|
520
|
-
|
|
521
|
-
@dynamic_interface
|
|
522
|
-
def is_homing_done(self):
|
|
523
|
-
"""
|
|
524
|
-
Check if Homing is done. This method checks the ``Q26`` variable.
|
|
525
|
-
When this variable indicates 'Homing is done' it means the command has properly been
|
|
526
|
-
executed,
|
|
527
|
-
but it doesn't mean the Gimbal is in position. The gimbal might still be moving to its
|
|
528
|
-
zero position.
|
|
529
|
-
|
|
530
|
-
Returns:
|
|
531
|
-
True when the homing is done, False otherwise.
|
|
532
|
-
"""
|
|
533
|
-
raise NotImplementedError
|
|
534
|
-
|
|
535
|
-
@dynamic_interface
|
|
536
|
-
def is_in_position(self):
|
|
537
|
-
"""
|
|
538
|
-
Checks if the actuators are in position.
|
|
539
|
-
|
|
540
|
-
This method queries the Q36 variable and examines the third bit which is the 'Is
|
|
541
|
-
Position' bit.
|
|
542
|
-
This method does **not** query the actuator state variables Q30 till Q36.
|
|
543
|
-
|
|
544
|
-
Returns:
|
|
545
|
-
True when in position, False otherwise.
|
|
546
|
-
"""
|
|
547
|
-
raise NotImplementedError
|
|
548
|
-
|
|
549
|
-
@dynamic_interface
|
|
550
|
-
def perform_maintenance(self, axis):
|
|
551
|
-
"""Perform a maintenance cycle which consists to travel the full range
|
|
552
|
-
on one axis corresponding to the Gimbal machine limits. The movement is
|
|
553
|
-
also in machine coordinate system.
|
|
554
|
-
|
|
555
|
-
Undocumented. Ask Symetrie.
|
|
556
|
-
|
|
557
|
-
Args:
|
|
558
|
-
axis (int): on which axis the full range movement is executed
|
|
559
|
-
Returns:
|
|
560
|
-
0 on success, -1 when ignored for non-compliance.
|
|
561
|
-
Raises:
|
|
562
|
-
GimbalError: when there is Time-Out or when there is a socket communication error.
|
|
563
|
-
"""
|
|
564
|
-
raise NotImplementedError
|
|
565
|
-
|
|
566
|
-
def log_positions(self):
|
|
567
|
-
"""
|
|
568
|
-
Log the current position of the gimbal (level=INFO). The positions correspond to
|
|
569
|
-
|
|
570
|
-
* the position of the object in the User Coordinate System, and
|
|
571
|
-
* the position of the gimbal in the Machine Coordinate System.
|
|
572
|
-
|
|
573
|
-
"""
|
|
574
|
-
|
|
575
|
-
pos = self.get_user_positions()
|
|
576
|
-
logger.info(
|
|
577
|
-
f"Object [in User] : "
|
|
578
|
-
f"{pos[0]:2.5f}, {pos[1]:2.5f}"
|
|
579
|
-
)
|
|
580
|
-
|
|
581
|
-
pos = self.get_machine_positions()
|
|
582
|
-
logger.info(
|
|
583
|
-
f"Platform [in Machine]: "
|
|
584
|
-
f"{pos[0]:2.5f}, {pos[1]:2.5f}"
|
|
585
|
-
)
|
|
586
|
-
|