66 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
|  | USAGE - Georgia Tech Smoothing and Mapping library | ||
|  | --------------------------------------------------- | ||
|  | 
 | ||
|  | What is this file? | ||
|  | 
 | ||
|  | 	This file explains how to make use of the library for common SLAM tasks,  | ||
|  | 	using a visual SLAM implementation as an example. | ||
|  | 	 | ||
|  | 	 | ||
|  | Getting Started | ||
|  | --------------------------------------------------- | ||
|  | Install: | ||
|  | 	Follow the installation instructions in the README file to build and  | ||
|  | 	install gtsam, as well as running tests to ensure the library is working | ||
|  | 	properly. | ||
|  | 
 | ||
|  | Compiling/Linking with gtsam: | ||
|  |   	The installation creates a binary "libgtsam" at the installation prefix, | ||
|  |   	and an include folder "gtsam".  These are the only required includes, but  | ||
|  |   	the library has also been designed to make use of XML serialization through | ||
|  |   	the Boost.serialization library, which requires the the Boost.serialization | ||
|  |   	headers and binaries to be linked.   | ||
|  | 
 | ||
|  | Examples: | ||
|  | 	To see how the library works, examine the unit tests provided.   | ||
|  |   | ||
|  | 
 | ||
|  | Overview | ||
|  | --------------------------------------------------- | ||
|  | The gtsam library has three primary components necessary for the construction | ||
|  | of factor graph representation and optimization which users will need to  | ||
|  | adapt to their particular problem.   | ||
|  | 
 | ||
|  | FactorGraph: | ||
|  | 	A factor graph contains a set of variables to solve for (i.e., robot poses, | ||
|  | 	landmark poses, etc.) and a set of constraints between these variables, which  | ||
|  | 	make up factors.   | ||
|  | Config:  | ||
|  | 	A configuration is a single object containing labeled values for all of the  | ||
|  | 	variables.  Currently, all variables are labeled with strings, but the type  | ||
|  | 	or organization of the variables can change | ||
|  | Factors: | ||
|  | 	A nonlinear factor expresses a constraint between variables, which in the | ||
|  | 	SLAM example, is a measurement such as a visual reading on a landmark or | ||
|  | 	odometry. | ||
|  | 
 | ||
|  | 
 | ||
|  | VSLAM Example | ||
|  | --------------------------------------------------- | ||
|  | The visual slam example shows a full implementation of a slam system.  The example contains | ||
|  | derived versions of NonlinearFactor, NonlinearFactorGraph, and a Config, in classes | ||
|  | VSLAMFactor, VSLAMGraph, and VSLAMConfig, respectively.   | ||
|  | 
 | ||
|  | The clearest example of the use of the graph to find a solution is in  | ||
|  | testVSLAMGraph.  The basic process for using graphs is as follows (and can be seen in  | ||
|  | the test): | ||
|  |   - Create a NonlinearFactorGraph object (VSLAMGraph) | ||
|  |   - Add factors to the graph (note the use of Boost.shared_ptr here) (VSLAMFactor) | ||
|  |   - Create an initial configuration (VSLAMConfig) | ||
|  |   - Create an elimination ordering of variables (this must include all variables) | ||
|  |   - Create and initialize a NonlinearOptimizer object (Note that this is a generic  | ||
|  |       algorithm that does not need to be derived for a particular problem) | ||
|  |   - Call optimization functions with the optimizer to optimize the graph | ||
|  |   - Extract an updated configuration from the optimizer | ||
|  |   | ||
|  |    |