| 
									
										
										
										
											2009-11-11 04:19:00 +08:00
										 |  |  | /**
 | 
					
						
							|  |  |  |  * @file    VSLAMGraph.h | 
					
						
							|  |  |  |  * @brief   A factor graph for the VSLAM problem | 
					
						
							|  |  |  |  * @author  Alireza Fathi | 
					
						
							|  |  |  |  * @author  Carlos Nieto | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | #include <map>
 | 
					
						
							|  |  |  | #include <set>
 | 
					
						
							|  |  |  | #include <fstream>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-11 06:49:22 +08:00
										 |  |  | #include "NonlinearFactorGraph.h"
 | 
					
						
							|  |  |  | #include "FactorGraph-inl.h"
 | 
					
						
							| 
									
										
										
										
											2009-11-11 04:19:00 +08:00
										 |  |  | #include "VSLAMFactor.h"
 | 
					
						
							|  |  |  | #include "VSLAMConfig.h"
 | 
					
						
							| 
									
										
										
										
											2009-11-17 09:19:55 +08:00
										 |  |  | #include "Testable.h"
 | 
					
						
							| 
									
										
										
										
											2009-11-11 04:19:00 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-11 06:49:22 +08:00
										 |  |  | namespace gtsam{ | 
					
						
							| 
									
										
										
										
											2009-11-11 04:19:00 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * Non-linear factor graph for visual SLAM | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-12-10 03:11:45 +08:00
										 |  |  | class VSLAMGraph : public gtsam::NonlinearFactorGraph<VSLAMConfig>{ | 
					
						
							| 
									
										
										
										
											2009-11-11 04:19:00 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /** default constructor is empty graph */ | 
					
						
							|  |  |  |   VSLAMGraph() {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /**
 | 
					
						
							|  |  |  |    * print out graph | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   void print(const std::string& s = "") const { | 
					
						
							|  |  |  |     gtsam::NonlinearFactorGraph<VSLAMConfig>::print(s); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 09:19:55 +08:00
										 |  |  |   /**
 | 
					
						
							|  |  |  |    * equals | 
					
						
							|  |  |  |    */ | 
					
						
							| 
									
										
										
										
											2009-12-10 03:11:45 +08:00
										 |  |  |   bool equals(const VSLAMGraph& p, double tol=1e-9) const { | 
					
						
							|  |  |  |   	return gtsam::NonlinearFactorGraph<VSLAMConfig>::equals(p, tol); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2009-11-13 14:18:27 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   /**
 | 
					
						
							|  |  |  |    *  Add a constraint on a landmark (for now, *must* be satisfied in any Config) | 
					
						
							|  |  |  |    *  @param j index of landmark | 
					
						
							|  |  |  |    *  @param p to which point to constrain it to | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   void addLandmarkConstraint(int j, const Point3& p = Point3()); | 
					
						
							| 
									
										
										
										
											2009-11-17 09:19:55 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-18 01:19:54 +08:00
										 |  |  |   /**
 | 
					
						
							|  |  |  |    *  Add a constraint on a camera (for now, *must* be satisfied in any Config) | 
					
						
							|  |  |  |    *  @param j index of camera | 
					
						
							|  |  |  |    *  @param p to which pose to constrain it to | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  |   void addCameraConstraint(int j, const Pose3& p = Pose3()); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 09:19:55 +08:00
										 |  |  | private: | 
					
						
							|  |  |  | 	/** Serialization function */ | 
					
						
							|  |  |  | 	friend class boost::serialization::access; | 
					
						
							|  |  |  | 	template<class Archive> | 
					
						
							| 
									
										
										
										
											2009-12-10 03:11:45 +08:00
										 |  |  | 	void serialize(Archive & ar, const unsigned int version) {} | 
					
						
							| 
									
										
										
										
											2009-11-11 04:19:00 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2009-11-11 06:49:22 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | } // namespace gtsam
 |