diff --git a/src/test/gtest_processorIMU_jacobians.cpp b/src/test/gtest_processorIMU_jacobians.cpp index 715f66b94cda59021c8044b9850cc07988c63004..1c7ede6aec58bfb11baed1e5a2301ce4fd7c8f1a 100644 --- a/src/test/gtest_processorIMU_jacobians.cpp +++ b/src/test/gtest_processorIMU_jacobians.cpp @@ -374,6 +374,22 @@ TEST_F(ProcessorIMU_jacobians, dDv_dO) "\ndDv_dO_a - dDv_dO_ : \n" << deltas_jac.jacobian_delta_preint_.block(6,3,3,3) - dDv_dO << std::endl; } +TEST_F(ProcessorIMU_jacobians, dDp_dp) +{ + using namespace wolf; + Eigen::Map<Eigen::Quaternions> Dq0(NULL), dq0(NULL); + Eigen::Matrix3s dDp_dp, dDp_dp_a; + + dDp_dp_a = deltas_jac.jacobian_delta_.block(0,0,3,3); + remapJacDeltas_quat0(deltas_jac, Dq0, dq0); + //dDp_dpx = ( dR*(p + dpx) - dR*(p))/dpx + for(int i=0;i<3;i++) + dDp_dp.block<3,1>(0,i) = ( (Dq0.matrix() * deltas_jac.delta_noisy_vect_(i).head(3)) - (Dq0.matrix() * deltas_jac.delta0_.head(3)) )/delta_noise(i); + + EXPECT_TRUE((dDp_dp - dDp_dp_a).isMuchSmallerThan(1,0.000001)) << "dDp_dp : \n" << dDp_dp << "\n dDp_dp_a :\n" << dDp_dp_a << + "\ndDp_dp_a - dDp_dp_ : \n" << dDp_dp_a - dDp_dp << std::endl; +} + int main(int argc, char **argv) { using namespace wolf;