30 enum GeometricEntityKinds { POINT, EDGE, ROBOT };
35 GeometricEntityKinds entity;
37 Uloc(GeometricEntityKinds ge);
40 GeometricEntityKinds uGEntity();
42 MatrixXd& Loc() {
return x_; };
43 MatrixXd& Pert() {
return p_; };
44 MatrixXd& Bind() {
return b_; };
45 MatrixXd& Cov() {
return c_; };
47 const Transf& kX()
const {
return x_; };
48 const MatrixXd& kPert()
const {
return p_; };
49 const MatrixXd& kBind()
const {
return b_; };
50 const MatrixXd& kCov()
const {
return c_; };
53 void SetPert(MatrixXd pert);
54 void SetBind(MatrixXd bind);
55 void SetCov(MatrixXd cov);
58 Transf DifferentialLocation ();
59 void ChangeBinding (MatrixXd newb);
60 void FilterFeatureRobotDirect (
Uloc Lre,
Transf Xmw, MatrixXd &Fk, MatrixXd &Nk);
70 inline ostream& operator << (ostream& ostrm,
Uloc& u)
73 if (u.uGEntity() == POINT) ostrm <<
"Uloc: Point" << endl;
74 if (u.uGEntity() == EDGE) ostrm <<
"Uloc: Edge" << endl;
75 if (u.uGEntity() == ROBOT) ostrm <<
"Uloc: Robot" << endl;
77 ostrm <<
"X:" << endl;
79 ostrm <<
"Pert:" << endl;
81 ostrm <<
"Bind:" << endl;
83 ostrm <<
"Cov:" << endl;
94 void information_filter (MatrixXd Hk, MatrixXd Gk, MatrixXd hk, MatrixXd Sk, MatrixXd &Fk, MatrixXd &Nk);
96 void estimate_relative_location (
Uloc Lwe,
Uloc Lwm,
Transf &Xem, MatrixXd &Cem);
97 double mahalanobis_distance (
Uloc Lwa,
Uloc Lwb, MatrixXd Bab);
98 double mahalanobis_distance_edge_point(
Uloc Lwe,
Uloc Lwp);