| 
									
										
										
										
											2012-06-04 08:41:13 +08:00
										 |  |  | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
					
						
							|  |  |  | % 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 | 
					
						
							|  |  |  | % | 
					
						
							|  |  |  | % @brief Read graph from file and perform GraphSLAM | 
					
						
							|  |  |  | % @author Frank Dellaert | 
					
						
							|  |  |  | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-04 13:53:51 +08:00
										 |  |  | N = 2500; | 
					
						
							| 
									
										
										
										
											2012-06-08 05:52:15 +08:00
										 |  |  | % filename = '../../examples/Data/sphere_smallnoise.graph'; | 
					
						
							|  |  |  | % filename = '../../examples/Data/sphere2500_groundtruth.txt'; | 
					
						
							|  |  |  | filename = '../../examples/Data/sphere2500.txt'; | 
					
						
							| 
									
										
										
										
											2012-06-04 13:53:51 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-04 08:41:13 +08:00
										 |  |  | %% Initialize graph, initial estimate, and odometry noise | 
					
						
							| 
									
										
										
										
											2012-07-18 23:47:06 +08:00
										 |  |  | model = gtsam.noiseModel.Diagonal.Sigmas([0.05; 0.05; 0.05; 5*pi/180; 5*pi/180; 5*pi/180]); | 
					
						
							| 
									
										
										
										
											2012-06-08 05:52:15 +08:00
										 |  |  | [graph,initial]=load3D(filename,model,true,N); | 
					
						
							| 
									
										
										
										
											2012-06-04 08:41:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | %% Plot Initial Estimate | 
					
						
							|  |  |  | figure(1);clf | 
					
						
							| 
									
										
										
										
											2012-06-05 12:01:37 +08:00
										 |  |  | first = initial.pose(0); | 
					
						
							| 
									
										
										
										
											2012-06-04 13:53:51 +08:00
										 |  |  | plot3(first.x(),first.y(),first.z(),'r*'); hold on | 
					
						
							|  |  |  | plot3DTrajectory(initial,'g-',false); | 
					
						
							| 
									
										
										
										
											2012-06-04 08:41:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-05 12:01:37 +08:00
										 |  |  | %% Read again, now with all constraints, and optimize | 
					
						
							|  |  |  | graph = load3D(filename,model,false,N); | 
					
						
							| 
									
										
										
										
											2012-07-18 23:47:06 +08:00
										 |  |  | graph.addPoseConstraint(0, first); | 
					
						
							| 
									
										
										
										
											2012-06-05 12:01:37 +08:00
										 |  |  | result = graph.optimize(initial); | 
					
						
							| 
									
										
										
										
											2012-06-04 13:53:51 +08:00
										 |  |  | plot3DTrajectory(result,'r-',false); axis equal; |