Developer Guide

The MTHexapod CSC is implemented using ts_salobj and ts_hexrotcom.

API

The primary class is:

lsst.ts.mthexapod Package

Functions

check_negative_value(value, name, min_value) Check that a numeric value is in range min_value <= value < 0.
check_new_position_limits(limits, max_limits) Raise ExceptionClass if proposed new position limits are not with range of the maximum allowed position limits.
check_position(position, limits[, …]) Raise ExceptionClass if a position is not within limits.
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.

Classes

CommandCode Values for the Command.code field.
Compensation(*, elevation_coeffs, …) Compute hexapod compensation for elevation, azimuth, camera rotation, and temperature.
CompensationInputs(elevation, azimuth, …) Input values for the compensation model.
Config MTHexapod configuration.
FourierSeries(coeffs) A real-valued Fourier series.
HexapodCommander(index, enable) Command the MTHexapod CSC from the command line.
HexapodCsc(index[, config_dir, …]) MTHexapod CSC.
MockMTHexapodController(index, log[, host, …]) Mock MTHexapod controller that talks over TCP/IP.
Position(x, y, z, u, v, w) The position and orientation of the hexapod pivot point.
PositionLimits(maxXY, minZ, maxZ, maxUV, …) Position limits.
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 MTHexapod telemetry.

Class Inheritance Diagram

Inheritance diagram of lsst.ts.mthexapod.enums.CommandCode, lsst.ts.mthexapod.compensation.Compensation, lsst.ts.mthexapod.base.CompensationInputs, lsst.ts.mthexapod.structs.Config, lsst.ts.mthexapod.fourier_series.FourierSeries, lsst.ts.mthexapod.hexapod_commander.HexapodCommander, lsst.ts.mthexapod.hexapod_csc.HexapodCsc, lsst.ts.mthexapod.mock_controller.MockMTHexapodController, lsst.ts.mthexapod.base.Position, lsst.ts.mthexapod.base.PositionLimits, lsst.ts.mthexapod.ranged_polynomial.RangedPolynomial, lsst.ts.mthexapod.enums.SalIndex, lsst.ts.mthexapod.enums.SetEnabledSubstateParam, lsst.ts.mthexapod.simple_hexapod.SimpleHexapod, lsst.ts.mthexapod.structs.Telemetry

Build and Test

This is a pure python package. There is nothing to build except the documentation.

make_idl_files.py MTHexapod
setup -r .
pytest -v  # to run tests
package-docs clean; package-docs build  # to build the documentation

Contributing

ts_mthexapod is developed at https://github.com/lsst-ts/ts_mthexapod. You can find Jira issues for this package using labels=ts_mthexapod..