gtsam 4.1.1
gtsam
GaussianConditional.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// \callgraph
19
20#pragma once
21
22#include <boost/utility.hpp>
23
28
29namespace gtsam {
30
36 class GTSAM_EXPORT GaussianConditional :
37 public JacobianFactor,
38 public Conditional<JacobianFactor, GaussianConditional>
39 {
40 public:
42 typedef boost::shared_ptr<This> shared_ptr;
45
48
50 GaussianConditional(Key key, const Vector& d, const Matrix& R,
51 const SharedDiagonal& sigmas = SharedDiagonal());
52
54 GaussianConditional(Key key, const Vector& d, const Matrix& R,
55 Key name1, const Matrix& S, const SharedDiagonal& sigmas = SharedDiagonal());
56
58 GaussianConditional(Key key, const Vector& d, const Matrix& R,
59 Key name1, const Matrix& S, Key name2, const Matrix& T,
60 const SharedDiagonal& sigmas = SharedDiagonal());
61
65 template<typename TERMS>
66 GaussianConditional(const TERMS& terms,
67 size_t nrFrontals, const Vector& d,
68 const SharedDiagonal& sigmas = SharedDiagonal());
69
74 template<typename KEYS>
76 const KEYS& keys, size_t nrFrontals, const VerticalBlockMatrix& augmentedMatrix,
77 const SharedDiagonal& sigmas = SharedDiagonal());
78
86 template<typename ITERATOR>
87 static shared_ptr Combine(ITERATOR firstConditional, ITERATOR lastConditional);
88
90 void print(const std::string& = "GaussianConditional",
91 const KeyFormatter& formatter = DefaultKeyFormatter) const override;
92
94 bool equals(const GaussianFactor&cg, double tol = 1e-9) const override;
95
97 constABlock R() const { return Ab_.range(0, nrFrontals()); }
98
100 constABlock S() const { return Ab_.range(nrFrontals(), size()); }
101
103 constABlock S(const_iterator it) const { return BaseFactor::getA(it); }
104
106 const constBVector d() const { return BaseFactor::getb(); }
107
121 VectorValues solve(const VectorValues& parents) const;
122
123 VectorValues solveOtherRHS(const VectorValues& parents, const VectorValues& rhs) const;
124
126 void solveTransposeInPlace(VectorValues& gy) const;
127
130 void scaleFrontalsBySigma(VectorValues& gy) const;
131
132 // FIXME: deprecated flag doesn't appear to exist?
133 // __declspec(deprecated) void scaleFrontalsBySigma(VectorValues& gy) const;
134
135 private:
137 friend class boost::serialization::access;
138 template<class Archive>
139 void serialize(Archive & ar, const unsigned int /*version*/) {
140 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseFactor);
141 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseConditional);
142 }
143 }; // GaussianConditional
144
146template<>
147struct traits<GaussianConditional> : public Testable<GaussianConditional> {};
148
149} // \ namespace gtsam
150
152
Base class for conditional densities.
Conditional Gaussian Base class.
Factor Graph Values.
Included from all GTSAM files.
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:112
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:155
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:69
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
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
Template to create a binary predicate.
Definition: Testable.h:111
A helper that implements the traits interface for GTSAM types.
Definition: Testable.h:151
Definition: VerticalBlockMatrix.h:42
TODO: Update comments.
Definition: Conditional.h:41
KeyVector::const_iterator const_iterator
Const iterator over keys.
Definition: Factor.h:68
A conditional Gaussian functions as the node in a Bayes network It has a set of parents y,...
Definition: GaussianConditional.h:39
GaussianConditional This
Typedef to this class.
Definition: GaussianConditional.h:41
constABlock S(const_iterator it) const
Get a view of the S matrix for the variable pointed to by the given key iterator.
Definition: GaussianConditional.h:103
constABlock R() const
Return a view of the upper-triangular R block of the conditional.
Definition: GaussianConditional.h:97
JacobianFactor BaseFactor
Typedef to our factor base class.
Definition: GaussianConditional.h:43
GaussianConditional()
default constructor needed for serialization
Definition: GaussianConditional.h:47
Conditional< BaseFactor, This > BaseConditional
Typedef to our conditional base class.
Definition: GaussianConditional.h:44
static shared_ptr Combine(ITERATOR firstConditional, ITERATOR lastConditional)
Combine several GaussianConditional into a single dense GC.
constABlock S() const
Get a view of the parent blocks.
Definition: GaussianConditional.h:100
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianConditional.h:42
const constBVector d() const
Get a view of the r.h.s.
Definition: GaussianConditional.h:106
An abstract virtual base class for JacobianFactor and HessianFactor.
Definition: GaussianFactor.h:39
A Gaussian factor in the squared-error form.
Definition: JacobianFactor.h:91
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:74