Reworked PoseRotationPrior with better tests and no dependence on PartialPriorFactor
							parent
							
								
									c3e615b2df
								
							
						
					
					
						commit
						878c79f265
					
				
							
								
								
									
										338
									
								
								.cproject
								
								
								
								
							
							
						
						
									
										338
									
								
								.cproject
								
								
								
								
							| 
						 | 
				
			
			@ -309,6 +309,14 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testGaussianFactor.run" path="linear/tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testGaussianFactor.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="all" path="inference" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
| 
						 | 
				
			
			@ -335,7 +343,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="tests/testBayesTree.run" path="inference" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>tests/testBayesTree.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -343,7 +350,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testBinaryBayesNet.run" path="inference" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testBinaryBayesNet.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -391,7 +397,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testSymbolicBayesNet.run" path="inference" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testSymbolicBayesNet.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -399,7 +404,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="tests/testSymbolicFactor.run" path="inference" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>tests/testSymbolicFactor.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -407,7 +411,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testSymbolicFactorGraph.run" path="inference" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testSymbolicFactorGraph.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -423,20 +426,11 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="tests/testBayesTree" path="inference" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>tests/testBayesTree</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testGaussianFactor.run" path="linear/tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testGaussianFactor.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testPoseRTV.run" path="build/gtsam_unstable/dynamics" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
| 
						 | 
				
			
			@ -525,22 +519,6 @@
 | 
			
		|||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="tests/testPose2.run" path="build_retract/gtsam/geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>tests/testPose2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="tests/testPose3.run" path="build_retract/gtsam/geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>tests/testPose3.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="all" path="CppUnitLite" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
| 
						 | 
				
			
			@ -557,6 +535,22 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="tests/testPose2.run" path="build_retract/gtsam/geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>tests/testPose2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="tests/testPose3.run" path="build_retract/gtsam/geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>tests/testPose3.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="all" path="spqr_mini" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
| 
						 | 
				
			
			@ -581,26 +575,26 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="all" path="build_wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="testValues.run" path="build/gtsam/nonlinear" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>all</buildTarget>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testValues.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="check" path="build_wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="testOrdering.run" path="build/gtsam/nonlinear" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>check</buildTarget>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testOrdering.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="clean" path="build_wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="testKey.run" path="build/gtsam/nonlinear" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>clean</buildTarget>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testKey.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
| 
						 | 
				
			
			@ -685,26 +679,26 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testValues.run" path="build/gtsam/nonlinear" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="all" path="build_wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testValues.run</buildTarget>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>all</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testOrdering.run" path="build/gtsam/nonlinear" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="check" path="build_wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testOrdering.run</buildTarget>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>check</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testKey.run" path="build/gtsam/nonlinear" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="clean" path="build_wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testKey.run</buildTarget>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>clean</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
| 
						 | 
				
			
			@ -797,6 +791,14 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testPoseRotationPrior.run" path="build/gtsam_unstable/slam" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testPoseRotationPrior.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testDiscreteFactor.run" path="build/gtsam/discrete" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
| 
						 | 
				
			
			@ -983,7 +985,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testGraph.run" path="build/tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testGraph.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -991,7 +992,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testJunctionTree.run" path="build/tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testJunctionTree.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -999,7 +999,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testSymbolicBayesNetB.run" path="build/tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testSymbolicBayesNetB.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -1135,7 +1134,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testErrors.run" path="linear" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testErrors.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -1181,10 +1179,10 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testLinearContainerFactor.run" path="build/gtsam_unstable/nonlinear" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="testGaussianFactor.run" path="build/linear/tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testLinearContainerFactor.run</buildTarget>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testGaussianFactor.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
| 
						 | 
				
			
			@ -1269,10 +1267,10 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testGaussianFactor.run" path="build/linear/tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="testLinearContainerFactor.run" path="build/gtsam_unstable/nonlinear" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testGaussianFactor.run</buildTarget>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testLinearContainerFactor.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
| 
						 | 
				
			
			@ -1607,6 +1605,7 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testSimulated2DOriented.run" path="slam" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testSimulated2DOriented.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -1646,6 +1645,7 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testSimulated2D.run" path="slam" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testSimulated2D.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -1653,6 +1653,7 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="testSimulated3D.run" path="slam" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>testSimulated3D.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -1844,6 +1845,7 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="tests/testGaussianISAM2" path="build/slam" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>tests/testGaussianISAM2</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -1865,6 +1867,102 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testRot3.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testRot3.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testRot2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testRot2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testPose3.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testPose3.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="timeRot3.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>timeRot3.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testPose2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testPose2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testCal3_S2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testCal3_S2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testSimpleCamera.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testSimpleCamera.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testHomography2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testHomography2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testCalibratedCamera.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testCalibratedCamera.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="check" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>check</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="clean" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>clean</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testPoint2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testPoint2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="install" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j1</buildArguments>
 | 
			
		||||
| 
						 | 
				
			
			@ -2066,7 +2164,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="Generate DEB Package" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>cpack</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>-G DEB</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -2074,7 +2171,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="Generate RPM Package" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>cpack</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>-G RPM</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -2082,7 +2178,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="Generate TGZ Package" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>cpack</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>-G TGZ</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -2090,7 +2185,6 @@
 | 
			
		|||
			</target>
 | 
			
		||||
			<target name="Generate TGZ Source Package" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>cpack</buildCommand>
 | 
			
		||||
				<buildArguments/>
 | 
			
		||||
				<buildTarget>--config CPackSourceConfig.cmake</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
| 
						 | 
				
			
			@ -2224,98 +2318,34 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testRot3.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="testSpirit.run" path="build/wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testRot3.run</buildTarget>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testSpirit.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testRot2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="testWrap.run" path="build/wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testRot2.run</buildTarget>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testWrap.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testPose3.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="check.wrap" path="build/wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testPose3.run</buildTarget>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>check.wrap</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="timeRot3.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
			<target name="wrap" path="build/wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>timeRot3.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testPose2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testPose2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testCal3_S2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testCal3_S2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testSimpleCamera.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testSimpleCamera.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testHomography2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testHomography2.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testCalibratedCamera.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testCalibratedCamera.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="check" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>check</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="clean" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>clean</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testPoint2.run" path="geometry" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
				<buildTarget>testPoint2.run</buildTarget>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>wrap</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
| 
						 | 
				
			
			@ -2359,38 +2389,6 @@
 | 
			
		|||
				<useDefaultCommand>false</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testSpirit.run" path="build/wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testSpirit.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testWrap.run" path="build/wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>testWrap.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="check.wrap" path="build/wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>check.wrap</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="wrap" path="build/wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j5</buildArguments>
 | 
			
		||||
				<buildTarget>wrap</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
		</buildTargets>
 | 
			
		||||
	</storageModule>
 | 
			
		||||
</cproject>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,63 +9,82 @@
 | 
			
		|||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <gtsam_unstable/slam/PartialPriorFactor.h>
 | 
			
		||||
#include <gtsam/geometry/concepts.h>
 | 
			
		||||
#include <gtsam_unstable/slam/PoseTranslationPrior.h>
 | 
			
		||||
 | 
			
		||||
namespace gtsam {
 | 
			
		||||
 | 
			
		||||
template<class POSE>
 | 
			
		||||
class PoseRotationPrior : public PartialPriorFactor<POSE> {
 | 
			
		||||
class PoseRotationPrior : public NoiseModelFactor1<POSE> {
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
	typedef PoseRotationPrior<POSE> This;
 | 
			
		||||
	typedef PartialPriorFactor<POSE> Base;
 | 
			
		||||
	typedef NoiseModelFactor1<POSE> Base;
 | 
			
		||||
	typedef POSE Pose;
 | 
			
		||||
	typedef typename POSE::Translation Translation;
 | 
			
		||||
	typedef typename POSE::Rotation Rotation;
 | 
			
		||||
 | 
			
		||||
	GTSAM_CONCEPT_POSE_TYPE(Pose)
 | 
			
		||||
	GTSAM_CONCEPT_GROUP_TYPE(Pose)
 | 
			
		||||
	GTSAM_CONCEPT_LIE_TYPE(Rotation)
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
 | 
			
		||||
	Rotation measured_;
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
	/** standard constructor */
 | 
			
		||||
	PoseRotationPrior(Key key, const Rotation& rot_z, const SharedNoiseModel& model)
 | 
			
		||||
	: Base(key, model) {
 | 
			
		||||
		initialize(rot_z);
 | 
			
		||||
	}
 | 
			
		||||
	: Base(model, key), measured_(rot_z) {}
 | 
			
		||||
 | 
			
		||||
	/** Constructor that pulls the translation from an incoming POSE */
 | 
			
		||||
	PoseRotationPrior(Key key, const POSE& pose_z, const SharedNoiseModel& model)
 | 
			
		||||
	: Base(key, model) {
 | 
			
		||||
		initialize(pose_z.rotation());
 | 
			
		||||
	: Base(model, key), measured_(pose_z.rotation()) {}
 | 
			
		||||
 | 
			
		||||
	virtual ~PoseRotationPrior() {}
 | 
			
		||||
 | 
			
		||||
	// access
 | 
			
		||||
	const Rotation& measured() const { return measured_; }
 | 
			
		||||
 | 
			
		||||
	// testable
 | 
			
		||||
 | 
			
		||||
	/** equals specialized to this factor */
 | 
			
		||||
	virtual bool equals(const NonlinearFactor& expected, double tol=1e-9) const {
 | 
			
		||||
		const This *e = dynamic_cast<const This*> (&expected);
 | 
			
		||||
		return e != NULL && Base::equals(*e, tol) && measured_.equals(e->measured_, tol);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/** get the rotation used to create the measurement */
 | 
			
		||||
	Rotation priorRotation() const { return Rotation::Expmap(this->prior_); }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
	/** loads the underlying partial prior factor */
 | 
			
		||||
	void initialize(const Rotation& rot_z) {
 | 
			
		||||
		assert(rot_z.dim() == this->noiseModel_->dim());
 | 
			
		||||
 | 
			
		||||
		// Calculate the prior applied
 | 
			
		||||
		this->prior_ = Rotation::Logmap(rot_z);
 | 
			
		||||
 | 
			
		||||
		// Create the mask for partial prior
 | 
			
		||||
		size_t pose_dim = Pose::identity().dim();
 | 
			
		||||
		size_t rot_dim = rot_z.dim();
 | 
			
		||||
 | 
			
		||||
		// get the interval of the lie coordinates corresponding to rotation
 | 
			
		||||
		std::pair<size_t, size_t> interval = Pose::rotationInterval();
 | 
			
		||||
 | 
			
		||||
		std::vector<size_t> mask;
 | 
			
		||||
		for (size_t i=interval.first; i<=interval.second; ++i)
 | 
			
		||||
			mask.push_back(i);
 | 
			
		||||
		this->mask_ = mask;
 | 
			
		||||
 | 
			
		||||
		this->H_ = zeros(rot_dim, pose_dim);
 | 
			
		||||
		this->fillH();
 | 
			
		||||
	/** print contents */
 | 
			
		||||
	void print(const std::string& s="", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const {
 | 
			
		||||
		Base::print(s + "PoseRotationPrior", keyFormatter);
 | 
			
		||||
		measured_.print("Measured Rotation");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/** h(x)-z */
 | 
			
		||||
	Vector evaluateError(const Pose& pose, boost::optional<Matrix&> H = boost::none) const {
 | 
			
		||||
		const Rotation& newR = pose.rotation();
 | 
			
		||||
		const size_t rDim = newR.dim(), xDim = pose.dim();
 | 
			
		||||
		if (H) {
 | 
			
		||||
			*H = gtsam::zeros(rDim, xDim);
 | 
			
		||||
			if (pose_traits::isRotFirst<Pose>())
 | 
			
		||||
				(*H).leftCols(rDim) = eye(rDim);
 | 
			
		||||
			else
 | 
			
		||||
				(*H).rightCols(rDim) = eye(rDim);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return Rotation::Logmap(newR) - Rotation::Logmap(measured_);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
 | 
			
		||||
	/** Serialization function */
 | 
			
		||||
	friend class boost::serialization::access;
 | 
			
		||||
	template<class ARCHIVE>
 | 
			
		||||
	void serialize(ARCHIVE & ar, const unsigned int version) {
 | 
			
		||||
		ar & boost::serialization::make_nvp("NoiseModelFactor1",
 | 
			
		||||
				boost::serialization::base_object<Base>(*this));
 | 
			
		||||
		ar & BOOST_SERIALIZATION_NVP(measured_);
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // \namespace gtsam
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,42 +9,85 @@
 | 
			
		|||
 | 
			
		||||
#include <CppUnitLite/TestHarness.h>
 | 
			
		||||
 | 
			
		||||
#include <gtsam/base/numericalDerivative.h>
 | 
			
		||||
 | 
			
		||||
#include <gtsam/geometry/Pose2.h>
 | 
			
		||||
#include <gtsam/geometry/Pose3.h>
 | 
			
		||||
 | 
			
		||||
#include <gtsam_unstable/slam/PoseRotationPrior.h>
 | 
			
		||||
#include <gtsam_unstable/slam/PoseTranslationPrior.h>
 | 
			
		||||
 | 
			
		||||
#include <gtsam/nonlinear/Symbol.h>
 | 
			
		||||
 | 
			
		||||
using namespace gtsam;
 | 
			
		||||
 | 
			
		||||
Key x1 = symbol_shorthand::X(1);
 | 
			
		||||
 | 
			
		||||
const SharedNoiseModel model1 = noiseModel::Diagonal::Sigmas(Vector_(1, 0.1));
 | 
			
		||||
const SharedNoiseModel model3 = noiseModel::Diagonal::Sigmas(Vector_(3, 0.1, 0.2, 0.3));
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testPoseRotationPrior, planar) {
 | 
			
		||||
typedef PoseRotationPrior<Pose2> Pose2RotationPrior;
 | 
			
		||||
typedef PoseRotationPrior<Pose3> Pose3RotationPrior;
 | 
			
		||||
 | 
			
		||||
	typedef PoseRotationPrior<Pose2> PlanarRPrior;
 | 
			
		||||
	PlanarRPrior actRprior(x1, Rot2::fromDegrees(30.0), model1);
 | 
			
		||||
	EXPECT(assert_equal(Rot2::fromDegrees(30.0), actRprior.priorRotation()));
 | 
			
		||||
	Matrix expH(1,3); expH << 0.0, 0.0, 1.0;
 | 
			
		||||
	EXPECT(assert_equal(expH, actRprior.H()));
 | 
			
		||||
const double tol = 1e-5;
 | 
			
		||||
 | 
			
		||||
const gtsam::Key poseKey = 1;
 | 
			
		||||
 | 
			
		||||
// Pose3 examples
 | 
			
		||||
const Point3 point3A(1.0, 2.0, 3.0), point3B(4.0, 6.0, 8.0);
 | 
			
		||||
const Rot3 rot3A, rot3B = Rot3::pitch(-M_PI_2), rot3C = Rot3::Expmap(Vector_(3, 0.1, 0.2, 0.3));
 | 
			
		||||
 | 
			
		||||
// Pose2 examples
 | 
			
		||||
const Point2 point2A(1.0, 2.0), point2B(4.0, 6.0);
 | 
			
		||||
const Rot2 rot2A, rot2B = Rot2::fromAngle(M_PI_2);
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
LieVector evalFactorError3(const Pose3RotationPrior& factor, const Pose3& x) {
 | 
			
		||||
	return LieVector(factor.evaluateError(x));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testPoseRotationPrior, visual) {
 | 
			
		||||
LieVector evalFactorError2(const Pose2RotationPrior& factor, const Pose2& x) {
 | 
			
		||||
	return LieVector(factor.evaluateError(x));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	typedef PoseRotationPrior<Pose3> VisualRPrior;
 | 
			
		||||
	VisualRPrior actPose3Rprior(x1, Rot3::RzRyRx(0.1, 0.2, 0.3), model3);
 | 
			
		||||
	EXPECT(assert_equal(Rot3::RzRyRx(0.1, 0.2, 0.3), actPose3Rprior.priorRotation()));
 | 
			
		||||
	Matrix expH(3,6); expH << eye(3,3), zeros(3,3);
 | 
			
		||||
	EXPECT(assert_equal(expH, actPose3Rprior.H()));
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testPoseRotationFactor, level3_zero_error ) {
 | 
			
		||||
	Pose3 pose1(rot3A, point3A);
 | 
			
		||||
	Pose3RotationPrior factor(poseKey, rot3A, model3);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
	EXPECT(assert_equal(zero(3), factor.evaluateError(pose1, actH1)));
 | 
			
		||||
	Matrix expH1 = numericalDerivative11<LieVector,Pose3>(
 | 
			
		||||
			boost::bind(evalFactorError3, factor, _1), pose1, 1e-5);
 | 
			
		||||
	EXPECT(assert_equal(expH1, actH1, tol));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//	typedef testPoseRotationPrior<SimpleCamera> CamRPrior;
 | 
			
		||||
//	CamRPrior actCamRprior(x1, Rot3::RzRyRx(0.1, 0.2, 0.3), model3);
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testPoseRotationFactor, level3_error ) {
 | 
			
		||||
	Pose3 pose1(rot3A, point3A);
 | 
			
		||||
	Pose3RotationPrior factor(poseKey, rot3C, model3);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
	EXPECT(assert_equal(Vector_(3,-0.1,-0.2,-0.3), factor.evaluateError(pose1, actH1)));
 | 
			
		||||
	Matrix expH1 = numericalDerivative11<LieVector,Pose3>(
 | 
			
		||||
			boost::bind(evalFactorError3, factor, _1), pose1, 1e-5);
 | 
			
		||||
	EXPECT(assert_equal(expH1, actH1, tol));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testPoseRotationFactor, level2_zero_error ) {
 | 
			
		||||
	Pose2 pose1(rot2A, point2A);
 | 
			
		||||
	Pose2RotationPrior factor(poseKey, rot2A, model1);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
	EXPECT(assert_equal(zero(1), factor.evaluateError(pose1, actH1)));
 | 
			
		||||
	Matrix expH1 = numericalDerivative11<LieVector,Pose2>(
 | 
			
		||||
			boost::bind(evalFactorError2, factor, _1), pose1, 1e-5);
 | 
			
		||||
	EXPECT(assert_equal(expH1, actH1, tol));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testPoseRotationFactor, level2_error ) {
 | 
			
		||||
	Pose2 pose1(rot2A, point2A);
 | 
			
		||||
	Pose2RotationPrior factor(poseKey, rot2B, model1);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
	EXPECT(assert_equal(Vector_(1,-M_PI_2), factor.evaluateError(pose1, actH1)));
 | 
			
		||||
	Matrix expH1 = numericalDerivative11<LieVector,Pose2>(
 | 
			
		||||
			boost::bind(evalFactorError2, factor, _1), pose1, 1e-5);
 | 
			
		||||
	EXPECT(assert_equal(expH1, actH1, tol));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ LieVector evalFactorError2(const Pose2TranslationPrior& factor, const Pose2& x)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testRelativeElevationFactor, level3_zero_error ) {
 | 
			
		||||
TEST( testPoseTranslationFactor, level3_zero_error ) {
 | 
			
		||||
	Pose3 pose1(rot3A, point3A);
 | 
			
		||||
	Pose3TranslationPrior factor(poseKey, point3A, model3);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +55,7 @@ TEST( testRelativeElevationFactor, level3_zero_error ) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testRelativeElevationFactor, level3_error ) {
 | 
			
		||||
TEST( testPoseTranslationFactor, level3_error ) {
 | 
			
		||||
	Pose3 pose1(rot3A, point3A);
 | 
			
		||||
	Pose3TranslationPrior factor(poseKey, point3B, model3);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ TEST( testRelativeElevationFactor, level3_error ) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testRelativeElevationFactor, pitched3_zero_error ) {
 | 
			
		||||
TEST( testPoseTranslationFactor, pitched3_zero_error ) {
 | 
			
		||||
	Pose3 pose1(rot3B, point3A);
 | 
			
		||||
	Pose3TranslationPrior factor(poseKey, point3A, model3);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
| 
						 | 
				
			
			@ -77,7 +77,7 @@ TEST( testRelativeElevationFactor, pitched3_zero_error ) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testRelativeElevationFactor, pitched3_error ) {
 | 
			
		||||
TEST( testPoseTranslationFactor, pitched3_error ) {
 | 
			
		||||
	Pose3 pose1(rot3B, point3A);
 | 
			
		||||
	Pose3TranslationPrior factor(poseKey, point3B, model3);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
| 
						 | 
				
			
			@ -88,7 +88,7 @@ TEST( testRelativeElevationFactor, pitched3_error ) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testRelativeElevationFactor, smallrot3_zero_error ) {
 | 
			
		||||
TEST( testPoseTranslationFactor, smallrot3_zero_error ) {
 | 
			
		||||
	Pose3 pose1(rot3C, point3A);
 | 
			
		||||
	Pose3TranslationPrior factor(poseKey, point3A, model3);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +99,7 @@ TEST( testRelativeElevationFactor, smallrot3_zero_error ) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testRelativeElevationFactor, smallrot3_error ) {
 | 
			
		||||
TEST( testPoseTranslationFactor, smallrot3_error ) {
 | 
			
		||||
	Pose3 pose1(rot3C, point3A);
 | 
			
		||||
	Pose3TranslationPrior factor(poseKey, point3B, model3);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ TEST( testRelativeElevationFactor, smallrot3_error ) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testRelativeElevationFactor, level2_zero_error ) {
 | 
			
		||||
TEST( testPoseTranslationFactor, level2_zero_error ) {
 | 
			
		||||
	Pose2 pose1(rot2A, point2A);
 | 
			
		||||
	Pose2TranslationPrior factor(poseKey, point2A, model2);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
| 
						 | 
				
			
			@ -121,7 +121,7 @@ TEST( testRelativeElevationFactor, level2_zero_error ) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
TEST( testRelativeElevationFactor, level2_error ) {
 | 
			
		||||
TEST( testPoseTranslationFactor, level2_error ) {
 | 
			
		||||
	Pose2 pose1(rot2A, point2A);
 | 
			
		||||
	Pose2TranslationPrior factor(poseKey, point2B, model2);
 | 
			
		||||
	Matrix actH1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue