From 1e5ae7eaf2d5e1dba1a253ebd58bce76450e6e8e Mon Sep 17 00:00:00 2001 From: Mederic Fourmy <mederic.fourmy@gmail.com> Date: Wed, 7 Sep 2022 16:39:22 +0200 Subject: [PATCH] [skip-ci] add a argument to parameter to set IMU biases static/dynamic --- demos/sensor_imu.yaml | 2 ++ include/imu/sensor/sensor_imu.h | 7 ++++++- src/sensor/sensor_imu.cpp | 2 +- src/yaml/sensor_imu_yaml.cpp | 2 ++ test/yaml/sensor_imu.yaml | 2 ++ test/yaml/sensor_imu_static_init.yaml | 2 ++ 6 files changed, 15 insertions(+), 2 deletions(-) diff --git a/demos/sensor_imu.yaml b/demos/sensor_imu.yaml index 3c78a00d3..38a3df944 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 7e3e2b38b..fc6f6990e 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 fba6cdf5e..d5a676f66 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 e530b2445..cff3ec8a4 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 3c78a00d3..38a3df944 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 700b8d676..e8df83cd8 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 -- GitLab