[Bayes++] EKF bayes++ questions
Brought to you by:
mistevens
|
From: Jack C. <jac...@dr...> - 2006-05-01 20:05:22
|
Our research department is interested in using Bayes++ to do SLAM for
unmanned ground vehicles. As a primer, I have recently started playing
around with Bayes++ to do a simple EKF localization filter to predict
the stat (x,y,theta) of a robot given a control U (v,w) of velocity and
steering. The lack of documentation has made this difficult so I
thought I would send an email to ensure I am on the right track. Here
are my questions. Thanks in advance for your help.
1. It appears as though I should be using the Covariance_scheme. Is
this correct?
2. My state prediction model is as follows:
x' = x + (-(v/w)*sin(b) + (v/w)*sin(b+w*dt))
y' = y + ((v/w)*cos(b) - (v/w)*cos(b+w*dt))
theta' = theta + (w*dt)
I am wondering how I put this in the prediction model. First of all,
I'm not sure whether I should be using a linrz_predict_model,
linear_predict_model or Gaussian_predict_model. Second the matrix Fx
seems to implement x' = Fx(x) but I don't see how to incorporate the
control component into the prediction. As of now I make Fx a 3x3
identity matrix, do the update and simply add the second term directly
on to the state. Is this the correct way to handle this? I've included
this code snippet below:
void Jpredict::stateUpdate( float dt, Vec& U,
Bayesian_filter::Covariance_scheme& kf )
{
float a = U[0] / U[1];
Vec A(3);
A[0] = -a*sin(kf.x[2]) + a*sin(kf.x[2]+U[1]*dt);
A[1] = a*cos(kf.x[2]) - a*cos(kf.x[2]+U[1]*dt);;
A[2] = U[1]*dt;
//State transition matrix Fx is 3x3 identity
Fx(0,0) = 1;
Fx(0,1) = 0;
Fx(0,2) = 0;
Fx(1,0) = 0;
Fx(1,1) = 1;
Fx(0,2) = 0;
Fx(2,0) = 0;
Fx(2,1) = 0;
Fx(2,2) = 1;
kf.update();
kf.x[0] = kf.x[0] + A[0];
kf.x[1] = kf.x[1] + A[1];
kf.x[2] = kf.x[2] + A[2];
q[0] = 1;
G(0,0) = 0.;
G(1,0) = 1.;
}
|