/* ---------------------------------------------------------------------------- * GTSAM Copyright 2010, Georgia Tech Research Corporation, * Atlanta, Georgia 30332-0415 * All Rights Reserved * Authors: Frank Dellaert, et al. (see THANKS for the full author list) * See LICENSE for the license information * -------------------------------------------------------------------------- */ /** * @file testSerializationSLAM.cpp * @brief test serialization * @author Richard Roberts * @date Feb 7, 2012 */ #include //#include #include #include #include //#include #include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace gtsam; using namespace gtsam::serializationTestHelpers; // Creating as many permutations of factors as possible typedef PriorFactor PriorFactorLieVector; typedef PriorFactor PriorFactorLieMatrix; typedef PriorFactor PriorFactorPoint2; typedef PriorFactor PriorFactorStereoPoint2; typedef PriorFactor PriorFactorPoint3; typedef PriorFactor PriorFactorRot2; typedef PriorFactor PriorFactorRot3; typedef PriorFactor PriorFactorPose2; typedef PriorFactor PriorFactorPose3; typedef PriorFactor PriorFactorCal3_S2; typedef PriorFactor PriorFactorCal3DS2; typedef PriorFactor PriorFactorCalibratedCamera; typedef PriorFactor PriorFactorSimpleCamera; typedef PriorFactor PriorFactorStereoCamera; typedef BetweenFactor BetweenFactorLieVector; typedef BetweenFactor BetweenFactorLieMatrix; typedef BetweenFactor BetweenFactorPoint2; typedef BetweenFactor BetweenFactorPoint3; typedef BetweenFactor BetweenFactorRot2; typedef BetweenFactor BetweenFactorRot3; typedef BetweenFactor BetweenFactorPose2; typedef BetweenFactor BetweenFactorPose3; typedef NonlinearEquality NonlinearEqualityLieVector; typedef NonlinearEquality NonlinearEqualityLieMatrix; typedef NonlinearEquality NonlinearEqualityPoint2; typedef NonlinearEquality NonlinearEqualityStereoPoint2; typedef NonlinearEquality NonlinearEqualityPoint3; typedef NonlinearEquality NonlinearEqualityRot2; typedef NonlinearEquality NonlinearEqualityRot3; typedef NonlinearEquality NonlinearEqualityPose2; typedef NonlinearEquality NonlinearEqualityPose3; typedef NonlinearEquality NonlinearEqualityCal3_S2; typedef NonlinearEquality NonlinearEqualityCal3DS2; typedef NonlinearEquality NonlinearEqualityCalibratedCamera; typedef NonlinearEquality NonlinearEqualitySimpleCamera; typedef NonlinearEquality NonlinearEqualityStereoCamera; typedef RangeFactor RangeFactorPosePoint2; typedef RangeFactor RangeFactorPosePoint3; typedef RangeFactor RangeFactorPose2; typedef RangeFactor RangeFactorPose3; typedef RangeFactor RangeFactorCalibratedCameraPoint; typedef RangeFactor RangeFactorSimpleCameraPoint; typedef RangeFactor RangeFactorCalibratedCamera; typedef RangeFactor RangeFactorSimpleCamera; typedef BearingFactor BearingFactor2D; typedef BearingFactor BearingFactor3D; typedef BearingRangeFactor BearingRangeFactor2D; typedef BearingRangeFactor BearingRangeFactor3D; typedef GenericProjectionFactor GenericProjectionFactorCal3_S2; typedef GenericProjectionFactor GenericProjectionFactorCal3DS2; typedef gtsam::GeneralSFMFactor GeneralSFMFactorCal3_S2; //typedef gtsam::GeneralSFMFactor GeneralSFMFactorCal3DS2; typedef gtsam::GeneralSFMFactor2 GeneralSFMFactor2Cal3_S2; typedef gtsam::GenericStereoFactor GenericStereoFactor3D; // Convenience for named keys using symbol_shorthand::X; using symbol_shorthand::L; /* Create GUIDs for Noisemodels */ /* ************************************************************************* */ BOOST_CLASS_EXPORT_GUID(gtsam::noiseModel::Constrained, "gtsam_noiseModel_Constrained"); BOOST_CLASS_EXPORT_GUID(gtsam::noiseModel::Diagonal, "gtsam_noiseModel_Diagonal"); BOOST_CLASS_EXPORT_GUID(gtsam::noiseModel::Gaussian, "gtsam_noiseModel_Gaussian"); BOOST_CLASS_EXPORT_GUID(gtsam::noiseModel::Unit, "gtsam_noiseModel_Unit"); BOOST_CLASS_EXPORT_GUID(gtsam::noiseModel::Isotropic, "gtsam_noiseModel_Isotropic"); BOOST_CLASS_EXPORT_GUID(gtsam::SharedNoiseModel, "gtsam_SharedNoiseModel"); BOOST_CLASS_EXPORT_GUID(gtsam::SharedDiagonal, "gtsam_SharedDiagonal"); /* Create GUIDs for geometry */ /* ************************************************************************* */ BOOST_CLASS_EXPORT(gtsam::LieVector); BOOST_CLASS_EXPORT(gtsam::LieMatrix); BOOST_CLASS_EXPORT(gtsam::Point2); BOOST_CLASS_EXPORT(gtsam::StereoPoint2); BOOST_CLASS_EXPORT(gtsam::Point3); BOOST_CLASS_EXPORT(gtsam::Rot2); BOOST_CLASS_EXPORT(gtsam::Rot3); BOOST_CLASS_EXPORT(gtsam::Pose2); BOOST_CLASS_EXPORT(gtsam::Pose3); BOOST_CLASS_EXPORT(gtsam::Cal3_S2); BOOST_CLASS_EXPORT(gtsam::Cal3DS2); BOOST_CLASS_EXPORT(gtsam::Cal3_S2Stereo); BOOST_CLASS_EXPORT(gtsam::CalibratedCamera); BOOST_CLASS_EXPORT(gtsam::SimpleCamera); BOOST_CLASS_EXPORT(gtsam::StereoCamera); /* Create GUIDs for factors */ /* ************************************************************************* */ BOOST_CLASS_EXPORT_GUID(gtsam::JacobianFactor, "gtsam::JacobianFactor"); BOOST_CLASS_EXPORT_GUID(gtsam::HessianFactor , "gtsam::HessianFactor"); BOOST_CLASS_EXPORT_GUID(PriorFactorLieVector, "gtsam::PriorFactorLieVector"); BOOST_CLASS_EXPORT_GUID(PriorFactorLieMatrix, "gtsam::PriorFactorLieMatrix"); BOOST_CLASS_EXPORT_GUID(PriorFactorPoint2, "gtsam::PriorFactorPoint2"); BOOST_CLASS_EXPORT_GUID(PriorFactorStereoPoint2, "gtsam::PriorFactorStereoPoint2"); BOOST_CLASS_EXPORT_GUID(PriorFactorPoint3, "gtsam::PriorFactorPoint3"); BOOST_CLASS_EXPORT_GUID(PriorFactorRot2, "gtsam::PriorFactorRot2"); BOOST_CLASS_EXPORT_GUID(PriorFactorRot3, "gtsam::PriorFactorRot3"); BOOST_CLASS_EXPORT_GUID(PriorFactorPose2, "gtsam::PriorFactorPose2"); BOOST_CLASS_EXPORT_GUID(PriorFactorPose3, "gtsam::PriorFactorPose3"); BOOST_CLASS_EXPORT_GUID(PriorFactorCal3_S2, "gtsam::PriorFactorCal3_S2"); BOOST_CLASS_EXPORT_GUID(PriorFactorCal3DS2, "gtsam::PriorFactorCal3DS2"); BOOST_CLASS_EXPORT_GUID(PriorFactorCalibratedCamera, "gtsam::PriorFactorCalibratedCamera"); BOOST_CLASS_EXPORT_GUID(PriorFactorSimpleCamera, "gtsam::PriorFactorSimpleCamera"); BOOST_CLASS_EXPORT_GUID(PriorFactorStereoCamera, "gtsam::PriorFactorStereoCamera"); BOOST_CLASS_EXPORT_GUID(BetweenFactorLieVector, "gtsam::BetweenFactorLieVector"); BOOST_CLASS_EXPORT_GUID(BetweenFactorLieMatrix, "gtsam::BetweenFactorLieMatrix"); BOOST_CLASS_EXPORT_GUID(BetweenFactorPoint2, "gtsam::BetweenFactorPoint2"); BOOST_CLASS_EXPORT_GUID(BetweenFactorPoint3, "gtsam::BetweenFactorPoint3"); BOOST_CLASS_EXPORT_GUID(BetweenFactorRot2, "gtsam::BetweenFactorRot2"); BOOST_CLASS_EXPORT_GUID(BetweenFactorRot3, "gtsam::BetweenFactorRot3"); BOOST_CLASS_EXPORT_GUID(BetweenFactorPose2, "gtsam::BetweenFactorPose2"); BOOST_CLASS_EXPORT_GUID(BetweenFactorPose3, "gtsam::BetweenFactorPose3"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityLieVector, "gtsam::NonlinearEqualityLieVector"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityLieMatrix, "gtsam::NonlinearEqualityLieMatrix"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityPoint2, "gtsam::NonlinearEqualityPoint2"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityStereoPoint2, "gtsam::NonlinearEqualityStereoPoint2"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityPoint3, "gtsam::NonlinearEqualityPoint3"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityRot2, "gtsam::NonlinearEqualityRot2"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityRot3, "gtsam::NonlinearEqualityRot3"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityPose2, "gtsam::NonlinearEqualityPose2"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityPose3, "gtsam::NonlinearEqualityPose3"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityCal3_S2, "gtsam::NonlinearEqualityCal3_S2"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityCal3DS2, "gtsam::NonlinearEqualityCal3DS2"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityCalibratedCamera, "gtsam::NonlinearEqualityCalibratedCamera"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualitySimpleCamera, "gtsam::NonlinearEqualitySimpleCamera"); BOOST_CLASS_EXPORT_GUID(NonlinearEqualityStereoCamera, "gtsam::NonlinearEqualityStereoCamera"); BOOST_CLASS_EXPORT_GUID(RangeFactorPosePoint2, "gtsam::RangeFactorPosePoint2"); BOOST_CLASS_EXPORT_GUID(RangeFactorPosePoint3, "gtsam::RangeFactorPosePoint3"); BOOST_CLASS_EXPORT_GUID(RangeFactorPose2, "gtsam::RangeFactorPose2"); BOOST_CLASS_EXPORT_GUID(RangeFactorPose3, "gtsam::RangeFactorPose3"); BOOST_CLASS_EXPORT_GUID(RangeFactorCalibratedCameraPoint, "gtsam::RangeFactorCalibratedCameraPoint"); BOOST_CLASS_EXPORT_GUID(RangeFactorSimpleCameraPoint, "gtsam::RangeFactorSimpleCameraPoint"); BOOST_CLASS_EXPORT_GUID(RangeFactorCalibratedCamera, "gtsam::RangeFactorCalibratedCamera"); BOOST_CLASS_EXPORT_GUID(RangeFactorSimpleCamera, "gtsam::RangeFactorSimpleCamera"); BOOST_CLASS_EXPORT_GUID(BearingFactor2D, "gtsam::BearingFactor2D"); BOOST_CLASS_EXPORT_GUID(BearingRangeFactor2D, "gtsam::BearingRangeFactor2D"); BOOST_CLASS_EXPORT_GUID(GenericProjectionFactorCal3_S2, "gtsam::GenericProjectionFactorCal3_S2"); BOOST_CLASS_EXPORT_GUID(GenericProjectionFactorCal3DS2, "gtsam::GenericProjectionFactorCal3DS2"); BOOST_CLASS_EXPORT_GUID(GeneralSFMFactorCal3_S2, "gtsam::GeneralSFMFactorCal3_S2"); //BOOST_CLASS_EXPORT_GUID(GeneralSFMFactorCal3DS2, "gtsam::GeneralSFMFactorCal3DS2"); BOOST_CLASS_EXPORT_GUID(GeneralSFMFactor2Cal3_S2, "gtsam::GeneralSFMFactor2Cal3_S2"); BOOST_CLASS_EXPORT_GUID(GenericStereoFactor3D, "gtsam::GenericStereoFactor3D"); /* ************************************************************************* */ TEST (Serialization, smallExample_linear) { using namespace example; Ordering ordering; ordering += X(1),X(2),L(1); GaussianFactorGraph fg = createGaussianFactorGraph(ordering); EXPECT(equalsObj(ordering)); EXPECT(equalsXML(ordering)); EXPECT(equalsBinary(ordering)); EXPECT(equalsObj(fg)); EXPECT(equalsXML(fg)); EXPECT(equalsBinary(fg)); GaussianBayesNet cbn = createSmallGaussianBayesNet(); EXPECT(equalsObj(cbn)); EXPECT(equalsXML(cbn)); EXPECT(equalsBinary(cbn)); } /* ************************************************************************* */ TEST (Serialization, gaussianISAM) { using namespace example; Ordering ordering; GaussianFactorGraph smoother; boost::tie(smoother, ordering) = createSmoother(7); BayesTree bayesTree = *GaussianMultifrontalSolver(smoother).eliminate(); GaussianISAM isam(bayesTree); EXPECT(equalsObj(isam)); EXPECT(equalsXML(isam)); EXPECT(equalsBinary(isam)); } /* ************************************************************************* */ /* Create GUIDs for factors in simulated2D */ BOOST_CLASS_EXPORT_GUID(simulated2D::Prior, "gtsam::simulated2D::Prior" ) BOOST_CLASS_EXPORT_GUID(simulated2D::Odometry, "gtsam::simulated2D::Odometry" ) BOOST_CLASS_EXPORT_GUID(simulated2D::Measurement, "gtsam::simulated2D::Measurement") /* ************************************************************************* */ TEST (Serialization, smallExample_nonlinear) { using namespace example; NonlinearFactorGraph nfg = createNonlinearFactorGraph(); Values c1 = createValues(); EXPECT(equalsObj(nfg)); EXPECT(equalsXML(nfg)); EXPECT(equalsBinary(nfg)); EXPECT(equalsObj(c1)); EXPECT(equalsXML(c1)); EXPECT(equalsBinary(c1)); } /* ************************************************************************* */ TEST (Serialization, factors) { LieVector lieVector(4, 1.0, 2.0, 3.0, 4.0); LieMatrix lieMatrix(2, 3, 1.0, 2.0, 3.0, 4.0, 5.0 ,6.0); Point2 point2(1.0, 2.0); StereoPoint2 stereoPoint2(1.0, 2.0, 3.0); Point3 point3(1.0, 2.0, 3.0); Rot2 rot2(1.0); Rot3 rot3(Rot3::RzRyRx(1.0, 2.0, 3.0)); Pose2 pose2(rot2, point2); Pose3 pose3(rot3, point3); Cal3_S2 cal3_s2(1.0, 2.0, 3.0, 4.0, 5.0); Cal3DS2 cal3ds2(1.0, 2.0, 3.0, 4.0, 5.0,6.0, 7.0, 8.0, 9.0); Cal3_S2Stereo cal3_s2stereo(1.0, 2.0, 3.0, 4.0, 5.0, 1.0); CalibratedCamera calibratedCamera(pose3); SimpleCamera simpleCamera(pose3, cal3_s2); StereoCamera stereoCamera(pose3, boost::make_shared(cal3_s2stereo)); Symbol a01('a',1), a02('a',2), a03('a',3), a04('a',4), a05('a',5), a06('a',6), a07('a',7), a08('a',8), a09('a',9), a10('a',10), a11('a',11), a12('a',12), a13('a',13), a14('a',14), a15('a',15); Symbol b01('b',1), b02('b',2), b03('b',3), b04('b',4), b05('b',5), b06('b',6), b07('b',7), b08('b',8), b09('b',9), b10('b',10), b11('b',11), b12('b',12), b13('b',13), b14('b',14), b15('b',15); Values values; values.insert(a01, lieVector); values.insert(a02, lieMatrix); values.insert(a03, point2); values.insert(a04, stereoPoint2); values.insert(a05, point3); values.insert(a06, rot2); values.insert(a07, rot3); values.insert(a08, pose2); values.insert(a09, pose3); values.insert(a10, cal3_s2); values.insert(a11, cal3ds2); values.insert(a12, calibratedCamera); values.insert(a13, simpleCamera); values.insert(a14, stereoCamera); SharedNoiseModel model1 = noiseModel::Isotropic::Sigma(1, 0.3); SharedNoiseModel model2 = noiseModel::Isotropic::Sigma(2, 0.3); SharedNoiseModel model3 = noiseModel::Isotropic::Sigma(3, 0.3); SharedNoiseModel model4 = noiseModel::Isotropic::Sigma(4, 0.3); SharedNoiseModel model5 = noiseModel::Isotropic::Sigma(5, 0.3); SharedNoiseModel model6 = noiseModel::Isotropic::Sigma(6, 0.3); SharedNoiseModel model9 = noiseModel::Isotropic::Sigma(9, 0.3); SharedNoiseModel model11 = noiseModel::Isotropic::Sigma(11, 0.3); PriorFactorLieVector priorFactorLieVector(a01, lieVector, model4); PriorFactorLieMatrix priorFactorLieMatrix(a02, lieMatrix, model6); PriorFactorPoint2 priorFactorPoint2(a03, point2, model2); PriorFactorStereoPoint2 priorFactorStereoPoint2(a04, stereoPoint2, model3); PriorFactorPoint3 priorFactorPoint3(a05, point3, model3); PriorFactorRot2 priorFactorRot2(a06, rot2, model1); PriorFactorRot3 priorFactorRot3(a07, rot3, model3); PriorFactorPose2 priorFactorPose2(a08, pose2, model3); PriorFactorPose3 priorFactorPose3(a09, pose3, model6); PriorFactorCal3_S2 priorFactorCal3_S2(a10, cal3_s2, model5); PriorFactorCal3DS2 priorFactorCal3DS2(a11, cal3ds2, model9); PriorFactorCalibratedCamera priorFactorCalibratedCamera(a12, calibratedCamera, model6); PriorFactorSimpleCamera priorFactorSimpleCamera(a13, simpleCamera, model11); PriorFactorStereoCamera priorFactorStereoCamera(a14, stereoCamera, model11); BetweenFactorLieVector betweenFactorLieVector(a01, b01, lieVector, model4); BetweenFactorLieMatrix betweenFactorLieMatrix(a02, b02, lieMatrix, model6); BetweenFactorPoint2 betweenFactorPoint2(a03, b03, point2, model2); BetweenFactorPoint3 betweenFactorPoint3(a05, b05, point3, model3); BetweenFactorRot2 betweenFactorRot2(a06, b06, rot2, model1); BetweenFactorRot3 betweenFactorRot3(a07, b07, rot3, model3); BetweenFactorPose2 betweenFactorPose2(a08, b08, pose2, model3); BetweenFactorPose3 betweenFactorPose3(a09, b09, pose3, model6); NonlinearEqualityLieVector nonlinearEqualityLieVector(a01, lieVector); NonlinearEqualityLieMatrix nonlinearEqualityLieMatrix(a02, lieMatrix); NonlinearEqualityPoint2 nonlinearEqualityPoint2(a03, point2); NonlinearEqualityStereoPoint2 nonlinearEqualityStereoPoint2(a04, stereoPoint2); NonlinearEqualityPoint3 nonlinearEqualityPoint3(a05, point3); NonlinearEqualityRot2 nonlinearEqualityRot2(a06, rot2); NonlinearEqualityRot3 nonlinearEqualityRot3(a07, rot3); NonlinearEqualityPose2 nonlinearEqualityPose2(a08, pose2); NonlinearEqualityPose3 nonlinearEqualityPose3(a09, pose3); NonlinearEqualityCal3_S2 nonlinearEqualityCal3_S2(a10, cal3_s2); NonlinearEqualityCal3DS2 nonlinearEqualityCal3DS2(a11, cal3ds2); NonlinearEqualityCalibratedCamera nonlinearEqualityCalibratedCamera(a12, calibratedCamera); NonlinearEqualitySimpleCamera nonlinearEqualitySimpleCamera(a13, simpleCamera); NonlinearEqualityStereoCamera nonlinearEqualityStereoCamera(a14, stereoCamera); RangeFactorPosePoint2 rangeFactorPosePoint2(a08, a03, 2.0, model1); RangeFactorPosePoint3 rangeFactorPosePoint3(a09, a05, 2.0, model1); RangeFactorPose2 rangeFactorPose2(a08, b08, 2.0, model1); RangeFactorPose3 rangeFactorPose3(a09, b09, 2.0, model1); RangeFactorCalibratedCameraPoint rangeFactorCalibratedCameraPoint(a12, a05, 2.0, model1); RangeFactorSimpleCameraPoint rangeFactorSimpleCameraPoint(a13, a05, 2.0, model1); RangeFactorCalibratedCamera rangeFactorCalibratedCamera(a12, b12, 2.0, model1); RangeFactorSimpleCamera rangeFactorSimpleCamera(a13, b13, 2.0, model1); BearingFactor2D bearingFactor2D(a08, a03, rot2, model1); BearingRangeFactor2D bearingRangeFactor2D(a08, a03, rot2, 2.0, model2); GenericProjectionFactorCal3_S2 genericProjectionFactorCal3_S2(point2, model2, a09, a05, boost::make_shared(cal3_s2)); GenericProjectionFactorCal3DS2 genericProjectionFactorCal3DS2(point2, model2, a09, a05, boost::make_shared(cal3ds2)); GeneralSFMFactorCal3_S2 generalSFMFactorCal3_S2(point2, model2, a13, a05); GeneralSFMFactor2Cal3_S2 generalSFMFactor2Cal3_S2(point2, model2, a09, a05, a10); GenericStereoFactor3D genericStereoFactor3D(stereoPoint2, model3, a09, a05, boost::make_shared(cal3_s2stereo)); NonlinearFactorGraph graph; graph.add(priorFactorLieVector); graph.add(priorFactorLieMatrix); graph.add(priorFactorPoint2); graph.add(priorFactorStereoPoint2); graph.add(priorFactorPoint3); graph.add(priorFactorRot2); graph.add(priorFactorRot3); graph.add(priorFactorPose2); graph.add(priorFactorPose3); graph.add(priorFactorCal3_S2); graph.add(priorFactorCal3DS2); graph.add(priorFactorCalibratedCamera); graph.add(priorFactorSimpleCamera); graph.add(priorFactorStereoCamera); graph.add(betweenFactorLieVector); graph.add(betweenFactorLieMatrix); graph.add(betweenFactorPoint2); graph.add(betweenFactorPoint3); graph.add(betweenFactorRot2); graph.add(betweenFactorRot3); graph.add(betweenFactorPose2); graph.add(betweenFactorPose3); graph.add(nonlinearEqualityLieVector); graph.add(nonlinearEqualityLieMatrix); graph.add(nonlinearEqualityPoint2); graph.add(nonlinearEqualityStereoPoint2); graph.add(nonlinearEqualityPoint3); graph.add(nonlinearEqualityRot2); graph.add(nonlinearEqualityRot3); graph.add(nonlinearEqualityPose2); graph.add(nonlinearEqualityPose3); graph.add(nonlinearEqualityCal3_S2); graph.add(nonlinearEqualityCal3DS2); graph.add(nonlinearEqualityCalibratedCamera); graph.add(nonlinearEqualitySimpleCamera); graph.add(nonlinearEqualityStereoCamera); graph.add(rangeFactorPosePoint2); graph.add(rangeFactorPosePoint3); graph.add(rangeFactorPose2); graph.add(rangeFactorPose3); graph.add(rangeFactorCalibratedCameraPoint); graph.add(rangeFactorSimpleCameraPoint); graph.add(rangeFactorCalibratedCamera); graph.add(rangeFactorSimpleCamera); graph.add(bearingFactor2D); graph.add(bearingRangeFactor2D); graph.add(genericProjectionFactorCal3_S2); graph.add(genericProjectionFactorCal3DS2); graph.add(generalSFMFactorCal3_S2); graph.add(generalSFMFactor2Cal3_S2); graph.add(genericStereoFactor3D); // text EXPECT(equalsObj(a01)); EXPECT(equalsObj(b02)); EXPECT(equalsObj(values)); EXPECT(equalsObj(graph)); EXPECT(equalsObj(priorFactorLieVector)); EXPECT(equalsObj(priorFactorLieMatrix)); EXPECT(equalsObj(priorFactorPoint2)); EXPECT(equalsObj(priorFactorStereoPoint2)); EXPECT(equalsObj(priorFactorPoint3)); EXPECT(equalsObj(priorFactorRot2)); EXPECT(equalsObj(priorFactorRot3)); EXPECT(equalsObj(priorFactorPose2)); EXPECT(equalsObj(priorFactorPose3)); EXPECT(equalsObj(priorFactorCal3_S2)); EXPECT(equalsObj(priorFactorCal3DS2)); EXPECT(equalsObj(priorFactorCalibratedCamera)); EXPECT(equalsObj(priorFactorSimpleCamera)); EXPECT(equalsObj(priorFactorStereoCamera)); EXPECT(equalsObj(betweenFactorLieVector)); EXPECT(equalsObj(betweenFactorLieMatrix)); EXPECT(equalsObj(betweenFactorPoint2)); EXPECT(equalsObj(betweenFactorPoint3)); EXPECT(equalsObj(betweenFactorRot2)); EXPECT(equalsObj(betweenFactorRot3)); EXPECT(equalsObj(betweenFactorPose2)); EXPECT(equalsObj(betweenFactorPose3)); EXPECT(equalsObj(nonlinearEqualityLieVector)); EXPECT(equalsObj(nonlinearEqualityLieMatrix)); EXPECT(equalsObj(nonlinearEqualityPoint2)); EXPECT(equalsObj(nonlinearEqualityStereoPoint2)); EXPECT(equalsObj(nonlinearEqualityPoint3)); EXPECT(equalsObj(nonlinearEqualityRot2)); EXPECT(equalsObj(nonlinearEqualityRot3)); EXPECT(equalsObj(nonlinearEqualityPose2)); EXPECT(equalsObj(nonlinearEqualityPose3)); EXPECT(equalsObj(nonlinearEqualityCal3_S2)); EXPECT(equalsObj(nonlinearEqualityCal3DS2)); EXPECT(equalsObj(nonlinearEqualityCalibratedCamera)); EXPECT(equalsObj(nonlinearEqualitySimpleCamera)); EXPECT(equalsObj(nonlinearEqualityStereoCamera)); EXPECT(equalsObj(rangeFactorPosePoint2)); EXPECT(equalsObj(rangeFactorPosePoint3)); EXPECT(equalsObj(rangeFactorPose2)); EXPECT(equalsObj(rangeFactorPose3)); EXPECT(equalsObj(rangeFactorCalibratedCameraPoint)); EXPECT(equalsObj(rangeFactorSimpleCameraPoint)); EXPECT(equalsObj(rangeFactorCalibratedCamera)); EXPECT(equalsObj(rangeFactorSimpleCamera)); EXPECT(equalsObj(bearingFactor2D)); EXPECT(equalsObj(bearingRangeFactor2D)); EXPECT(equalsObj(genericProjectionFactorCal3_S2)); EXPECT(equalsObj(genericProjectionFactorCal3DS2)); EXPECT(equalsObj(generalSFMFactorCal3_S2)); EXPECT(equalsObj(generalSFMFactor2Cal3_S2)); EXPECT(equalsObj(genericStereoFactor3D)); // xml EXPECT(equalsXML(a01)); EXPECT(equalsXML(b02)); EXPECT(equalsXML(values)); EXPECT(equalsXML(graph)); EXPECT(equalsXML(priorFactorLieVector)); EXPECT(equalsXML(priorFactorLieMatrix)); EXPECT(equalsXML(priorFactorPoint2)); EXPECT(equalsXML(priorFactorStereoPoint2)); EXPECT(equalsXML(priorFactorPoint3)); EXPECT(equalsXML(priorFactorRot2)); EXPECT(equalsXML(priorFactorRot3)); EXPECT(equalsXML(priorFactorPose2)); EXPECT(equalsXML(priorFactorPose3)); EXPECT(equalsXML(priorFactorCal3_S2)); EXPECT(equalsXML(priorFactorCal3DS2)); EXPECT(equalsXML(priorFactorCalibratedCamera)); EXPECT(equalsXML(priorFactorSimpleCamera)); EXPECT(equalsXML(priorFactorStereoCamera)); EXPECT(equalsXML(betweenFactorLieVector)); EXPECT(equalsXML(betweenFactorLieMatrix)); EXPECT(equalsXML(betweenFactorPoint2)); EXPECT(equalsXML(betweenFactorPoint3)); EXPECT(equalsXML(betweenFactorRot2)); EXPECT(equalsXML(betweenFactorRot3)); EXPECT(equalsXML(betweenFactorPose2)); EXPECT(equalsXML(betweenFactorPose3)); EXPECT(equalsXML(nonlinearEqualityLieVector)); EXPECT(equalsXML(nonlinearEqualityLieMatrix)); EXPECT(equalsXML(nonlinearEqualityPoint2)); EXPECT(equalsXML(nonlinearEqualityStereoPoint2)); EXPECT(equalsXML(nonlinearEqualityPoint3)); EXPECT(equalsXML(nonlinearEqualityRot2)); EXPECT(equalsXML(nonlinearEqualityRot3)); EXPECT(equalsXML(nonlinearEqualityPose2)); EXPECT(equalsXML(nonlinearEqualityPose3)); EXPECT(equalsXML(nonlinearEqualityCal3_S2)); EXPECT(equalsXML(nonlinearEqualityCal3DS2)); EXPECT(equalsXML(nonlinearEqualityCalibratedCamera)); EXPECT(equalsXML(nonlinearEqualitySimpleCamera)); EXPECT(equalsXML(nonlinearEqualityStereoCamera)); EXPECT(equalsXML(rangeFactorPosePoint2)); EXPECT(equalsXML(rangeFactorPosePoint3)); EXPECT(equalsXML(rangeFactorPose2)); EXPECT(equalsXML(rangeFactorPose3)); EXPECT(equalsXML(rangeFactorCalibratedCameraPoint)); EXPECT(equalsXML(rangeFactorSimpleCameraPoint)); EXPECT(equalsXML(rangeFactorCalibratedCamera)); EXPECT(equalsXML(rangeFactorSimpleCamera)); EXPECT(equalsXML(bearingFactor2D)); EXPECT(equalsXML(bearingRangeFactor2D)); EXPECT(equalsXML(genericProjectionFactorCal3_S2)); EXPECT(equalsXML(genericProjectionFactorCal3DS2)); EXPECT(equalsXML(generalSFMFactorCal3_S2)); EXPECT(equalsXML(generalSFMFactor2Cal3_S2)); EXPECT(equalsXML(genericStereoFactor3D)); // binary EXPECT(equalsBinary(a01)); EXPECT(equalsBinary(b02)); EXPECT(equalsBinary(values)); EXPECT(equalsBinary(graph)); EXPECT(equalsBinary(priorFactorLieVector)); EXPECT(equalsBinary(priorFactorLieMatrix)); EXPECT(equalsBinary(priorFactorPoint2)); EXPECT(equalsBinary(priorFactorStereoPoint2)); EXPECT(equalsBinary(priorFactorPoint3)); EXPECT(equalsBinary(priorFactorRot2)); EXPECT(equalsBinary(priorFactorRot3)); EXPECT(equalsBinary(priorFactorPose2)); EXPECT(equalsBinary(priorFactorPose3)); EXPECT(equalsBinary(priorFactorCal3_S2)); EXPECT(equalsBinary(priorFactorCal3DS2)); EXPECT(equalsBinary(priorFactorCalibratedCamera)); EXPECT(equalsBinary(priorFactorSimpleCamera)); EXPECT(equalsBinary(priorFactorStereoCamera)); EXPECT(equalsBinary(betweenFactorLieVector)); EXPECT(equalsBinary(betweenFactorLieMatrix)); EXPECT(equalsBinary(betweenFactorPoint2)); EXPECT(equalsBinary(betweenFactorPoint3)); EXPECT(equalsBinary(betweenFactorRot2)); EXPECT(equalsBinary(betweenFactorRot3)); EXPECT(equalsBinary(betweenFactorPose2)); EXPECT(equalsBinary(betweenFactorPose3)); EXPECT(equalsBinary(nonlinearEqualityLieVector)); EXPECT(equalsBinary(nonlinearEqualityLieMatrix)); EXPECT(equalsBinary(nonlinearEqualityPoint2)); EXPECT(equalsBinary(nonlinearEqualityStereoPoint2)); EXPECT(equalsBinary(nonlinearEqualityPoint3)); EXPECT(equalsBinary(nonlinearEqualityRot2)); EXPECT(equalsBinary(nonlinearEqualityRot3)); EXPECT(equalsBinary(nonlinearEqualityPose2)); EXPECT(equalsBinary(nonlinearEqualityPose3)); EXPECT(equalsBinary(nonlinearEqualityCal3_S2)); EXPECT(equalsBinary(nonlinearEqualityCal3DS2)); EXPECT(equalsBinary(nonlinearEqualityCalibratedCamera)); EXPECT(equalsBinary(nonlinearEqualitySimpleCamera)); EXPECT(equalsBinary(nonlinearEqualityStereoCamera)); EXPECT(equalsBinary(rangeFactorPosePoint2)); EXPECT(equalsBinary(rangeFactorPosePoint3)); EXPECT(equalsBinary(rangeFactorPose2)); EXPECT(equalsBinary(rangeFactorPose3)); EXPECT(equalsBinary(rangeFactorCalibratedCameraPoint)); EXPECT(equalsBinary(rangeFactorSimpleCameraPoint)); EXPECT(equalsBinary(rangeFactorCalibratedCamera)); EXPECT(equalsBinary(rangeFactorSimpleCamera)); EXPECT(equalsBinary(bearingFactor2D)); EXPECT(equalsBinary(bearingRangeFactor2D)); EXPECT(equalsBinary(genericProjectionFactorCal3_S2)); EXPECT(equalsBinary(genericProjectionFactorCal3DS2)); EXPECT(equalsBinary(generalSFMFactorCal3_S2)); EXPECT(equalsBinary(generalSFMFactor2Cal3_S2)); EXPECT(equalsBinary(genericStereoFactor3D)); } /* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); } /* ************************************************************************* */