18 #ifndef STATE_ESTIMATION_NODES__MEASUREMENT_HPP_
19 #define STATE_ESTIMATION_NODES__MEASUREMENT_HPP_
45 template<
typename T, std::uint32_t... kMeasurementModalities>
48 static constexpr std::int32_t EntriesCount =
sizeof...(kMeasurementModalities);
50 using MeasurementModalityArray =
51 std::array<std::uint32_t, static_cast<std::size_t>(EntriesCount)>;
53 template<
typename S, std::
int32_t kSize>
54 using Vector = Eigen::Matrix<S, kSize, 1U>;
55 template<
typename S, std::
int32_t kNumOfColumns>
56 using MapMatrix = Eigen::Matrix<S, EntriesCount, kNumOfColumns>;
58 using MeasurementVector = Vector<T, EntriesCount>;
59 using VarianceVector = Vector<T, EntriesCount>;
70 const MeasurementVector & values,
const VarianceVector & variances = {})
71 : m_acquisition_time{acquisition_time}, m_measurement_values{values}, m_variances{variances} {}
77 inline const MeasurementVector &
get_values() const noexcept {
return m_measurement_values;}
83 inline const VarianceVector &
get_variances() const noexcept {
return m_variances;}
91 return m_acquisition_time;
104 template<std::
int32_t kNumOfStates>
107 using MatrixT = MapMatrix<T, kNumOfStates>;
108 MatrixT observation_to_state_mapping{MatrixT::Zero()};
109 for (
auto i = 0U; i < kMeasurementModalitiesArray.size(); ++i) {
110 observation_to_state_mapping(i, kMeasurementModalitiesArray[i]) =
static_cast<T>(1.0);
112 return observation_to_state_mapping;
132 template<std::
int32_t kFullStateSize>
134 const Vector<T, kFullStateSize> & donor_state = Vector<T, kFullStateSize>::Zero())
const
136 static_assert(kFullStateSize >= EntriesCount,
"State too small to contain this measurement.");
137 Vector<T, kFullStateSize> state{donor_state};
138 for (
auto i = 0U; i < kMeasurementModalitiesArray.size(); ++i) {
139 state[kMeasurementModalitiesArray[i]] = m_measurement_values[i];
146 static constexpr MeasurementModalityArray kMeasurementModalitiesArray {
147 kMeasurementModalities ...};
151 MeasurementVector m_measurement_values{};
153 VarianceVector m_variances{};
156 template<
typename T, std::uint32_t... kMeasurementModalities>
157 constexpr
typename Measurement<
T, kMeasurementModalities...>::MeasurementModalityArray
158 Measurement<
T, kMeasurementModalities...>::kMeasurementModalitiesArray;
164 #endif // STATE_ESTIMATION_NODES__MEASUREMENT_HPP_