diff --git a/gtsam/base/concepts.h b/gtsam/base/concepts.h index 683b29d70..e4f5924de 100644 --- a/gtsam/base/concepts.h +++ b/gtsam/base/concepts.h @@ -17,14 +17,23 @@ namespace traits { template struct TangentVector { - typedef Eigen::VectorXd type; + //typedef XXX type; }; +// used to identify the manifold associated with a chart template struct Manifold { - typedef Chart::value_type type; + //typedef XXX type; }; +template +struct DefaultChart { + //typedef XXX type; +}; + +template +struct group_flavor {}; + struct additive_group_tag {}; struct multiplicative_group_tag {}; @@ -35,20 +44,16 @@ class ManifoldConcept { public: typedef T Manifold; typedef traits::TangentVector::type TangentVector; - typedef traits::DefaultChart DefaultChart; + typedef traits::DefaultChart::type DefaultChart; static const size_t dim = traits::dimension::value; BOOST_CONCEPT_USAGE(ManifoldConcept) { - - // assignable - T t2 = t; - - TangentVector v; BOOST_STATIC_ASSERT(TangentVector::SizeAtCompileTime == dim); - + // no direct usage for manifold since most usage is through a chart } private: Manifold p; + TangentVector v; }; template @@ -87,18 +92,18 @@ class GroupConcept { return (equal(compose(a, inverse(a)), identity)) && (equal(between(a, b), compose(inverse(a), b))) && (equal(compose(a, between(a, b)), b)) - && operator_usage(a, b, traits::group_flavor) + && operator_usage(a, b, traits::group_flavor); } private: Group p,q; bool operator_usage(const Group& a, const Group& b, const traits::multiplicative_group_tag&) { - return equals(compose(a, b), a*b); + return equal(compose(a, b), a*b); } bool operator_usage(const Group& a, const Group& b, const traits::additive_group_tag&) { - return equals(compose(a, b), a+b); + return equal(compose(a, b), a+b); } };