24 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 25 #include <boost/serialization/nvp.hpp> 34 template <
typename A1,
typename A2>
40 template <
typename A1,
typename A2>
49 template <
typename A1,
typename A2,
60 enum { dimension = dimB + dimR };
66 BearingRange(
const B& b,
const R& r) : bearing_(b), range_(r) {}
73 const B&
bearing()
const {
return bearing_; }
76 const R&
range()
const {
return range_; }
80 const A1& a1,
const A2& a2,
83 typename MakeJacobian<B, A1>::type HB1;
84 typename MakeJacobian<B, A2>::type HB2;
85 typename MakeJacobian<R, A1>::type HR1;
86 typename MakeJacobian<R, A2>::type HR2;
91 if (H1) *H1 << HB1, HR1;
92 if (H2) *H2 << HB2, HR2;
110 void print(
const std::string& str =
"")
const {
124 inline static size_t Dim() {
return dimension; }
125 inline size_t dim()
const {
return dimension; }
127 typedef Eigen::Matrix<double, dimension, 1> TangentVector;
151 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 152 template <
class ARCHIVE>
154 void serialize(ARCHIVE& ar,
const unsigned int ) {
155 ar& boost::serialization::make_nvp(
"bearing", bearing_);
156 ar& boost::serialization::make_nvp(
"range", range_);
159 friend class boost::serialization::access;
166 NeedsToAlign = (
sizeof(B) % 16) == 0 || (
sizeof(R) % 16) == 0
173 template <
typename A1,
typename A2>
182 template <
class A1,
typename A2,
class RT>
184 typedef RT result_type;
186 const A1& a1,
const A2& a2,
189 return a1.bearing(a2, H1, H2);
196 template <
class A1,
typename A2,
class RT>
198 typedef RT result_type;
200 const A1& a1,
const A2& a2,
203 return a1.range(a2, H1, H2);
Definition: BearingRange.h:52
static B MeasureBearing(const A1 &a1, const A2 &a2)
Predict bearing.
Definition: BearingRange.h:97
Concept check for values that can be used in unit tests.
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
Definition: BearingRange.h:197
Definition: Testable.h:152
static BearingRange Measure(const A1 &a1, const A2 &a2, OptionalJacobian< dimension, traits< A1 >::dimension > H1={}, OptionalJacobian< dimension, traits< A2 >::dimension > H2={})
Prediction function that stacks measurements.
Definition: BearingRange.h:79
Definition: BearingRange.h:183
#define GTSAM_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
Definition: types.h:293
TangentVector localCoordinates(const BearingRange &other) const
Compute the coordinates in the tangent space.
Definition: BearingRange.h:138
Definition: Testable.h:112
Base class and basic functions for Manifold types.
Definition: BearingRange.h:35
BearingRange retract(const TangentVector &xi) const
Retract delta to manifold.
Definition: BearingRange.h:131
Definition: BearingRange.h:41
Definition: chartTesting.h:28
Definition: OptionalJacobian.h:38
Definition: Manifold.h:92
const R & range() const
Return range measurement.
Definition: BearingRange.h:76
Special class for optional Jacobian arguments.
static R MeasureRange(const A1 &a1, const A2 &a2)
Predict range.
Definition: BearingRange.h:102
const B & bearing() const
Return bearing measurement.
Definition: BearingRange.h:73