|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Object
|
+--uwcse.location.core.Tracker
|
+--uwcse.location.core.MobileTracker
|
+--uwcse.location.core.ParticleFilterTracker
A class containing functionality to track a physical object or set of grouped physical objects with a particle filter representing the location probability distribution and a motion model represents the object's motion patterns. A ParticleFilterTracker is thread safe.
Sample| Field Summary | |
protected boolean |
m_adaptiveOn
|
protected int |
m_maxSampleCnt
|
protected int |
m_minSampleCnt
|
protected Random |
m_random
|
protected boolean |
m_resettingOn
|
| Fields inherited from class uwcse.location.core.MobileTracker |
m_motionModel |
| Fields inherited from class uwcse.location.core.Tracker |
m_elapsedTime, m_lastMeasurement, m_lastUpdateTime, m_trueStateMeasurement, m_worldMap |
| Constructor Summary | |
ParticleFilterTracker(ParticleFilterTracker tracker)
Create a particle filter object tracker as a copy of this one. |
|
ParticleFilterTracker(WorldMap map,
MotionModel motion)
Create a particle filter tracker. |
|
| Method Summary | |
Object |
clone()
Create a particle filter object tracker as a copy of the given one. |
LocationReport |
createLocationReport()
Compute a location report for the object being tracked based on the entire sum of knowledge from the particle filter. |
int |
getDesiredNumberOfSamples()
Get the desired sample count to best represent the current distribution given this filter's current number of bins with support from the occupancy grid. |
static int |
getDesiredNumberOfSamples(int binsWithSupport)
Compute the chi square value using the specified number of bins of support from the occupancy grid to determine the new desired number of samples after this iteration. |
int |
getMaxNumberOfSamples()
Get the maximum number of samples this sample set can contain. |
int |
getMinNumberOfSamples()
Get the minimum number of samples this sample set can contain. |
int |
getNumberOfSamples()
Get the number of Samples currently in this filter. |
List |
getRandomSamples(int cnt)
Generate a List of cnt Samples drawn at random from the existing list respecting the weights. |
void |
initGaussianDistribution(State mean)
Initialize the samples in this filter according to the given mean inside the bounding box and set all the weights to a uniform value ( 1/getNumberOfSamples()). |
void |
initGaussianDistribution(State mean,
Vector3d posSD,
Vector3d rotSD)
Initialize the samples in this filter according to the given mean and stdDev inside the bounding box and set all the weights to a uniform value ( 1/getNumberOfSamples()). |
void |
initLocation(LocationReport report)
Initialize the tracker to the given location. |
void |
initPartialGaussianDistribution(State mean,
Vector3d posSD,
Vector3d rotSD,
double fractionOfUniformSamples)
Initialize the samples in this filter according to the given mean and stdDev inside the WorldMap and set all the weights to a uniform value (1 / getNumberOfSamples()). |
void |
initPartialGaussianDistribution(State mean,
Vector3d posSD,
Vector3d rotSD,
double fractionOfUniformSamples,
Point3d lowerCorner,
Point3d upperCorner)
Initialize the samples in this filter according to the given mean and stdDev inside specified min/max bounding box and set all the weights to a uniform value (1 / getNumberOfSamples()). |
void |
initUniformDistribution()
Initialize the samples in this filter according to a uniform distribution inside the the WorldMap and set all the weights to a uniform value ( 1/getNumberOfSamples()). |
void |
initUniformDistribution(Point3d lowerCorner,
Point3d upperCorner)
Initialize the samples in this filter according to a uniform distribution inside the specified bounding box and set all the weights to a uniform value ( 1/getNumberOfSamples()). |
void |
merge(Tracker tracker)
Compute the root-mean-square error of the position estimate of this particle filter tracker against the last known ground truth TrueStateMeasurement. |
String |
toString()
Return a string representation of this particle filter tracker. |
void |
update(Measurement meas,
LocationSensor sensor,
LocationReport sensorLocation)
Update the particle filter to reflect the given measurement taken by the given location sensor. |
| Methods inherited from class uwcse.location.core.MobileTracker |
getMotionModel, setMotionModel |
| Methods inherited from class uwcse.location.core.Tracker |
getLastMeasurement, getRMSError, getTimestamp, getTrueStateMeasurement, getWorldMap, setTrueStateMeasurement |
| Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
protected Random m_random
protected int m_maxSampleCnt
protected int m_minSampleCnt
protected boolean m_adaptiveOn
protected boolean m_resettingOn
| Constructor Detail |
public ParticleFilterTracker(WorldMap map,
MotionModel motion)
public ParticleFilterTracker(ParticleFilterTracker tracker)
merge(Tracker)| Method Detail |
public Object clone()
clone in class Object
public void update(Measurement meas,
LocationSensor sensor,
LocationReport sensorLocation)
update in class Trackerpublic LocationReport createLocationReport()
public String toString()
toString in class MobileTrackerpublic void initLocation(LocationReport report)
public void initUniformDistribution()
1/getNumberOfSamples()). Noise is assumed to be independent
in all dimensions.
public void initUniformDistribution(Point3d lowerCorner,
Point3d upperCorner)
1/getNumberOfSamples()). Noise is assumed to be
independent in all dimensions.
public void initGaussianDistribution(State mean)
1/getNumberOfSamples()). Noise is assumed to be independent
in all dimensions. Standard deviation is automatically chosen according
to the heuristic of horizontal 2% of the world map size and 45 degree
rotational.
public void initGaussianDistribution(State mean,
Vector3d posSD,
Vector3d rotSD)
1/getNumberOfSamples()). Noise is assumed to be independent
in all dimensions and we get a dirac distribution if the standard
deviation of the noise is zero in all dimension.
mean - The mean from which Gaussian white noise is added to the
samples.posSD - standard deviation of the positional noiserotSD - standard deviation of the Euler angle rotational noise
public void initPartialGaussianDistribution(State mean,
Vector3d posSD,
Vector3d rotSD,
double fractionOfUniformSamples)
mean - The mean from which Gaussian white noise is added to the
samples.posSD - standard deviation of the positional noiserotSD - standard deviation of the Euler angle rotational noisefractionOfUniformSamples - A percentage in the range [0..1]. This
percentage of the samples will be set according to a uniform distribution
instead of a Gaussian. A value of 0 results in a pure Gaussian while a
value of 1 results in a completely uniform distribution.
public void initPartialGaussianDistribution(State mean,
Vector3d posSD,
Vector3d rotSD,
double fractionOfUniformSamples,
Point3d lowerCorner,
Point3d upperCorner)
mean - The mean from which Gaussian white noise is added to the
samples.posSD - standard deviation of the positional noiserotSD - standard deviation of the Euler angle rotational noisefractionOfUniformSamples - A percentage in the range [0..1]. This
percentage of the samples will be set according to a uniform distribution
instead of a Gaussian. A value of 0 results in a pure Gaussian while a
value of 1 results in a completely uniform distribution.lowerCorner - lower corner of the bounding boxupperCorner - upper corner of the bounding boxpublic int getNumberOfSamples()
public int getMaxNumberOfSamples()
public int getMinNumberOfSamples()
public List getRandomSamples(int cnt)
public void merge(Tracker tracker)
public int getDesiredNumberOfSamples()
public static int getDesiredNumberOfSamples(int binsWithSupport)
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||