| 
									
										
										
										
											2009-08-22 06:23:24 +08:00
										 |  |  | % Christan Potthast | 
					
						
							|  |  |  | % create linear factor graph | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function lfg = create_linear_factor_graph(config, measurements, odometry, measurement_sigma, odo_sigma, n)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m = size(measurements,2); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | % create linear factor graph | 
					
						
							| 
									
										
										
										
											2009-11-13 00:16:32 +08:00
										 |  |  | lfg = GaussianFactorGraph(); | 
					
						
							| 
									
										
										
										
											2009-08-22 06:23:24 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | % create prior for initial robot pose | 
					
						
							|  |  |  | prior = Point2Prior([0;0],0.2,'x1'); | 
					
						
							|  |  |  | lf = prior.linearize(config); | 
					
						
							|  |  |  | lfg.push_back(lf); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | % add prior for landmarks | 
					
						
							|  |  |  | for j = 1:n | 
					
						
							|  |  |  |     key = sprintf('m%d',j); | 
					
						
							|  |  |  |     prior = Point2Prior([0;0],1000,key); | 
					
						
							|  |  |  |     lf = prior.linearize(config);  | 
					
						
							|  |  |  |     lfg.push_back(lf); | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | % add measurement factors | 
					
						
							|  |  |  | for k = 1 : size(measurements,2)  | 
					
						
							|  |  |  |     measurement = measurements{k}; | 
					
						
							|  |  |  |     i = sprintf('x%d',measurement.i); | 
					
						
							|  |  |  |     j = sprintf('m%d',measurement.j);  | 
					
						
							|  |  |  |     nlf = Simulated2DMeasurement(measurement.z, measurement_sigma, i, j); | 
					
						
							|  |  |  |     lf = nlf.linearize(config); | 
					
						
							|  |  |  |     lfg.push_back(lf); | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | % add odometry factors | 
					
						
							|  |  |  | for i = 2 : size(odometry,2) | 
					
						
							|  |  |  |     odo = odometry{i}; | 
					
						
							|  |  |  |     p = sprintf('x%d',i-1); | 
					
						
							|  |  |  |     c = sprintf('x%d',i); | 
					
						
							|  |  |  |     nlf = Simulated2DOdometry(odo, odo_sigma, p, c); | 
					
						
							|  |  |  |     lf = nlf.linearize(config); | 
					
						
							|  |  |  |     lfg.push_back(lf); | 
					
						
							|  |  |  | end |