gtsam
4.0.0
gtsam
|
A factor graph is a bipartite graph with factor nodes connected to variable nodes.
In this class, however, only factor nodes are kept around.
Standard Constructors | |
FactorGraph () | |
Default constructor. | |
template<typename ITERATOR > | |
FactorGraph (ITERATOR firstFactor, ITERATOR lastFactor) | |
Constructor from iterator over factors (shared_ptr or plain objects) | |
template<class CONTAINER > | |
FactorGraph (const CONTAINER &factors) | |
Construct from container of factors (shared_ptr or plain objects) | |
Adding Factors | |||
| |||
void | reserve (size_t size) | ||
Reserve space for the specified number of factors if you know in advance how many there will be (works like FastVector::reserve). | |||
template<class DERIVEDFACTOR > | |||
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | push_back (boost::shared_ptr< DERIVEDFACTOR > factor) | ||
Add a factor directly using a shared_ptr. | |||
void | push_back (const sharedFactor &factor) | ||
Add a factor directly using a shared_ptr. | |||
template<class DERIVEDFACTOR , class... Args> | |||
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | emplace_shared (Args &&... args) | ||
Emplace a factor. | |||
template<typename ITERATOR > | |||
std::enable_if< std::is_base_of< FactorType, typename ITERATOR::value_type::element_type >::value >::type | push_back (ITERATOR firstFactor, ITERATOR lastFactor) | ||
push back many factors with an iterator over shared_ptr (factors are not copied) | |||
template<typename CONTAINER > | |||
std::enable_if< std::is_base_of< FactorType, typename CONTAINER::value_type::element_type >::value >::type | push_back (const CONTAINER &container) | ||
push back many factors as shared_ptr's in a container (factors are not copied) | |||
template<class CLIQUE > | |||
std::enable_if< std::is_base_of< This, typename CLIQUE::FactorGraphType >::value >::type | push_back (const BayesTree< CLIQUE > &bayesTree) | ||
push back a BayesTree as a collection of factors. More... | |||
template<class DERIVEDFACTOR > | |||
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | push_back (const DERIVEDFACTOR &factor) | ||
Add a factor by value, will be copy-constructed (use push_back with a shared_ptr to avoid the copy). More... | |||
template<typename ITERATOR > | |||
std::enable_if< std::is_base_of< FactorType, typename ITERATOR::value_type >::value >::type | push_back (ITERATOR firstFactor, ITERATOR lastFactor) | ||
push back many factors with an iterator over plain factors (factors are copied) | |||
template<typename CONTAINER > | |||
std::enable_if< std::is_base_of< FactorType, typename CONTAINER::value_type >::value >::type | push_back (const CONTAINER &container) | ||
push back many factors as non-pointer objects in a container (factors are copied) | |||
template<class DERIVEDFACTOR > | |||
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value, boost::assign::list_inserter< RefCallPushBack< This > > >::type | operator+= (boost::shared_ptr< DERIVEDFACTOR > factor) | ||
Add a factor directly using a shared_ptr. | |||
boost::assign::list_inserter< CRefCallPushBack< This > > | operator+= (const sharedFactor &factor) | ||
Add a factor directly using a shared_ptr. | |||
template<class FACTOR_OR_CONTAINER > | |||
boost::assign::list_inserter< CRefCallPushBack< This > > | operator+= (const FACTOR_OR_CONTAINER &factorOrContainer) | ||
Add a factor or container of factors, including STL collections, BayesTrees, etc. More... | |||
template<class DERIVEDFACTOR > | |||
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | add (boost::shared_ptr< DERIVEDFACTOR > factor) | ||
Add a factor directly using a shared_ptr. | |||
void | add (const sharedFactor &factor) | ||
Add a factor directly using a shared_ptr. | |||
template<class FACTOR_OR_CONTAINER > | |||
void | add (const FACTOR_OR_CONTAINER &factorOrContainer) | ||
Add a factor or container of factors, including STL collections, BayesTrees, etc. More... | |||
Testable | |
void | print (const std::string &s="FactorGraph", const KeyFormatter &formatter=DefaultKeyFormatter) const |
print out graph | |
bool | equals (const This &fg, double tol=1e-9) const |
Check equality. More... | |
Standard Interface | |
size_t | size () const |
return the number of factors (including any null factors set by remove() ). More... | |
bool | empty () const |
Check if the graph is empty (null factors set by remove() will cause this to return false). More... | |
const sharedFactor | at (size_t i) const |
Get a specific factor by index (this checks array bounds and may throw an exception, as opposed to operator[] which does not). | |
sharedFactor & | at (size_t i) |
Get a specific factor by index (this checks array bounds and may throw an exception, as opposed to operator[] which does not). | |
const sharedFactor | operator[] (size_t i) const |
Get a specific factor by index (this does not check array bounds, as opposed to at() which does). | |
sharedFactor & | operator[] (size_t i) |
Get a specific factor by index (this does not check array bounds, as opposed to at() which does). | |
const_iterator | begin () const |
Iterator to beginning of factors. More... | |
const_iterator | end () const |
Iterator to end of factors. More... | |
sharedFactor | front () const |
Get the first factor. | |
sharedFactor | back () const |
Get the last factor. | |
Modifying Factor Graphs (imperative, discouraged) | |
iterator | begin () |
non-const STL-style begin() | |
iterator | end () |
non-const STL-style end() | |
void | resize (size_t size) |
Directly resize the number of factors in the graph. More... | |
void | remove (size_t i) |
delete factor without re-arranging indexes by inserting a NULL pointer | |
void | replace (size_t index, sharedFactor factor) |
replace a factor by index | |
iterator | erase (iterator item) |
Erase factor and rearrange other factors to take up the empty space. | |
iterator | erase (iterator first, iterator last) |
Erase factors and rearrange other factors to take up the empty space. | |
Advanced Interface | |
class | boost::serialization::access |
Serialization function. | |
size_t | nrFactors () const |
return the number of non-null factors | |
KeySet | keys () const |
Potentially slow function to return all keys involved, sorted, as a set. | |
KeyVector | keyVector () const |
Potentially slow function to return all keys involved, sorted, as a vector. | |
bool | exists (size_t idx) const |
MATLAB interface utility: Checks whether a factor index idx exists in the graph and is a live pointer. | |
Public Types | |
typedef FACTOR | FactorType |
factor type | |
typedef boost::shared_ptr< FACTOR > | sharedFactor |
Shared pointer to a factor. | |
typedef sharedFactor | value_type |
typedef FastVector< sharedFactor >::iterator | iterator |
typedef FastVector< sharedFactor >::const_iterator | const_iterator |
Protected Attributes | |
FastVector< sharedFactor > | factors_ |
concept check, makes sure FACTOR defines print and equals More... | |
|
inline |
Add a factor or container of factors, including STL collections, BayesTrees, etc.
|
inline |
Iterator to beginning of factors.
|
inline |
Check if the graph is empty (null factors set by remove() will cause this to return false).
|
inline |
Iterator to end of factors.
bool gtsam::FactorGraph< FACTOR >::equals | ( | const This & | fg, |
double | tol = 1e-9 |
||
) | const |
Check equality.
check whether the two factor graphs have the same number of factors_
check whether the factors_ are the same
|
inline |
Add a factor or container of factors, including STL collections, BayesTrees, etc.
|
inline |
push back a BayesTree as a collection of factors.
NOTE: This should be hidden in derived classes in favor of a type-specialized version that calls this templated function.
|
inline |
Add a factor by value, will be copy-constructed (use push_back with a shared_ptr to avoid the copy).
|
inline |
Directly resize the number of factors in the graph.
If the new size is less than the original, factors at the end will be removed. If the new size is larger than the original, null factors will be appended.
|
inline |
return the number of factors (including any null factors set by remove() ).
|
protected |
concept check, makes sure FACTOR defines print and equals
Collection of factors