| 
									
										
										
										
											2010-01-02 18:33:33 +08:00
										 |  |  | /**
 | 
					
						
							|  |  |  |  * @file    VectorConfig.cpp | 
					
						
							|  |  |  |  * @brief   Pose2Graph Configuration | 
					
						
							|  |  |  |  * @author  Frank Dellaert | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-11 07:45:38 +08:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-10 03:55:25 +08:00
										 |  |  | #include <map>
 | 
					
						
							| 
									
										
										
										
											2009-12-17 05:40:41 +08:00
										 |  |  | #include <string>
 | 
					
						
							| 
									
										
										
										
											2009-12-10 03:55:25 +08:00
										 |  |  | #include "Pose2.h"
 | 
					
						
							| 
									
										
										
										
											2009-12-17 05:40:41 +08:00
										 |  |  | #include "Testable.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-02 18:33:33 +08:00
										 |  |  | namespace gtsam { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	class VectorConfig; | 
					
						
							| 
									
										
										
										
											2009-12-17 05:40:41 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-02 18:33:33 +08:00
										 |  |  | 	class Pose2Config: public Testable<Pose2Config> { | 
					
						
							| 
									
										
										
										
											2009-12-10 03:55:25 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-02 18:33:33 +08:00
										 |  |  | 	private: | 
					
						
							|  |  |  | 		std::map<std::string, Pose2> values_; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		typedef std::map<std::string, Pose2>::const_iterator iterator; | 
					
						
							|  |  |  | 		typedef iterator const_iterator; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		Pose2Config() {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		Pose2Config(const Pose2Config &config) :values_(config.values_) {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		virtual ~Pose2Config() {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		const Pose2& get(std::string key) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		void insert(const std::string& name, const Pose2& val); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		inline Pose2Config& operator=(const Pose2Config& rhs) { | 
					
						
							|  |  |  | 			values_ = rhs.values_; | 
					
						
							|  |  |  | 			return (*this); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		bool equals(const Pose2Config& expected, double tol) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		void print(const std::string &s) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		/**
 | 
					
						
							|  |  |  | 		 * Add a delta config, needed for use in NonlinearOptimizer | 
					
						
							|  |  |  | 		 */ | 
					
						
							|  |  |  | 		Pose2Config exmap(const VectorConfig& delta) const; | 
					
						
							| 
									
										
										
										
											2009-12-10 03:55:25 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-02 18:33:33 +08:00
										 |  |  | 		inline const_iterator begin() const {return values_.begin();} | 
					
						
							|  |  |  | 		inline const_iterator end() const {return values_.end();} | 
					
						
							|  |  |  | 		inline iterator begin() {return values_.begin();} | 
					
						
							|  |  |  | 		inline iterator end() {return values_.end();} | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2009-12-10 03:55:25 +08:00
										 |  |  | } // namespace
 |