onboardsdk
Loading...
Searching...
No Matches
ImuData.hpp
1#pragma once
2#include "../utils/eigen_formatters.hpp"
3#include "Eigen/Geometry"
4
5namespace blunux::imu {
6
13struct ImuData {
17 Eigen::Vector3d acc = Eigen::Vector3d::Zero();
21 Eigen::Vector3d gyro = Eigen::Vector3d::Zero();
25 Eigen::Vector3d mag = Eigen::Vector3d::Zero();
29 float temp{};
30};
31
32} // namespace blunux::imu
33
37template <>
38struct fmt::formatter<blunux::imu::ImuData> {
45 template <typename ParseContext>
46 // NOLINTNEXTLINE(runtime/references)
47 constexpr auto parse(ParseContext& ctx) {
48 return ctx.begin();
49 }
50
58 template <typename FormatContext>
59 // NOLINTNEXTLINE(runtime/references)
60 auto format(blunux::imu::ImuData const& data, FormatContext& ctx) const {
61 return fmt::format_to(ctx.out(),
62 "acc: (x: {:.3f} y: {:.3f} z: {:.3f}) "
63 "gyro: (x: {:.3f} y: {:.3f} z: {:.3f}) "
64 "mag: (x: {:.3f} y: {:.3f} z: {:.3f})",
65 data.acc.x(), data.acc.y(), data.acc.z(),
66 data.gyro.x(), data.gyro.y(), data.gyro.z(),
67 data.mag.x(), data.mag.y(), data.mag.z());
68 }
69};
70
77inline std::ostream& operator<<(std::ostream& os, blunux::imu::ImuData data) {
78 return os << fmt::format("{}", data);
79}
Structure representing IMU data.
Definition ImuData.hpp:13
float temp
Temperature in °C.
Definition ImuData.hpp:29
Eigen::Vector3d gyro
Angular velocity in rad/s.
Definition ImuData.hpp:21
Eigen::Vector3d mag
Magnetic field in uT.
Definition ImuData.hpp:25
Eigen::Vector3d acc
Acceleration in g.
Definition ImuData.hpp:17
constexpr auto parse(ParseContext &ctx)
Parses the format string.
Definition ImuData.hpp:47
auto format(blunux::imu::ImuData const &data, FormatContext &ctx) const
Formats the ImuData object.
Definition ImuData.hpp:60