127 using StorageType = Eigen::Matrix<double, 6, 1>;
128 using DataType = geometry_msgs::msg::WrenchStamped;
130 static void initialize(StorageType &
storage)
136 static bool is_nan(
const StorageType &
storage) {
return storage.hasNaN(); }
138 static bool is_finite(
const DataType & data)
140 return std::isfinite(data.wrench.force.x) && std::isfinite(data.wrench.force.y) &&
141 std::isfinite(data.wrench.force.z) && std::isfinite(data.wrench.torque.x) &&
142 std::isfinite(data.wrench.torque.y) && std::isfinite(data.wrench.torque.z);
145 static bool is_empty(
const StorageType &
storage)
151 static void assign(DataType &
data_in,
const StorageType &
storage)
161 static void assign(StorageType &
storage,
const DataType &
data_in)
173 static void validate_input(
182 throw std::runtime_error(
183 "Frame ID changed between filter updates! Out: " +
data_out.header.frame_id +
184 ", In: " +
data_in.header.frame_id);
188 static void add_metadata(DataType &
data_out,
const DataType &
data_in)