From 1d1526801071b52a53edc40ed040055a6dbd7926 Mon Sep 17 00:00:00 2001
From: Dinesh Atchuthan <datchuth@laas.fr>
Date: Tue, 13 Dec 2016 16:41:50 +0100
Subject: [PATCH] new constructor : initialize jacobians

---
 src/feature_imu.cpp | 10 ++++++++++
 src/feature_imu.h   |  9 +++++++++
 2 files changed, 19 insertions(+)

diff --git a/src/feature_imu.cpp b/src/feature_imu.cpp
index cd1bec557..3bc14edc3 100644
--- a/src/feature_imu.cpp
+++ b/src/feature_imu.cpp
@@ -10,6 +10,16 @@ FeatureIMU::FeatureIMU(const Eigen::VectorXs& _delta_preintegrated, const Eigen:
     //std::cout << "New FeatureIMU: measurement " << _measurement.transpose() << std::endl << "covariance" << std::endl << _meas_covariance << std::endl;
 }
 
+FeatureIMU::FeatureIMU(const Eigen::VectorXs& _delta_preintegrated, const Eigen::MatrixXs& _delta_preintegrated_covariance, const Eigen::Matrix<wolf::Scalar,9,6>& _dD_db_jacobians) :
+    FeatureBase("IMU", _delta_preintegrated, _delta_preintegrated_covariance),
+    dp_preint_(_delta_preintegrated.head<3>()),dv_preint_(_delta_preintegrated.segment<3>(7)), dq_preint_(_delta_preintegrated.segment<4>(3)),
+    acc_bias_preint_(_delta_preintegrated.segment<3>(10)), gyro_bias_preint_(_delta_preintegrated.tail<3>()),
+    dDp_dab_(_dD_db_jacobians.block(3,3,0,0)), dDv_dab_(_dD_db_jacobians.block(3,3,6,0)),
+    dDp_dwb_(_dD_db_jacobians.block(3,3,0,3)), dDv_dwb_(_dD_db_jacobians.block(3,3,6,3)), dDq_dwb_(_dD_db_jacobians.block(3,3,3,3))
+{
+    //std::cout << "New FeatureIMU: measurement " << _measurement.transpose() << std::endl << "covariance" << std::endl << _meas_covariance << std::endl;
+}
+
 FeatureIMU::~FeatureIMU()
 {
     //
diff --git a/src/feature_imu.h b/src/feature_imu.h
index a19336857..781db5c56 100644
--- a/src/feature_imu.h
+++ b/src/feature_imu.h
@@ -24,6 +24,15 @@ class FeatureIMU : public FeatureBase
          */
         FeatureIMU(const Eigen::VectorXs& _delta_preintegrated, const Eigen::MatrixXs& _delta_preintegrated_covariance);
 
+        /** \brief Constructor from capture pointer and measure
+         *
+         * \param _measurement the measurement
+         * \param _meas_covariance the noise of the measurement
+         * \param _dD_db_jacobians Jacobians of preintegrated delta wrt IMU biases
+         *
+         */
+        FeatureIMU(const Eigen::VectorXs& _delta_preintegrated, const Eigen::MatrixXs& _delta_preintegrated_covariance, const Eigen::Matrix<wolf::Scalar,9,6>& _dD_db_jacobians);
+
         virtual ~FeatureIMU();
 
     public: // TODO eventually produce getters for these and then go private
-- 
GitLab