|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--javaslam.slam.AbstractSLAMFilter | +--javaslam.slam.LGSLAMFilter | +--javaslam.slam.KalmanSLAMFilter
A Kalman filter for the Simultaneous Localization and Mapping (SLAM) problem.
This class records counts of all floating point operations using
Flops.count(long)
(except those used in the service of
debugging and avoiding numerical errors).
Field Summary | |
protected KalmanFilter |
kf
The underlying Kalman filter. |
Fields inherited from class javaslam.slam.AbstractSLAMFilter |
id2lm, lm2id, x |
Constructor Summary | |
KalmanSLAMFilter(double[] mu,
double[][] sigma)
Constructor. |
Method Summary | |
KalmanFilter |
getKalmanFilter()
Returns the underlying Kalman filter used by this SLAM filter. |
Gaussian |
getLandmarkMarginal(int id)
Returns the filtered marginal potential over a landmark's state (in the moment parameterization). |
Gaussian |
getRobotLandmarkMarginal(int id)
This method computes the joint filtered distribution over the states of the robot and a landmark. |
Gaussian |
getRobotMarginal()
Returns the filtered marginal potential over the robot's state. |
void |
measurement(int id,
double[] z0,
double[][] C,
double[][] D,
double[][] R,
double[] z)
Performs a linear-Gaussian landmark measurement update. |
void |
motion(double[] x0,
double[][] A,
double[][] Q)
Performs a linear-Gaussian motion update. |
void |
odometry(double[] y0,
double[][] B,
double[][] S,
double[] y)
Performs a linear-Gaussian odometry update. |
Methods inherited from class javaslam.slam.LGSLAMFilter |
getLandmarkEstimate, getLandmarkMarginals, getRobotEstimate, getRobotLandmarkMarginals |
Methods inherited from class javaslam.slam.AbstractSLAMFilter |
addLandmark, contains, getLandmarkId, getLandmarkIds, getLandmarkVariable, getNumLandmarks, getRobotVariable |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected KalmanFilter kf
Constructor Detail |
public KalmanSLAMFilter(double[] mu, double[][] sigma)
mu
- a n-vector containing the starting state
of the robotsigma
- an n-by-n positive semidefinite
covariance matrix giving the uncertainty in the
robot's initial stateMethod Detail |
public void measurement(int id, double[] z0, double[][] C, double[][] D, double[][] R, double[] z)
z0
, C
, D
, and
R
define the measurement equation as follows:
where x is the robot state variable,z= z0
+C
x +D
lm
+ w
lm
is a
landmark variable, and w is a white-noise variable with
covariance R
.
measurement
in class LGSLAMFilter
id
- the identifier of the landmark that generated this
observation; if it is not currently in the belief state,
then it is first added with an uninformative prior.z0
- a k-vector giving the constant termC
- a k by n matrix that defines the
linear coefficient for the robot's stateD
- a k by m matrix that defines the
linear coefficient for the landmark's state; if
id
identifies a new landmark, then D must
be invertibleR
- a k by k symmetric positive definite matrix
giving the covariance of the measurement white noisez
- the measurement k-vector
IllegalArgumentException
- if there are any dimension mismatchespublic void motion(double[] x0, double[][] A, double[][] Q)
A
and Q
define the state evolution
equation as follows:
where v is a white-noise variable with covariancext + 1 = x0
+A
xt+v
Q
.
motion
in class LGSLAMFilter
x0
- an n-vector giving the constant term of the
state evolution equationA
- an n by n evolution matrix that defines the
linear evolution modelQ
- an n by n symmetric positive definite matrix
giving the covariance of the evolution white noise
IllegalArgumentException
- if there are any dimension mismatchespublic void odometry(double[] y0, double[][] B, double[][] S, double[] y)
y0
, B
, and S
define the
odometry measurement equation as follows:
where u is a white-noise variable with covarianceyt + 1= y0
+B
xt + 1+u
S
.
odometry
in class LGSLAMFilter
y0
- an h-vector giving the constant term of the
odometry equationB
- an h by n evolution matrix that is
linear term of the odometry equationS
- an h by h symmetric positive definite matrix
giving the covariance of the odometry white noisey
- an h-vector giving the odometry measurement
IllegalArgumentException
- if there are any dimension mismatchespublic Gaussian getRobotMarginal()
getRobotMarginal
in class LGSLAMFilter
public Gaussian getLandmarkMarginal(int id)
getLandmarkMarginal
in class LGSLAMFilter
public Gaussian getRobotLandmarkMarginal(int id)
getRobotLandmarkMarginal
in class LGSLAMFilter
id
- the landmark's identifier
public KalmanFilter getKalmanFilter()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |