diff --git a/src/constraint_imu.h b/src/constraint_imu.h index be01d5302e9e9f7a20fb66505e0c4fe68ea62296..bd1683c6a2de6dafd40272177e91e7610e1c1fd4 100644 --- a/src/constraint_imu.h +++ b/src/constraint_imu.h @@ -45,6 +45,32 @@ class ConstraintIMU : public ConstraintSparse<9, 3, 4, 3, 3, 3, 3, 4, 3> const T* const _p2, const T* const _q2, const T* const _v2,//const T* const _lmk_hmg, T* _expectation) const; + Eigen::VectorXs expectation() const + { + Eigen::VectorXs exp(10); + FrameBasePtr frm_current = getFeaturePtr()->getCapturePtr()->getFramePtr(); + FrameBasePtr frm_imu = getFrameOtherPtr(); + const Scalar * const frame_imu_pos = frm_imu->getPPtr()->getVector().data(); + const Scalar * const frame_imu_ori = frm_imu->getOPtr()->getVector().data(); + const Scalar * const frame_imu_vel = frm_imu->getVPtr()->getVector().data(); + const Scalar * const frame_imu_ab = frm_current->getAccBiasPtr()->getVector().data(); + const Scalar * const frame_imu_wb = frm_current->getGyroBiasPtr()->getVector().data(); + const Scalar * const frame_current_pos = frm_current->getPPtr()->getVector().data(); + const Scalar * const frame_current_ori = frm_current->getOPtr()->getVector().data(); + const Scalar * const frame_current_vel = frm_current->getVPtr()->getVector().data(); + + //const Scalar * const lmk_pos_hmg = lmk->getPPtr()->getVector().data(); + expectation(frame_imu_pos, frame_imu_ori, frame_imu_vel, frame_imu_ab, frame_imu_wb, + frame_current_pos, frame_current_ori, frame_current_vel, exp.data()); + std::cout << frame_current_pos << std::endl; + std::cout << frame_current_ori << std::endl; + std::cout << frame_current_vel << std::endl; + std::cout << frame_imu_pos << std::endl; + std::cout << frame_imu_ori << std::endl; + std::cout << frame_imu_vel << std::endl; + return exp; + } + public: static wolf::ConstraintBasePtr create(FeatureIMUPtr _feature_ptr, NodeBasePtr _correspondant_ptr); @@ -173,6 +199,30 @@ inline void ConstraintIMU::expectation(const T* const _p1, const T* const _q1, c expectation.tail(3) = dv_predict; } +/*Eigen::VectorXs ConstraintIMU::expectation(void) const +{ + Eigen::VectorXs exp(10); + FrameBasePtr frm_current = getFeaturePtr()->getCapturePtr()->getFramePtr(); + FrameBasePtr frm_imu = getFrameOtherPtr(); + //LandmarkBasePtr lmk = getLandmarkOtherPtr(); + const Scalar * const frame_current_pos = frm_current->getPPtr()->getVector().data(); + const Scalar * const frame_current_ori = frm_current->getOPtr()->getVector().data(); + const Scalar * const frame_current_vel = frm_current->getVPtr()->getVector().data(); + const Scalar * const frame_imu_pos = frm_imu->getPPtr()->getVector().data(); + const Scalar * const frame_imu_ori = frm_imu->getOPtr()->getVector().data(); + const Scalar * const frame_imu_vel = frm_imu->getVPtr()->getVector().data(); + //const Scalar * const lmk_pos_hmg = lmk->getPPtr()->getVector().data(); + //expectation(frame_current_pos, frame_current_ori, frame_current_vel, + // frame_imu_pos, frame_imu_ori, frame_imu_vel, exp.data()); + std::cout << frame_current_pos << std::endl; + std::cout << frame_current_ori << std::endl; + std::cout << frame_current_vel << std::endl; + std::cout << frame_imu_pos << std::endl; + std::cout << frame_imu_ori << std::endl; + std::cout << frame_imu_vel << std::endl; + return exp; +}*/ + inline JacobianMethod ConstraintIMU::getJacobianMethod() const { return JAC_AUTO;