40 using namespace gtsam;
 
   46   return X.translation(
H);
 
   53   Pose2 X0(0.0, 0.0, 0.0);
 
   54   Matrix3 
P0 = Matrix3::Identity() * 0.1;
 
   61   Matrix3 
Q = (
Vector3(0.05, 0.05, 0.001)).asDiagonal();
 
   62   Matrix2 
R = I_2x2 * 0.01;
 
   67   Pose2 U1(1.0, 1.0, 0.5), U2(1.0, 1.0, 0.0);
 
   81   TransformP << 0, 0, 1, 1, 0, 0, 0, 1, 0;
 
   85   cout << 
"\nInitialization:\n";
 
   86   cout << 
"X0: " << ekf.
state() << endl;
 
   87   cout << 
"P0: " << TransformP * ekf.
covariance() * TransformP.transpose()
 
   92   cout << 
"\nFirst Prediction:\n";
 
   93   cout << 
"X: " << ekf.
state() << endl;
 
   94   cout << 
"P: " << TransformP * ekf.
covariance() * TransformP.transpose()
 
   99   cout << 
"\nFirst Update:\n";
 
  100   cout << 
"X: " << ekf.
state() << endl;
 
  101   cout << 
"P: " << TransformP * ekf.
covariance() * TransformP.transpose()
 
  106   cout << 
"\nSecond Prediction:\n";
 
  107   cout << 
"X: " << ekf.
state() << endl;
 
  108   cout << 
"P: " << TransformP * ekf.
covariance() * TransformP.transpose()
 
  113   cout << 
"\nSecond Update:\n";
 
  114   cout << 
"X: " << ekf.
state() << endl;
 
  115   cout << 
"P: " << TransformP * ekf.
covariance() * TransformP.transpose()