46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
|  | /*
 | ||
|  |  * SharedDiagonal.h | ||
|  |  * @brief Class that wraps a shared noise model with diagonal covariance | ||
|  |  * @Author: Frank Dellaert | ||
|  |  * Created on: Jan 22, 2010 | ||
|  |  */ | ||
|  | 
 | ||
|  | #pragma once
 | ||
|  | 
 | ||
|  | #include "NoiseModel.h"
 | ||
|  | 
 | ||
|  | namespace gtsam { // note, deliberately not in noiseModel namespace
 | ||
|  | 
 | ||
|  | 	// A useful convenience class to refer to a shared Diagonal model
 | ||
|  | 	// There are (somewhat dangerous) constructors from Vector and pair<size_t,double>
 | ||
|  | 	// that call Sigmas and Sigma, respectively.
 | ||
|  | 	struct SharedDiagonal: public noiseModel::Diagonal::shared_ptr { | ||
|  | 		SharedDiagonal() { | ||
|  | 		} | ||
|  | 		SharedDiagonal(const noiseModel::Diagonal::shared_ptr& p) : | ||
|  | 			noiseModel::Diagonal::shared_ptr(p) { | ||
|  | 		} | ||
|  | 		SharedDiagonal(const noiseModel::Constrained::shared_ptr& p) : | ||
|  | 			noiseModel::Diagonal::shared_ptr(p) { | ||
|  | 		} | ||
|  | 		SharedDiagonal(const noiseModel::Isotropic::shared_ptr& p) : | ||
|  | 			noiseModel::Diagonal::shared_ptr(p) { | ||
|  | 		} | ||
|  | 		SharedDiagonal(const noiseModel::Unit::shared_ptr& p) : | ||
|  | 			noiseModel::Diagonal::shared_ptr(p) { | ||
|  | 		} | ||
|  | 		SharedDiagonal(const Vector& sigmas) : | ||
|  | 			noiseModel::Diagonal::shared_ptr(noiseModel::Diagonal::Sigmas(sigmas)) { | ||
|  | 		} | ||
|  | 	}; | ||
|  | 
 | ||
|  | 	// TODO: make these the ones really used in unit tests
 | ||
|  | 	inline SharedDiagonal sharedSigmas(const Vector& sigmas) { | ||
|  | 		return noiseModel::Diagonal::Sigmas(sigmas); | ||
|  | 	} | ||
|  | 	inline SharedDiagonal sharedSigma(int dim, double sigma) { | ||
|  | 		return noiseModel::Isotropic::Sigma(dim, sigma); | ||
|  | 	} | ||
|  | 
 | ||
|  | } |