dodal.devices.insertion_device.AppleKnotPathFinder#

class dodal.devices.insertion_device.AppleKnotPathFinder[source]#

Class to find a safe path for AppleKnot undulator moves that avoids the exclusion zone around 0-0 gap-phase. We rely on axis-aligned (manhattan) moves and splitting moves that cross zero phase into two segments via an intermediate point at zero phase and a safe gap value. We ASSUME the exclusion zones are rectangles aligned with the axes in a shape of hanoi tower centered at (0,0). Gap and phase motors are NOT moved together but instead are moved sequentially. Sequential move guarantees safe pass avoiding exslusion zones. We can not use asynchronous move of gap and phase because we can not currently rely on gap and phase motors relative speed. See https://confluence.diamond.ac.uk/x/vQENAg for more details.

Parameters:

exclusion_zone (tuple[Rectangle2D, ...])

Methods

get_apple_knot_val_path(start_val, end_val)

Get a list of Apple2Val representing the path from start to end avoiding exclusion zones.

get_apple_knot_val_path(start_val: Apple2Val, end_val: Apple2Val) tuple[Apple2Val, ...][source]#

Get a list of Apple2Val representing the path from start to end avoiding exclusion zones.

Parameters:
Return type:

tuple[Apple2Val, ...]