Skip to content

Commit c3fc045

Browse files
committed
Use hardcoded covariance matrices when new IMU noise configuration is used
Signed-off-by: Mateusz Palczuk <[email protected]>
1 parent a06007b commit c3fc045

File tree

1 file changed

+9
-56
lines changed
  • simulation/simple_sensor_simulator/include/simple_sensor_simulator/sensor_simulation/imu

1 file changed

+9
-56
lines changed

simulation/simple_sensor_simulator/include/simple_sensor_simulator/sensor_simulation/imu/imu_sensor.hpp

Lines changed: 9 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,6 @@ class ImuSensorBase
7171
{
7272
return {std::pow(stddev, 2), 0, 0, 0, std::pow(stddev, 2), 0, 0, 0, std::pow(stddev, 2)};
7373
}
74-
75-
auto calculateCovariance(const double variance0, const double variance1, const double variance2)
76-
const -> std::array<double, 9>
77-
{
78-
return {variance0, 0, 0, 0, variance1, 0, 0, 0, variance2};
79-
};
8074
};
8175

8276
template <typename MessageType>
@@ -103,51 +97,18 @@ class ImuSensor : public ImuSensorBase
10397
return;
10498
}
10599

106-
/**
107-
* @note Calculate covariance matrices based on some nominal values
108-
* These values have no technical reason, they are an educated guess of what is reasonable
109-
*/
110-
constexpr double nominal_angle{boost::math::constants::quarter_pi<double>()};
111-
// clang-format off
112-
orientation_covariance_ = calculateCovariance(
113-
calculateVariance(nominal_angle,
114-
publish.getRandomizer().orientation_r_error.multiplicative.stddev(),
115-
publish.getRandomizer().orientation_r_error.additive.stddev()),
116-
calculateVariance(nominal_angle,
117-
publish.getRandomizer().orientation_p_error.multiplicative.stddev(),
118-
publish.getRandomizer().orientation_p_error.additive.stddev()),
119-
calculateVariance(nominal_angle,
120-
publish.getRandomizer().orientation_y_error.multiplicative.stddev(),
121-
publish.getRandomizer().orientation_y_error.additive.stddev()));
122-
// clang-format on
123-
124-
constexpr double nominal_velocity{5.0};
100+
/// @note Hardcoded values as the ones used in legacy configuration by default
125101
// clang-format off
126-
angular_velocity_covariance_ = calculateCovariance(
127-
calculateVariance(nominal_velocity,
128-
publish.getRandomizer().angular_velocity_x_error.multiplicative.stddev(),
129-
publish.getRandomizer().angular_velocity_x_error.additive.stddev()),
130-
calculateVariance(nominal_velocity,
131-
publish.getRandomizer().angular_velocity_y_error.multiplicative.stddev(),
132-
publish.getRandomizer().angular_velocity_y_error.additive.stddev()),
133-
calculateVariance(nominal_velocity,
134-
publish.getRandomizer().angular_velocity_z_error.multiplicative.stddev(),
135-
publish.getRandomizer().angular_velocity_z_error.additive.stddev()));
102+
constexpr std::array<double, 9> default_covariance = {
103+
0.0001, 0.0, 0.0,
104+
0.0, 0.0001, 0.0,
105+
0.0, 0.0, 0.0001
106+
};
136107
// clang-format on
137108

138-
constexpr double nominal_acceleration{0.5};
139-
// clang-format off
140-
linear_acceleration_covariance_ = calculateCovariance(
141-
calculateVariance(nominal_acceleration,
142-
publish.getRandomizer().linear_acceleration_x_error.multiplicative.stddev(),
143-
publish.getRandomizer().linear_acceleration_x_error.additive.stddev()),
144-
calculateVariance(nominal_acceleration,
145-
publish.getRandomizer().linear_acceleration_y_error.multiplicative.stddev(),
146-
publish.getRandomizer().linear_acceleration_y_error.additive.stddev()),
147-
calculateVariance(nominal_acceleration,
148-
publish.getRandomizer().linear_acceleration_z_error.multiplicative.stddev(),
149-
publish.getRandomizer().linear_acceleration_z_error.additive.stddev()));
150-
// clang-format on
109+
orientation_covariance_ = default_covariance;
110+
angular_velocity_covariance_ = default_covariance;
111+
linear_acceleration_covariance_ = default_covariance;
151112
}
152113

153114
auto update(
@@ -170,14 +131,6 @@ class ImuSensor : public ImuSensorBase
170131
const rclcpp::Time & current_ros_time,
171132
const traffic_simulator_msgs::msg::EntityStatus & status) const -> const MessageType;
172133

173-
static auto calculateVariance(
174-
const double nominal_value, const double multiplicative_stddev, const double additive_stddev)
175-
-> double
176-
{
177-
return std::pow(nominal_value, 2) * std::pow(multiplicative_stddev, 2) +
178-
std::pow(additive_stddev, 2);
179-
}
180-
181134
const bool override_legacy_configuration_;
182135
const std::string entity_name_;
183136
const std::string frame_id_;

0 commit comments

Comments
 (0)