Added ExpressionFactorGraph (should go away with move of ExpressionFactor to gtsam)

release/4.3a0
dellaert 2014-12-12 08:00:02 +01:00
parent fa7071bdd8
commit 541217175c
2 changed files with 52 additions and 27 deletions

View File

@ -0,0 +1,51 @@
/* ----------------------------------------------------------------------------
* GTSAM Copyright 2010, Georgia Tech Research Corporation,
* Atlanta, Georgia 30332-0415
* All Rights Reserved
* Authors: Frank Dellaert, et al. (see THANKS for the full author list)
* See LICENSE for the license information
* -------------------------------------------------------------------------- */
/**
* @file ExpressionFactorGraph.h
* @brief Factor graph that supports adding ExpressionFactors directly
* @author Frank Dellaert
* @date December 2014
*/
#pragma once
#include <gtsam_unstable/nonlinear/ExpressionFactor.h>
#include <gtsam/nonlinear/NonlinearFactorGraph.h>
namespace gtsam {
/**
* Factor graph that supports adding ExpressionFactors directly
*/
class ExpressionFactorGraph: public NonlinearFactorGraph {
public:
/// @name Adding Factors
/// @{
/**
* Directly add ExpressionFactor that implements |h(x)-z|^2_R
* @param h expression that implements measurement function
* @param z measurement
* @param R model
*/
template<typename T>
void addExpressionFactor(const Expression<T>& h, const T& z,
const SharedNoiseModel& R) {
push_back(boost::make_shared<ExpressionFactor<T> >(R, z, h));
}
/// @}
};
}

View File

@ -17,10 +17,9 @@
* @date December 2014 * @date December 2014
*/ */
#include <gtsam_unstable/nonlinear/ExpressionFactorGraph.h>
#include <gtsam_unstable/geometry/Event.h> #include <gtsam_unstable/geometry/Event.h>
#include <gtsam_unstable/nonlinear/ExpressionFactor.h>
#include <gtsam/nonlinear/LevenbergMarquardtOptimizer.h> #include <gtsam/nonlinear/LevenbergMarquardtOptimizer.h>
#include <gtsam/nonlinear/NonlinearFactorGraph.h>
#include <gtsam/base/numericalDerivative.h> #include <gtsam/base/numericalDerivative.h>
#include <CppUnitLite/TestHarness.h> #include <CppUnitLite/TestHarness.h>
@ -50,31 +49,6 @@ static const double timeOfEvent = 25;
static const Event exampleEvent(timeOfEvent, 1, 0, 0); static const Event exampleEvent(timeOfEvent, 1, 0, 0);
static const Point3 microphoneAt0; static const Point3 microphoneAt0;
/**
* Factor graph that supports adding Expression Factors directly
*/
class ExpressionFactorGraph: public NonlinearFactorGraph {
public:
/// @name Adding Factors
/// @{
/**
* Directly add ExpressionFactor that implements |h(x)-z|^2_R
* @param h expression that implements measurement function
* @param z measurement
* @param R model
*/
template<typename T>
void addExpressionFactor(const Expression<T>& h, const T& z,
const SharedNoiseModel& R) {
push_back(boost::make_shared<ExpressionFactor<T> >(R, z, h));
}
/// @}
};
//***************************************************************************** //*****************************************************************************
TEST( TOAFactor, NewWay ) { TEST( TOAFactor, NewWay ) {
Key key = 12; Key key = 12;