diff --git a/test/gtest_factor_autodiff.cpp b/test/gtest_factor_autodiff.cpp index 108ae75cdb54fa50a3caf5eaa9733a096b893578..b25e66371649198de42a200f93cabe58ed7c7ad0 100644 --- a/test/gtest_factor_autodiff.cpp +++ b/test/gtest_factor_autodiff.cpp @@ -88,12 +88,14 @@ TEST(CaptureAutodiff, ResidualOdom2d) // EVALUATE - Eigen::VectorXs fr1_pstate = fr1_ptr->getP()->getState(); - Eigen::VectorXs fr1_ostate = fr1_ptr->getO()->getState(); - Eigen::VectorXs fr2_pstate = fr2_ptr->getP()->getState(); - Eigen::VectorXs fr2_ostate = fr2_ptr->getO()->getState(); + const Eigen::VectorXs fr1_pstate = fr1_ptr->getP()->getState(); + const Eigen::VectorXs fr1_ostate = fr1_ptr->getO()->getState(); + const Eigen::VectorXs fr2_pstate = fr2_ptr->getP()->getState(); + const Eigen::VectorXs fr2_ostate = fr2_ptr->getO()->getState(); + const Eigen::VectorXs sen_pstate = sensor_ptr->getP()->getState(); + const Eigen::VectorXs sen_ostate = sensor_ptr->getO()->getState(); - std::vector<Scalar*> states_ptr({fr1_pstate.data(), fr1_ostate.data(), fr2_pstate.data(), fr2_ostate.data()}); + std::vector<const Scalar*> states_ptr({fr1_pstate.data(), fr1_ostate.data(), fr2_pstate.data(), fr2_ostate.data(), sen_pstate.data(), sen_ostate.data()}); double const* const* parameters = states_ptr.data(); Eigen::VectorXs residuals(factor_ptr->getSize()); @@ -142,8 +144,10 @@ TEST(CaptureAutodiff, JacobianOdom2d) const Eigen::VectorXs fr1_ostate = fr1_ptr->getO()->getState(); const Eigen::VectorXs fr2_pstate = fr2_ptr->getP()->getState(); const Eigen::VectorXs fr2_ostate = fr2_ptr->getO()->getState(); + const Eigen::VectorXs sen_pstate = sensor_ptr->getP()->getState(); + const Eigen::VectorXs sen_ostate = sensor_ptr->getO()->getState(); - std::vector<const Scalar*> states_ptr({fr1_pstate.data(), fr1_ostate.data(), fr2_pstate.data(), fr2_ostate.data()}); + std::vector<const Scalar*> states_ptr({fr1_pstate.data(), fr1_ostate.data(), fr2_pstate.data(), fr2_ostate.data(), sen_pstate.data(), sen_ostate.data()}); std::vector<Eigen::MatrixXs> Jauto; Eigen::VectorXs residuals(factor_ptr->getSize()); @@ -231,8 +235,10 @@ TEST(CaptureAutodiff, AutodiffVsAnalytic) const Eigen::VectorXs fr1_ostate = fr1_ptr->getO()->getState(); const Eigen::VectorXs fr2_pstate = fr2_ptr->getP()->getState(); const Eigen::VectorXs fr2_ostate = fr2_ptr->getO()->getState(); + const Eigen::VectorXs sen_pstate = sensor_ptr->getP()->getState(); + const Eigen::VectorXs sen_ostate = sensor_ptr->getO()->getState(); - std::vector<const Scalar*> states_ptr({fr1_pstate.data(), fr1_ostate.data(), fr2_pstate.data(), fr2_ostate.data()}); + std::vector<const Scalar*> states_ptr({fr1_pstate.data(), fr1_ostate.data(), fr2_pstate.data(), fr2_ostate.data(), sen_pstate.data(), sen_ostate.data()}); std::vector<Eigen::MatrixXs> Jautodiff, Janalytic; Eigen::VectorXs residuals(fac_autodiff_ptr->getSize()); @@ -241,11 +247,8 @@ TEST(CaptureAutodiff, AutodiffVsAnalytic) std::cout << "autodiff evaluate: " << ((double) clock() - t) / CLOCKS_PER_SEC << "s" << std::endl; t = clock(); //TODO FactorAnalytic::evaluate -// fac_analytic_ptr->evaluate(states_ptr, residuals, Janalytic); -// std::cout << "analytic evaluate: " << ((double) clock() - t) / CLOCKS_PER_SEC << "s" << std::endl; -// -// for (auto i = 0; i < Jautodiff.size(); i++) -// ASSERT_MATRIX_APPROX(Jautodiff[i], Janalytic[i], wolf::Constants::EPS); + fac_analytic_ptr->evaluate(states_ptr, residuals, Janalytic); + std::cout << "analytic evaluate: " << ((double) clock() - t) / CLOCKS_PER_SEC << "s" << std::endl; } int main(int argc, char **argv)