Class SBLExpand


  • public class SBLExpand
    extends java.lang.Object
    Interface for sampling a configuration in the vicinity of some
    other configuration.

    SBLExpand is a primitive for planners in the SBL family. The primitive
    takes a configuration q as parameter and returns another configuration
    somewhere in the vicinity of q.

    Different implementations can have different policies with respect to
    what constraints are satisfied by the configurations returned.
    • Constructor Summary

      Constructors 
      Constructor Description
      SBLExpand​(long cPtr, boolean cMemoryOwn)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void delete()  
      Q expand​(Q q)
      A configuration sampled from the vicinity of q.

      Implementation dependant, the sampler may return the empty
      configuration if no configurations can be sampled near q.
      static long getCPtr​(SBLExpand obj)  
      static SBLExpandPtr makeShrinkingUniformBox​(QConstraintPtr constraint, PairQ outer, double ratio)
      Sample within a box of shrinking size until a collision free
      configuration is found.

      The inner box shrinks in size as 1, 1/2, 1/3, ...

      This form of expansion is typical for SBL planners.

      The inner and outer box are specified as explained for
      makeUniformBox().
      static SBLExpandPtr makeShrinkingUniformBox​(QConstraintPtr constraint, PairQ outer, PairQ inner)
      Sample within a box of decreasing size until a collision free
      configuration is found.

      The inner box shrinks in size as 1, 1/2, 1/3, ...

      This form of expansion is typical for SBL planners.

      The inner and outer box are specified as explained for
      makeUniformBox().
      static SBLExpandPtr makeShrinkingUniformJacobianBox​(QConstraintPtr constraint, DevicePtr device, State state, JacobianCalculatorPtr jacobian)
      Sample within a box of shrinking size until a collision free
      configuration is found.

      The size of the inner box depends on the Jacobian of the current
      configuration.
      static SBLExpandPtr makeShrinkingUniformJacobianBox​(QConstraintPtr constraint, DevicePtr device, State state, JacobianCalculatorPtr jacobian, double angle_max)
      Sample within a box of shrinking size until a collision free
      configuration is found.

      The size of the inner box depends on the Jacobian of the current
      configuration.
      static SBLExpandPtr makeShrinkingUniformJacobianBox​(QConstraintPtr constraint, DevicePtr device, State state, JacobianCalculatorPtr jacobian, double angle_max, double disp_max)
      Sample within a box of shrinking size until a collision free
      configuration is found.

      The size of the inner box depends on the Jacobian of the current
      configuration.
      static SBLExpandPtr makeUniformBox​(PairQ outer, double ratio)
      Expansion within a scaled down box of the configuration space.

      Given a configuration q, the expand() method samples a
      configuration uniformly at random from the intersection between
      q + inner
      and
      outer
      where inner equals outer scaled by a factor of ratio and
      centered at origo.

      This is a form of expansion you will use in a standard implementation
      of an SBL planner.

      ratio must be positive.

      If outer is non-empty, the expand() method will always return a
      non-empty configuration.
      static SBLExpandPtr makeUniformBox​(PairQ outer, PairQ inner)
      Expansion within the overlap of an inner and outer box.

      Given a configuration q, the expand() method returns a configuration
      sampled uniformly at random from the intersection between
      q + inner
      and
      outer

      Given a device, you typically use device.getBounds() as the box
      for the outer configuration space.

      If the overlap between the boxes is empty, expand() returns the empty
      configuration.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SBLExpand

        public SBLExpand​(long cPtr,
                         boolean cMemoryOwn)
    • Method Detail

      • getCPtr

        public static long getCPtr​(SBLExpand obj)
      • delete

        public void delete()
      • expand

        public Q expand​(Q q)
        A configuration sampled from the vicinity of q.

        Implementation dependant, the sampler may return the empty
        configuration if no configurations can be sampled near q.
      • makeUniformBox

        public static SBLExpandPtr makeUniformBox​(PairQ outer,
                                                  PairQ inner)
        Expansion within the overlap of an inner and outer box.

        Given a configuration q, the expand() method returns a configuration
        sampled uniformly at random from the intersection between
        q + inner
        and
        outer

        Given a device, you typically use device.getBounds() as the box
        for the outer configuration space.

        If the overlap between the boxes is empty, expand() returns the empty
        configuration.
      • makeUniformBox

        public static SBLExpandPtr makeUniformBox​(PairQ outer,
                                                  double ratio)
        Expansion within a scaled down box of the configuration space.

        Given a configuration q, the expand() method samples a
        configuration uniformly at random from the intersection between
        q + inner
        and
        outer
        where inner equals outer scaled by a factor of ratio and
        centered at origo.

        This is a form of expansion you will use in a standard implementation
        of an SBL planner.

        ratio must be positive.

        If outer is non-empty, the expand() method will always return a
        non-empty configuration.
      • makeShrinkingUniformBox

        public static SBLExpandPtr makeShrinkingUniformBox​(QConstraintPtr constraint,
                                                           PairQ outer,
                                                           PairQ inner)
        Sample within a box of decreasing size until a collision free
        configuration is found.

        The inner box shrinks in size as 1, 1/2, 1/3, ...

        This form of expansion is typical for SBL planners.

        The inner and outer box are specified as explained for
        makeUniformBox().
      • makeShrinkingUniformBox

        public static SBLExpandPtr makeShrinkingUniformBox​(QConstraintPtr constraint,
                                                           PairQ outer,
                                                           double ratio)
        Sample within a box of shrinking size until a collision free
        configuration is found.

        The inner box shrinks in size as 1, 1/2, 1/3, ...

        This form of expansion is typical for SBL planners.

        The inner and outer box are specified as explained for
        makeUniformBox().
      • makeShrinkingUniformJacobianBox

        public static SBLExpandPtr makeShrinkingUniformJacobianBox​(QConstraintPtr constraint,
                                                                   DevicePtr device,
                                                                   State state,
                                                                   JacobianCalculatorPtr jacobian,
                                                                   double angle_max,
                                                                   double disp_max)
        Sample within a box of shrinking size until a collision free
        configuration is found.

        The size of the inner box depends on the Jacobian of the current
        configuration. The radius for the i'th dimension of the inner box is

        R_i = min(angle_max / angle_vel, disp_max / disp_vel)

        where angle_vel is the magnitude of the angular velocity and disp_vel
        is the magnitude of the translational velocity.

        If jacobian is NULL, a default device Jacobian is chosen based on
        device.

        If angle_max or disp_max is negative, a default value for the
        variable is chosen.

        The inner box shrinks in size as 1, 1/2, 1/3, ...
      • makeShrinkingUniformJacobianBox

        public static SBLExpandPtr makeShrinkingUniformJacobianBox​(QConstraintPtr constraint,
                                                                   DevicePtr device,
                                                                   State state,
                                                                   JacobianCalculatorPtr jacobian,
                                                                   double angle_max)
        Sample within a box of shrinking size until a collision free
        configuration is found.

        The size of the inner box depends on the Jacobian of the current
        configuration. The radius for the i'th dimension of the inner box is

        R_i = min(angle_max / angle_vel, disp_max / disp_vel)

        where angle_vel is the magnitude of the angular velocity and disp_vel
        is the magnitude of the translational velocity.

        If jacobian is NULL, a default device Jacobian is chosen based on
        device.

        If angle_max or disp_max is negative, a default value for the
        variable is chosen.

        The inner box shrinks in size as 1, 1/2, 1/3, ...
      • makeShrinkingUniformJacobianBox

        public static SBLExpandPtr makeShrinkingUniformJacobianBox​(QConstraintPtr constraint,
                                                                   DevicePtr device,
                                                                   State state,
                                                                   JacobianCalculatorPtr jacobian)
        Sample within a box of shrinking size until a collision free
        configuration is found.

        The size of the inner box depends on the Jacobian of the current
        configuration. The radius for the i'th dimension of the inner box is

        R_i = min(angle_max / angle_vel, disp_max / disp_vel)

        where angle_vel is the magnitude of the angular velocity and disp_vel
        is the magnitude of the translational velocity.

        If jacobian is NULL, a default device Jacobian is chosen based on
        device.

        If angle_max or disp_max is negative, a default value for the
        variable is chosen.

        The inner box shrinks in size as 1, 1/2, 1/3, ...