61 typedef typename std::shared_ptr<GaussMarkov1stOrderFactor> shared_ptr;
68 const SharedGaussian& model) :
69 Base(calcDiscreteNoiseModel(model, delta_t), key1, key2), dt_(delta_t), tau_(tau) {
77 void print(
const std::string& s,
const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const override {
78 std::cout << s <<
"GaussMarkov1stOrderFactor(" 79 << keyFormatter(this->key1()) <<
"," 80 << keyFormatter(this->key2()) <<
")\n";
81 this->noiseModel_->print(
" noise model");
86 const This *e =
dynamic_cast<const This*
> (&expected);
99 Vector alpha(tau_.size());
100 Vector alpha_v1(tau_.size());
101 for(
int i=0; i<tau_.size(); i++){
102 alpha(i) = exp(- 1/tau_(i)*dt_ );
103 alpha_v1(i) = alpha(i) * v1(i);
106 Vector hx(v2 - alpha_v1);
108 if(H1) *H1 = -1 * alpha.asDiagonal();
109 if(H2) *H2 = Matrix::Identity(v2.size(),v2.size());
116 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 118 friend class boost::serialization::access;
119 template<
class ARCHIVE>
120 void serialize(ARCHIVE & ar,
const unsigned int ) {
121 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
122 ar & BOOST_SERIALIZATION_NVP(dt_);
123 ar & BOOST_SERIALIZATION_NVP(tau_);
127 SharedGaussian calcDiscreteNoiseModel(
const SharedGaussian& model,
double delta_t){
132 noiseModel::Gaussian::shared_ptr gaussian_model = std::dynamic_pointer_cast<
noiseModel::Gaussian>(model);
141 public Testable<GaussMarkov1stOrderFactor<VALUE> > {
Definition: NonlinearFactor.h:431
bool equals(const NonlinearFactor &f, double tol=1e-9) const override
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: Testable.h:152
virtual Vector evaluateError(const ValueTypes &... x, OptionalMatrixTypeT< ValueTypes >... H) const=0
A factor with a quadratic error function - a Gaussian.
Definition: NonlinearFactor.h:68
void print(const std::string &s, const KeyFormatter &keyFormatter=DefaultKeyFormatter) const override
Definition: GaussMarkov1stOrderFactor.h:77
Matrix * OptionalMatrixType
Definition: NonlinearFactor.h:55
Definition: NoiseModel.h:168
static shared_ptr SqrtInformation(const Matrix &R, bool smart=true)
bool equals(const NonlinearFactor &expected, double tol=1e-9) const override
Definition: GaussMarkov1stOrderFactor.h:85
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
Base class and basic functions for Lie types.
Definition: GaussMarkov1stOrderFactor.h:45
Definition: chartTesting.h:28
Non-linear factor base classes.
GaussMarkov1stOrderFactor(const Key &key1, const Key &key2, double delta_t, Vector tau, const SharedGaussian &model)
Definition: GaussMarkov1stOrderFactor.h:67
Vector evaluateError(const VALUE &p1, const VALUE &p2, OptionalMatrixType H1, OptionalMatrixType H2) const override
Definition: GaussMarkov1stOrderFactor.h:93
GaussMarkov1stOrderFactor()
Definition: GaussMarkov1stOrderFactor.h:64
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102