Inconsistent odom_alpha1 and odom_alpha4 parameters between AMCL's diff and omni models?
I've been working on AMCL's source code lately and noticed the following inconsistency. I was gonna open a GitHub ticket, but thought I'd get a second opinion here first.
Update: I ended up opening the issue: navigation/issues/499
Here goes:
The amcl wiki page says (abbreviated):
~odom_alpha1
Expected noise in odometry's rotation estimate from the rotational component~odom_alpha2
Expected noise in odometry's rotation estimate from translational component~odom_alpha3
Expected noise in odometry's translation estimate from the translational component~odom_alpha4
Expected noise in odometry's translation estimate from the rotational component
In the source code (amcl_odom.cpp), we see the following for the diff
and omni
models:
For diff
:
delta_rot1_hat = angle_diff(delta_rot1,
pf_ran_gaussian(this->alpha1*delta_rot1_noise*delta_rot1_noise +
this->alpha2*delta_trans*delta_trans));
delta_trans_hat = delta_trans -
pf_ran_gaussian(this->alpha3*delta_trans*delta_trans +
this->alpha4*delta_rot1_noise*delta_rot1_noise +
this->alpha4*delta_rot2_noise*delta_rot2_noise);
delta_rot2_hat = angle_diff(delta_rot2,
pf_ran_gaussian(this->alpha1*delta_rot2_noise*delta_rot2_noise +
this->alpha2*delta_trans*delta_trans));
This is consistent with the wiki page's explanation.
However, for omni
:
double trans_hat_stddev = (alpha3 * (delta_trans*delta_trans) +
alpha1 * (delta_rot*delta_rot));
double rot_hat_stddev = (alpha4 * (delta_rot*delta_rot) +
alpha2 * (delta_trans*delta_trans));
double strafe_hat_stddev = (alpha1 * (delta_rot*delta_rot) +
alpha5 * (delta_trans*delta_trans));
This seems to imply that:
alpha1
is translation noise from rotation, not rotation from rotationalpha4
is rotation noise from rotation, not translation from rotation
In other words, alpha1
and alpha4
look flipped in the omni
model (compared to diff
and the wiki page). The other two common params, alpha2
and alpha3
, are OK. The inconsistency also appears in the corrected
versions of the two odom models btw.
What do people think? Seems inconsistent to me.
Asked by spmaniato on 2016-07-11 11:14:02 UTC
Comments