Class MotomanRobotScannableGroup

All Implemented Interfaces:
Device, Scannable, IScannableGroup, Configurable, Findable, gda.observable.IObservable, gda.observable.IObserver

public class MotomanRobotScannableGroup extends ScannableGroup
This scannable group represents a Motoman robot. It has two particular characteristics: (1) The two robot arm axes (KTheta invalid input: '&' KPhi) cannot reliably be moved at the same time.
(2) When the KTheta angle is very small (kThetaProtectionValue), KPhi must not exceed a certain value (kPhiProtectionValue) in order to avoid possible damage to the robot. To allow this class to satisfy these conditions KTheta invalid input: '&' KPhi (in that order) MUST be the first two devices in the group.
  • Constructor Details

    • MotomanRobotScannableGroup

      public MotomanRobotScannableGroup()
  • Method Details

    • asynchronousMoveTo

      public void asynchronousMoveTo(Object position) throws DeviceException
      Description copied from class: ScannableBase
      Trigger a move/operation and return immediately. Implementations of this method should be non-blocking to allow concurrent motion; the isBusy method will be used to determine when the move has completed. Converts the external (user) position to an internal position and passes this to rawAsynchronousMoveTo.
      Specified by:
      asynchronousMoveTo in interface Scannable
      Overrides:
      asynchronousMoveTo in class ScannableGroup
      Parameters:
      position - Position to move to should have an element for each input field.
      Throws:
      DeviceException
    • isBusy

      public boolean isBusy() throws DeviceException
      Description copied from interface: Scannable
      Check if the Scannable is moving/operating.
      Specified by:
      isBusy in interface Scannable
      Overrides:
      isBusy in class ScannableGroup
      Returns:
      true - if operation carried out by moveTo has not completed yet
      Throws:
      DeviceException
    • waitWhileBusy

      public void waitWhileBusy() throws DeviceException, InterruptedException
      Description copied from class: ScannableBase
      Returns when operation carried out by moveTo has completed If this is to be overriden, isBusy must also be valid. Although the pos and scan command currently use this method to determine if the Scannable is busy, this must not be relied upon.
      Specified by:
      waitWhileBusy in interface Scannable
      Overrides:
      waitWhileBusy in class ScannableGroup
      Throws:
      DeviceException
      InterruptedException
    • atCommandFailure

      public void atCommandFailure() throws DeviceException
      Description copied from class: ScannableBase
      Hook to be used by Scan and pos commands to inform the Scannable that an exception, such as a DeviceExcpetion, has occurred. However not called when the command is aborted using an InterruptionException. If a Scan is aborted then only Scannable.stop() will be called by the Scan or pos command.

      Useful for telling Scannables which hold state during a scan for example, to reset themselves. Used for example by CoordinatedMotionScannables. This hook should be used not in the same way as the stop hook. Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.

      Specified by:
      atCommandFailure in interface Scannable
      Overrides:
      atCommandFailure in class ScannableGroup
      Throws:
      DeviceException
      See Also:
    • getkThetaProtectionValue

      public double getkThetaProtectionValue()
    • setkThetaProtectionValue

      public void setkThetaProtectionValue(double kThetaProtectionValue)
    • getkPhiProtectionValue

      public double getkPhiProtectionValue()
    • setkPhiProtectionValue

      public void setkPhiProtectionValue(double kPhiProtectionValue)