GTSAM  4.0.2
C++ library for smoothing and mapping (SAM)
OrientedPlane3Factor.h
1 /*
2  * @file OrientedPlane3Factor.cpp
3  * @brief OrientedPlane3 Factor class
4  * @author Alex Trevor
5  * @date December 22, 2013
6  */
7 
8 #pragma once
9 
10 #include <gtsam/geometry/OrientedPlane3.h>
12 
13 namespace gtsam {
14 
18 class GTSAM_EXPORT OrientedPlane3Factor: public NoiseModelFactorN<Pose3, OrientedPlane3> {
19  protected:
20  OrientedPlane3 measured_p_;
22 
23  public:
24 
25  // Provide access to the Matrix& version of evaluateError:
26  using NoiseModelFactor2<Pose3, OrientedPlane3>::evaluateError;
27 
30  }
31  ~OrientedPlane3Factor() override {}
32 
40  OrientedPlane3Factor(const Vector4& z, const SharedGaussian& noiseModel,
41  Key poseKey, Key landmarkKey)
42  : Base(noiseModel, poseKey, landmarkKey), measured_p_(z) {}
43 
45  void print(const std::string& s = "OrientedPlane3Factor",
46  const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override;
47 
49  Vector evaluateError(
50  const Pose3& pose, const OrientedPlane3& plane,
51  OptionalMatrixType H1, OptionalMatrixType H2) const override;
52 };
53 
54 // TODO: Convert this factor to dimension two, three dimensions is redundant for direction prior
55 class GTSAM_EXPORT OrientedPlane3DirectionPrior : public NoiseModelFactorN<OrientedPlane3> {
56  protected:
57  OrientedPlane3 measured_p_;
59 
60  public:
61 
62  // Provide access to the Matrix& version of evaluateError:
63  using Base::evaluateError;
64 
68  }
69 
71  OrientedPlane3DirectionPrior(Key key, const Vector4& z,
72  const SharedGaussian& noiseModel)
73  : Base(noiseModel, key), measured_p_(z) {}
74 
76  void print(const std::string& s = "OrientedPlane3DirectionPrior",
77  const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override;
78 
80  bool equals(const NonlinearFactor& expected, double tol = 1e-9) const override;
81 
82  Vector evaluateError(const OrientedPlane3& plane, OptionalMatrixType H) const override;
83 };
84 
85 } // gtsam
86 
OrientedPlane3Factor(const Vector4 &z, const SharedGaussian &noiseModel, Key poseKey, Key landmarkKey)
Definition: OrientedPlane3Factor.h:40
OrientedPlane3DirectionPrior(Key key, const Vector4 &z, const SharedGaussian &noiseModel)
Constructor with measured plane coefficients (a,b,c,d), noise model, landmark symbol.
Definition: OrientedPlane3Factor.h:71
Definition: NonlinearFactor.h:431
Definition: Factor.h:69
Definition: NonlinearFactor.h:68
Represents an infinite plane in 3D, which is composed of a planar normal and its perpendicular distan...
Definition: OrientedPlane3.h:36
Definition: Testable.h:112
Definition: OrientedPlane3Factor.h:18
Matrix * OptionalMatrixType
Definition: NonlinearFactor.h:55
GTSAM_EXPORT void print(const Matrix &A, const std::string &s, std::ostream &stream)
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:35
Definition: chartTesting.h:28
NoiseModelFactorN< OrientedPlane3 > Base
measured plane parameters
Definition: OrientedPlane3Factor.h:58
Non-linear factor base classes.
Definition: OrientedPlane3Factor.h:55
Definition: Pose3.h:37
OrientedPlane3Factor()
Constructor.
Definition: OrientedPlane3Factor.h:29
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
OrientedPlane3DirectionPrior()
Constructor.
Definition: OrientedPlane3Factor.h:67