pylabrobot.liquid_handling.backends.hamilton.STAR_backend.STAR.iswap_rotate_to_angles#

async STAR.iswap_rotate_to_angles(rotation_angle: RotationDriveOrientation | float | None = None, wrist_angle: WristDriveOrientation | float | None = None, rotation_speed: float = 75.0, rotation_acceleration: float = 500.0, rotation_current_limit: int = 5, wrist_speed: float = 100.0, wrist_acceleration: float = 725.0, wrist_current_limit: int = 5) None#

Rotate one or both iSWAP joints to absolute angles in a single motion.

Public deg-based wrapper around _iswap_rotate_increments. When both angles are supplied, both joints arrive together under a single motion plan so the gripper sweeps a straight joint-space path; enables IK-driven trajectory execution.

When only one angle is supplied, the other drive is requested from device (i.e. single-axis rotation is covered as well). At least one of rotation_angle or wrist_angle must be provided.

Each angle is either the enum stop (lands on the EEPROM increment) or a float in degrees: rotation floats interpolate piecewise-linearly between the LEFT / FRONT / RIGHT EEPROM stops, wrist floats are linear from motor zero. Speed and acceleration convert linearly for both drives.

Snap-to-stop: float angles within one motor increment of a calibrated stop’s deg-form land on the exact stored increment, so values read via iswap_*_drive_request_angle round-trip bit-exact.

Parameters:
  • [deg] (wrist_angle) – predefined RotationDriveOrientation enum, or float signed from FRONT (+/-90), or None to hold current.

  • [deg] – predefined WristDriveOrientation enum, or float signed from motor zero (+/-152), or None to hold current.

  • [deg/sec] (wrist_speed) – max angular velocity, 0.1..230.

  • [deg/sec^2] (wrist_acceleration) – max angular acceleration, 16..619.

  • rotation_current_limit (int) – motor current protection limiter, 0..7.

  • [deg/sec] – max angular velocity, 0.2..330.

  • [deg/sec^2] – max angular acceleration, 26..1015.

  • wrist_current_limit (int) – motor current protection limiter, 0..7.

  • rotation_angle (RotationDriveOrientation | float | None)

  • wrist_angle (WristDriveOrientation | float | None)

  • rotation_speed (float)

  • rotation_acceleration (float)

  • wrist_speed (float)

  • wrist_acceleration (float)

Raises:
  • RuntimeError – if iSWAP is not installed or if setup() has not populated the predefined-stop tables.

  • ValueError – if neither angle is provided, or if either resolved target increment is outside the hardware range.

Return type:

None