dodal.devices.motors#

Classes

SixAxisGonio

Six-axis goniometer with a standard xyz stage and three axes of rotation: kappa, phi and omega.

Stage

For these devices, the following co-ordinates are typical but not enforced: - z is horizontal & parallel to the direction of beam travel - y is vertical and antiparallel to the force of gravity - x is the cross product of y🞬z

XThetaStage

XYPitchStage

XYStage

XYZPitchYawRollStage

XYZStage

XYZThetaStage

YZStage

Functions

create_axis_perp_to_rotation(motor_theta, ...)

Given a signal that controls a motor in a rotation axis and two other signals controlling motors on a pair of orthogonal axes, these axes being in the rotating frame of reference created by the first axis, create a derived signal that is a projection of the two axes in the non-rotating frame of reference.

dodal.devices.motors.create_axis_perp_to_rotation(motor_theta: Motor, motor_i: Motor, motor_j: Motor)[source]#

Given a signal that controls a motor in a rotation axis and two other signals controlling motors on a pair of orthogonal axes, these axes being in the rotating frame of reference created by the first axis, create a derived signal that is a projection of the two axes in the non-rotating frame of reference.

The projection is onto the axis defined by i when the rotation angle is 0 and defined by j when the angle is at 90.

The usual use case for this is translating from sample space to lab space. For example, if you have a sample that is mounted on a goniometer to the right hand side of an OAV view this can provide an axis that will move the sample up/down in that view regardless of the omega orientation of the sample.

Parameters:
  • motor_theta (Motor) – this is the rotation axis of the sample.

  • motor_i (Motor) – this is the axis that, when the sample is at 0 deg rotation, a move here is entirely parallel with the derived axis.

  • motor_j (Motor) – this is the axis that, when the sample is at 90 deg rotation, a move here is entirely parallel with the derived axis.