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>;
69 const std::chrono::system_clock::time_point & acquisition_time,
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 ...};
149 std::chrono::system_clock::time_point m_acquisition_time;
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_ T
Definition: catr_diff.py:22
Measurement(const std::chrono::system_clock::time_point &acquisition_time, const MeasurementVector &values, const VarianceVector &variances={})
Definition: measurement.hpp:68
This file includes common type definition.
const VarianceVector & get_variances() const noexcept
Definition: measurement.hpp:83
static MapMatrix< T, kNumOfStates > get_observation_to_state_mapping()
Definition: measurement.hpp:105
Vector< T, kFullStateSize > get_values_in_full_state(const Vector< T, kFullStateSize > &donor_state=Vector< T, kFullStateSize >::Zero()) const
Definition: measurement.hpp:133
const MeasurementVector & get_values() const noexcept
Definition: measurement.hpp:77
const std::chrono::system_clock::time_point & get_acquisition_time() const noexcept
Definition: measurement.hpp:89
Definition: measurement.hpp:46
This file defines the lanelet2_map_provider_node class.
Definition: quick_sort.hpp:24