26 #include <boost/concept_check.hpp> 27 #include <boost/concept/requires.hpp> 28 #include <boost/type_traits/is_base_of.hpp> 53 template <
typename T>
struct traits;
68 v = p.localCoordinates(q);
74 template<
class Class,
int N>
110 return origin.localCoordinates(other);
115 return origin.retract(v);
127 check_manifold_invariants(
const T&
a,
const T&
b,
double tol=1
e-9) {
145 BOOST_CONCEPT_USAGE(IsManifold) {
146 BOOST_STATIC_ASSERT_MSG(
148 "This type's structure_category trait does not assert it as a manifold (or derived)");
149 BOOST_STATIC_ASSERT(TangentVector::SizeAtCompileTime == dim);
168 "FixedDimension instantiated for dymanically-sized type.");
180 #define GTSAM_CONCEPT_MANIFOLD_INST(T) template class gtsam::IsManifold<T>; 181 #define GTSAM_CONCEPT_MANIFOLD_TYPE(T) typedef gtsam::IsManifold<T> _gtsam_IsManifold_##T;
tag to assert a type is a manifold
Both ManifoldTraits and Testable.
Eigen::Matrix< double, dimension, 1 > TangentVector
Requirements on type to pass it to Manifold template below.
Concept check for values that can be used in unit tests.
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set set set surface set nocontour set clabel set mapping cartesian set nohidden3d set cntrparam order set cntrparam linear set cntrparam levels auto set cntrparam points set size set origin
Eigen::Matrix< double, dim, 1 > v
Give fixed size dimension of a type, fails at compile time if dynamic.
BOOST_CONCEPT_ASSERT((boost::RandomAccessRangeConcept< ListOfOneContainer< int > >))
Namespace containing all symbols from the Eigen library.
Extra manifold traits for fixed-dimension types.
static int GetDimension(const Class &m)
BOOST_CONCEPT_USAGE(HasManifoldPrereqs)
Array< double, 1, 3 > e(1./3., 0.5, 2.)
EIGEN_DEVICE_FUNC const Scalar & q
manifold_tag structure_category
static int GetDimension(const Class &)
const mpreal dim(const mpreal &a, const mpreal &b, mp_rnd_t r=mpreal::get_default_rnd())
OptionalJacobian< dim, dim > Hv
static Class Retract(const Class &origin, const TangentVector &v)
static TangentVector Local(const Class &origin, const Class &other)
Special class for optional Jacobian arguments.
BOOST_CONCEPT_REQUIRES(((IsGroup< G >)),(bool)) check_group_invariants(const G &a
Check invariants.