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);
 | |
| 	}
 | |
| 
 | |
| }
 |