diff --git a/gtsam/geometry/BearingRange.h b/gtsam/geometry/BearingRange.h index 97dac111d..b9e074d48 100644 --- a/gtsam/geometry/BearingRange.h +++ b/gtsam/geometry/BearingRange.h @@ -94,7 +94,7 @@ struct traits > internal::ManifoldTraits > {}; // Helper class for to implement Range traits for classes with a bearing method -template +template struct HasBearing { typedef T result_type; T operator()( @@ -106,7 +106,7 @@ struct HasBearing { }; // Helper class for to implement Range traits for classes with a range method -template +template struct HasRange { typedef T result_type; T operator()( diff --git a/gtsam/geometry/CalibratedCamera.h b/gtsam/geometry/CalibratedCamera.h index 741f7a1e4..b1e5917b2 100644 --- a/gtsam/geometry/CalibratedCamera.h +++ b/gtsam/geometry/CalibratedCamera.h @@ -393,14 +393,8 @@ template <> struct traits : public internal::Manifold {}; // range traits, used in RangeFactor -template <> -struct Range : HasRange {}; - -template <> -struct Range : HasRange {}; - -template <> -struct Range : HasRange {}; +template +struct Range : HasRange {}; } // namespace gtsam diff --git a/gtsam/geometry/PinholeCamera.h b/gtsam/geometry/PinholeCamera.h index 31052bfa6..6177dec95 100644 --- a/gtsam/geometry/PinholeCamera.h +++ b/gtsam/geometry/PinholeCamera.h @@ -314,20 +314,7 @@ struct traits > : public internal::Manifold > {}; // range traits, used in RangeFactor -template -struct Range, Point3> - : HasRange, Point3> {}; - -template -struct Range, Pose3> - : HasRange, Pose3> {}; - -template -struct Range, PinholeCamera > - : HasRange, PinholeCamera > {}; - -template -struct Range, CalibratedCamera> - : HasRange, CalibratedCamera> {}; +template +struct Range, T> : HasRange, T, double> {}; } // \ gtsam diff --git a/gtsam/geometry/Pose2.h b/gtsam/geometry/Pose2.h index 0358bcf42..31dfb479f 100644 --- a/gtsam/geometry/Pose2.h +++ b/gtsam/geometry/Pose2.h @@ -298,17 +298,11 @@ template <> struct traits : public internal::LieGroup {}; // bearing and range traits, used in RangeFactor -template <> -struct Bearing : HasBearing {}; +template +struct Bearing : HasBearing {}; -template <> -struct Bearing : HasBearing {}; - -template <> -struct Range : HasRange {}; - -template <> -struct Range : HasRange {}; +template +struct Range : HasRange {}; } // namespace gtsam diff --git a/gtsam/geometry/Pose3.h b/gtsam/geometry/Pose3.h index 732a511c2..f82e25424 100644 --- a/gtsam/geometry/Pose3.h +++ b/gtsam/geometry/Pose3.h @@ -342,10 +342,7 @@ struct traits : public internal::LieGroup {}; template <> struct Bearing : HasBearing {}; -template <> -struct Range : HasRange {}; - -template <> -struct Range : HasRange {}; +template +struct Range : HasRange {}; } // namespace gtsam diff --git a/gtsam/geometry/SimpleCamera.h b/gtsam/geometry/SimpleCamera.h index 5d8d09ab8..fe493c075 100644 --- a/gtsam/geometry/SimpleCamera.h +++ b/gtsam/geometry/SimpleCamera.h @@ -137,17 +137,7 @@ template <> struct traits : public internal::Manifold {}; // range traits, used in RangeFactor -template <> -struct Range : HasRange {}; - -template <> -struct Range : HasRange {}; - -template <> -struct Range : HasRange {}; - -template -struct Range > - : HasRange > {}; +template +struct Range : HasRange {}; } // namespace gtsam diff --git a/gtsam/sam/tests/testRangeFactor.cpp b/gtsam/sam/tests/testRangeFactor.cpp index 4575f4bd1..706c20e78 100644 --- a/gtsam/sam/tests/testRangeFactor.cpp +++ b/gtsam/sam/tests/testRangeFactor.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -347,6 +348,14 @@ TEST(RangeFactor, Point3) { CHECK(assert_equal(expectedError, factor.evaluateError(pose, point), 1e-9)); } +/* ************************************************************************* */ +// Do tests with SimpleCamera +TEST( RangeFactor, Camera) { + RangeFactor factor1(poseKey, pointKey, measurement, model); + RangeFactor factor2(poseKey, pointKey, measurement, model); + RangeFactor factor3(poseKey, pointKey, measurement, model); +} + /* ************************************************************************* */ // Do a test with non GTSAM types