STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
IMUMessage.hpp
Go to the documentation of this file.
1#ifndef IMU_MESSAGE_HPP
2#define IMU_MESSAGE_HPP
3
4#include <array>
5#include <cstdint>
6
7#include "CommsMessage.hpp"
8
9/**
10 * @brief IMU (Inertial Measurement Unit) sensor message
11 * Contains accelerometer and gyroscope data
12 */
13using IMUMessage = comms::CommsMessage<double, // (0) time_imu (s) - timestamp
14 double, // (1) accel_x (m/s^2) - x-axis acceleration
15 double, // (2) accel_y (m/s^2) - y-axis acceleration
16 double, // (3) accel_z (m/s^2) - z-axis acceleration
17 double, // (4) gyro_x (rad/s) - x-axis angular velocity
18 double, // (5) gyro_y (rad/s) - y-axis angular velocity
19 double, // (6) gyro_z (rad/s) - z-axis angular velocity
20 uint64_t>; // (7) time_monotonic (ns) - monotonic timestamp
21
22// Function to set IMU measurements
23static void set_imu_measurement(IMUMessage& message, double time_imu,
24 const std::array<double, 3>& accelerometer,
25 const std::array<double, 3>& gyroscope, uint64_t time_monotonic) {
26 message.setField<0>(time_imu);
27 message.setField<1>(accelerometer[0]);
28 message.setField<2>(accelerometer[1]);
29 message.setField<3>(accelerometer[2]);
30 message.setField<4>(gyroscope[0]);
31 message.setField<5>(gyroscope[1]);
32 message.setField<6>(gyroscope[2]);
33 message.setField<7>(time_monotonic);
34}
35
37 IMUMessage message;
38 std::array<double, 3> accel = {0.0, 0.0, 9.81}; // Gravity
39 std::array<double, 3> gyro = {0.0, 0.0, 0.0}; // No rotation
40 set_imu_measurement(message, 0.0, accel, gyro, 0);
41 return message;
42}
43
44#endif // IMU_MESSAGE_HPP
static void set_imu_measurement(IMUMessage &message, double time_imu, const std::array< double, 3 > &accelerometer, const std::array< double, 3 > &gyroscope, uint64_t time_monotonic)
comms::CommsMessage< double, double, double, double, double, double, double, uint64_t > IMUMessage
IMU (Inertial Measurement Unit) sensor message Contains accelerometer and gyroscope data.
static IMUMessage generateTestMessageIMU()
CommsMessage - Template-based message serialization.