added vector space concept check, but not sure it will work...
parent
2fa9d0f557
commit
b5e3c8816d
|
@ -50,7 +50,6 @@ template<class T>
|
||||||
class ManifoldConcept {
|
class ManifoldConcept {
|
||||||
public:
|
public:
|
||||||
typedef T Manifold;
|
typedef T Manifold;
|
||||||
typedef traits::manifold_tag<T> manifold_tag;
|
|
||||||
typedef traits::TangentVector<T>::type TangentVector;
|
typedef traits::TangentVector<T>::type TangentVector;
|
||||||
typedef traits::DefaultChart<T>::type DefaultChart;
|
typedef traits::DefaultChart<T>::type DefaultChart;
|
||||||
static const size_t dim = traits::dimension<T>::value;
|
static const size_t dim = traits::dimension<T>::value;
|
||||||
|
@ -126,7 +125,29 @@ class LieGroupConcept : public GroupConcept<L>, public ManifoldConcept<L> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <class V>
|
||||||
|
class VectorSpaceConcept : public LieGroupConcept {
|
||||||
|
typedef traits::DefaultChart<V>::type Chart;
|
||||||
|
typedef GroupConcept<V>::identity identity;
|
||||||
|
|
||||||
|
BOOST_CONCEPT_USAGE(VectorSpaceConcept) {
|
||||||
|
BOOST_STATIC_ASSERT(boost::is_base_of<traits::vector_space_tag, traits::structure<L> >);
|
||||||
|
r = p+q;
|
||||||
|
r = -p;
|
||||||
|
r = p-q;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool check_invariants(const V& a, const V& b) {
|
||||||
|
return equal(compose(a, b), a+b)
|
||||||
|
&& equal(inverse(a), -a)
|
||||||
|
&& equal(between(a, b), b-a)
|
||||||
|
&& equal(Chart::retract(a, b), a+b)
|
||||||
|
&& equal(Chart::local(a, b), b-a);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
V p,q,r;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace gtsam
|
} // namespace gtsam
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue