gtsam  3.2.1
gtsam
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
concepts.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
25 #pragma once
26 
27 #include <gtsam/base/Matrix.h>
28 #include <boost/optional.hpp>
29 
30 namespace gtsam {
31 
38 template<class POSE>
39 class PoseConcept {
40 public:
41  typedef typename POSE::Translation Translation;
42  typedef typename POSE::Rotation Rotation;
43 
44 private:
45  static Rotation checkRotationMemberAccess(const POSE& p) {
46  return p.rotation();
47  }
48 
49  static Translation checkTranslationMemberAccess(const POSE& p) {
50  return p.translation();
51  }
52 
53  static std::pair<size_t, size_t> checkTranslationInterval() {
54  return POSE::translationInterval();
55  }
56 
57  static std::pair<size_t, size_t> checkRotationInterval() {
58  return POSE::rotationInterval();
59  }
60 };
61 
67 template<class V1, class V2>
69 private:
70  static double checkRangeMeasurement(const V1& x, const V2& p) {
71  return x.range(p);
72  }
73 
74  static double checkRangeMeasurementDerivatives(const V1& x, const V2& p) {
75  boost::optional<Matrix&> H1, H2;
76  return x.range(p, H1, H2);
77  }
78 };
79 
80 } // \namespace gtsam
81 
92 #define GTSAM_CONCEPT_POSE_INST(T) template class gtsam::PoseConcept<T>;
93 #define GTSAM_CONCEPT_POSE_TYPE(T) typedef gtsam::PoseConcept<T> _gtsam_PoseConcept##T;
94 
96 #define GTSAM_CONCEPT_RANGE_MEASUREMENT_INST(V1,V2) template class gtsam::RangeMeasurementConcept<V1,V2>;
97 #define GTSAM_CONCEPT_RANGE_MEASUREMENT_TYPE(V1,V2) typedef gtsam::RangeMeasurementConcept<V1,V2> _gtsam_RangeMeasurementConcept##V1##V2;
98 
Range measurement concept Given a pair of Lie variables, there must exist a function to calculate ran...
Definition: concepts.h:68
Pose Concept A must contain a translation and a rotation, with each structure accessable directly and...
Definition: concepts.h:39
typedef and functions to augment Eigen's MatrixXd