new Pose3 derivatives still don't work :-(
parent
b943644ddd
commit
20ad08e48f
|
@ -113,13 +113,14 @@ namespace gtsam {
|
|||
|
||||
/* ************************************************************************* */
|
||||
Matrix Dtransform_from1(const Pose3& pose, const Point3& p) {
|
||||
#ifdef NEW_EXMAP
|
||||
Point3 q = transform_from(pose,p);
|
||||
Matrix DR = skewSymmetric(-q.x(), -q.y(), -q.z());
|
||||
#ifdef SLOW_BUT_CORRECT_EXPMAP
|
||||
const Matrix R = pose.rotation().matrix();
|
||||
Matrix DR = R*skewSymmetric(-p.x(), -p.y(), -p.z());
|
||||
return collect(2,&DR,&R);
|
||||
#else
|
||||
Matrix DR = Drotate1(pose.rotation(), p);
|
||||
#endif
|
||||
return collect(2,&DR,&I3);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
|
|
|
@ -105,26 +105,26 @@ TEST( Pose3, compose_inverse)
|
|||
/* ************************************************************************* */
|
||||
TEST( Pose3, Dtransform_from1_a)
|
||||
{
|
||||
Matrix computed = Dtransform_from1(T, P);
|
||||
Matrix actualDtransform_from1 = Dtransform_from1(T, P);
|
||||
Matrix numerical = numericalDerivative21(transform_from,T,P);
|
||||
CHECK(assert_equal(numerical,computed,error));
|
||||
CHECK(assert_equal(numerical,actualDtransform_from1,error));
|
||||
}
|
||||
|
||||
TEST( Pose3, Dtransform_from1_b)
|
||||
{
|
||||
Pose3 origin;
|
||||
Matrix computed = Dtransform_from1(origin, P);
|
||||
Matrix actualDtransform_from1 = Dtransform_from1(origin, P);
|
||||
Matrix numerical = numericalDerivative21(transform_from,origin,P);
|
||||
CHECK(assert_equal(numerical,computed,error));
|
||||
CHECK(assert_equal(numerical,actualDtransform_from1,error));
|
||||
}
|
||||
|
||||
TEST( Pose3, Dtransform_from1_c)
|
||||
{
|
||||
Point3 origin;
|
||||
Pose3 T0(R,origin);
|
||||
Matrix computed = Dtransform_from1(T0, P);
|
||||
Matrix actualDtransform_from1 = Dtransform_from1(T0, P);
|
||||
Matrix numerical = numericalDerivative21(transform_from,T0,P);
|
||||
CHECK(assert_equal(numerical,computed,error));
|
||||
CHECK(assert_equal(numerical,actualDtransform_from1,error));
|
||||
}
|
||||
|
||||
TEST( Pose3, Dtransform_from1_d)
|
||||
|
@ -132,19 +132,19 @@ TEST( Pose3, Dtransform_from1_d)
|
|||
Rot3 I;
|
||||
Point3 t0(100,0,0);
|
||||
Pose3 T0(I,t0);
|
||||
Matrix computed = Dtransform_from1(T0, P);
|
||||
Matrix actualDtransform_from1 = Dtransform_from1(T0, P);
|
||||
//print(computed, "Dtransform_from1_d computed:");
|
||||
Matrix numerical = numericalDerivative21(transform_from,T0,P);
|
||||
//print(numerical, "Dtransform_from1_d numerical:");
|
||||
CHECK(assert_equal(numerical,computed,error));
|
||||
CHECK(assert_equal(numerical,actualDtransform_from1,error));
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
TEST( Pose3, Dtransform_from2)
|
||||
{
|
||||
Matrix computed = Dtransform_from2(T);
|
||||
Matrix actualDtransform_from2 = Dtransform_from2(T);
|
||||
Matrix numerical = numericalDerivative22(transform_from,T,P);
|
||||
CHECK(assert_equal(numerical,computed,error));
|
||||
CHECK(assert_equal(numerical,actualDtransform_from2,error));
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
|
|
Loading…
Reference in New Issue