Base Classes
Synchronized Axes
The SyncAxis
class is provided as a shortcut for creating classes that need
to move multiple positioners at the same time with the same scale. This is
useful for things like stands that have multiple motors.
You can create a class as:
class Parallel(SyncAxis):
left = Cpt(EpicsMotor, ':01')
right = Cpt(EpicsMotor, ':02')
There are different modes for how to keep the offset between the motors. See
the full API of SyncAxis
for more information.
Previous documentation indicated to use SyncAxesBase
, but this has since been
deprecated and we no longer suggest for it to be used.
Offset Motor
A pseudopositioner base class that supports adding an offset to an existing
motor is OffsetMotorBase
.
Laser delay stages
pcdsdevices provides a laser delay stage base class that helps rescale a physical axis to a time axis.
The optical laser travels along the motor’s axis and bounces off a number of mirrors, then continues to the destination. In this way, the path length of the laser changes, which introduces a variable delay. This delay is a simple multiplier based on the speed of light.
For more details, see DelayBase
(delay_class_factory
,
delay_instance_factory
).
An “Interface” class is also provided which does not require subclassing.
See DelayMotor
for more information.
stage = SynMotor(name="stage")
delay = DelayMotor(motor=stage, name="delay")
Look-up Tables
pcdsdevices provides a base class for pseudo positioners which need a look-up table to compute positions.
Currently it supports a single pseudo positioner and single “real” positioner,
which should be mapped to columns of a 2D numpy.ndarray table
.
See LookupTablePositioner
for more information.
PV Positioners
pcdsdevices offers several flavors of “PV Positioners” - building on the
ophyd concept of PVPositioner
. These allow the user to group disparate
EPICS signals into a single ophyd device, in order to make it conform to the
same interface as a standard EpicsMotor
.
The following options are available:
PVPositionerComparator
- a PV Positioner with a software done moving signal; i.e., you supply the comparison function to say when the motion has completed.PVPositionerIsClose
- a PV Positioner that is considered done moving when the readback and setpoint are within a certain relative/absolute tolerance.PVPositionerDone
- a PV positioner that is solely comprised of a setpoint signal and assumes motion has completed.