Skip to content

Support for mod-360 omega#1640

Draft
rtuck99 wants to merge 7 commits intomainfrom
1598_mod_360
Draft

Support for mod-360 omega#1640
rtuck99 wants to merge 7 commits intomainfrom
1598_mod_360

Conversation

@rtuck99
Copy link
Contributor

@rtuck99 rtuck99 commented Feb 24, 2026

Fixes

Requires

  • DiamongLightSource/dodal#1929

Implements robot load at mod-360 values of omega and subsequent operations using the phase-angle of the omega axis rather than absolute values.

(remember to update pyproject.toml with the dodal commit tag if you need it for tests to pass!)

Instructions to reviewer on how to test:

  1. Robot loads can occur at 0, 360 or other multiples of 360 degrees
  2. All subsequent omega moves to specific phase angles are made using shortest-path rotations.
  3. Snapshot filenames, omega start and end angles in ISPyB and nexus files are unchanged and report values which report reduced, sign-corrected angles (i.e. respect the omega flip so 0-360 becomes 360-0)
  4. XRC resolves correct centres.
  5. Probably best to test with multipin in order to test generated snapshots and alternating rotations

Checks for reviewer

  • Would the PR title make sense to a user on a set of release notes

Copy link
Contributor

@DominicOram DominicOram left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, some comments

if (omega_start := doc.get("gonio-omega")) is not None:
omega_in_gda_space = -omega_start
if (
omega_offset_and_phase := doc.get("gonio-omega_axis-offset_and_phase")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should: Why can't we just read gonio-omega_axis-phase here?

else direction.NEGATIVE
)

start_scan_deg = reference_angle.nearest_to_phase(start_scan_deg).unwrap()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should: The reference angle is presumably needed because the zebra is still in the old co-ordinate system? Did you think about setting the position on the zebra so that it is in the new co-ordinate system, see attached:

Image

I think this will get us more on the way to the underlying motor behaviour being invisible at the plan level.

@github-actions
Copy link

Please add a label to this PR. This helps with generating helpful release notes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants