lsst.ts.hexapod¶
Overview¶
The Hexapod CSC controls the camera and M2 hexapods on the Simonyi Survey Telescope. Run one instance of the CSC for each hexapod, using index=1 for the camera hexapod and index=2 for the M2 hexapod.
User Guide¶
Start a Hexapod CSC as follows:
run_hexapod.py <index>
where <index>
is 1 for the camera hexapod, 2 for the M2 hexapod
Then check that the CSC has control of the low-level controller, as follows:
- Wait for the
connected
event to reportcommand=True
andtelemetry=True
. This should happen quickly; if it does not then check that the low-level controller is fully booted up and configured to use the correct IP address for the CSC. - Check the
controllerState
event. If it isstate=Offline, offline_substate=PublishOnly
, which is the state the low-level controller wakes up in, then you must use the EUI to change the state. - Check the
commandableByDDS
event. Ifstate=False
then you must use the EUI to change the control mode.
Notes¶
- To recover from the
FAULT
state (after fixing whatever is wrong) issue theclearError
command. This will transition to theSTANDBY
state. - The low-level controller maintains the CSC summary state,
so the CSC reports a summary state of
OFFLINE
until it receives telemetry from the low-level controller. Thus the CSC may transition fromOFFLINE
to almost any other state as it starts up. - Communication between the low-level controller and CSC is quite unusual:
- The low-level controller connects to a TCP/IP server in the CSC. Thus the low-level controller must be configured with the TCP/IP address of the CSC.
- The low-level controller does not acknowledge commands in any way. Thus the CSC must try to predict whether the low-level controller can execute a command and reject the command if not. Unfortunately this prediction cannot be completely accurate.
- The connection uses two separate sockets, one for commands and the other for telemetry and configuration. Both are one-directional: the low-level controller reads commands on the command socket and writes configuration and telemetry to the telemetry socket.
Simulator¶
The CSC includes a simulation mode. To run using CSC’s internal simulator:
run_hexapod.py <index> --simulate
The Engineering User Interface (EUI)¶
Use the Engineering User Interface (EUI) as follows to enable CSC control of the low-level controller:
- State must be
state=Offline, offline_substate=Available
or any more enabled state. The low-level controller wakes up instate=Offline, offline_substate=PublishOnly
, and you must change this before the CSC can control the low-level controller. Change the state on the main panel of the EUI.- Control mode must be
DDS
. The low-level controller wakes up in control modeGUI
, and you must change this before the CSC can control the low-level controller. To change the control mode use theParameters
panel; note that the EUI shows the control mode on the main panel, but that display is read-only.