Compensation

class lsst.ts.hexapod.Compensation(*, elevation_coeffs, temperature_coeffs, min_temperature, max_temperature)

Bases: object

Compute hexapod compensation for elevation, azimuth, and temperature.

The compensation is computed as offsets for x, y, z, u, v, w.

Parameters:
elevation_coeffs : list [list [float]]

Elevation CosinePolynomial coefficients, as a sequence of 6 coefficient sequences, for x, y, z, u, v, w. Each coefficient sequence must contain at least one element. Here is an example showing valid, though unrealistic, values:

elevation_coeffs=[
    [0.11, 0.012],
    [0.21],
    [0.31, 0.032, -0.0033],
    [0.000042, 0.000042],
    [0.000052, 0.000052],
    [0.000062],
]
temperature_coeffs : list [list [float]]

Temperature RangedPolynomial coefficients, with the same format as elevation_coeffs.

min_temperature : float

Minimum temperature for which temperature_coeffs is valid.

max_temperature : float

Maximum temperature for which temperature_coeffs is valid.

Raises:
ValueError

If elevation_coeffs, azimuth_coeffs or temperature_coeffs is not a sequence of 6 items, or if any item is not a sequence of floats with at least 1 element.

Methods Summary

get_offsets(elevation, azimuth, temperature) Get compensation offsets.

Methods Documentation

get_offsets(elevation, azimuth, temperature)

Get compensation offsets.

Parameters:
elevation : float

Telescope elevation (deg). Must be in range [0, 90].

azimuth : float

Telescope azimuth (deg). There are no range limits; azimuth is wrapped as needed.

temperature : float

Ambient temperature (C). There are no range limits; see RangedPolynomial for details.

Returns:
offsets : list [float]

Offsets for x, y, z (um), u, v, w (deg), such that compensated value = nominal value + offsets.

Raises:
ValueError

If elevation not in range [0, 90].