gtsam
Loading...
Searching...
No Matches
BasisFactors.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
18
19#pragma once
20
21#include <gtsam/basis/Basis.h>
23
24namespace gtsam {
25
38template <class BASIS>
39class EvaluationFactor : public FunctorizedFactor<double, Vector> {
40 private:
42
43 public:
44 EvaluationFactor() {}
45
55 EvaluationFactor(Key key, double z, const SharedNoiseModel &model,
56 const size_t N, double x)
57 : Base(key, z, model, typename BASIS::EvaluationFunctor(N, x)) {}
58
70 EvaluationFactor(Key key, double z, const SharedNoiseModel &model,
71 const size_t N, double x, double a, double b)
72 : Base(key, z, model, typename BASIS::EvaluationFunctor(N, x, a, b)) {}
73
74 virtual ~EvaluationFactor() {}
75};
76
93template <class BASIS>
94class VectorEvaluationFactor : public FunctorizedFactor<Vector, Matrix> {
95 private:
97
98 public:
99 VectorEvaluationFactor() {}
100
113 const SharedNoiseModel &model, const size_t M,
114 const size_t N, double x)
115 : Base(key, z, model, typename BASIS::VectorEvaluationFunctor(M, N, x)) {}
116
131 const SharedNoiseModel &model, const size_t M,
132 const size_t N, double x, double a, double b)
133 : Base(key, z, model,
134 typename BASIS::VectorEvaluationFunctor(M, N, x, a, b)) {}
135
136 virtual ~VectorEvaluationFactor() {}
137};
138
157template <class BASIS>
158class VectorComponentFactor : public FunctorizedFactor<double, Matrix> {
159 private:
161
162 public:
163 VectorComponentFactor() {}
164
179 VectorComponentFactor(Key key, const double &z, const SharedNoiseModel &model,
180 const size_t P, const size_t N, size_t i, double x)
181 : Base(key, z, model,
182 typename BASIS::VectorComponentFunctor(P, N, i, x)) {}
183
200 VectorComponentFactor(Key key, const double &z, const SharedNoiseModel &model,
201 const size_t P, const size_t N, size_t i, double x,
202 double a, double b)
203 : Base(key, z, model,
204 typename BASIS::VectorComponentFunctor(P, N, i, x, a, b)) {}
205
206 virtual ~VectorComponentFactor() {}
207};
208
226template <class BASIS, typename T>
227class ManifoldEvaluationFactor : public FunctorizedFactor<T, Matrix> {
228 private:
229 using Base = FunctorizedFactor<T, Matrix>;
230
231 public:
232 ManifoldEvaluationFactor() {}
233
245 const size_t N, double x)
246 : Base(key, z, model,
247 typename BASIS::template ManifoldEvaluationFunctor<T>(N, x)) {}
248
262 const size_t N, double x, double a, double b)
263 : Base(
264 key, z, model,
265 typename BASIS::template ManifoldEvaluationFunctor<T>(N, x, a, b)) {
266 }
267
268 virtual ~ManifoldEvaluationFactor() {}
269};
270
277template <class BASIS>
278class DerivativeFactor
279 : public FunctorizedFactor<double, typename BASIS::Parameters> {
280 private:
282
283 public:
284 DerivativeFactor() {}
285
296 DerivativeFactor(Key key, const double &z, const SharedNoiseModel &model,
297 const size_t N, double x)
298 : Base(key, z, model, typename BASIS::DerivativeFunctor(N, x)) {}
299
312 DerivativeFactor(Key key, const double &z, const SharedNoiseModel &model,
313 const size_t N, double x, double a, double b)
314 : Base(key, z, model, typename BASIS::DerivativeFunctor(N, x, a, b)) {}
315
316 virtual ~DerivativeFactor() {}
317};
318
325template <class BASIS>
326class VectorDerivativeFactor : public FunctorizedFactor<Vector, Matrix> {
327 private:
329 using Func = typename BASIS::VectorDerivativeFunctor;
330
331 public:
332 VectorDerivativeFactor() {}
333
346 const SharedNoiseModel &model, const size_t M,
347 const size_t N, double x)
348 : Base(key, z, model, Func(M, N, x)) {}
349
364 const SharedNoiseModel &model, const size_t M,
365 const size_t N, double x, double a, double b)
366 : Base(key, z, model, Func(M, N, x, a, b)) {}
367
368 virtual ~VectorDerivativeFactor() {}
369};
370
378template <class BASIS>
379class ComponentDerivativeFactor : public FunctorizedFactor<double, Matrix> {
380 private:
382 using Func = typename BASIS::ComponentDerivativeFunctor;
383
384 public:
385 ComponentDerivativeFactor() {}
386
402 const SharedNoiseModel &model, const size_t P,
403 const size_t N, size_t i, double x)
404 : Base(key, z, model, Func(P, N, i, x)) {}
405
423 const SharedNoiseModel &model, const size_t P,
424 const size_t N, size_t i, double x, double a,
425 double b)
426 : Base(key, z, model, Func(P, N, i, x, a, b)) {}
427
428 virtual ~ComponentDerivativeFactor() {}
429};
430
431} // namespace gtsam
Compute an interpolating basis.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
noiseModel::Base::shared_ptr SharedNoiseModel
Aliases.
Definition NoiseModel.h:846
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:43
Factor for enforcing the scalar value of the polynomial BASIS representation at x is the same as the ...
Definition BasisFactors.h:39
EvaluationFactor(Key key, double z, const SharedNoiseModel &model, const size_t N, double x)
Construct a new EvaluationFactor object.
Definition BasisFactors.h:55
EvaluationFactor(Key key, double z, const SharedNoiseModel &model, const size_t N, double x, double a, double b)
Construct a new EvaluationFactor object.
Definition BasisFactors.h:70
Unary factor for enforcing BASIS polynomial evaluation on a parameter Matrix of size (M,...
Definition BasisFactors.h:94
VectorEvaluationFactor(Key key, const Vector &z, const SharedNoiseModel &model, const size_t M, const size_t N, double x, double a, double b)
Construct a new VectorEvaluationFactor object.
Definition BasisFactors.h:130
VectorEvaluationFactor(Key key, const Vector &z, const SharedNoiseModel &model, const size_t M, const size_t N, double x)
Construct a new VectorEvaluationFactor object.
Definition BasisFactors.h:112
Unary factor for enforcing BASIS polynomial evaluation on a parameter Matrix of size (P,...
Definition BasisFactors.h:158
VectorComponentFactor(Key key, const double &z, const SharedNoiseModel &model, const size_t P, const size_t N, size_t i, double x, double a, double b)
Construct a new VectorComponentFactor object.
Definition BasisFactors.h:200
VectorComponentFactor(Key key, const double &z, const SharedNoiseModel &model, const size_t P, const size_t N, size_t i, double x)
Construct a new VectorComponentFactor object.
Definition BasisFactors.h:179
For a measurement value of type T i.e.
Definition BasisFactors.h:227
ManifoldEvaluationFactor(Key key, const T &z, const SharedNoiseModel &model, const size_t N, double x, double a, double b)
Construct a new ManifoldEvaluationFactor object.
Definition BasisFactors.h:261
ManifoldEvaluationFactor(Key key, const T &z, const SharedNoiseModel &model, const size_t N, double x)
Construct a new ManifoldEvaluationFactor object.
Definition BasisFactors.h:244
A unary factor which enforces the evaluation of the derivative of a BASIS polynomial at a specified p...
Definition BasisFactors.h:279
DerivativeFactor(Key key, const double &z, const SharedNoiseModel &model, const size_t N, double x, double a, double b)
Construct a new DerivativeFactor object.
Definition BasisFactors.h:312
DerivativeFactor(Key key, const double &z, const SharedNoiseModel &model, const size_t N, double x)
Construct a new DerivativeFactor object.
Definition BasisFactors.h:296
A unary factor which enforces the evaluation of the derivative of a BASIS polynomial at a specified p...
Definition BasisFactors.h:326
VectorDerivativeFactor(Key key, const Vector &z, const SharedNoiseModel &model, const size_t M, const size_t N, double x, double a, double b)
Construct a new VectorDerivativeFactor object.
Definition BasisFactors.h:363
VectorDerivativeFactor(Key key, const Vector &z, const SharedNoiseModel &model, const size_t M, const size_t N, double x)
Construct a new VectorDerivativeFactor object.
Definition BasisFactors.h:345
A unary factor which enforces the evaluation of the derivative of a BASIS polynomial is equal to the ...
Definition BasisFactors.h:379
ComponentDerivativeFactor(Key key, const double &z, const SharedNoiseModel &model, const size_t P, const size_t N, size_t i, double x, double a, double b)
Construct a new ComponentDerivativeFactor object.
Definition BasisFactors.h:422
ComponentDerivativeFactor(Key key, const double &z, const SharedNoiseModel &model, const size_t P, const size_t N, size_t i, double x)
Construct a new ComponentDerivativeFactor object.
Definition BasisFactors.h:401
FunctorizedFactor()
Definition FunctorizedFactor.h:75
static constexpr auto N
Definition NoiseModelFactorN.h:158
Key key() const
Definition NoiseModelFactorN.h:307