Compensation

class lsst.ts.mthexapod.Compensation(*, elevation_coeffs: list[list[float]], azimuth_coeffs: list[list[float]], rotation_coeffs: list[list[float]], temperature_coeffs: list[list[float]], min_temperature: float, max_temperature: float)

Bases: object

Compute hexapod compensation for elevation, azimuth, camera rotation, and temperature.

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

Parameters:
elevation_coeffslist [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],
]
azimuth_coeffslist [list [float]]

Azimuth coefficients, with the same format as elevation_coeffs.

rotation_coeffslist [list [float]]

Rotation coefficients, with the same format as elevation_coeffs.

temperature_coeffslist [list [float]]

Temperature RangedPolynomial coefficients, with the same format as elevation_coeffs.

min_temperaturefloat

Minimum temperature for which temperature_coeffs is valid.

max_temperaturefloat

Maximum temperature for which temperature_coeffs is valid.

Raises:
ValueError

If elevation_coeffs, azimuth_coeffs, rotation_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_offset(inputs)

Get compensation offset.

Methods Documentation

get_offset(inputs: CompensationInputs) Position

Get compensation offset.

Parameters:
inputsCompensationInputs

Inputs for the compensation model.

Returns:
offsetPosition

Compensation offsets, such that:

compensated position = uncompensated position + offset.
Raises:
ValueError

If elevation not in range [0, 90].