Added wrapping for NonlinearFactor to allow for access to keys from an individual key

release/4.3a0
Alex Cunningham 2012-06-14 16:03:57 +00:00
parent b2debfbc3a
commit cbc5ee6c18
2 changed files with 27 additions and 3 deletions

24
gtsam.h
View File

@ -662,6 +662,15 @@ class NonlinearFactorGraph {
void print(string s) const;
};
class NonlinearFactor {
// NonlinearFactor(); // FIXME: don't use this - creates an abstract class
void print(string s) const;
void equals(const gtsam::NonlinearFactor& other, double tol) const;
gtsam::KeyVector keys() const;
size_t size() const;
size_t dim() const;
};
class Values {
Values();
size_t size() const;
@ -730,6 +739,7 @@ class Graph {
bool empty() const;
void remove(size_t i);
size_t nrFactors() const;
gtsam::NonlinearFactor* at(size_t i) const;
// NonlinearFactorGraph
double error(const pose2SLAM::Values& values) const;
@ -780,6 +790,7 @@ class Graph {
bool empty() const;
void remove(size_t i);
size_t nrFactors() const;
gtsam::NonlinearFactor* at(size_t i) const;
// NonlinearFactorGraph
double error(const pose3SLAM::Values& values) const;
@ -827,6 +838,7 @@ class Graph {
bool empty() const;
void remove(size_t i);
size_t nrFactors() const;
gtsam::NonlinearFactor* at(size_t i) const;
// NonlinearFactorGraph
double error(const planarSLAM::Values& values) const;
@ -860,6 +872,9 @@ class Odometry {
// Simulated2D
//*************************************************************************
// FIXME: Simulated* domains are not actually installed, so this should be removed
// from the toolbox
#include <tests/simulated2D.h>
namespace simulated2D {
@ -935,7 +950,14 @@ class Values {
class Graph {
Graph();
void print(string s) const;
// FactorGraph
void print(string s) const;
bool equals(const visualSLAM::Graph& fg, double tol) const;
size_t size() const;
bool empty() const;
void remove(size_t i);
size_t nrFactors() const;
gtsam::NonlinearFactor* at(size_t i) const;
double error(const visualSLAM::Values& values) const;
gtsam::Ordering* orderingCOLAMD(const visualSLAM::Values& values) const;

View File

@ -157,8 +157,10 @@ template<class CONDITIONAL, class CLIQUE> class BayesTree;
operator const std::vector<sharedFactor>&() const { return factors_; }
/** Get a specific factor by index */
const sharedFactor operator[](size_t i) const { assert(i<factors_.size()); return factors_[i]; }
sharedFactor& operator[](size_t i) { assert(i<factors_.size()); return factors_[i]; }
const sharedFactor at(size_t i) const { assert(i<factors_.size()); return factors_[i]; }
sharedFactor& at(size_t i) { assert(i<factors_.size()); return factors_[i]; }
const sharedFactor operator[](size_t i) const { return at(i); }
sharedFactor& operator[](size_t i) { return at(i); }
/** STL begin, so we can use BOOST_FOREACH */
const_iterator begin() const { return factors_.begin();}