P
- a pose implementing IPose2D
.M
- a movement (or sequence of movements) of the robot, implementing IMclMove
.R
- a range reading extending AbstractRangeReading
.public final class MclCartesianPlot2D<P extends IPose2D<P,M>,M extends IMclMove<M>,R extends AbstractRangeReading> extends java.lang.Object implements IMclMap<P,Angle,M,AbstractRangeReading>
IMclMap
using the classes Angle
and AbstractRangeReading
.IGeometric2D
.rayCast
function.isPoseValid
which in addition tests whether the heading of that pose is valid and the position is inside an obstacle which makes it an invalid position.Modifier and Type | Field and Description |
---|---|
static java.lang.String |
AREA_ID
This is the identifier that is used to find a group of areas in the map file.
|
static java.lang.String |
OBSTACLE_ID
This is the identifier that is used to find a group of obstacles in the map file.
|
Constructor and Description |
---|
MclCartesianPlot2D(IGroupParser obstaclesParser,
IGroupParser areasParser,
IPoseFactory<P,M> poseFactory,
IRangeReadingFactory<R> rangeReadingFactory) |
Modifier and Type | Method and Description |
---|---|
P |
checkDistanceOfPoses(java.util.Set<P> samples,
double maxDistance)
Calculate the maximum distance between all samples and compare it to
maxDistance . |
java.util.Iterator<Rect2D> |
getAreaBoundaries()
Returns an iterator over the boundaries of the area polygons.
|
java.util.Iterator<IGeometric2D> |
getAreas()
Returns an iterator over the area polygons.
|
java.util.Iterator<Rect2D> |
getObstacleBoundaries()
Returns an iterator over the boundaries of the obstacle polygons.
|
java.util.Iterator<IGeometric2D> |
getObstacles()
Returns an iterator over the obstacle polygons.
|
boolean |
isLoaded()
Checks whether a map was loaded.
|
boolean |
isPoseValid(P pose)
Verifies whether a pose is valid, that is inside the map boundaries and not within an obstacle.
|
void |
loadMap(java.io.InputStream obstacleInput,
java.io.InputStream areaInput)
This function loads a map input stream into this Cartesian plot.
|
P |
randomPose()
Generates a random valid pose on the map.
|
R |
rayCast(P pose)
Calculates the length of a ray in a direction defined by a pose.
|
void |
setSensorRange(double sensorRange)
Sets the sensor range.
|
public static final java.lang.String OBSTACLE_ID
public static final java.lang.String AREA_ID
public MclCartesianPlot2D(IGroupParser obstaclesParser, IGroupParser areasParser, IPoseFactory<P,M> poseFactory, IRangeReadingFactory<R> rangeReadingFactory)
obstaclesParser
- a map parser implementing IGroupParser
. This parser is used to load a map file for the obstacles.areasParser
- a map parser implementing IGroupParser
. This parser is used to load a map file for the areas. It should be a different object than obstaclesParser or implemented thread-safe.poseFactory
- a pose factory implementing IPoseFactory
.rangeReadingFactory
- a range reading factory implementing IRangeReadingFactory
.public void setSensorRange(double sensorRange)
sensorRange
- the maximum range that the sensor can reliably measure. This parameter is used to speed up rayCast
.public P checkDistanceOfPoses(java.util.Set<P> samples, double maxDistance)
maxDistance
.
If it is smaller or equals to maxDistance
the mean is returned. null
otherwise.samples
- the set of samples to be checked against.maxDistance
- the maxDistance that the cloud should have to return a mean.null
.public void loadMap(java.io.InputStream obstacleInput, java.io.InputStream areaInput) throws java.lang.Exception
obstacleInput
- the stream containing the obstacles.areaInput
- the stream containing the areasjava.lang.Exception
- thrown by the implementing class of IGroupParser
when calling loadMap
.public java.util.Iterator<IGeometric2D> getObstacles()
public java.util.Iterator<Rect2D> getObstacleBoundaries()
public java.util.Iterator<IGeometric2D> getAreas()
public java.util.Iterator<Rect2D> getAreaBoundaries()
public boolean isLoaded()
true
if a map was loaded.public P randomPose()
IMclMap
public R rayCast(P pose)
IMclMap