SimpleHexapod¶

class
lsst.ts.hexapod.
SimpleHexapod
(base_positions, mirror_positions, pivot, min_length, max_length, speed)¶ Bases:
object
Simple model of a hexapod: 6 linear actuators in an arbitrary arrangement.
The intent is to support the mock hexapod controller; as such this model is somewhat simplistic. The actuators ends are assumed to be perfect point flexures. It is not (yet) possible to compute orientation given actuator lengths.
See
make_zigzag_model
to make a standard symmetrical zigzag hexapod.Parameters:  base_positions :
List
[List
[float
]] Position of the base end of each linear actuator, as a list of z,y,z tuples, one per actuator.
 mirror_positions :
List
[List
[float
]] Position of the mirror end of each actuator at zero orientation, as a list of z,y,z tuples, one per actuator.
 pivot :
numpy.ndarray
The point whose orientation is set by the
move
command. For a mirror it will typically be the vertex of the mirror. min_length :
float
Mininum actuator length.
 max_length :
float
Maximum actuator length.
 speed :
float
Actuator speed.
Methods Summary
assert_in_range
(actuator_lengths)Assert that all actuators would be in range if set to the specified length. compute_actuator_lengths
(mirror_positions, …)Compute actuator lengths, given mirror positions. compute_mirror_positions
(pos, xyzrot)Compute the actuator mirror positions needed to move the pivot point to a specified orientation. make_zigzag_model
(base_radius, …)Make a SimpleHexapod
of a typical hexapod with 6 actuators in a symmetrical zigzag arrangement.move
(pos, xyzrot)Move the actuators so the pivot point is at the specified orientation. moving
([tai])Is any actuator moving? remaining_time
([tai])Remaining time for this move (sec). stop
()Stop all actuators. Methods Documentation

assert_in_range
(actuator_lengths)¶ Assert that all actuators would be in range if set to the specified length.

compute_actuator_lengths
(mirror_positions, absolute)¶ Compute actuator lengths, given mirror positions.
Parameters:  mirror_positions :
List
[numpy.ndarray
] Position of the mirror end of each actuator.
 absolute :
bool
If True then return end to end actuator lengths. If False then return lengths relative to neutral lengths; this requires
self.neutral_actuator_lengths
.
Returns:  actuator_end_to_end_lengths :
numpy.ndarray
End to end length of each actuator.
 mirror_positions :

compute_mirror_positions
(pos, xyzrot)¶ Compute the actuator mirror positions needed to move the pivot point to a specified orientation.
Parameters:  pos :
numpy.ndarray
Desired x, y, z position of pivot point, relative to the neutral pivot point.
 xyzrot :
numpy.ndarray
Orientation of translated pivot point, as a rotation about x, then y, then z (deg).
Returns:  mirror_positions :
List
[numpy.ndarray
] Resulting position of the mirror end of each actuator.
 pos :

classmethod
make_zigzag_model
(base_radius, mirror_radius, mirror_z, base_angle0, pivot, min_length, max_length, speed)¶ Make a
SimpleHexapod
of a typical hexapod with 6 actuators in a symmetrical zigzag arrangement.The base ends of the 6 actuators terminate at 3 points at
z=0
evenly distributed about a circle of radiusbase_radius
: actuators 0 and 5 terminate at base_angle0, actuators 1 and 2 terminate at base_angle0 + 120, and actuators 3 and 4 terminate at base_angle0 + 240. The mirror ends of the actuators are similarly arrayed, in a plane atz=mirror_z
with attachment points rotated 60 degrees from the base attachment points: actuators 0 and 1 terminate at base_angle0 + 60, etc. This makes a zigzag pattern that is circularly symmetric about the z axis. base_radius :
float
 Radius of base positions of actuators.
 mirror_radius :
float
 Radius of mirror positions of actuators.
 mirror_z :
float
 z distance between the base ends and the mirror ends of the linear actuators.
 base_angle0 :
float
 Angle of first base actuator point in x,y plane (deg).
 pivot :
numpy.ndarray
 The point whose orientation is set by the
move
command. For a mirror it will typically be the vertex of the mirror.  min_length :
float
 Mininum actuator length.
 max_length :
float
 Maximum actuator length.
 speed :
float
 Actuator speed.
 base_radius :

move
(pos, xyzrot)¶ Move the actuators so the pivot point is at the specified orientation.
Parameters:  pos :
numpy.ndarray
x, y, z position of pivot point.
 xyzrot :
numpy.ndarray
Orientation of translated pivot point, as a rotation about x, then y, then z (deg).
Returns:  duration :
float
Duration of the move (second).
 pos :

moving
(tai=None)¶ Is any actuator moving?

remaining_time
(tai=None)¶ Remaining time for this move (sec).

stop
()¶ Stop all actuators.
 base_positions :