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
egse/hexapod/symetrie/alpha.py
DELETED
|
@@ -1,874 +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 hexapod and the controller.
|
|
8
|
-
|
|
9
|
-
Returns:
|
|
10
|
-
a multiline response message containing the device info.
|
|
11
|
-
Raises:
|
|
12
|
-
HexapodError: when information can not be retrieved.
|
|
13
|
-
"""
|
|
14
|
-
raise NotImplementedError
|
|
15
|
-
|
|
16
|
-
@dynamic_interface
|
|
17
|
-
def reset(self, wait=True):
|
|
18
|
-
"""Completely resets the Hexapod 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 Hexapod PUNA.
|
|
34
|
-
|
|
35
|
-
Homing is required before performing a control movement. Without absolute encoders,
|
|
36
|
-
the homing is performed with a hexapod movement until detecting the reference sensor
|
|
37
|
-
on each of the actuators. The Hexapod 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
|
-
HexapodError: when there is a time out or when there is a communication error with
|
|
51
|
-
the hexapod.
|
|
52
|
-
"""
|
|
53
|
-
raise NotImplementedError
|
|
54
|
-
|
|
55
|
-
@dynamic_interface
|
|
56
|
-
def set_virtual_homing(self, tx, ty, tz, rx, ry, rz):
|
|
57
|
-
"""Starts the virtual homing cycle on the hexapod.
|
|
58
|
-
|
|
59
|
-
This command uses the position given in parameters to initialize the hexapod position.
|
|
60
|
-
No movements of the hexapod are performed during this homing cycle. Please note that the
|
|
61
|
-
position specified in parameters must match the absolute position of the Object coordinate
|
|
62
|
-
system in the User coordinate system (see description in the manual chapter 2 on coordinates
|
|
63
|
-
systems). This position correspond to the answer of the command `get_user_positions()`.
|
|
64
|
-
During this operation, it is important to have the same hexapod position as those defined
|
|
65
|
-
during the record of the position. Otherwise, the system initialization will be incorrect.
|
|
66
|
-
|
|
67
|
-
Args:
|
|
68
|
-
tx (float): position on the X-axis [mm]
|
|
69
|
-
ty (float): position on the Y-axis [mm]
|
|
70
|
-
tz (float): position on the Z-axis [mm]
|
|
71
|
-
rx (float): rotation around the X-axis [deg]
|
|
72
|
-
ry (float): rotation around the Y-axis [deg]
|
|
73
|
-
rz (float): rotation around the Z-axis [deg]
|
|
74
|
-
|
|
75
|
-
Returns:
|
|
76
|
-
return_code: 0 on success, -1 when ignored
|
|
77
|
-
|
|
78
|
-
Raises:
|
|
79
|
-
HexapodError: when the arguments do not match up, or when there is a time out or when
|
|
80
|
-
there is a
|
|
81
|
-
socket communication error.
|
|
82
|
-
|
|
83
|
-
"""
|
|
84
|
-
return NotImplementedError
|
|
85
|
-
|
|
86
|
-
@dynamic_interface
|
|
87
|
-
def stop(self):
|
|
88
|
-
"""Stop the current motion. This command can be send during a motion of the Hexapod.
|
|
89
|
-
|
|
90
|
-
Returns:
|
|
91
|
-
0 on success.
|
|
92
|
-
Raises:
|
|
93
|
-
HexapodError: when there is a time out or when there is a communication error with
|
|
94
|
-
the hexapod.
|
|
95
|
-
"""
|
|
96
|
-
raise NotImplementedError
|
|
97
|
-
|
|
98
|
-
@dynamic_interface
|
|
99
|
-
def clear_error(self):
|
|
100
|
-
"""Clear all errors in the controller software.
|
|
101
|
-
|
|
102
|
-
Returns:
|
|
103
|
-
0 on success.
|
|
104
|
-
Raises:
|
|
105
|
-
HexapodError: when there is Time-Out or when there is a communication error with the
|
|
106
|
-
hexapod.
|
|
107
|
-
"""
|
|
108
|
-
raise NotImplementedError
|
|
109
|
-
|
|
110
|
-
@dynamic_interface
|
|
111
|
-
def activate_control_loop(self):
|
|
112
|
-
"""Activates the control loop on motors.
|
|
113
|
-
|
|
114
|
-
Returns:
|
|
115
|
-
0 on success, -1 when ignored, -2 on error.
|
|
116
|
-
Raises:
|
|
117
|
-
HexapodError: when there is a time out or when there is a communication error with
|
|
118
|
-
the hexapod
|
|
119
|
-
hardware controller.
|
|
120
|
-
"""
|
|
121
|
-
raise NotImplementedError
|
|
122
|
-
|
|
123
|
-
@dynamic_interface
|
|
124
|
-
def deactivate_control_loop(self):
|
|
125
|
-
"""Disables the control loop on the servo motors.
|
|
126
|
-
|
|
127
|
-
Returns:
|
|
128
|
-
0 on success.
|
|
129
|
-
Raises:
|
|
130
|
-
HexapodError: when there is a time out or when there is a communication error with
|
|
131
|
-
the hexapod.
|
|
132
|
-
"""
|
|
133
|
-
raise NotImplementedError
|
|
134
|
-
|
|
135
|
-
@dynamic_interface
|
|
136
|
-
def jog(self, axis: int, inc: float) -> int:
|
|
137
|
-
"""Perform a JOG-type movement on the specified actuator.
|
|
138
|
-
|
|
139
|
-
.. note::
|
|
140
|
-
This is a maintenance feature.
|
|
141
|
-
|
|
142
|
-
Args:
|
|
143
|
-
axis (int): number of the actuator (1 to 6)
|
|
144
|
-
inc (float): increment to achieve in mm
|
|
145
|
-
Returns:
|
|
146
|
-
0 on success, -1 if command was ignored due to non-compliance.
|
|
147
|
-
Raises:
|
|
148
|
-
HexapodError: when there is a time out or when there is a communication error with
|
|
149
|
-
the hexapod.
|
|
150
|
-
"""
|
|
151
|
-
raise NotImplementedError
|
|
152
|
-
|
|
153
|
-
@dynamic_interface
|
|
154
|
-
def get_debug_info(self):
|
|
155
|
-
"""
|
|
156
|
-
Request debug information from the Hexapod Controller.
|
|
157
|
-
|
|
158
|
-
The method returns four values that represent the following status:
|
|
159
|
-
|
|
160
|
-
1. ``Homing``: state of the homing
|
|
161
|
-
2. ``PosRef``: state of the Position Reference command
|
|
162
|
-
3. ``KinError``: error in kinematic calculation
|
|
163
|
-
4. ``Panel``: Panel state
|
|
164
|
-
|
|
165
|
-
The Homing can take the following values:
|
|
166
|
-
|
|
167
|
-
===== ==================
|
|
168
|
-
Value Meaning
|
|
169
|
-
===== ==================
|
|
170
|
-
0 Undefined
|
|
171
|
-
1 Homing in progress
|
|
172
|
-
2 Homing done
|
|
173
|
-
3 Error
|
|
174
|
-
===== ==================
|
|
175
|
-
|
|
176
|
-
The PosRef can take the following values:
|
|
177
|
-
|
|
178
|
-
======= =====================
|
|
179
|
-
Value Meaning
|
|
180
|
-
======= =====================
|
|
181
|
-
0 Undefined
|
|
182
|
-
1 Abort input error
|
|
183
|
-
2 Movement in progress
|
|
184
|
-
3 Position reached
|
|
185
|
-
4 Error
|
|
186
|
-
======= =====================
|
|
187
|
-
|
|
188
|
-
The KinError can take the following values:
|
|
189
|
-
|
|
190
|
-
======= ===============================================
|
|
191
|
-
Value Meaning
|
|
192
|
-
======= ===============================================
|
|
193
|
-
0 none
|
|
194
|
-
1 Homing not done
|
|
195
|
-
2 Inverse kinematic model (MGI) – workspace
|
|
196
|
-
3 Inverse kinematic model (MGI) – joint angle
|
|
197
|
-
4 Forward kinematic model (MGD) – workspace
|
|
198
|
-
5 Forward kinematic model (MGD) – max iteration
|
|
199
|
-
6 Position calculation (PLCC) – workspace
|
|
200
|
-
7 Position calculation (PLCC) – max iteration.
|
|
201
|
-
======= ===============================================
|
|
202
|
-
|
|
203
|
-
The Panel status can take the following values:
|
|
204
|
-
|
|
205
|
-
====== ===============
|
|
206
|
-
Index Command
|
|
207
|
-
====== ===============
|
|
208
|
-
-2 Command error
|
|
209
|
-
-1 Ignored / Command not allowed
|
|
210
|
-
**0** **None**
|
|
211
|
-
1 Homing
|
|
212
|
-
2 Stop
|
|
213
|
-
3 Control ON
|
|
214
|
-
4 Control OFF
|
|
215
|
-
10 Valid POS
|
|
216
|
-
11 Move
|
|
217
|
-
12 Sequence
|
|
218
|
-
13 Specific POS
|
|
219
|
-
15 Clear Error
|
|
220
|
-
**Family “Set config”**
|
|
221
|
-
------------------------
|
|
222
|
-
21 Config CS
|
|
223
|
-
22 Config Limits_mTn
|
|
224
|
-
23 Config Limits_uTo
|
|
225
|
-
24 Config Limits_Enabled
|
|
226
|
-
25 Config Speed
|
|
227
|
-
26 Config Current
|
|
228
|
-
27 Config Backlash
|
|
229
|
-
**Family “Get config”**
|
|
230
|
-
------------------------
|
|
231
|
-
31 Config CS
|
|
232
|
-
32 Config Limits_mTn
|
|
233
|
-
33 Config Limits_uTo
|
|
234
|
-
34 Config Limits_Enabled
|
|
235
|
-
35 Config Speed
|
|
236
|
-
36 Config Current
|
|
237
|
-
37 Config Backlash
|
|
238
|
-
**Family “Maintenance”**
|
|
239
|
-
------------------------
|
|
240
|
-
41 Jog
|
|
241
|
-
50 Config Save
|
|
242
|
-
51 Config Default
|
|
243
|
-
52 Config Saved?
|
|
244
|
-
55 Version
|
|
245
|
-
====== ===============
|
|
246
|
-
|
|
247
|
-
"""
|
|
248
|
-
raise NotImplementedError
|
|
249
|
-
|
|
250
|
-
@dynamic_interface
|
|
251
|
-
def configure_coordinates_systems(
|
|
252
|
-
self, tx_u, ty_u, tz_u, rx_u, ry_u, rz_u, tx_o, ty_o, tz_o, rx_o, ry_o, rz_o
|
|
253
|
-
):
|
|
254
|
-
"""
|
|
255
|
-
Change the definition of the User Coordinate System and the Object Coordinate System.
|
|
256
|
-
|
|
257
|
-
The parameters tx_u, ty_u, tz_u, rx_u, ry_u, rz_u are used to define the user coordinate
|
|
258
|
-
system
|
|
259
|
-
relative to the Machine Coordinate System and the parameters tx_o, ty_o, tz_o, rx_o,
|
|
260
|
-
ry_o, rz_o
|
|
261
|
-
are used to define the Object Coordinate System relative to the Platform Coordinate System.
|
|
262
|
-
|
|
263
|
-
Args:
|
|
264
|
-
tx_u (float): translation parameter that define the user coordinate system relative
|
|
265
|
-
to the
|
|
266
|
-
machine coordinate system [in mm]
|
|
267
|
-
ty_u (float): translation parameter that define the user coordinate system relative
|
|
268
|
-
to the
|
|
269
|
-
machine coordinate system [in mm]
|
|
270
|
-
tz_u (float): translation parameter that define the user coordinate system relative
|
|
271
|
-
to the
|
|
272
|
-
machine coordinate system [in mm]
|
|
273
|
-
|
|
274
|
-
rx_u (float): rotation parameter that define the user coordinate system relative to
|
|
275
|
-
the machine
|
|
276
|
-
coordinate system [in deg]
|
|
277
|
-
ry_u (float): rotation parameter that define the user coordinate system relative to
|
|
278
|
-
the machine
|
|
279
|
-
coordinate system [in deg]
|
|
280
|
-
rz_u (float): rotation parameter that define the user coordinate system relative to
|
|
281
|
-
the machine
|
|
282
|
-
coordinate system [in deg]
|
|
283
|
-
|
|
284
|
-
tx_o (float): translation parameter that define the object coordinate system relative
|
|
285
|
-
to the
|
|
286
|
-
platform coordinate system [in mm]
|
|
287
|
-
ty_o (float): translation parameter that define the object coordinate system relative
|
|
288
|
-
to the
|
|
289
|
-
platform coordinate system [in mm]
|
|
290
|
-
tz_o (float): translation parameter that define the object coordinate system relative
|
|
291
|
-
to the
|
|
292
|
-
platform coordinate system [in mm]
|
|
293
|
-
|
|
294
|
-
rx_o (float): rotation parameter that define the object coordinate system relative to
|
|
295
|
-
the
|
|
296
|
-
platform coordinate system [in deg]
|
|
297
|
-
ry_o (float): rotation parameter that define the object coordinate system relative to
|
|
298
|
-
the
|
|
299
|
-
platform coordinate system [in deg]
|
|
300
|
-
rz_o (float): rotation parameter that define the object coordinate system relative to
|
|
301
|
-
the
|
|
302
|
-
platform coordinate system [in deg]
|
|
303
|
-
|
|
304
|
-
Returns:
|
|
305
|
-
0 on success and -1 when the configuration is ignored, e.g. when password protection
|
|
306
|
-
is enabled.
|
|
307
|
-
"""
|
|
308
|
-
raise NotImplementedError
|
|
309
|
-
|
|
310
|
-
@dynamic_interface
|
|
311
|
-
def get_coordinates_systems(self):
|
|
312
|
-
"""Retrieve the definition of the User Coordinate System and the Object Coordinate System.
|
|
313
|
-
|
|
314
|
-
Returns:
|
|
315
|
-
tx_u, ty_u, tz_u, rx_u, ry_u, rz_u, tx_o, ty_o, tz_o, rx_o, ry_o, rz_o where the
|
|
316
|
-
translation \
|
|
317
|
-
parameters are in [mm] and the rotation parameters are in [deg].
|
|
318
|
-
Raises:
|
|
319
|
-
HexapodError: when an error occurred while trying to retrieve the information.
|
|
320
|
-
"""
|
|
321
|
-
raise NotImplementedError
|
|
322
|
-
|
|
323
|
-
@dynamic_interface
|
|
324
|
-
def get_actuator_length(self):
|
|
325
|
-
"""Retrieve the current length of the hexapod actuators.
|
|
326
|
-
|
|
327
|
-
Returns:
|
|
328
|
-
array: an array of six float values for actuator length L1 to L6 in [mm], and \
|
|
329
|
-
None: when an Exception was raised and logs the error message.
|
|
330
|
-
"""
|
|
331
|
-
raise NotImplementedError
|
|
332
|
-
|
|
333
|
-
@dynamic_interface
|
|
334
|
-
def move_absolute(self, tx, ty, tz, rx, ry, rz):
|
|
335
|
-
"""Move/define the Object Coordinate System position and orientation expressed
|
|
336
|
-
in the invariant user coordinate system.
|
|
337
|
-
|
|
338
|
-
The rotation centre coincides with the Object Coordinates System origin and
|
|
339
|
-
the movements are controlled with translation components at first (Tx, Ty, tZ)
|
|
340
|
-
and then the rotation components (Rx, Ry, Rz).
|
|
341
|
-
|
|
342
|
-
Args:
|
|
343
|
-
tx (float): position on the X-axis [mm]
|
|
344
|
-
ty (float): position on the Y-axis [mm]
|
|
345
|
-
tz (float): position on the Z-axis [mm]
|
|
346
|
-
rx (float): rotation around the X-axis [deg]
|
|
347
|
-
ry (float): rotation around the Y-axis [deg]
|
|
348
|
-
rz (float): rotation around the Z-axis [deg]
|
|
349
|
-
|
|
350
|
-
Returns:
|
|
351
|
-
return_code: 0 on success, -1 when ignored, -2 on error
|
|
352
|
-
|
|
353
|
-
Raises:
|
|
354
|
-
HexapodError: when the arguments do not match up, or when there is a time out or when
|
|
355
|
-
there is a
|
|
356
|
-
socket communication error.
|
|
357
|
-
|
|
358
|
-
.. note::
|
|
359
|
-
When the command was not successful, this method will query the
|
|
360
|
-
POSVALID? using the checkAbsolutePosition() and print a summary
|
|
361
|
-
of the error messages to the log file.
|
|
362
|
-
|
|
363
|
-
.. todo::
|
|
364
|
-
do we want to check if the movement is valid before actually performing
|
|
365
|
-
the movement?
|
|
366
|
-
|
|
367
|
-
"""
|
|
368
|
-
raise NotImplementedError
|
|
369
|
-
|
|
370
|
-
@dynamic_interface
|
|
371
|
-
def move_relative_object(self, tx, ty, tz, rx, ry, rz):
|
|
372
|
-
"""Move the object relative to its current object position and orientation.
|
|
373
|
-
|
|
374
|
-
The relative movement is expressed in the object coordinate system.
|
|
375
|
-
|
|
376
|
-
Args:
|
|
377
|
-
tx (float): position on the X-axis [mm]
|
|
378
|
-
ty (float): position on the Y-axis [mm]
|
|
379
|
-
tz (float): position on the Z-axis [mm]
|
|
380
|
-
rx (float): rotation around the X-axis [deg]
|
|
381
|
-
ry (float): rotation around the Y-axis [deg]
|
|
382
|
-
rz (float): rotation around the Z-axis [deg]
|
|
383
|
-
|
|
384
|
-
Returns:
|
|
385
|
-
0 on success, -1 when ignored, -2 on error.
|
|
386
|
-
|
|
387
|
-
Raises:
|
|
388
|
-
HexapodError: when the arguments do not match up, or when there is a time out or when
|
|
389
|
-
there is a
|
|
390
|
-
socket communication error.
|
|
391
|
-
|
|
392
|
-
.. todo:: do we want to check if the movement is valid before actually performing
|
|
393
|
-
the movement?
|
|
394
|
-
|
|
395
|
-
"""
|
|
396
|
-
raise NotImplementedError
|
|
397
|
-
|
|
398
|
-
@dynamic_interface
|
|
399
|
-
def move_relative_user(self, tx, ty, tz, rx, ry, rz):
|
|
400
|
-
"""Move the object relative to its current object position and orientation.
|
|
401
|
-
|
|
402
|
-
The relative movement is expressed in the (invariant) user coordinate system.
|
|
403
|
-
|
|
404
|
-
Args:
|
|
405
|
-
tx (float): position on the X-axis [mm]
|
|
406
|
-
ty (float): position on the Y-axis [mm]
|
|
407
|
-
tz (float): position on the Z-axis [mm]
|
|
408
|
-
rx (float): rotation around the X-axis [deg]
|
|
409
|
-
ry (float): rotation around the Y-axis [deg]
|
|
410
|
-
rz (float): rotation around the Z-axis [deg]
|
|
411
|
-
|
|
412
|
-
Returns:
|
|
413
|
-
0 on success, -1 when ignored, -2 on error.
|
|
414
|
-
|
|
415
|
-
Raises:
|
|
416
|
-
HexapodError: when the arguments do not match up, or when there is a time out or when
|
|
417
|
-
there is a
|
|
418
|
-
socket communication error.
|
|
419
|
-
|
|
420
|
-
.. todo:: do we want to check if the movement is valid before actually performing
|
|
421
|
-
the movement?
|
|
422
|
-
|
|
423
|
-
"""
|
|
424
|
-
raise NotImplementedError
|
|
425
|
-
|
|
426
|
-
@dynamic_interface
|
|
427
|
-
def check_absolute_movement(self, tx, ty, tz, rx, ry, rz):
|
|
428
|
-
"""Check if the requested object movement is valid.
|
|
429
|
-
|
|
430
|
-
The absolute movement is expressed in the user coordinate system.
|
|
431
|
-
|
|
432
|
-
Args:
|
|
433
|
-
tx (float): position on the X-axis [mm]
|
|
434
|
-
ty (float): position on the Y-axis [mm]
|
|
435
|
-
tz (float): position on the Z-axis [mm]
|
|
436
|
-
rx (float): rotation around the X-axis [deg]
|
|
437
|
-
ry (float): rotation around the Y-axis [deg]
|
|
438
|
-
rz (float): rotation around the Z-axis [deg]
|
|
439
|
-
|
|
440
|
-
Returns:
|
|
441
|
-
tuple: where the first element is an integer that represents the
|
|
442
|
-
bitfield encoding the errors. The second element is a dictionary
|
|
443
|
-
with the bit numbers that were (on) and the corresponding error
|
|
444
|
-
description.
|
|
445
|
-
|
|
446
|
-
.. todo:: either provide a more user friendly return value or a method/function
|
|
447
|
-
to process the information into a human readable form. Also update
|
|
448
|
-
the documentation of this method with more information about the
|
|
449
|
-
bitfields etc.
|
|
450
|
-
"""
|
|
451
|
-
raise NotImplementedError
|
|
452
|
-
|
|
453
|
-
@dynamic_interface
|
|
454
|
-
def check_relative_object_movement(self, tx, ty, tz, rx, ry, rz):
|
|
455
|
-
"""Check if the requested object movement is valid.
|
|
456
|
-
|
|
457
|
-
The relative motion is expressed in the object coordinate system.
|
|
458
|
-
|
|
459
|
-
Args:
|
|
460
|
-
tx (float): position on the X-axis [mm]
|
|
461
|
-
ty (float): position on the Y-axis [mm]
|
|
462
|
-
tz (float): position on the Z-axis [mm]
|
|
463
|
-
rx (float): rotation around the X-axis [deg]
|
|
464
|
-
ry (float): rotation around the Y-axis [deg]
|
|
465
|
-
rz (float): rotation around the Z-axis [deg]
|
|
466
|
-
|
|
467
|
-
Returns:
|
|
468
|
-
tuple: where the first element is an integer that represents the
|
|
469
|
-
bitfield encoding the errors. The second element is a dictionary
|
|
470
|
-
with the bit numbers that were (on) and the corresponding error
|
|
471
|
-
description.
|
|
472
|
-
|
|
473
|
-
.. todo:: either provide a more user friendly return value or a method/function
|
|
474
|
-
to process the information into a human readable form. Also update
|
|
475
|
-
the documentation of this method with more information about the
|
|
476
|
-
bitfields etc.
|
|
477
|
-
"""
|
|
478
|
-
raise NotImplementedError
|
|
479
|
-
|
|
480
|
-
@dynamic_interface
|
|
481
|
-
def check_relative_user_movement(self, tx, ty, tz, rx, ry, rz):
|
|
482
|
-
"""Check if the requested object movement is valid.
|
|
483
|
-
|
|
484
|
-
The relative motion is expressed in the user coordinate system.
|
|
485
|
-
|
|
486
|
-
Args:
|
|
487
|
-
tx (float): position on the X-axis [mm]
|
|
488
|
-
ty (float): position on the Y-axis [mm]
|
|
489
|
-
tz (float): position on the Z-axis [mm]
|
|
490
|
-
rx (float): rotation around the X-axis [deg]
|
|
491
|
-
ry (float): rotation around the Y-axis [deg]
|
|
492
|
-
rz (float): rotation around the Z-axis [deg]
|
|
493
|
-
|
|
494
|
-
Returns:
|
|
495
|
-
tuple: where the first element is an integer that represents the
|
|
496
|
-
bitfield encoding the errors. The second element is a dictionary
|
|
497
|
-
with the bit numbers that were (on) and the corresponding error
|
|
498
|
-
description.
|
|
499
|
-
|
|
500
|
-
.. todo:: either provide a more user friendly return value or a method/function
|
|
501
|
-
to process the information into a human readable form. Also update
|
|
502
|
-
the documentation of this method with more information about the
|
|
503
|
-
bitfields etc.
|
|
504
|
-
"""
|
|
505
|
-
raise NotImplementedError
|
|
506
|
-
|
|
507
|
-
@dynamic_interface
|
|
508
|
-
def get_user_positions(self):
|
|
509
|
-
"""Retreive the current position of the hexapod.
|
|
510
|
-
|
|
511
|
-
The returned position corresponds to the position of the Object Coordinate System
|
|
512
|
-
in the User Coordinate System.
|
|
513
|
-
|
|
514
|
-
Returns:
|
|
515
|
-
array: an array of six float values for Tx, Ty, Tz, Rx, Ry, Rz.
|
|
516
|
-
None: when an Exception was raised and logs the error message.
|
|
517
|
-
|
|
518
|
-
.. note:: This is equivalent to the POSUSER? command.
|
|
519
|
-
"""
|
|
520
|
-
raise NotImplementedError
|
|
521
|
-
|
|
522
|
-
@dynamic_interface
|
|
523
|
-
def get_machine_positions(self):
|
|
524
|
-
"""Retreive the current position of the hexapod.
|
|
525
|
-
|
|
526
|
-
The returned position corresponds to the position of the Platform Coordinate System
|
|
527
|
-
in the Machine Coordinate System.
|
|
528
|
-
|
|
529
|
-
Returns:
|
|
530
|
-
array: an array of six float values for Tx, Ty, Tz, Rx, Ry, Rz.
|
|
531
|
-
None: when a PMACError was raised and logs the error message.
|
|
532
|
-
|
|
533
|
-
.. note:: This is equivalent to the POSMACH? command.
|
|
534
|
-
"""
|
|
535
|
-
raise NotImplementedError
|
|
536
|
-
|
|
537
|
-
@dynamic_interface
|
|
538
|
-
def set_speed(self, vt, vr):
|
|
539
|
-
"""Set the speed of the hexapod movements.
|
|
540
|
-
|
|
541
|
-
Args:
|
|
542
|
-
vt (float): The translation speed, expressed in mm per second [mm/s].
|
|
543
|
-
vr (float): The angular speed, expressed in deg per second [deg/s].
|
|
544
|
-
|
|
545
|
-
The arguments `vt` and `vr` are automatically limited by the controller
|
|
546
|
-
between the minimum and maximum allowed speeds for the hexapod.
|
|
547
|
-
See the `getSpeed()` method to know the limits.
|
|
548
|
-
|
|
549
|
-
Returns:
|
|
550
|
-
0 on success and -1 when the configuration is ignored, e.g. when password protection
|
|
551
|
-
is enabled.
|
|
552
|
-
"""
|
|
553
|
-
raise NotImplementedError
|
|
554
|
-
|
|
555
|
-
@dynamic_interface
|
|
556
|
-
def get_speed(self):
|
|
557
|
-
"""Retrieve the configuration of the movement speed.
|
|
558
|
-
|
|
559
|
-
Returns:
|
|
560
|
-
vt, vr, vt_min, vr_min, vt_max, vr_max
|
|
561
|
-
|
|
562
|
-
Where:
|
|
563
|
-
* ``vt`` is the translation speed of the hexapod in mm per second [mm/s]
|
|
564
|
-
* ``vr`` is the angular speed of the hexapod in deg per second [deg/s]
|
|
565
|
-
* ``vt_min``, ``vt_max`` are the limits for the translation speed [mm/s]
|
|
566
|
-
* ``vr_min``, ``vr_max`` are the limits for the angular speed [mm/s]
|
|
567
|
-
|
|
568
|
-
"""
|
|
569
|
-
raise NotImplementedError
|
|
570
|
-
|
|
571
|
-
@dynamic_interface
|
|
572
|
-
def get_general_state(self):
|
|
573
|
-
"""Retrieve general state information of the hexapod.
|
|
574
|
-
|
|
575
|
-
Returns:
|
|
576
|
-
tuple: where the first element is an integer where the bits represent each state, and
|
|
577
|
-
the second element is an array of True/False flags for each state described in
|
|
578
|
-
Hexapod
|
|
579
|
-
Controller API, section 4.5.6.
|
|
580
|
-
|
|
581
|
-
None: when an Exception was raised and logs the error message.
|
|
582
|
-
|
|
583
|
-
.. note:: This is equivalent to the STATE#HEXA? Command.
|
|
584
|
-
"""
|
|
585
|
-
raise NotImplementedError
|
|
586
|
-
|
|
587
|
-
@dynamic_interface
|
|
588
|
-
def get_actuator_state(self):
|
|
589
|
-
"""Retreive general state information of the actuators.
|
|
590
|
-
|
|
591
|
-
For each of the six actuators, an integer value is returned that should be interpreted as a
|
|
592
|
-
bit field containing status bits for that actuator.
|
|
593
|
-
|
|
594
|
-
====== ========================
|
|
595
|
-
Bit Function
|
|
596
|
-
====== ========================
|
|
597
|
-
0 In position
|
|
598
|
-
1 Control loop on servo motors active
|
|
599
|
-
2 Homing done
|
|
600
|
-
3 Input "Home Switch"
|
|
601
|
-
4 Input "Positive limit switch"
|
|
602
|
-
5 Input "Negative limit switch"
|
|
603
|
-
6 Brake control output
|
|
604
|
-
7 Following error (warning)
|
|
605
|
-
8 Following error (Fatal)
|
|
606
|
-
9 Actuator out of bounds error
|
|
607
|
-
10 Amplifier error
|
|
608
|
-
11 Encoder error
|
|
609
|
-
12 Phasing error (brushless engine only)
|
|
610
|
-
13-23 Reserved
|
|
611
|
-
====== ========================
|
|
612
|
-
|
|
613
|
-
Returns:
|
|
614
|
-
array: an array of six (6) dictionaries with True/False flags for each actuator state
|
|
615
|
-
as described in
|
|
616
|
-
Hexapod Controller API, section 4.5.5.
|
|
617
|
-
None: when an Exception was raised and logs the error message.
|
|
618
|
-
|
|
619
|
-
.. note:: This is equivalent to the STATE#ACTUATOR? Command.
|
|
620
|
-
"""
|
|
621
|
-
raise NotImplementedError
|
|
622
|
-
|
|
623
|
-
@dynamic_interface
|
|
624
|
-
def goto_specific_position(self, pos):
|
|
625
|
-
"""Ask to go to a specific position.
|
|
626
|
-
|
|
627
|
-
* pos=0 Zero position (jog & maintenance only!)
|
|
628
|
-
* pos=1 Zero position
|
|
629
|
-
* pos=2 Retracted position
|
|
630
|
-
|
|
631
|
-
Returns:
|
|
632
|
-
0 on success, -1 when ignored.
|
|
633
|
-
|
|
634
|
-
Raises:
|
|
635
|
-
HexapodError: when there is Time-Out or when there is a communication error with the
|
|
636
|
-
hexapod controller.
|
|
637
|
-
"""
|
|
638
|
-
raise NotImplementedError
|
|
639
|
-
|
|
640
|
-
@dynamic_interface
|
|
641
|
-
def goto_retracted_position(self):
|
|
642
|
-
"""Ask the hexapod to go to the retracted position.
|
|
643
|
-
|
|
644
|
-
Returns:
|
|
645
|
-
0 on success, -1 when ignored.
|
|
646
|
-
|
|
647
|
-
Raises:
|
|
648
|
-
HexapodError: when there is Time-Out or when there is a socket communication error.
|
|
649
|
-
"""
|
|
650
|
-
raise NotImplementedError
|
|
651
|
-
|
|
652
|
-
@dynamic_interface
|
|
653
|
-
def goto_zero_position(self):
|
|
654
|
-
"""Ask the hexapod to go to the zero position.
|
|
655
|
-
|
|
656
|
-
Returns:
|
|
657
|
-
0 on success, -1 when ignored.
|
|
658
|
-
|
|
659
|
-
Raises:
|
|
660
|
-
HexapodError: when there is Time-Out or when there is a socket communication error.
|
|
661
|
-
"""
|
|
662
|
-
raise NotImplementedError
|
|
663
|
-
|
|
664
|
-
@dynamic_interface
|
|
665
|
-
def is_homing_done(self):
|
|
666
|
-
"""
|
|
667
|
-
Check if Homing is done. This method checks the ``Q26`` variable.
|
|
668
|
-
When this variable indicates 'Homing is done' it means the command has properly been
|
|
669
|
-
executed,
|
|
670
|
-
but it doesn't mean the Hexapod is in position. The hexapod might still be moving to its
|
|
671
|
-
zero position.
|
|
672
|
-
|
|
673
|
-
Returns:
|
|
674
|
-
True when the homing is done, False otherwise.
|
|
675
|
-
"""
|
|
676
|
-
raise NotImplementedError
|
|
677
|
-
|
|
678
|
-
@dynamic_interface
|
|
679
|
-
def is_in_position(self):
|
|
680
|
-
"""
|
|
681
|
-
Checks if the actuators are in position.
|
|
682
|
-
|
|
683
|
-
This method queries the Q36 variable and examines the third bit which is the 'Is
|
|
684
|
-
Position' bit.
|
|
685
|
-
This method does **not** query the actuator state variables Q30 till Q36.
|
|
686
|
-
|
|
687
|
-
Returns:
|
|
688
|
-
True when in position, False otherwise.
|
|
689
|
-
"""
|
|
690
|
-
raise NotImplementedError
|
|
691
|
-
|
|
692
|
-
@dynamic_interface
|
|
693
|
-
def perform_maintenance(self, axis):
|
|
694
|
-
"""Perform a maintenance cycle which consists to travel the full range
|
|
695
|
-
on one axis corresponding to the Hexapod machine limits. The movement is
|
|
696
|
-
also in machine coordinate system.
|
|
697
|
-
|
|
698
|
-
The ``axis`` argument can take the following values:
|
|
699
|
-
|
|
700
|
-
* 1: movement on the X-axis
|
|
701
|
-
* 2: movement on the Y-axis
|
|
702
|
-
* 3: movement on the Z-axis
|
|
703
|
-
* 4: movement around the X-axis
|
|
704
|
-
* 5: movement around the Y-axis
|
|
705
|
-
* 6: movement around the Z-axis
|
|
706
|
-
* 10: all previous cycles chained together
|
|
707
|
-
|
|
708
|
-
Args:
|
|
709
|
-
axis (int): on which axis the full range movement is executed
|
|
710
|
-
Returns:
|
|
711
|
-
0 on success, -1 when ignored for non-compliance.
|
|
712
|
-
Raises:
|
|
713
|
-
HexapodError: when there is Time-Out or when there is a socket communication error.
|
|
714
|
-
"""
|
|
715
|
-
raise NotImplementedError
|
|
716
|
-
|
|
717
|
-
def log_positions(self):
|
|
718
|
-
"""
|
|
719
|
-
Log the current position of the hexapod (level=INFO). The positions correspond to
|
|
720
|
-
|
|
721
|
-
* the position of the Object Coordinate System in the User Coordinate System, and
|
|
722
|
-
* the position of the Platform Coordinate System in the Machine Coordinate System.
|
|
723
|
-
|
|
724
|
-
"""
|
|
725
|
-
|
|
726
|
-
pos = self.get_user_positions()
|
|
727
|
-
logger.info(
|
|
728
|
-
f"Object [in User] : "
|
|
729
|
-
f"{pos[0]:2.5f}, {pos[1]:2.5f}, {pos[2]:2.5f}, {pos[3]:2.5f}, {pos[4]:2.5f}, "
|
|
730
|
-
f"{pos[5]:2.5f}"
|
|
731
|
-
)
|
|
732
|
-
|
|
733
|
-
pos = self.get_machine_positions()
|
|
734
|
-
logger.info(
|
|
735
|
-
f"Platform [in Machine]: "
|
|
736
|
-
f"{pos[0]:2.5f}, {pos[1]:2.5f}, {pos[2]:2.5f}, {pos[3]:2.5f}, {pos[4]:2.5f}, "
|
|
737
|
-
f"{pos[5]:2.5f}"
|
|
738
|
-
)
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
class AlphaPlusControllerInterface(AlphaControllerInterface):
|
|
742
|
-
|
|
743
|
-
@dynamic_interface
|
|
744
|
-
def get_limits_value(self, lim):
|
|
745
|
-
"""Three different and independent operational workspace limits are defined on the controller:
|
|
746
|
-
* Factory limits: are expressed in machine coordinate system limits. Those parameters cannot be modified.
|
|
747
|
-
* Machine coordinate system limits: they are expressed in the Machine coordinate system. It can be used to
|
|
748
|
-
secure the hexapod (and/or object) from its environment.
|
|
749
|
-
* User coordinate system limits: they are expressed in the User coordinate system. It can be used to limits
|
|
750
|
-
the movements of the object mounted on hexapod.
|
|
751
|
-
|
|
752
|
-
Remark: operational workspace limits must be understood as limits in terms of amplitude of movement. Those
|
|
753
|
-
limits are defined for each operational axis with a negative and positive value and are used in the validation
|
|
754
|
-
process. Position on each operational axis must be within those two values.
|
|
755
|
-
|
|
756
|
-
Args:
|
|
757
|
-
lim (int):
|
|
758
|
-
0 = factory (GET only),
|
|
759
|
-
1 = machine cs limit,
|
|
760
|
-
2 = user cs limit
|
|
761
|
-
|
|
762
|
-
"""
|
|
763
|
-
raise NotImplementedError
|
|
764
|
-
|
|
765
|
-
@dynamic_interface
|
|
766
|
-
def get_limits_state(self):
|
|
767
|
-
""" Return workspace limits enable state
|
|
768
|
-
|
|
769
|
-
"""
|
|
770
|
-
raise NotImplementedError
|
|
771
|
-
|
|
772
|
-
@dynamic_interface
|
|
773
|
-
def get_temperature(self):
|
|
774
|
-
""" Return the 6xPT100 temperature sensor's value in C
|
|
775
|
-
|
|
776
|
-
"""
|
|
777
|
-
raise NotImplementedError
|
|
778
|
-
|
|
779
|
-
@dynamic_interface
|
|
780
|
-
def machine_limit_enable(self, state):
|
|
781
|
-
"""Enable or disable the machine workspace limit of the hexapod.
|
|
782
|
-
|
|
783
|
-
Remark: the factory machine coordinate system limit is always enabled to ensure the safety of the hexapod. It
|
|
784
|
-
cannot be disabled.
|
|
785
|
-
|
|
786
|
-
state(int):
|
|
787
|
-
0 = disabled
|
|
788
|
-
1 = enabled
|
|
789
|
-
|
|
790
|
-
"""
|
|
791
|
-
|
|
792
|
-
raise NotImplementedError
|
|
793
|
-
|
|
794
|
-
@dynamic_interface
|
|
795
|
-
def machine_limit_set(self, *par):
|
|
796
|
-
"""Sets the machine workspace limits of the hexapod. Will raise error if not all the parameters are set (see
|
|
797
|
-
Args definition)
|
|
798
|
-
|
|
799
|
-
Remark: operational workspace limits must be understood as limits in terms of amplitude of movement. Those limits
|
|
800
|
-
are defined for each operational axis with a negative and positive value and are used in the validation process.
|
|
801
|
-
Position on each operational axis must be within those two values.
|
|
802
|
-
|
|
803
|
-
Args:
|
|
804
|
-
ntx(double): negative position limit in X in mm
|
|
805
|
-
nty(double): negative position limit in Y in mm
|
|
806
|
-
ntz(double): negative position limit in Z in mm
|
|
807
|
-
nrx(double): negative position limit around the axis X in deg
|
|
808
|
-
nry(double): negative position limit around the axis Y in deg
|
|
809
|
-
nrz(double): negative position limit around the axis Y in deg
|
|
810
|
-
|
|
811
|
-
ptx(double): positive position limit in X in mm
|
|
812
|
-
pty(double): positive position limit in Y in mm
|
|
813
|
-
ptz(double): positive position limit in Z in mm
|
|
814
|
-
prx(double): positive position limit around the axis X in deg
|
|
815
|
-
pry(double): positive position limit around the axis Y in deg
|
|
816
|
-
prz(double): positive position limit around the axis Y in deg
|
|
817
|
-
|
|
818
|
-
"""
|
|
819
|
-
|
|
820
|
-
raise NotImplementedError
|
|
821
|
-
|
|
822
|
-
@dynamic_interface
|
|
823
|
-
def user_limit_enable(self, state):
|
|
824
|
-
"""Enable or disable the user workspace limit of the hexapod.
|
|
825
|
-
|
|
826
|
-
Remark: the factory machine coordinate system limit is always enabled to ensure the safety of the hexapod. It
|
|
827
|
-
cannot be disabled.
|
|
828
|
-
|
|
829
|
-
state(int):
|
|
830
|
-
0 = disabled
|
|
831
|
-
1 = enabled
|
|
832
|
-
|
|
833
|
-
"""
|
|
834
|
-
|
|
835
|
-
raise NotImplementedError
|
|
836
|
-
|
|
837
|
-
@dynamic_interface
|
|
838
|
-
def user_limit_set(self, *par):
|
|
839
|
-
"""Sets the user workspace limits of the hexapod. Will raise error if not all the parameters are set (see
|
|
840
|
-
Args definition)
|
|
841
|
-
|
|
842
|
-
Remark: operational workspace limits must be understood as limits in terms of amplitude of movement. Those limits
|
|
843
|
-
are defined for each operational axis with a negative and positive value and are used in the validation process.
|
|
844
|
-
Position on each operational axis must be within those two values.
|
|
845
|
-
|
|
846
|
-
Args:
|
|
847
|
-
ntx(double): negative position limit in X in mm
|
|
848
|
-
nty(double): negative position limit in Y in mm
|
|
849
|
-
ntz(double): negative position limit in Z in mm
|
|
850
|
-
nrx(double): negative position limit around the axis X in deg
|
|
851
|
-
nry(double): negative position limit around the axis Y in deg
|
|
852
|
-
nrz(double): negative position limit around the axis Y in deg
|
|
853
|
-
|
|
854
|
-
ptx(double): positive position limit in X in mm
|
|
855
|
-
pty(double): positive position limit in Y in mm
|
|
856
|
-
ptz(double): positive position limit in Z in mm
|
|
857
|
-
prx(double): positive position limit around the axis X in deg
|
|
858
|
-
pry(double): positive position limit around the axis Y in deg
|
|
859
|
-
prz(double): positive position limit around the axis Y in deg
|
|
860
|
-
|
|
861
|
-
"""
|
|
862
|
-
|
|
863
|
-
raise NotImplementedError
|
|
864
|
-
|
|
865
|
-
@dynamic_interface
|
|
866
|
-
def set_default(self):
|
|
867
|
-
"""
|
|
868
|
-
Restores the default configuration parameters. The command can be used to restore factory default parameters.
|
|
869
|
-
The restored configuration is not automatically saved. refer to the command CFG_SAVE to save the parameters in
|
|
870
|
-
order to keep them after a controller power off. The calculation of the hexapod position is suspended during the
|
|
871
|
-
command execution.
|
|
872
|
-
"""
|
|
873
|
-
|
|
874
|
-
raise NotImplementedError
|