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(value)

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(value)

An enumeration.

SetEnabledSubstateParam(value)

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..