Fixed serialization for LieVector and LieMatrix
							parent
							
								
									b63201b20d
								
							
						
					
					
						commit
						592fa95d66
					
				|  | @ -22,6 +22,7 @@ | |||
| #include <gtsam/base/Lie.h> | ||||
| #include <gtsam/base/Matrix.h> | ||||
| #include <gtsam/base/DerivedValue.h> | ||||
| #include <boost/serialization/nvp.hpp> | ||||
| 
 | ||||
| namespace gtsam { | ||||
| 
 | ||||
|  | @ -135,5 +136,18 @@ struct LieMatrix : public Matrix, public DerivedValue<LieMatrix> { | |||
| 	static inline Vector Logmap(const LieMatrix& p) { | ||||
|     return Eigen::Map<const Vector>(&p(0,0), p.dim()); } | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
|   // Serialization function
 | ||||
|   friend class boost::serialization::access; | ||||
|   template<class Archive> | ||||
|   void serialize(Archive & ar, const unsigned int version) { | ||||
|     ar & boost::serialization::make_nvp("LieMatrix", | ||||
|        boost::serialization::base_object<Value>(*this)); | ||||
|     ar & boost::serialization::make_nvp("Matrix", | ||||
|        boost::serialization::base_object<Matrix>(*this)); | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
| }; | ||||
| } // \namespace gtsam
 | ||||
|  |  | |||
|  | @ -119,5 +119,17 @@ struct LieVector : public Vector, public DerivedValue<LieVector> { | |||
| 	/** Logmap around identity - just returns with default cast back */ | ||||
| 	static inline Vector Logmap(const LieVector& p) { return p; } | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
|   // Serialization function
 | ||||
|   friend class boost::serialization::access; | ||||
|   template<class Archive> | ||||
|   void serialize(Archive & ar, const unsigned int version) { | ||||
|     ar & boost::serialization::make_nvp("LieVector", | ||||
|        boost::serialization::base_object<Value>(*this)); | ||||
|     ar & boost::serialization::make_nvp("Vector", | ||||
|        boost::serialization::base_object<Vector>(*this)); | ||||
|   } | ||||
| 
 | ||||
| }; | ||||
| } // \namespace gtsam
 | ||||
|  |  | |||
|  | @ -269,8 +269,8 @@ TEST (Serialization, factors) { | |||
| 	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); | ||||
| 
 | ||||
|   Values values; | ||||
| //	values.insert(a01, lieVector);
 | ||||
| //	values.insert(a02, lieMatrix);
 | ||||
| 	values.insert(a01, lieVector); | ||||
| 	values.insert(a02, lieMatrix); | ||||
| 	values.insert(a03, point2); | ||||
| 	values.insert(a04, stereoPoint2); | ||||
| 	values.insert(a05, point3); | ||||
|  | @ -352,8 +352,8 @@ TEST (Serialization, factors) { | |||
| 
 | ||||
| 
 | ||||
|   NonlinearFactorGraph graph; | ||||
| //  graph.add(priorFactorLieVector);
 | ||||
| //  graph.add(priorFactorLieMatrix);
 | ||||
|   graph.add(priorFactorLieVector); | ||||
|   graph.add(priorFactorLieMatrix); | ||||
|   graph.add(priorFactorPoint2); | ||||
|   graph.add(priorFactorStereoPoint2); | ||||
|   graph.add(priorFactorPoint3); | ||||
|  | @ -366,8 +366,8 @@ TEST (Serialization, factors) { | |||
|   graph.add(priorFactorCalibratedCamera); | ||||
|   graph.add(priorFactorSimpleCamera); | ||||
| 
 | ||||
| //  graph.add(betweenFactorLieVector);
 | ||||
| //  graph.add(betweenFactorLieMatrix);
 | ||||
|   graph.add(betweenFactorLieVector); | ||||
|   graph.add(betweenFactorLieMatrix); | ||||
|   graph.add(betweenFactorPoint2); | ||||
|   graph.add(betweenFactorPoint3); | ||||
|   graph.add(betweenFactorRot2); | ||||
|  | @ -375,8 +375,8 @@ TEST (Serialization, factors) { | |||
|   graph.add(betweenFactorPose2); | ||||
|   graph.add(betweenFactorPose3); | ||||
| 
 | ||||
| //  graph.add(nonlinearEqualityLieVector);
 | ||||
| //  graph.add(nonlinearEqualityLieMatrix);
 | ||||
|   graph.add(nonlinearEqualityLieVector); | ||||
|   graph.add(nonlinearEqualityLieMatrix); | ||||
|   graph.add(nonlinearEqualityPoint2); | ||||
|   graph.add(nonlinearEqualityStereoPoint2); | ||||
|   graph.add(nonlinearEqualityPoint3); | ||||
|  | @ -412,8 +412,8 @@ TEST (Serialization, factors) { | |||
|   EXPECT(equalsObj<Values>(values)); | ||||
|   EXPECT(equalsObj<NonlinearFactorGraph>(graph)); | ||||
| 
 | ||||
| //  EXPECT(equalsObj<PriorFactorLieVector>(priorFactorLieVector));
 | ||||
| //  EXPECT(equalsObj<PriorFactorLieMatrix>(priorFactorLieMatrix));
 | ||||
|   EXPECT(equalsObj<PriorFactorLieVector>(priorFactorLieVector)); | ||||
|   EXPECT(equalsObj<PriorFactorLieMatrix>(priorFactorLieMatrix)); | ||||
|   EXPECT(equalsObj<PriorFactorPoint2>(priorFactorPoint2)); | ||||
|   EXPECT(equalsObj<PriorFactorStereoPoint2>(priorFactorStereoPoint2)); | ||||
|   EXPECT(equalsObj<PriorFactorPoint3>(priorFactorPoint3)); | ||||
|  | @ -426,8 +426,8 @@ TEST (Serialization, factors) { | |||
|   EXPECT(equalsObj<PriorFactorCalibratedCamera>(priorFactorCalibratedCamera)); | ||||
|   EXPECT(equalsObj<PriorFactorSimpleCamera>(priorFactorSimpleCamera)); | ||||
| 
 | ||||
| //  EXPECT(equalsObj<BetweenFactorLieVector>(betweenFactorLieVector));
 | ||||
| //  EXPECT(equalsObj<BetweenFactorLieMatrix>(betweenFactorLieMatrix));
 | ||||
|   EXPECT(equalsObj<BetweenFactorLieVector>(betweenFactorLieVector)); | ||||
|   EXPECT(equalsObj<BetweenFactorLieMatrix>(betweenFactorLieMatrix)); | ||||
|   EXPECT(equalsObj<BetweenFactorPoint2>(betweenFactorPoint2)); | ||||
|   EXPECT(equalsObj<BetweenFactorPoint3>(betweenFactorPoint3)); | ||||
|   EXPECT(equalsObj<BetweenFactorRot2>(betweenFactorRot2)); | ||||
|  | @ -435,8 +435,8 @@ TEST (Serialization, factors) { | |||
|   EXPECT(equalsObj<BetweenFactorPose2>(betweenFactorPose2)); | ||||
|   EXPECT(equalsObj<BetweenFactorPose3>(betweenFactorPose3)); | ||||
| 
 | ||||
| //  EXPECT(equalsObj<NonlinearEqualityLieVector>(nonlinearEqualityLieVector));
 | ||||
| //  EXPECT(equalsObj<NonlinearEqualityLieMatrix>(nonlinearEqualityLieMatrix));
 | ||||
|   EXPECT(equalsObj<NonlinearEqualityLieVector>(nonlinearEqualityLieVector)); | ||||
|   EXPECT(equalsObj<NonlinearEqualityLieMatrix>(nonlinearEqualityLieMatrix)); | ||||
|   EXPECT(equalsObj<NonlinearEqualityPoint2>(nonlinearEqualityPoint2)); | ||||
|   EXPECT(equalsObj<NonlinearEqualityStereoPoint2>(nonlinearEqualityStereoPoint2)); | ||||
|   EXPECT(equalsObj<NonlinearEqualityPoint3>(nonlinearEqualityPoint3)); | ||||
|  | @ -472,8 +472,8 @@ TEST (Serialization, factors) { | |||
|   EXPECT(equalsXML<Values>(values)); | ||||
|   EXPECT(equalsXML<NonlinearFactorGraph>(graph)); | ||||
| 
 | ||||
| //  EXPECT(equalsXML<PriorFactorLieVector>(priorFactorLieVector));
 | ||||
| //  EXPECT(equalsXML<PriorFactorLieMatrix>(priorFactorLieMatrix));
 | ||||
|   EXPECT(equalsXML<PriorFactorLieVector>(priorFactorLieVector)); | ||||
|   EXPECT(equalsXML<PriorFactorLieMatrix>(priorFactorLieMatrix)); | ||||
|   EXPECT(equalsXML<PriorFactorPoint2>(priorFactorPoint2)); | ||||
|   EXPECT(equalsXML<PriorFactorStereoPoint2>(priorFactorStereoPoint2)); | ||||
|   EXPECT(equalsXML<PriorFactorPoint3>(priorFactorPoint3)); | ||||
|  | @ -486,8 +486,8 @@ TEST (Serialization, factors) { | |||
|   EXPECT(equalsXML<PriorFactorCalibratedCamera>(priorFactorCalibratedCamera)); | ||||
|   EXPECT(equalsXML<PriorFactorSimpleCamera>(priorFactorSimpleCamera)); | ||||
| 
 | ||||
| //  EXPECT(equalsXML<BetweenFactorLieVector>(betweenFactorLieVector));
 | ||||
| //  EXPECT(equalsXML<BetweenFactorLieMatrix>(betweenFactorLieMatrix));
 | ||||
|   EXPECT(equalsXML<BetweenFactorLieVector>(betweenFactorLieVector)); | ||||
|   EXPECT(equalsXML<BetweenFactorLieMatrix>(betweenFactorLieMatrix)); | ||||
|   EXPECT(equalsXML<BetweenFactorPoint2>(betweenFactorPoint2)); | ||||
|   EXPECT(equalsXML<BetweenFactorPoint3>(betweenFactorPoint3)); | ||||
|   EXPECT(equalsXML<BetweenFactorRot2>(betweenFactorRot2)); | ||||
|  | @ -495,8 +495,8 @@ TEST (Serialization, factors) { | |||
|   EXPECT(equalsXML<BetweenFactorPose2>(betweenFactorPose2)); | ||||
|   EXPECT(equalsXML<BetweenFactorPose3>(betweenFactorPose3)); | ||||
| 
 | ||||
| //  EXPECT(equalsXML<NonlinearEqualityLieVector>(nonlinearEqualityLieVector));
 | ||||
| //  EXPECT(equalsXML<NonlinearEqualityLieMatrix>(nonlinearEqualityLieMatrix));
 | ||||
|   EXPECT(equalsXML<NonlinearEqualityLieVector>(nonlinearEqualityLieVector)); | ||||
|   EXPECT(equalsXML<NonlinearEqualityLieMatrix>(nonlinearEqualityLieMatrix)); | ||||
|   EXPECT(equalsXML<NonlinearEqualityPoint2>(nonlinearEqualityPoint2)); | ||||
|   EXPECT(equalsXML<NonlinearEqualityStereoPoint2>(nonlinearEqualityStereoPoint2)); | ||||
|   EXPECT(equalsXML<NonlinearEqualityPoint3>(nonlinearEqualityPoint3)); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue