diff --git a/include/curves/curve_abc.h b/include/curves/curve_abc.h index d5d0583fc4b732a1c98a5a9d131d7860eadc57e8..acfa3c78dbe59c79098af133a1a366fa7a608cb2 100644 --- a/include/curves/curve_abc.h +++ b/include/curves/curve_abc.h @@ -14,6 +14,7 @@ #include "MathDefs.h" #include "serialization/archive.hpp" #include "serialization/eigen-matrix.hpp" +#include <boost/serialization/shared_ptr.hpp> #include <functional> @@ -73,5 +74,6 @@ struct curve_abc : std::unary_function<Time, Point>, public serialization::Seria } } }; +BOOST_SERIALIZATION_ASSUME_ABSTRACT(curve_abc) } // namespace curves #endif //_STRUCT_CURVE_ABC diff --git a/include/curves/se3_curve.h b/include/curves/se3_curve.h index c65ebc3776ced2809eb135747f39407d0ea28226..d4fae42febe16d62a6fe597338f02d4e941d11dc 100644 --- a/include/curves/se3_curve.h +++ b/include/curves/se3_curve.h @@ -1,6 +1,7 @@ #ifndef _STRUCT_SE3_CURVE_H #define _STRUCT_SE3_CURVE_H +#include "fwd.h" #include "MathDefs.h" #include "curve_abc.h" #include "so3_linear.h" @@ -191,6 +192,21 @@ struct SE3Curve : public curve_abc<Time, Numeric, Safe, Eigen::Transform<Numeric if (version) { // Do something depending on version ? } + //register derived class + ar.template register_type<bezier_curve<Scalar, Scalar, Safe, pointX_t> >(); + ar.template register_type<cubic_hermite_spline<Scalar, Scalar, Safe, pointX_t> >(); + ar.template register_type<exact_cubic<Scalar, Scalar, Safe, pointX_t> >(); + ar.template register_type<piecewise_curve<Scalar, Scalar, Safe, pointX_t, + std::vector<pointX_t, Eigen::aligned_allocator<pointX_t> >, polynomial_t> >(); + ar.template register_type<piecewise_curve<Scalar, Scalar, Safe, pointX_t, + std::vector<pointX_t, Eigen::aligned_allocator<pointX_t> >, bezier_curve<Scalar, Scalar, Safe, pointX_t> > >(); + ar.template register_type<piecewise_curve<Scalar, Scalar, Safe, pointX_t, + std::vector<pointX_t, Eigen::aligned_allocator<pointX_t> >, cubic_hermite_spline<Scalar, Scalar, Safe, pointX_t> > >(); + ar.template register_type<polynomial_t>(); + ar.template register_type<SO3Linear_t>(); + + + ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(curve_abc_t); ar& boost::serialization::make_nvp("dim", dim_); ar& boost::serialization::make_nvp("translation_curve", translation_curve_); ar& boost::serialization::make_nvp("rotation_curve", rotation_curve_);