diff --git a/demos/sensor_imu.yaml b/demos/sensor_imu.yaml
index 3c78a00d35c785fe73381d8f6ce99a705d27ce77..38a3df944cc7e8a7021e0bfe418fb5c79b324b2f 100644
--- a/demos/sensor_imu.yaml
+++ b/demos/sensor_imu.yaml
@@ -7,3 +7,5 @@ motion_variances:
     wb_initial_stdev:       0.350     # rad/sec - initial bias 
     ab_rate_stdev:          0.1       # m/s2/sqrt(s)           
     wb_rate_stdev:          0.0400    # rad/s/sqrt(s)
+
+dynamic_imu_bias: true
\ No newline at end of file
diff --git a/include/imu/sensor/sensor_imu.h b/include/imu/sensor/sensor_imu.h
index 7e3e2b38bf38ebf29e5f0957b2735434421f1704..fc6f6990ecb20d5c63cdfac31f54bcebd9bcc547 100644
--- a/include/imu/sensor/sensor_imu.h
+++ b/include/imu/sensor/sensor_imu.h
@@ -47,6 +47,9 @@ struct ParamsSensorImu : public ParamsSensorBase
     double ab_rate_stdev = 0.00001;
     double wb_rate_stdev = 0.00001;
 
+    // TODO: NOT necessary after the big refactor
+    bool dynamic_imu_bias = true;
+
     ~ParamsSensorImu() override = default;
     ParamsSensorImu()
     {
@@ -61,6 +64,7 @@ struct ParamsSensorImu : public ParamsSensorBase
         wb_initial_stdev    = _server.getParam<double>(prefix + _unique_name + "/wb_initial_stdev");
         ab_rate_stdev       = _server.getParam<double>(prefix + _unique_name + "/ab_rate_stdev");
         wb_rate_stdev       = _server.getParam<double>(prefix + _unique_name + "/wb_rate_stdev");
+        dynamic_imu_bias    = _server.getParam<bool>  (prefix + _unique_name + "/dynamic_imu_bias");
     }
     std::string print() const override
     {
@@ -70,7 +74,8 @@ struct ParamsSensorImu : public ParamsSensorBase
             + "ab_initial_stdev: "  + std::to_string(ab_initial_stdev)  + "\n"
             + "wb_initial_stdev: "  + std::to_string(wb_initial_stdev)  + "\n"
             + "ab_rate_stdev: "     + std::to_string(ab_rate_stdev)     + "\n"
-            + "wb_rate_stdev: "     + std::to_string(wb_rate_stdev)     + "\n";
+            + "wb_rate_stdev: "     + std::to_string(wb_rate_stdev)     + "\n"
+            + "dynamic_imu_bias: "  + std::to_string(wb_rate_stdev)     + "\n";
     }
 };
 
diff --git a/src/sensor/sensor_imu.cpp b/src/sensor/sensor_imu.cpp
index fba6cdf5e008b6dbe12dc1c7df5875ffadef59d3..d5a676f66ac4297972f84706601fc963725805e7 100644
--- a/src/sensor/sensor_imu.cpp
+++ b/src/sensor/sensor_imu.cpp
@@ -38,7 +38,7 @@ SensorImu::SensorImu(const Eigen::VectorXd& _extrinsics, const ParamsSensorImu&
                    std::make_shared<StateQuaternion>(_extrinsics.tail(4), true, false),
                    std::make_shared<StateParams6>(Vector6d::Zero(), false),
                    (Eigen::Vector6d()<<_params.a_noise,_params.a_noise,_params.a_noise,_params.w_noise,_params.w_noise,_params.w_noise).finished(),
-                   false, false, true),
+                   false, false, _params.dynamic_imu_bias),
         a_noise(_params.a_noise),
         w_noise(_params.w_noise),
         ab_initial_stdev(_params.ab_initial_stdev),
diff --git a/src/yaml/sensor_imu_yaml.cpp b/src/yaml/sensor_imu_yaml.cpp
index e530b244596d202833a88b6c9c48150025d7ec6f..cff3ec8a4a936d450583c968d3db631adfbc6f8d 100644
--- a/src/yaml/sensor_imu_yaml.cpp
+++ b/src/yaml/sensor_imu_yaml.cpp
@@ -59,6 +59,8 @@ static ParamsSensorBasePtr createParamsSensorImu(const std::string & _filename_d
         params->ab_rate_stdev       = variances["ab_rate_stdev"]    .as<double>();
         params->wb_rate_stdev       = variances["wb_rate_stdev"]    .as<double>();
 
+        params->dynamic_imu_bias    = config["dynamic_imu_bias"]    .as<bool>();
+
         return params;
     }
 
diff --git a/test/yaml/sensor_imu.yaml b/test/yaml/sensor_imu.yaml
index 3c78a00d35c785fe73381d8f6ce99a705d27ce77..38a3df944cc7e8a7021e0bfe418fb5c79b324b2f 100644
--- a/test/yaml/sensor_imu.yaml
+++ b/test/yaml/sensor_imu.yaml
@@ -7,3 +7,5 @@ motion_variances:
     wb_initial_stdev:       0.350     # rad/sec - initial bias 
     ab_rate_stdev:          0.1       # m/s2/sqrt(s)           
     wb_rate_stdev:          0.0400    # rad/s/sqrt(s)
+
+dynamic_imu_bias: true
\ No newline at end of file
diff --git a/test/yaml/sensor_imu_static_init.yaml b/test/yaml/sensor_imu_static_init.yaml
index 700b8d6762b91b38e96391f6032b2c7c4221eabc..e8df83cd8f81b954affb9ebb05e8cb65c8b0f0de 100644
--- a/test/yaml/sensor_imu_static_init.yaml
+++ b/test/yaml/sensor_imu_static_init.yaml
@@ -7,3 +7,5 @@ motion_variances:
     wb_initial_stdev:       0.001     # rad/sec - initial bias 
     ab_rate_stdev:          0.001       # m/s2/sqrt(s)           
     wb_rate_stdev:          0.001    # rad/s/sqrt(s)
+
+dynamic_imu_bias: false
\ No newline at end of file