diff --git a/CMakeLists.txt b/CMakeLists.txt
index 07eea06ecda0900215cd10e005addd14be8c12f7..5ace0d9da72e2bb296a7c0a5164b73d6da15a104 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -135,7 +135,8 @@ include_directories(
 #   src/${PROJECT_NAME}/wolf_ros.cpp
 # )
 add_library(subscriber_${PROJECT_NAME}
-  src/subscriber_imu.cpp)
+  src/subscriber_imu.cpp
+  src/subscriber_imu_enablable.cpp)
 
 ## Add cmake target dependencies of the library
 ## as an example, code may need to be generated before libraries
diff --git a/include/subscriber_imu.h b/include/subscriber_imu.h
index 97b62924a32c4521d34a0187fe1c6b4a15dd8bf1..7d683cfd5356b6b749b6ef18b9a387bb9f97d3c0 100644
--- a/include/subscriber_imu.h
+++ b/include/subscriber_imu.h
@@ -1,3 +1,6 @@
+#ifndef WOLF_SUBSCRIBER_IMU_H_
+#define WOLF_SUBSCRIBER_IMU_H_
+
 /**************************
  *      WOLF includes     *
  **************************/
@@ -41,3 +44,5 @@ class SubscriberImu : public Subscriber
         static std::shared_ptr<Subscriber> create(const std::string& _unique_name, const ParamsServer& _params, const SensorBasePtr _sensor_ptr);
 };
 WOLF_REGISTER_SUBSCRIBER(SubscriberImu)
+
+#endif
diff --git a/include/subscriber_imu_enablable.h b/include/subscriber_imu_enablable.h
new file mode 100644
index 0000000000000000000000000000000000000000..e062b775af80d94f5a4494ecd7e74e93463bfd99
--- /dev/null
+++ b/include/subscriber_imu_enablable.h
@@ -0,0 +1,55 @@
+#ifndef WOLF_SUBSCRIBER_IMU_ENABLABLE_H_
+#define WOLF_SUBSCRIBER_IMU_ENABLABLE_H_
+
+/**************************
+ *      WOLF includes     *
+ **************************/
+#include <core/yaml/parser_yaml.h>
+#include <core/common/wolf.h>
+#include <core/problem/problem.h>
+#include <core/utils/params_server.h>
+#include <imu/capture/capture_imu.h>
+#include <imu/sensor/sensor_imu.h>
+
+/**************************
+ *      ROS includes      *
+ **************************/
+#include <ros/ros.h>
+#include <sensor_msgs/Imu.h>
+#include <std_msgs/Bool.h>
+
+/**************************
+ *      STD includes      *
+ **************************/
+#include <iostream>
+#include <iomanip>
+#include <queue>
+
+/**************************
+ *    WOLF-ROS includes   *
+ **************************/
+#include "subscriber_imu.h"
+
+using namespace wolf;
+
+class SubscriberImuEnablable : public SubscriberImu
+{
+    protected:
+        ros::Subscriber enable_sub_;
+        bool enabled_;
+
+    public:
+        // Constructor
+        SubscriberImuEnablable(const SensorBasePtr& sensor_ptr);
+
+        virtual void initSubscriber(ros::NodeHandle& nh, const std::string& topic);
+
+        void callback(const sensor_msgs::Imu::ConstPtr& msg);
+
+        void enableCallback(const std_msgs::Bool::ConstPtr& msg);
+
+        static std::shared_ptr<Subscriber> create(const std::string& _unique_name, const ParamsServer& _params, const SensorBasePtr _sensor_ptr);
+};
+WOLF_REGISTER_SUBSCRIBER(SubscriberImuEnablable)
+
+#endif
diff --git a/src/subscriber_imu_enablable.cpp b/src/subscriber_imu_enablable.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fdb16a1eb769bdac110736d44e63bd397cbb04d6
--- /dev/null
+++ b/src/subscriber_imu_enablable.cpp
@@ -0,0 +1,34 @@
+#include "../include/subscriber_imu_enablable.h"
+
+using namespace wolf;
+
+// Constructor
+SubscriberImuEnablable::SubscriberImuEnablable(const SensorBasePtr& sensor_ptr) :
+        SubscriberImu(sensor_ptr),
+        enabled_(false)
+{
+    assert(std::dynamic_pointer_cast<SensorImu>(sensor_ptr) != nullptr);
+}
+
+void SubscriberImuEnablable::initSubscriber(ros::NodeHandle& nh, const std::string& topic)
+{
+    sub_     = nh.subscribe(topic, 1, &SubscriberImuEnablable::callback, this);
+}
+
+void SubscriberImuEnablable::callback(const sensor_msgs::Imu::ConstPtr& msg)
+{
+    if (enabled_)
+        SubscriberImu::callback(msg);
+}
+
+void SubscriberImuEnablable::enableCallback(const std_msgs::Bool::ConstPtr& msg)
+{
+    ROS_DEBUG("enable callback!");
+    if (msg->data)
+        enabled_ = true;
+}
+
+std::shared_ptr<Subscriber> SubscriberImuEnablable::create(const std::string& _unique_name, const ParamsServer& _params, const SensorBasePtr _sensor_ptr)
+{
+    return std::make_shared<SubscriberImuEnablable>(_sensor_ptr);
+}