Developer Guide

The Hexapod CSC is implemented using ts_salobj and ts_hexrotcom.


The primary class is:

lsst.ts.hexapod Package


check_negative_value(value, name, min_value) Check that a numeric value is in range min_value <= value < 0.
check_positive_value(value, name, max_value) Check that a numeric value is in range 0 < value <= max_value.
check_range(value, name, min_value, max_value) Check that a numeric value is range min_value <= value <= max_value.
check_symmetrical_range(value, name, max_value) Check that a numeric value is in range -max_value <= value <= max_value.
rot2d(xypos, ang) Rotate a 2-d position by the specified angle.
rot_about_x(xyzpos, ang) Rotate a 3-d position about the x axis.
rot_about_y(xyzpos, ang) Rotate a 3-d position about the y axis.
rot_about_z(xyzpos, ang) Rotate a 3-d position about the z axis.


CommandCode Values for the Command.code field.
Compensation(*, elevation_coeffs, …) Compute hexapod compensation for elevation, azimuth, and temperature.
Config Hexapod configuration.
ControllerConstants(sync_pattern, …) Constants needed to communicate with a hexapod controller.
FourierSeries(coeffs) A real-valued Fourier series.
FrameId Frame IDs for Camera and M2 hexapod telemetry and configuration.
HexapodCommander(index, enable) Command the Hexapod CSC from the command line.
HexapodCsc(index[, config_dir, …]) MT hexapod CSC.
MockMTHexapodController(index, log[, host, …]) Mock MT hexapod controller that talks over TCP/IP.
RangedPolynomial(coeffs, min_x, max_x) A polynomial that is linear outside a specified range.
SalIndex An enumeration.
SetEnabledSubstateParam Substates for the ENABLED state.
SimpleHexapod(base_positions, …) Simple model of a hexapod: 6 linear actuators in an arbitrary arrangement.
Telemetry Hexapod telemetry.

Build and Test

This is a pure python package. There is nothing to build except the documentation. ATDome
setup -r .
pytest -v  # to run tests
package-docs clean; package-docs build  # to build the documentation


lsst.ts.hexapod is developed at You can find Jira issues for this module using labels=ts_hexapod..