39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
| /**
 | |
|  * @file    VectorConfig.cpp
 | |
|  * @brief   Pose2Graph Configuration
 | |
|  * @author  Frank Dellaert
 | |
|  */
 | |
| 
 | |
| #include "Pose2Config.h"
 | |
| #include "LieConfig-inl.h"
 | |
| 
 | |
| using namespace std;
 | |
| 
 | |
| namespace gtsam {
 | |
| 
 | |
|   /** Explicit instantiation of templated methods and functions */
 | |
|   template class LieConfig<Pose2>;
 | |
|   template size_t dim(const LieConfig<Pose2>& c);
 | |
|   template LieConfig<Pose2> expmap(const LieConfig<Pose2>& c, const Vector& delta);
 | |
|   template LieConfig<Pose2> expmap(const LieConfig<Pose2>& c, const VectorConfig& delta);
 | |
| 
 | |
| 	/* ************************************************************************* */
 | |
| 	// TODO: local version, should probably defined in LieConfig
 | |
| 	static string symbol(char c, int index) {
 | |
| 		stringstream ss;
 | |
| 		ss << c << index;
 | |
| 		return ss.str();
 | |
| 	}
 | |
| 
 | |
| 	/* ************************************************************************* */
 | |
| 	Pose2Config pose2Circle(size_t n, double R, char c) {
 | |
| 		Pose2Config x;
 | |
| 		double theta = 0, dtheta = 2*M_PI/n;
 | |
| 		for(size_t i=0;i<n;i++, theta+=dtheta)
 | |
| 			x.insert(symbol(c,i), Pose2(cos(theta), sin(theta), M_PI_2 + theta));
 | |
| 		return x;
 | |
| 	}
 | |
| 
 | |
| 	/* ************************************************************************* */
 | |
| } // namespace
 |