Package org.robwork.sdurw_pathplanners
Class SBLExpand
 java.lang.Object

 org.robwork.sdurw_pathplanners.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 nonempty, the expand() method will always return a
nonempty 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.



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 nonempty, the expand() method will always return a
nonempty 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, ...

