diff --git a/hello_wolf/processor_range_bearing.cpp b/hello_wolf/processor_range_bearing.cpp
index fa910064ed7b9a21607214486ab52691a7fb029c..89b3d7775e3c5b79dca8de4a0d2f6f5ad91d17e7 100644
--- a/hello_wolf/processor_range_bearing.cpp
+++ b/hello_wolf/processor_range_bearing.cpp
@@ -15,7 +15,7 @@ namespace wolf
 {
 
 ProcessorRangeBearing::ProcessorRangeBearing(ProcessorParamsBasePtr _params) :
-        ProcessorBase("ProcessorRangeBearing", _params)
+        ProcessorBase("ProcessorRangeBearing", 2, _params)
 {
     //
 }
diff --git a/include/core/processor/processor_base.h b/include/core/processor/processor_base.h
index bd39ef49da82605edd6f48bb27337c9823ef8ed9..55c74707c492f4f78aa5f94ef695cd3307f6853d 100644
--- a/include/core/processor/processor_base.h
+++ b/include/core/processor/processor_base.h
@@ -246,13 +246,14 @@ class ProcessorBase : public NodeBase, public std::enable_shared_from_this<Proce
         ProcessorParamsBasePtr params_;
         BufferPackKeyFrame buffer_pack_kf_;
         BufferCapture buffer_capture_;
+        int dim_;
 
     private:
         SensorBaseWPtr sensor_ptr_;
         static unsigned int processor_id_count_;
 
     public:
-        ProcessorBase(const std::string& _type, ProcessorParamsBasePtr _params);
+        ProcessorBase(const std::string& _type, int _dim, ProcessorParamsBasePtr _params);
         virtual ~ProcessorBase();
         virtual void configure(SensorBasePtr _sensor) = 0;
         virtual void remove();
diff --git a/include/core/processor/processor_loopclosure.h b/include/core/processor/processor_loopclosure.h
index a1f9f67dd14e28c617ab476608e96924d6b3e78e..b0720f3a47afdfd7878b23929923295964340ea5 100644
--- a/include/core/processor/processor_loopclosure.h
+++ b/include/core/processor/processor_loopclosure.h
@@ -47,10 +47,11 @@ class ProcessorLoopClosure : public ProcessorBase
 protected:
 
     ProcessorParamsLoopClosurePtr params_loop_closure_;
+    int _dim;
 
 public:
 
-    ProcessorLoopClosure(const std::string& _type, ProcessorParamsLoopClosurePtr _params_loop_closure);
+    ProcessorLoopClosure(const std::string& _type, int _dim, ProcessorParamsLoopClosurePtr _params_loop_closure);
 
     virtual ~ProcessorLoopClosure() = default;
     virtual void configure(SensorBasePtr _sensor) override { };
diff --git a/include/core/processor/processor_motion.h b/include/core/processor/processor_motion.h
index b8e6ceaffe553e31a2fa2807c831f9cbb405c420..2ac6c8d5949ad07c1529fd06739c0ce80211f243 100644
--- a/include/core/processor/processor_motion.h
+++ b/include/core/processor/processor_motion.h
@@ -148,6 +148,7 @@ class ProcessorMotion : public ProcessorBase, public IsMotion
     // This is the main public interface
     public:
         ProcessorMotion(const std::string& _type,
+                        int _dim,
                         SizeEigen _state_size,
                         SizeEigen _delta_size,
                         SizeEigen _delta_cov_size,
diff --git a/include/core/processor/processor_tracker.h b/include/core/processor/processor_tracker.h
index ed07d3de55a3ec8e4b9181cb8c9b3af85ba4f1cb..d7ab951643fbc2760b8d81110a9f2338a96dad36 100644
--- a/include/core/processor/processor_tracker.h
+++ b/include/core/processor/processor_tracker.h
@@ -104,9 +104,11 @@ class ProcessorTracker : public ProcessorBase
         FeatureBasePtrList new_features_last_;     ///< List of new features in \b last for landmark initialization and new key-frame creation.
         FeatureBasePtrList new_features_incoming_; ///< list of the new features of \b last successfully tracked in \b incoming
         FeatureBasePtrList known_features_incoming_; ///< list of the known features in \b last successfully tracked in \b incoming
+        int _dim;
 
     public:
         ProcessorTracker(const std::string& _type,
+                         int _dim,
                          ProcessorParamsTrackerPtr _params_tracker);
         virtual ~ProcessorTracker();
 
diff --git a/include/core/processor/processor_tracker_feature.h b/include/core/processor/processor_tracker_feature.h
index f05fb89762d6efef528c100502523b41a869af9f..b86e041d25e026762ea1413429b1c6e63a594fd7 100644
--- a/include/core/processor/processor_tracker_feature.h
+++ b/include/core/processor/processor_tracker_feature.h
@@ -85,6 +85,7 @@ class ProcessorTrackerFeature : public ProcessorTracker
         /** \brief Constructor with type
          */
         ProcessorTrackerFeature(const std::string& _type,
+                                int _dim,
                                 ProcessorParamsTrackerFeaturePtr _params_tracker_feature);
         virtual ~ProcessorTrackerFeature();
 
diff --git a/src/processor/processor_base.cpp b/src/processor/processor_base.cpp
index 3cf7743c4e673dc358f076db4dbc56376a71f46e..a35097f2c70d3b047117ae6d0c9bf81a5fe2f5da 100644
--- a/src/processor/processor_base.cpp
+++ b/src/processor/processor_base.cpp
@@ -7,10 +7,11 @@ namespace wolf {
 
 unsigned int ProcessorBase::processor_id_count_ = 0;
 
-ProcessorBase::ProcessorBase(const std::string& _type, ProcessorParamsBasePtr _params) :
+ProcessorBase::ProcessorBase(const std::string& _type, int _dim, ProcessorParamsBasePtr _params) :
         NodeBase("PROCESSOR", _type),
         processor_id_(++processor_id_count_),
         params_(_params),
+        dim_(_dim),
         sensor_ptr_()
 {
 //    WOLF_DEBUG("constructed    +p" , id());
diff --git a/src/processor/processor_loopclosure.cpp b/src/processor/processor_loopclosure.cpp
index 86fb02bf67e309071c9190b839ffcfc638422e22..3517f9e20d5bb55c40ebde25636411c5be02d9cb 100644
--- a/src/processor/processor_loopclosure.cpp
+++ b/src/processor/processor_loopclosure.cpp
@@ -11,8 +11,8 @@
 namespace wolf
 {
 
-ProcessorLoopClosure::ProcessorLoopClosure(const std::string& _type, ProcessorParamsLoopClosurePtr _params_loop_closure):
-        ProcessorBase(_type, _params_loop_closure),
+ProcessorLoopClosure::ProcessorLoopClosure(const std::string& _type, int _dim, ProcessorParamsLoopClosurePtr _params_loop_closure):
+        ProcessorBase(_type, _dim, _params_loop_closure),
         params_loop_closure_(_params_loop_closure)
 {
     //
diff --git a/src/processor/processor_motion.cpp b/src/processor/processor_motion.cpp
index 39a3d83f425201b6bc148bdd8c3ca93681ac4329..49bbbbf41e023838fde5bc6dc26fcd311dfd2ce8 100644
--- a/src/processor/processor_motion.cpp
+++ b/src/processor/processor_motion.cpp
@@ -7,13 +7,14 @@ namespace wolf
 {
 
 ProcessorMotion::ProcessorMotion(const std::string& _type,
+                                 int _dim,
                                  SizeEigen _state_size,
                                  SizeEigen _delta_size,
                                  SizeEigen _delta_cov_size,
                                  SizeEigen _data_size,
                                  SizeEigen _calib_size,
                                  ProcessorParamsMotionPtr _params_motion) :
-        ProcessorBase(_type, _params_motion),
+        ProcessorBase(_type, _dim, _params_motion),
         params_motion_(_params_motion),
         processing_step_(RUNNING_WITHOUT_PACK),
         x_size_(_state_size),
diff --git a/src/processor/processor_odom_2d.cpp b/src/processor/processor_odom_2d.cpp
index 31b7cc70be659c06b600b85637a0016677be1f07..9c3132b417318ab856095f90dd14a91186507064 100644
--- a/src/processor/processor_odom_2d.cpp
+++ b/src/processor/processor_odom_2d.cpp
@@ -5,7 +5,7 @@ namespace wolf
 {
 
 ProcessorOdom2d::ProcessorOdom2d(ProcessorParamsOdom2dPtr _params) :
-                ProcessorMotion("ProcessorOdom2d", 3, 3, 3, 2, 0, _params),
+                ProcessorMotion("ProcessorOdom2d", 2, 3, 3, 3, 2, 0, _params),
                 params_odom_2d_(_params)
 {
     unmeasured_perturbation_cov_ = _params->unmeasured_perturbation_std * _params->unmeasured_perturbation_std * Matrix3d::Identity();
diff --git a/src/processor/processor_odom_3d.cpp b/src/processor/processor_odom_3d.cpp
index ac491d9c1e56bc528c9f5692d30586f10e0f8fd4..967031e9ccd1a68fcee41567be0f7dbf7523ef2c 100644
--- a/src/processor/processor_odom_3d.cpp
+++ b/src/processor/processor_odom_3d.cpp
@@ -3,7 +3,7 @@ namespace wolf
 {
 
 ProcessorOdom3d::ProcessorOdom3d(ProcessorParamsOdom3dPtr _params) :
-                        ProcessorMotion("ProcessorOdom3d", 7, 7, 6, 6, 0, _params),
+                        ProcessorMotion("ProcessorOdom3d", 3, 7, 7, 6, 6, 0, _params),
                         params_odom_3d_ (_params),
                         k_disp_to_disp_ (0),
                         k_disp_to_rot_  (0),
diff --git a/src/processor/processor_tracker.cpp b/src/processor/processor_tracker.cpp
index 227f819941fb886e657cb03c0f0cf1422218738b..56d5ae4ae45ed40962274292328076087da7fb9f 100644
--- a/src/processor/processor_tracker.cpp
+++ b/src/processor/processor_tracker.cpp
@@ -15,8 +15,9 @@ namespace wolf
 {
 
 ProcessorTracker::ProcessorTracker(const std::string& _type,
+                                   int _dim,
                                    ProcessorParamsTrackerPtr _params_tracker) :
-        ProcessorBase(_type, _params_tracker),
+        ProcessorBase(_type, _dim, _params_tracker),
         params_tracker_(_params_tracker),
         processing_step_(FIRST_TIME_WITHOUT_PACK),
         origin_ptr_(nullptr),
diff --git a/src/processor/processor_tracker_feature.cpp b/src/processor/processor_tracker_feature.cpp
index d6ce9c065e8c0611f6e1190acf1fe4555d83cdf6..211a1aba12b12ecfb10afea00041cf82e07493be 100644
--- a/src/processor/processor_tracker_feature.cpp
+++ b/src/processor/processor_tracker_feature.cpp
@@ -11,8 +11,9 @@ namespace wolf
 {
 
 ProcessorTrackerFeature::ProcessorTrackerFeature(const std::string& _type,
+                                                 int _dim,
                                                  ProcessorParamsTrackerFeaturePtr _params_tracker_feature) :
-            ProcessorTracker(_type, _params_tracker_feature),
+            ProcessorTracker(_type, _dim, _params_tracker_feature),
             params_tracker_feature_(_params_tracker_feature)
 {
 }
diff --git a/src/processor/processor_tracker_landmark.cpp b/src/processor/processor_tracker_landmark.cpp
index c0114ace1a52790c72c084f3133ced6c3f94acb8..7035dd38de2fcfb177deef2f4ed30d28fcdd92cf 100644
--- a/src/processor/processor_tracker_landmark.cpp
+++ b/src/processor/processor_tracker_landmark.cpp
@@ -15,7 +15,7 @@ namespace wolf
 
 ProcessorTrackerLandmark::ProcessorTrackerLandmark(const std::string& _type,
                                                    ProcessorParamsTrackerLandmarkPtr _params_tracker_landmark) :
-    ProcessorTracker(_type, _params_tracker_landmark),
+    ProcessorTracker(_type, 0, _params_tracker_landmark),
     params_tracker_landmark_(_params_tracker_landmark)
 {
     //
diff --git a/test/dummy/processor_tracker_feature_dummy.h b/test/dummy/processor_tracker_feature_dummy.h
index 4f5205d152ad4b0916d5c4968e754eb8da84c023..3328edf08c0234d6b587680b9b215bc91a7ae43f 100644
--- a/test/dummy/processor_tracker_feature_dummy.h
+++ b/test/dummy/processor_tracker_feature_dummy.h
@@ -110,7 +110,7 @@ class ProcessorTrackerFeatureDummy : public ProcessorTrackerFeature
 };
 
 inline ProcessorTrackerFeatureDummy::ProcessorTrackerFeatureDummy(ProcessorParamsTrackerFeatureDummyPtr _params_tracker_feature_dummy) :
-        ProcessorTrackerFeature("ProcessorTrackerFeatureDummy", _params_tracker_feature_dummy),
+        ProcessorTrackerFeature("ProcessorTrackerFeatureDummy", 0, _params_tracker_feature_dummy),
         params_tracker_feature_dummy_(_params_tracker_feature_dummy)
 {
     //
diff --git a/test/gtest_processor_loopclosure.cpp b/test/gtest_processor_loopclosure.cpp
index 01ead38abbb2e208964ca0957625a8dfd9a22eac..d00fb93407ab75bb150a576bc434640f1c75fe12 100644
--- a/test/gtest_processor_loopclosure.cpp
+++ b/test/gtest_processor_loopclosure.cpp
@@ -24,7 +24,7 @@ private:
 
 public:
     ProcessorLoopClosureDummy(ProcessorParamsLoopClosurePtr _params_loop_closure, bool& factor_created):
-        ProcessorLoopClosure("LOOP CLOSURE DUMMY", _params_loop_closure),
+        ProcessorLoopClosure("LOOP CLOSURE DUMMY", 0, _params_loop_closure),
         factor_created(&factor_created){};
     std::pair<FrameBasePtr,CaptureBasePtr> public_selectPairKC(){ return selectPairKC();};