71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
| /* ----------------------------------------------------------------------------
 | |
| 
 | |
|  * 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
 | |
| 
 | |
|  * -------------------------------------------------------------------------- */
 | |
| 
 | |
| /*
 | |
|  * SharedGaussian.h
 | |
|  * @brief Class that wraps a shared noise model with diagonal covariance
 | |
|  * @Author: Frank Dellaert
 | |
|  * Created on: Jan 22, 2010
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <gtsam/linear/NoiseModel.h>
 | |
| 
 | |
| namespace gtsam { // note, deliberately not in noiseModel namespace
 | |
| 
 | |
| 	/**
 | |
| 	 * A useful convenience class to refer to a shared Gaussian model
 | |
| 	 * Also needed to make noise models in matlab
 | |
| 	 */
 | |
| 	struct SharedGaussian: public noiseModel::Gaussian::shared_ptr {
 | |
| 		SharedGaussian() {
 | |
| 		}
 | |
| 		// TODO: better way ?
 | |
| 		SharedGaussian(const noiseModel::Gaussian::shared_ptr& p) :
 | |
| 			noiseModel::Gaussian::shared_ptr(p) {
 | |
| 		}
 | |
| 		SharedGaussian(const noiseModel::Diagonal::shared_ptr& p) :
 | |
| 			noiseModel::Gaussian::shared_ptr(p) {
 | |
| 		}
 | |
| 		SharedGaussian(const noiseModel::Constrained::shared_ptr& p) :
 | |
| 			noiseModel::Gaussian::shared_ptr(p) {
 | |
| 		}
 | |
| 		SharedGaussian(const noiseModel::Isotropic::shared_ptr& p) :
 | |
| 			noiseModel::Gaussian::shared_ptr(p) {
 | |
| 		}
 | |
| 		SharedGaussian(const noiseModel::Unit::shared_ptr& p) :
 | |
| 			noiseModel::Gaussian::shared_ptr(p) {
 | |
| 		}
 | |
| 
 | |
| 		// Define GTSAM_MAGIC_GAUSSIAN to have access to slightly
 | |
| 		// dangerous and non-shared (inefficient, wasteful) noise models.
 | |
| 		// Intended to be used only in tests (if you must) and the MATLAB wrapper
 | |
| #ifdef GTSAM_MAGIC_GAUSSIAN
 | |
| 		SharedGaussian(const Matrix& covariance) :
 | |
| 			noiseModel::Gaussian::shared_ptr(noiseModel::Gaussian::Covariance(covariance)) {
 | |
| 		}
 | |
| 		SharedGaussian(const Vector& sigmas) :
 | |
| 			noiseModel::Gaussian::shared_ptr(noiseModel::Diagonal::Sigmas(sigmas)) {
 | |
| 		}
 | |
| #endif
 | |
| // Define GTSAM_DANGEROUS_GAUSSIAN to have access to bug-prone fixed dimension Gaussians
 | |
| // Not intended for human use, only for backwards compatibility of old unit tests
 | |
| #ifdef GTSAM_DANGEROUS_GAUSSIAN
 | |
| 		SharedGaussian(const double& s) :
 | |
| 			noiseModel::Gaussian::shared_ptr(noiseModel::Isotropic::Sigma(
 | |
| 					GTSAM_DANGEROUS_GAUSSIAN, s)) {
 | |
| 		}
 | |
| #endif
 | |
| 	};
 | |
| 
 | |
| }
 |