Skip to content

Sample

The I15-1 sample stage. Design-phase; values are reverse-engineered from dodal or inferred.

The sample stage is the experiment hutch: the sample positioning and hexapod, the two-theta detector arm, the interchangeable sample-environment devices on a shared rail, and the powder/capillary sample-changing robot. It is where I15-1's three intentional-modelling decisions live.

Positioning and the detector arm

Device Family Control handle Notes
SampleTrans LinearStage BL15I-MO-TABLE-01:TRANS: sample x / y / phi
Hexapod Hexapod BL15I-MO-HEX-01: six-axis sample hexapod (linear + virtual rotation axes)
BaseY LinearStage BL15I-MO-TABLE-01:Y sample table base height
TwoTheta RotaryStage BL15I-MO-TABLE-01:TTH the two-theta detector arm angle

The sample environment (the SafeOrBeam decision)

Device Family Control handle Notes
Rail Table BL15I-MO-RAIL-01: the shared support the environment devices ride
EnvX LinearStage BL15I-MO-TABLE-01:ENV:X the shared rail X the cobra / cryostream interchange on
Blower LinearStage BL15I-EA-BLOWR-01:TLATE gas blower
Cobra LinearStage BL15I-MO-TABLE-01:ENV:X Oxford Cobra, interchangeable with the cryostream
Cryostream LinearStage BL15I-MO-TABLE-01:ENV:X Oxford Cryostream, interchangeable with the cobra

This is the decision an adversarial eval settled. In dodal the blower, cobra, and cryostream are each a SafeOrBeamPositioner: a Movable whose set() drives an underlying motor to a configured SAFE or BEAM position from a lookup table. That is the existing Positioner Role with two Indexable named positions, so they are modelled as LinearStage Assets, not as a new settable-actuator affordance, and not as a TemperatureController. The dodal classes are named for temperature controllers, but the device models only the in/out-of-beam move, not the temperature setpoint; modelling them as TemperatureController would mirror the class name rather than the behaviour (intentional-modelling-not-mirroring). The cobra and cryostream share the rail X motor (ENV:X) because they are physically interchanged on the rail; whether that exchange is a Fixture-style swap or an Assembly is the open question (SAFEBEAM-1). The rail itself is the existing Table Family (the TomoWISE DetectorGantry precedent), not a coined Rail kind (RAIL-1).

The sample-changing robot

Device Presents Control handle Notes
Robot Positioner Role BL15I-MO-ROBOT-01: powder/capillary changer (current sample at BL15I-EA-LOC-01:)

The robot reuses the settled I03 / 19-BM position: one Positioner-presenting Asset that loads and unloads a Subject (a capillary/puck from a queue), gated by a Clearance that must be Active, with the vendor robot in a bound Model. It is not a new SampleChanger Family. The puck custody lifecycle and the autonomous exchange Procedure are deferred (ROBOT-1). The dodal puck_detect (an image-processing web service, not a device) is not modelled.

See Open questions and Inventory.