21 #include <boost/optional.hpp>
22 #include <boost/make_shared.hpp>
31 template<
class CALIBRATION = Cal3_S2>
79 if (model && model->dim() != 2)
80 throw std::invalid_argument(
81 "TriangulationFactor must be created with 2-dimensional noise model.");
89 virtual gtsam::NonlinearFactor::shared_ptr
clone()
const {
91 gtsam::NonlinearFactor::shared_ptr(
new This(*
this)));
100 DefaultKeyFormatter)
const {
101 std::cout << s <<
"TriangulationFactor,";
109 const This *e =
dynamic_cast<const This*
>(&p);
119 return error.vector();
124 std::cout << e.what() <<
": Landmark "
125 << DefaultKeyFormatter(this->key()) <<
" moved behind camera"
146 return boost::shared_ptr<JacobianFactor>();
150 std::vector<size_t> dimensions(1, 3);
160 this->noiseModel_->WhitenSystem(A, b);
165 return boost::make_shared<JacobianFactor>(this->
keys_,
Ab);
187 template<
class ARCHIVE>
188 void serialize(ARCHIVE & ar,
const unsigned int version) {
189 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(
Base);
190 ar & BOOST_SERIALIZATION_NVP(
camera_);
Non-linear factor base classes.
virtual bool equals(const NonlinearFactor &f, double tol=1e-9) const
Check if two factors are equal.
Definition: NonlinearFactor.h:239
void print(const std::string &s="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const
print
Definition: TriangulationFactor.h:99
PinholeCamera< CALIBRATION > Camera
Camera type.
Definition: TriangulationFactor.h:37
bool throwCheirality() const
return flag for throwing cheirality exceptions
Definition: TriangulationFactor.h:179
void print(const std::string &s="") const
print with optional string
Definition: Point2.cpp:33
DenseIndex rows() const
Row size.
Definition: VerticalBlockMatrix.h:111
Calibration & calibration()
return calibration
Definition: PinholeCamera.h:159
friend class boost::serialization::access
Serialization function.
Definition: TriangulationFactor.h:186
virtual bool equals(const NonlinearFactor &p, double tol=1e-9) const
equals
Definition: TriangulationFactor.h:108
TriangulationFactor< CALIBRATION > This
shorthand for this class
Definition: TriangulationFactor.h:55
bool equals(const Point2 &q, double tol=1e-9) const
equals with an tolerance, prints out message if unequal
Definition: Point2.cpp:38
FastVector< Key > keys_
The keys involved in this factor.
Definition: Factor.h:69
virtual ~TriangulationFactor()
Virtual destructor.
Definition: TriangulationFactor.h:85
Point2 project(const Point3 &pw, boost::optional< Matrix & > Dpose=boost::none, boost::optional< Matrix & > Dpoint=boost::none, boost::optional< Matrix & > Dcal=boost::none) const
project a point from world coordinate to the image
Definition: PinholeCamera.h:299
Vector evaluateError(const Point3 &point, boost::optional< Matrix & > H2=boost::none) const
Evaluate error h(x)-z and optionally derivatives.
Definition: TriangulationFactor.h:115
Definition: VerticalBlockMatrix.h:41
VerticalBlockMatrix Ab
thread-safe (?) scratch memory for linearize
Definition: TriangulationFactor.h:134
const bool verboseCheirality_
If true, prints text for Cheirality exceptions (default: false)
Definition: TriangulationFactor.h:47
Some functions to compute numerical derivatives.
NoiseModelFactor1< Point3 > Base
shorthand for base class type
Definition: TriangulationFactor.h:52
TriangulationFactor()
Default constructor.
Definition: TriangulationFactor.h:61
const Point2 & measured() const
return the measurement
Definition: TriangulationFactor.h:169
A non-templated config holding any types of Manifold-group elements.
Definition: Values.h:75
Definition: PinholeCamera.h:40
bool verboseCheirality() const
return verbosity
Definition: TriangulationFactor.h:174
const ValueType & at(Key j) const
Retrieve a variable by key j.
Definition: Values-inl.h:219
Definition: CalibratedCamera.h:27
const Point2 measured_
2D measurement
Definition: TriangulationFactor.h:43
const bool throwCheirality_
If true, rethrows Cheirality exceptions (default: false)
Definition: TriangulationFactor.h:46
boost::shared_ptr< This > shared_ptr
shorthand for a smart pointer to a factor
Definition: TriangulationFactor.h:58
size_t Key
Integer nonlinear key type.
Definition: types.h:59
Definition: TriangulationFactor.h:32
Matrix ones(size_t m, size_t n)
Creates an ones matrix, with matlab-like syntax.
Definition: Matrix.cpp:45
A convenient base class for creating your own NoiseModelFactor with 1 variable.
Definition: NonlinearFactor.h:354
virtual gtsam::NonlinearFactor::shared_ptr clone() const
Definition: TriangulationFactor.h:89
bool equals(const PinholeCamera &camera, double tol=1e-9) const
assert equality up to a tolerance
Definition: PinholeCamera.h:130
virtual double error(const Values &c) const
Calculate the error of the factor.
Definition: NonlinearFactor.h:281
virtual bool active(const Values &c) const
Checks whether a factor should be used based on a set of values.
Definition: NonlinearFactor.h:125
void print(const std::string &s="PinholeCamera") const
print
Definition: PinholeCamera.h:136
A simple camera class with a Cal3_S2 calibration.
TriangulationFactor(const Camera &camera, const Point2 &measured, const SharedNoiseModel &model, Key pointKey, bool throwCheirality=false, bool verboseCheirality=false)
Constructor with exception-handling flags.
Definition: TriangulationFactor.h:74
const Camera camera_
Camera in which this landmark was seen.
Definition: TriangulationFactor.h:42
virtual void print(const std::string &s="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const
Print.
Definition: NonlinearFactor.h:231
noiseModel::Base::shared_ptr SharedNoiseModel
Note, deliberately not in noiseModel namespace.
Definition: NoiseModel.h:884
Nonlinear factor base class.
Definition: NonlinearFactor.h:54
boost::shared_ptr< GaussianFactor > linearize(const Values &x) const
Linearize to a JacobianFactor, does not support constrained noise model ! Hence .
Definition: TriangulationFactor.h:143
Matrix zeros(size_t m, size_t n)
Creates an zeros matrix, with matlab-like syntax.
Definition: Matrix.cpp:40
boost::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: types.h:62