55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
| /**
 | |
|  * @file    NonlinearFactorGraph-inl.h
 | |
|  * @brief   Factor Graph Consisting of non-linear factors
 | |
|  * @author  Frank Dellaert
 | |
|  * @author  Carlos Nieto
 | |
|  * @author  Christian Potthast
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "LinearFactorGraph.h"
 | |
| #include "NonlinearFactorGraph.h"
 | |
| 
 | |
| namespace gtsam {
 | |
| 
 | |
| 	/* ************************************************************************* */
 | |
| 	template<class Config>
 | |
| 	double NonlinearFactorGraph<Config>::error(const Config& c) const {
 | |
| 		double total_error = 0.;
 | |
| 		// iterate over all the factors_ to accumulate the log probabilities
 | |
| 		typedef typename FactorGraph<NonlinearFactor<Config> >::const_iterator
 | |
| 				const_iterator;
 | |
| 		for (const_iterator factor = this->factors_.begin(); factor
 | |
| 				!= this->factors_.end(); factor++)
 | |
| 			total_error += (*factor)->error(c);
 | |
| 
 | |
| 		return total_error;
 | |
| 	}
 | |
| 	/* ************************************************************************* */
 | |
| 	template<class Config>
 | |
| 	LinearFactorGraph NonlinearFactorGraph<Config>::linearize(
 | |
| 			const Config& config) const {
 | |
| 		// TODO speed up the function either by returning a pointer or by
 | |
| 		// returning the linearisation as a second argument and returning
 | |
| 		// the reference
 | |
| 
 | |
| 		// create an empty linear FG
 | |
| 		LinearFactorGraph linearFG;
 | |
| 
 | |
| 		typedef typename FactorGraph<NonlinearFactor<Config> >::const_iterator
 | |
| 				const_iterator;
 | |
| 		// linearize all factors
 | |
| 		for (const_iterator factor = this->factors_.begin(); factor
 | |
| 				< this->factors_.end(); factor++) {
 | |
| 			boost::shared_ptr<LinearFactor> lf = (*factor)->linearize(config);
 | |
| 			linearFG.push_back(lf);
 | |
| 		}
 | |
| 
 | |
| 		return linearFG;
 | |
| 	}
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| 
 | |
| }
 |