Earlier refactor did not work correctly
parent
6861b8dd01
commit
5d739ea904
|
@ -195,17 +195,17 @@ TEST( ImuFactor, ErrorAndJacobians )
|
||||||
Vector3 v2(Vector3(0.5, 0.0, 0.0));
|
Vector3 v2(Vector3(0.5, 0.0, 0.0));
|
||||||
|
|
||||||
// Measurements
|
// Measurements
|
||||||
Vector3 n_gravity; n_gravity << 0, 0, 9.81;
|
Vector3 gravity; gravity << 0, 0, 9.81;
|
||||||
Vector3 omegaCoriolis; omegaCoriolis << 0, 0, 0;
|
Vector3 omegaCoriolis; omegaCoriolis << 0, 0, 0;
|
||||||
Vector3 measuredOmega; measuredOmega << M_PI/100, 0, 0;
|
Vector3 measuredOmega; measuredOmega << M_PI/100, 0, 0;
|
||||||
Vector3 measuredAcc = x1.rotation().unrotate(-Point3(n_gravity)).vector();
|
Vector3 measuredAcc = x1.rotation().unrotate(-Point3(gravity)).vector();
|
||||||
double deltaT = 1.0;
|
double deltaT = 1.0;
|
||||||
bool use2ndOrderIntegration = true;
|
bool use2ndOrderIntegration = true;
|
||||||
ImuFactor::PreintegratedMeasurements pre_int_data(bias, Matrix3::Zero(), Matrix3::Zero(), Matrix3::Zero(), use2ndOrderIntegration);
|
ImuFactor::PreintegratedMeasurements pre_int_data(bias, Matrix3::Zero(), Matrix3::Zero(), Matrix3::Zero(), use2ndOrderIntegration);
|
||||||
pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
||||||
|
|
||||||
// Create factor
|
// Create factor
|
||||||
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, n_gravity, omegaCoriolis);
|
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, gravity, omegaCoriolis);
|
||||||
|
|
||||||
Vector errorActual = factor.evaluateError(x1, v1, x2, v2, bias);
|
Vector errorActual = factor.evaluateError(x1, v1, x2, v2, bias);
|
||||||
|
|
||||||
|
@ -262,10 +262,10 @@ TEST( ImuFactor, ErrorAndJacobianWithBiases )
|
||||||
Vector3 v2(Vector3(0.5, 0.0, 0.0));
|
Vector3 v2(Vector3(0.5, 0.0, 0.0));
|
||||||
|
|
||||||
// Measurements
|
// Measurements
|
||||||
Vector3 n_gravity; n_gravity << 0, 0, 9.81;
|
Vector3 gravity; gravity << 0, 0, 9.81;
|
||||||
Vector3 omegaCoriolis; omegaCoriolis << 0, 0.1, 0.1;
|
Vector3 omegaCoriolis; omegaCoriolis << 0, 0.1, 0.1;
|
||||||
Vector3 measuredOmega; measuredOmega << 0, 0, M_PI/10.0+0.3;
|
Vector3 measuredOmega; measuredOmega << 0, 0, M_PI/10.0+0.3;
|
||||||
Vector3 measuredAcc = x1.rotation().unrotate(-Point3(n_gravity)).vector() + Vector3(0.2,0.0,0.0);
|
Vector3 measuredAcc = x1.rotation().unrotate(-Point3(gravity)).vector() + Vector3(0.2,0.0,0.0);
|
||||||
double deltaT = 1.0;
|
double deltaT = 1.0;
|
||||||
|
|
||||||
ImuFactor::PreintegratedMeasurements pre_int_data(imuBias::ConstantBias(Vector3(0.2, 0.0, 0.0),
|
ImuFactor::PreintegratedMeasurements pre_int_data(imuBias::ConstantBias(Vector3(0.2, 0.0, 0.0),
|
||||||
|
@ -273,7 +273,7 @@ TEST( ImuFactor, ErrorAndJacobianWithBiases )
|
||||||
pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
||||||
|
|
||||||
// Create factor
|
// Create factor
|
||||||
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, n_gravity, omegaCoriolis);
|
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, gravity, omegaCoriolis);
|
||||||
|
|
||||||
SETDEBUG("ImuFactor evaluateError", false);
|
SETDEBUG("ImuFactor evaluateError", false);
|
||||||
Vector errorActual = factor.evaluateError(x1, v1, x2, v2, bias);
|
Vector errorActual = factor.evaluateError(x1, v1, x2, v2, bias);
|
||||||
|
@ -325,10 +325,10 @@ TEST( ImuFactor, ErrorAndJacobianWith2ndOrderCoriolis )
|
||||||
Vector3 v2(Vector3(0.5, 0.0, 0.0));
|
Vector3 v2(Vector3(0.5, 0.0, 0.0));
|
||||||
|
|
||||||
// Measurements
|
// Measurements
|
||||||
Vector3 n_gravity; n_gravity << 0, 0, 9.81;
|
Vector3 gravity; gravity << 0, 0, 9.81;
|
||||||
Vector3 omegaCoriolis; omegaCoriolis << 0, 0.1, 0.1;
|
Vector3 omegaCoriolis; omegaCoriolis << 0, 0.1, 0.1;
|
||||||
Vector3 measuredOmega; measuredOmega << 0, 0, M_PI/10.0+0.3;
|
Vector3 measuredOmega; measuredOmega << 0, 0, M_PI/10.0+0.3;
|
||||||
Vector3 measuredAcc = x1.rotation().unrotate(-Point3(n_gravity)).vector() + Vector3(0.2,0.0,0.0);
|
Vector3 measuredAcc = x1.rotation().unrotate(-Point3(gravity)).vector() + Vector3(0.2,0.0,0.0);
|
||||||
double deltaT = 1.0;
|
double deltaT = 1.0;
|
||||||
|
|
||||||
ImuFactor::PreintegratedMeasurements pre_int_data(imuBias::ConstantBias(Vector3(0.2, 0.0, 0.0),
|
ImuFactor::PreintegratedMeasurements pre_int_data(imuBias::ConstantBias(Vector3(0.2, 0.0, 0.0),
|
||||||
|
@ -338,7 +338,7 @@ TEST( ImuFactor, ErrorAndJacobianWith2ndOrderCoriolis )
|
||||||
// Create factor
|
// Create factor
|
||||||
Pose3 bodyPsensor = Pose3();
|
Pose3 bodyPsensor = Pose3();
|
||||||
bool use2ndOrderCoriolis = true;
|
bool use2ndOrderCoriolis = true;
|
||||||
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, n_gravity, omegaCoriolis, bodyPsensor, use2ndOrderCoriolis);
|
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, gravity, omegaCoriolis, bodyPsensor, use2ndOrderCoriolis);
|
||||||
|
|
||||||
SETDEBUG("ImuFactor evaluateError", false);
|
SETDEBUG("ImuFactor evaluateError", false);
|
||||||
Vector errorActual = factor.evaluateError(x1, v1, x2, v2, bias);
|
Vector errorActual = factor.evaluateError(x1, v1, x2, v2, bias);
|
||||||
|
@ -758,7 +758,7 @@ TEST( ImuFactor, JacobianPreintegratedCovariancePropagation_2ndOrderInt )
|
||||||
//
|
//
|
||||||
// // Pre-integrator
|
// // Pre-integrator
|
||||||
// imuBias::ConstantBias biasHat(Vector3(0, 0, 0.10), Vector3(0, 0, 0.10));
|
// imuBias::ConstantBias biasHat(Vector3(0, 0, 0.10), Vector3(0, 0, 0.10));
|
||||||
// Vector3 n_gravity; n_gravity << 0, 0, 9.81;
|
// Vector3 gravity; gravity << 0, 0, 9.81;
|
||||||
// Vector3 omegaCoriolis; omegaCoriolis << 0.0001, 0, 0.01;
|
// Vector3 omegaCoriolis; omegaCoriolis << 0.0001, 0, 0.01;
|
||||||
// ImuFactor::PreintegratedMeasurements pre_int_data(biasHat, Matrix3::Identity(), Matrix3::Identity(), Matrix3::Identity());
|
// ImuFactor::PreintegratedMeasurements pre_int_data(biasHat, Matrix3::Identity(), Matrix3::Identity(), Matrix3::Identity());
|
||||||
//
|
//
|
||||||
|
@ -772,7 +772,7 @@ TEST( ImuFactor, JacobianPreintegratedCovariancePropagation_2ndOrderInt )
|
||||||
//
|
//
|
||||||
// // Create factor
|
// // Create factor
|
||||||
// noiseModel::Base::shared_ptr model = noiseModel::Gaussian::Covariance(pre_int_data.MeasurementCovariance());
|
// noiseModel::Base::shared_ptr model = noiseModel::Gaussian::Covariance(pre_int_data.MeasurementCovariance());
|
||||||
// ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, n_gravity, omegaCoriolis);
|
// ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, gravity, omegaCoriolis);
|
||||||
//
|
//
|
||||||
// Values values;
|
// Values values;
|
||||||
// values.insert(X(1), x1);
|
// values.insert(X(1), x1);
|
||||||
|
@ -811,10 +811,10 @@ TEST( ImuFactor, ErrorWithBiasesAndSensorBodyDisplacement )
|
||||||
Vector3 v2(Vector3(0.5, 0.0, 0.0));
|
Vector3 v2(Vector3(0.5, 0.0, 0.0));
|
||||||
|
|
||||||
// Measurements
|
// Measurements
|
||||||
Vector3 n_gravity; n_gravity << 0, 0, 9.81;
|
Vector3 gravity; gravity << 0, 0, 9.81;
|
||||||
Vector3 omegaCoriolis; omegaCoriolis << 0, 0.1, 0.1;
|
Vector3 omegaCoriolis; omegaCoriolis << 0, 0.1, 0.1;
|
||||||
Vector3 measuredOmega; measuredOmega << 0, 0, M_PI/10.0+0.3;
|
Vector3 measuredOmega; measuredOmega << 0, 0, M_PI/10.0+0.3;
|
||||||
Vector3 measuredAcc = x1.rotation().unrotate(-Point3(n_gravity)).vector() + Vector3(0.2,0.0,0.0);
|
Vector3 measuredAcc = x1.rotation().unrotate(-Point3(gravity)).vector() + Vector3(0.2,0.0,0.0);
|
||||||
double deltaT = 1.0;
|
double deltaT = 1.0;
|
||||||
|
|
||||||
const Pose3 body_P_sensor(Rot3::Expmap(Vector3(0,0.10,0.10)), Point3(1,0,0));
|
const Pose3 body_P_sensor(Rot3::Expmap(Vector3(0,0.10,0.10)), Point3(1,0,0));
|
||||||
|
@ -825,7 +825,7 @@ TEST( ImuFactor, ErrorWithBiasesAndSensorBodyDisplacement )
|
||||||
pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
||||||
|
|
||||||
// Create factor
|
// Create factor
|
||||||
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, n_gravity, omegaCoriolis);
|
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, gravity, omegaCoriolis);
|
||||||
|
|
||||||
// Expected Jacobians
|
// Expected Jacobians
|
||||||
Matrix H1e = numericalDerivative11<Vector,Pose3>(
|
Matrix H1e = numericalDerivative11<Vector,Pose3>(
|
||||||
|
@ -863,7 +863,7 @@ TEST(ImuFactor, PredictPositionAndVelocity){
|
||||||
imuBias::ConstantBias bias(Vector3(0, 0, 0), Vector3(0, 0, 0)); // Biases (acc, rot)
|
imuBias::ConstantBias bias(Vector3(0, 0, 0), Vector3(0, 0, 0)); // Biases (acc, rot)
|
||||||
|
|
||||||
// Measurements
|
// Measurements
|
||||||
Vector3 n_gravity; n_gravity << 0, 0, 9.81;
|
Vector3 gravity; gravity << 0, 0, 9.81;
|
||||||
Vector3 omegaCoriolis; omegaCoriolis << 0, 0, 0;
|
Vector3 omegaCoriolis; omegaCoriolis << 0, 0, 0;
|
||||||
Vector3 measuredOmega; measuredOmega << 0, 0, 0;//M_PI/10.0+0.3;
|
Vector3 measuredOmega; measuredOmega << 0, 0, 0;//M_PI/10.0+0.3;
|
||||||
Vector3 measuredAcc; measuredAcc << 0,1,-9.81;
|
Vector3 measuredAcc; measuredAcc << 0,1,-9.81;
|
||||||
|
@ -878,12 +878,12 @@ TEST(ImuFactor, PredictPositionAndVelocity){
|
||||||
for (int i = 0; i<1000; ++i) pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
for (int i = 0; i<1000; ++i) pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
||||||
|
|
||||||
// Create factor
|
// Create factor
|
||||||
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, n_gravity, omegaCoriolis);
|
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, gravity, omegaCoriolis);
|
||||||
|
|
||||||
// Predict
|
// Predict
|
||||||
Pose3 x1;
|
Pose3 x1;
|
||||||
Vector3 v1(0, 0.0, 0.0);
|
Vector3 v1(0, 0.0, 0.0);
|
||||||
PoseVelocityBias poseVelocity = pre_int_data.Predict(x1, v1, bias, n_gravity, omegaCoriolis);
|
PoseVelocityBias poseVelocity = pre_int_data.Predict(x1, v1, bias, gravity, omegaCoriolis);
|
||||||
Pose3 expectedPose(Rot3(), Point3(0, 0.5, 0));
|
Pose3 expectedPose(Rot3(), Point3(0, 0.5, 0));
|
||||||
Vector3 expectedVelocity; expectedVelocity<<0,1,0;
|
Vector3 expectedVelocity; expectedVelocity<<0,1,0;
|
||||||
EXPECT(assert_equal(expectedPose, poseVelocity.pose));
|
EXPECT(assert_equal(expectedPose, poseVelocity.pose));
|
||||||
|
@ -895,7 +895,7 @@ TEST(ImuFactor, PredictRotation) {
|
||||||
imuBias::ConstantBias bias(Vector3(0, 0, 0), Vector3(0, 0, 0)); // Biases (acc, rot)
|
imuBias::ConstantBias bias(Vector3(0, 0, 0), Vector3(0, 0, 0)); // Biases (acc, rot)
|
||||||
|
|
||||||
// Measurements
|
// Measurements
|
||||||
Vector3 n_gravity; n_gravity << 0, 0, 9.81;
|
Vector3 gravity; gravity << 0, 0, 9.81;
|
||||||
Vector3 omegaCoriolis; omegaCoriolis << 0, 0, 0;
|
Vector3 omegaCoriolis; omegaCoriolis << 0, 0, 0;
|
||||||
Vector3 measuredOmega; measuredOmega << 0, 0, M_PI/10;//M_PI/10.0+0.3;
|
Vector3 measuredOmega; measuredOmega << 0, 0, M_PI/10;//M_PI/10.0+0.3;
|
||||||
Vector3 measuredAcc; measuredAcc << 0,0,-9.81;
|
Vector3 measuredAcc; measuredAcc << 0,0,-9.81;
|
||||||
|
@ -910,12 +910,12 @@ TEST(ImuFactor, PredictRotation) {
|
||||||
for (int i = 0; i<1000; ++i) pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
for (int i = 0; i<1000; ++i) pre_int_data.integrateMeasurement(measuredAcc, measuredOmega, deltaT);
|
||||||
|
|
||||||
// Create factor
|
// Create factor
|
||||||
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, n_gravity, omegaCoriolis);
|
ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pre_int_data, gravity, omegaCoriolis);
|
||||||
|
|
||||||
// Predict
|
// Predict
|
||||||
Pose3 x1;
|
Pose3 x1;
|
||||||
Vector3 v1(0, 0.0, 0.0);
|
Vector3 v1(0, 0.0, 0.0);
|
||||||
PoseVelocityBias poseVelocity = ImuFactor::Predict(x1, v1, bias, factor.preintegratedMeasurements(), n_gravity, omegaCoriolis);
|
PoseVelocityBias poseVelocity = ImuFactor::Predict(x1, v1, bias, factor.preintegratedMeasurements(), gravity, omegaCoriolis);
|
||||||
Pose3 expectedPose(Rot3().ypr(M_PI/10, 0, 0), Point3(0, 0, 0));
|
Pose3 expectedPose(Rot3().ypr(M_PI/10, 0, 0), Point3(0, 0, 0));
|
||||||
Vector3 expectedVelocity; expectedVelocity<<0,0,0;
|
Vector3 expectedVelocity; expectedVelocity<<0,0,0;
|
||||||
EXPECT(assert_equal(expectedPose, poseVelocity.pose));
|
EXPECT(assert_equal(expectedPose, poseVelocity.pose));
|
||||||
|
|
Loading…
Reference in New Issue