Fixed Dbetween1
							parent
							
								
									19a3e228d7
								
							
						
					
					
						commit
						f684becf1f
					
				|  | @ -174,7 +174,7 @@ namespace gtsam { | |||
| 
 | ||||
|   Matrix Dbetween1(const Pose3& p1, const Pose3& p2){ | ||||
|   	Pose3 invp1 = inverse(p1); | ||||
|   	return  Dinverse(p1) * Dcompose2(p2,invp1); | ||||
|   	return Dcompose2(p2,invp1) * Dinverse(p1); | ||||
|   } | ||||
| 
 | ||||
|   Matrix Dbetween2(const Pose3& p1, const Pose3& p2){ | ||||
|  |  | |||
|  | @ -283,13 +283,17 @@ TEST(Pose3, manifold) { | |||
| /* ************************************************************************* */ | ||||
| TEST( Pose3, between ) | ||||
| { | ||||
| 	Rot3 R = rodriguez(0.3,0.2,0.1); | ||||
| 	Point3 t(3.5,-8.2,4.2); | ||||
| 	Pose3 T(R,t); | ||||
| 
 | ||||
| 	Pose3 expected = pose1 * inverse(T); | ||||
| 	Pose3 actual = between(T, pose1); | ||||
| 	CHECK(assert_equal(expected,actual)); | ||||
| 
 | ||||
| 	Matrix numericalH1 = numericalDerivative21(between<Pose3> , T, pose1, 1e-5); | ||||
| 	Matrix actualH1 = Dbetween1(T, pose1); | ||||
| //	CHECK(assert_equal(numericalH1,actualH1)); // chain rule does not work ??
 | ||||
| 	CHECK(assert_equal(numericalH1,actualH1)); // chain rule does not work ??
 | ||||
| 
 | ||||
| 	Matrix actualH2 = Dbetween2(T, pose1); | ||||
| 	Matrix numericalH2 = numericalDerivative22(between<Pose3> , T, pose1, 1e-5); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue