Fixed bug in BetweenFactor
							parent
							
								
									7f2876f456
								
							
						
					
					
						commit
						9a22f3a825
					
				| 
						 | 
				
			
			@ -2999,6 +2999,14 @@
 | 
			
		|||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="testBetweenFactor.run" path="build/gtsam/slam/tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j4</buildArguments>
 | 
			
		||||
				<buildTarget>testBetweenFactor.run</buildTarget>
 | 
			
		||||
				<stopOnError>true</stopOnError>
 | 
			
		||||
				<useDefaultCommand>true</useDefaultCommand>
 | 
			
		||||
				<runAllBuilders>true</runAllBuilders>
 | 
			
		||||
			</target>
 | 
			
		||||
			<target name="SimpleRotation.run" path="build/examples" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
 | 
			
		||||
				<buildCommand>make</buildCommand>
 | 
			
		||||
				<buildArguments>-j2</buildArguments>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,12 +93,18 @@ namespace gtsam {
 | 
			
		|||
            boost::none) const {
 | 
			
		||||
      T hx = traits_x<T>::Between(p1, p2, H1, H2); // h(x)
 | 
			
		||||
      // manifold equivalent of h(x)-z -> log(z,h(x))
 | 
			
		||||
      typename traits_x<T>::ChartJacobian Hlocal;
 | 
			
		||||
      //OptionalJacobian<traits_x<T>::dimension, traits_x<T>::dimension> Hlocal;
 | 
			
		||||
      Vector rval = traits_x<T>::Local(measured_, hx, boost::none, Hlocal);
 | 
			
		||||
      (*H1) = ((*Hlocal) * (*H1)).eval();
 | 
			
		||||
      (*H2) = ((*Hlocal) * (*H2)).eval();
 | 
			
		||||
#ifdef BETWEENFACTOR_ASSUME_SMALL
 | 
			
		||||
      return traits_x<T>::Local(measured_, hx);
 | 
			
		||||
#else
 | 
			
		||||
      return traits_x<T>::Local(measured_, hx);
 | 
			
		||||
      static const int N = traits_x<T>::dimension;
 | 
			
		||||
      Eigen::Matrix<double,N,N> Hlocal;
 | 
			
		||||
    Vector rval = traits_x<T>::Local(measured_, hx, boost::none,
 | 
			
		||||
        (H1 || H2) ? &Hlocal : 0);
 | 
			
		||||
      if (H1) *H1 = Hlocal * (*H1);
 | 
			
		||||
      if (H1) *H2 = Hlocal * (*H2);
 | 
			
		||||
      return rval;
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** return the measured */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue