| 
									
										
										
										
											2012-07-26 21:08:54 +08:00
										 |  |  | function values = circlePose2(numPoses, radius, symbolChar)
 | 
					
						
							| 
									
										
										
										
											2012-09-08 13:28:25 +08:00
										 |  |  | % circlePose2 generates a set of poses in a circle. This function | 
					
						
							| 
									
										
										
										
											2012-07-26 21:08:54 +08:00
										 |  |  | % returns those poses inside a gtsam.Values object, with sequential | 
					
						
							| 
									
										
										
										
											2012-07-26 21:23:04 +08:00
										 |  |  | % keys starting from 0. An optional character may be provided, which | 
					
						
							| 
									
										
										
										
											2012-07-26 21:08:54 +08:00
										 |  |  | % will be stored in the msb of each key (i.e. gtsam.Symbol). | 
					
						
							| 
									
										
										
										
											2012-07-26 21:23:04 +08:00
										 |  |  | % | 
					
						
							|  |  |  | % We use aerospace/navlab convention, X forward, Y right, Z down | 
					
						
							|  |  |  | % First pose will be at (R,0,0) | 
					
						
							|  |  |  | % ^y   ^ X | 
					
						
							|  |  |  | % |    | | 
					
						
							|  |  |  | % z-->xZ--> Y  (z pointing towards viewer, Z pointing away from viewer) | 
					
						
							|  |  |  | % Vehicle at p0 is looking towards y axis (X-axis points towards world y) | 
					
						
							| 
									
										
										
										
											2012-07-26 21:08:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-26 21:23:04 +08:00
										 |  |  | if nargin<3,symbolChar=0;end | 
					
						
							| 
									
										
										
										
											2012-07-26 21:08:54 +08:00
										 |  |  | if nargin<2,radius=1.0;end | 
					
						
							|  |  |  | if nargin<1,numPoses=8;end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-26 21:23:04 +08:00
										 |  |  | % Force symbolChar to be a single character | 
					
						
							|  |  |  | symbolChar = char(symbolChar); | 
					
						
							|  |  |  | symbolChar = symbolChar(1); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-26 21:08:54 +08:00
										 |  |  | values = gtsam.Values; | 
					
						
							|  |  |  | theta = 0.0; | 
					
						
							|  |  |  | dtheta = 2*pi()/numPoses; | 
					
						
							|  |  |  | for i = 1:numPoses | 
					
						
							| 
									
										
										
										
											2012-07-28 03:02:11 +08:00
										 |  |  |     key = gtsam.symbol(symbolChar, i-1); | 
					
						
							| 
									
										
										
										
											2012-07-26 21:08:54 +08:00
										 |  |  |     pose = gtsam.Pose2(radius*cos(theta), radius*sin(theta), pi()/2 + theta); | 
					
						
							|  |  |  |     values.insert(key, pose); | 
					
						
							|  |  |  |     theta = theta + dtheta; | 
					
						
							|  |  |  | end |