diff --git a/demos/processor_imu_solo12.yaml b/demos/processor_imu_solo12.yaml
index 14964b20685f70720ed8d21c19ba8cdf66406aac..e55d1546a1f84dbfac0981a8ad45eace9d23d9ff 100644
--- a/demos/processor_imu_solo12.yaml
+++ b/demos/processor_imu_solo12.yaml
@@ -6,5 +6,5 @@ keyframe_vote:
   voting_active: true
 name: Main imu
 time_tolerance: 0.0005
-type: ProcessorImu
+type: ProcessorImu3d
 unmeasured_perturbation_std: 1.0e-06
diff --git a/demos/solo_imu_kine.cpp b/demos/solo_imu_kine.cpp
index e3dd1a8566cefd3f88440534e50ac91e585fd4ec..47b072d546dd28be30ff10278a432a1fd9a10a28 100644
--- a/demos/solo_imu_kine.cpp
+++ b/demos/solo_imu_kine.cpp
@@ -59,7 +59,7 @@
 // IMU
 #include "imu/sensor/sensor_imu.h"
 #include "imu/capture/capture_imu.h"
-#include "imu/processor/processor_imu.h"
+#include "imu/processor/processor_imu_3d.h"
 #include "imu/factor/factor_imu.h"
 
 // BODYDYNAMICS
@@ -93,7 +93,7 @@ void printFactorCosts(FrameBasePtr kf_last){
     int nb_max_fact_ptf = 4;
     int nb = 0;
     for (auto f: kf_last->getFactorList()){
-        auto fimu = std::dynamic_pointer_cast<FactorImu>(f);
+        auto fimu = std::dynamic_pointer_cast<FactorImu3d>(f);
         if (fimu){
             std::cout << std::setprecision(12) << "  C_IMU " << sqrt(fimu->cost()) << std::endl;
         }
diff --git a/demos/solo_imu_kine_mocap.cpp b/demos/solo_imu_kine_mocap.cpp
index ccee00850f99d59dea3086f1997d59fbd55da712..bc400c38f95c1a596fe0defcfc154b1ae7b5441a 100644
--- a/demos/solo_imu_kine_mocap.cpp
+++ b/demos/solo_imu_kine_mocap.cpp
@@ -59,7 +59,7 @@
 // IMU
 #include "imu/sensor/sensor_imu.h"
 #include "imu/capture/capture_imu.h"
-#include "imu/processor/processor_imu.h"
+#include "imu/processor/processor_imu_3d.h"
 #include "imu/factor/factor_imu.h"
 
 // BODYDYNAMICS
diff --git a/demos/solo_imu_mocap.cpp b/demos/solo_imu_mocap.cpp
index a8f3934463c9e49ec4e292993f86832998afcc2f..909215597a25f97fbc03e4fb1e120cc9e0a4d98e 100644
--- a/demos/solo_imu_mocap.cpp
+++ b/demos/solo_imu_mocap.cpp
@@ -59,7 +59,7 @@
 // IMU
 #include "imu/sensor/sensor_imu.h"
 #include "imu/capture/capture_imu.h"
-#include "imu/processor/processor_imu.h"
+#include "imu/processor/processor_imu_3d.h"
 #include "imu/factor/factor_imu.h"
 
 // BODYDYNAMICS
@@ -562,7 +562,7 @@ int main (int argc, char **argv) {
         Vector6d pose_err = Vector6d::Zero();
         for (auto fac: fac_lst){
             if (fac->getProcessor() == proc_imu){
-                auto f = std::dynamic_pointer_cast<FactorImu>(fac);
+                auto f = std::dynamic_pointer_cast<FactorImu3d>(fac);
                 if (f){
                     imu_err = f->error();
                 }
diff --git a/demos/solo_kine_mocap.cpp b/demos/solo_kine_mocap.cpp
index 40d4aa208af3f04d9aa48cda6c5f609659ae6fa2..346bf88854e1a1635fe9b06d9d3f2b8c5bdc59ed 100644
--- a/demos/solo_kine_mocap.cpp
+++ b/demos/solo_kine_mocap.cpp
@@ -59,7 +59,7 @@
 // IMU
 #include "imu/sensor/sensor_imu.h"
 #include "imu/capture/capture_imu.h"
-#include "imu/processor/processor_imu.h"
+#include "imu/processor/processor_imu_3d.h"
 #include "imu/factor/factor_imu.h"
 
 // BODYDYNAMICS
diff --git a/demos/solo_real_povcdl_estimation.cpp b/demos/solo_real_povcdl_estimation.cpp
index 08d0d967330d7cf51588d139393712551b641889..a29f965004e842926c60a89d80a2bdc37133917b 100644
--- a/demos/solo_real_povcdl_estimation.cpp
+++ b/demos/solo_real_povcdl_estimation.cpp
@@ -50,7 +50,7 @@
 // IMU
 #include "imu/sensor/sensor_imu.h"
 #include "imu/capture/capture_imu.h"
-#include "imu/processor/processor_imu.h"
+#include "imu/processor/processor_imu_3d.h"
 
 // BODYDYNAMICS
 #include "bodydynamics/internal/config.h"
diff --git a/include/bodydynamics/factor/factor_force_torque_preint.h b/include/bodydynamics/factor/factor_force_torque_preint.h
index 7b2f18aad2afdee5f2deb15c9e726c0108a96ecd..52d3fecd2cef95df9d5b8cd3d1141a391f2f50a2 100644
--- a/include/bodydynamics/factor/factor_force_torque_preint.h
+++ b/include/bodydynamics/factor/factor_force_torque_preint.h
@@ -225,7 +225,7 @@ inline bool FactorForceTorquePreint::residual(const MatrixBase<D1> &     _c1,
      *    b*  : a bias
      *    J*  : a Jacobian matrix
      *
-     *  We use the following functions from imu_tools.h:
+     *  We use the following functions from imu_3d_tools.h:
      *    D  = betweenStates(x1,x2,dt) : obtain a Delta from two states separated dt=t2-t1
      *    D2 = plus(D1,T)              : plus operator,  D2 = D1 (+) T
      *    T  = diff(D1,D2)             : minus operator, T  = D2 (-) D1
diff --git a/include/bodydynamics/math/force_torque_delta_tools.h b/include/bodydynamics/math/force_torque_delta_tools.h
index 02589cdca3900677800b7f2784a4604575eecf65..f9aec8ef218281e4a7754eafd6431994f92dcff7 100644
--- a/include/bodydynamics/math/force_torque_delta_tools.h
+++ b/include/bodydynamics/math/force_torque_delta_tools.h
@@ -18,7 +18,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /*
- * imu_tools.h
+ * imu_3d_tools.h
  *
  *  Created on: Feb 17, 2020
  *      Author: mfourmy
diff --git a/test/gtest_factor_force_torque.cpp b/test/gtest_factor_force_torque.cpp
index 2953dcb5bae0ba8b9ae8756f57758273bd4ec07f..c9be8d8988081333d49b482e2ca388367023f97e 100644
--- a/test/gtest_factor_force_torque.cpp
+++ b/test/gtest_factor_force_torque.cpp
@@ -51,7 +51,7 @@ FactorInertialKinematics_2KF_1v_bfix,ZeroMvt:
 // Imu
 // #include "imu/internal/config.h"
 // #include "imu/capture/capture_imu.h"
-// #include "imu/processor/processor_imu.h"
+// #include "imu/processor/processor_imu_3d.h"
 // #include "imu/sensor/sensor_imu.h"
 
 // BODYDYNAMICS
diff --git a/test/gtest_factor_inertial_kinematics.cpp b/test/gtest_factor_inertial_kinematics.cpp
index fbe458ecacd97ab5a8b4ce7dbc415cfa2f0a7dc3..7736791ac15db30c670dcbcd0785609b4fd7002b 100644
--- a/test/gtest_factor_inertial_kinematics.cpp
+++ b/test/gtest_factor_inertial_kinematics.cpp
@@ -51,7 +51,7 @@ FactorInertialKinematics_1KF_1v_bfix,ZeroMvt:
 // Imu
 //#include "imu/internal/config.h"
 //#include "imu/capture/capture_imu.h"
-//#include "imu/processor/processor_imu.h"
+//#include "imu/processor/processor_imu_3d.h"
 //#include "imu/sensor/sensor_imu.h"
 
 // BODYDYNAMICS
diff --git a/test/gtest_processor_force_torque_preint.cpp b/test/gtest_processor_force_torque_preint.cpp
index a5310ae4c9cc081707a3816dada1838de984ad49..0fb5a738276e0eb7cddfdf600f4318e668724ea2 100644
--- a/test/gtest_processor_force_torque_preint.cpp
+++ b/test/gtest_processor_force_torque_preint.cpp
@@ -41,7 +41,7 @@
 // IMU
 #include "imu/sensor/sensor_imu.h"
 #include "imu/capture/capture_imu.h"
-#include "imu/processor/processor_imu.h"
+#include "imu/processor/processor_imu_3d.h"
 
 // BODYDYNAMICS
 #include "bodydynamics/internal/config.h"
diff --git a/test/gtest_processor_inertial_kinematics.cpp b/test/gtest_processor_inertial_kinematics.cpp
index 1fd6469e6d25229dce77fcd01a7c551cdd245113..76166ed026d6b96bc6f6559ba9e87676970f1126 100644
--- a/test/gtest_processor_inertial_kinematics.cpp
+++ b/test/gtest_processor_inertial_kinematics.cpp
@@ -37,7 +37,7 @@
 // Imu
 #include "imu/internal/config.h"
 #include "imu/capture/capture_imu.h"
-#include "imu/processor/processor_imu.h"
+#include "imu/processor/processor_imu_3d.h"
 #include "imu/sensor/sensor_imu.h"
 
 // BODYDYNAMICS