STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
NavigationMessage.hpp
Go to the documentation of this file.
1#ifndef NAVIGATION_MESSAGE_HPP
2#define NAVIGATION_MESSAGE_HPP
3
4#include <array>
5#include <cstdint>
6
7#include "CommsMessage.hpp"
8
9/**
10 * @brief Navigation Message
11 *
12 * Contains navigation state from EKF with position, velocity, attitude, and engine state
13 */
15 comms::CommsMessage<double, // (0) timestamp (s) - timestamp
16 double, // (1) position_x (m) - X position
17 double, // (2) position_y (m) - Y position
18 double, // (3) position_z (m) - Z position
19 double, // (4) velocity_x (m/s) - X velocity
20 double, // (5) velocity_y (m/s) - Y velocity
21 double, // (6) velocity_z (m/s) - Z velocity
22 double, // (7) attitude_qw - quaternion W component
23 double, // (8) attitude_qx - quaternion X component
24 double, // (9) attitude_qy - quaternion Y component
25 double, // (10) attitude_qz - quaternion Z component
26 double, // (11) angular_velocity_x (rad/s) - X angular velocity
27 double, // (12) angular_velocity_y (rad/s) - Y angular velocity
28 double, // (13) angular_velocity_z (rad/s) - Z angular velocity
29 double, // (14) acceleration_x (m/s²) - X acceleration
30 double, // (15) acceleration_y (m/s²) - Y acceleration
31 double, // (16) acceleration_z (m/s²) - Z acceleration
32 double, // (17) engine_thrust (N) - engine thrust
33 double, // (18) engine_mass (kg) - vehicle mass
34 double, // (19) navigation_quality (0-1) - navigation quality
35 uint8_t, // (20) navigation_mode - navigation mode
36 bool, // (21) navigation_valid - navigation validity
37 uint64_t>; // (22) time_monotonic (ns) - monotonic timestamp
38
39// Function to set navigation measurements
41 NavigationMessage& message, double timestamp, double position_x, double position_y,
42 double position_z, double velocity_x, double velocity_y, double velocity_z, double attitude_qw,
43 double attitude_qx, double attitude_qy, double attitude_qz, double angular_velocity_x,
44 double angular_velocity_y, double angular_velocity_z, double acceleration_x,
45 double acceleration_y, double acceleration_z, double engine_thrust, double engine_mass,
46 double navigation_quality, uint8_t navigation_mode, bool navigation_valid,
47 uint64_t time_monotonic) {
48 message.setField<0>(timestamp);
49 message.setField<1>(position_x);
50 message.setField<2>(position_y);
51 message.setField<3>(position_z);
52 message.setField<4>(velocity_x);
53 message.setField<5>(velocity_y);
54 message.setField<6>(velocity_z);
55 message.setField<7>(attitude_qw);
56 message.setField<8>(attitude_qx);
57 message.setField<9>(attitude_qy);
58 message.setField<10>(attitude_qz);
59 message.setField<11>(angular_velocity_x);
60 message.setField<12>(angular_velocity_y);
61 message.setField<13>(angular_velocity_z);
62 message.setField<14>(acceleration_x);
63 message.setField<15>(acceleration_y);
64 message.setField<16>(acceleration_z);
65 message.setField<17>(engine_thrust);
66 message.setField<18>(engine_mass);
67 message.setField<19>(navigation_quality);
68 message.setField<20>(navigation_mode);
69 message.setField<21>(navigation_valid);
70 message.setField<22>(time_monotonic);
71}
72
74 NavigationMessage message;
75 set_navigation_measurement(message, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0,
76 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000.0, 0.95, 0, true, 0);
77 return message;
78}
79
80#endif // NAVIGATION_MESSAGE_HPP
comms::CommsMessage< double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, uint8_t, bool, uint64_t > NavigationMessage
Navigation Message.
static void set_navigation_measurement(NavigationMessage &message, double timestamp, double position_x, double position_y, double position_z, double velocity_x, double velocity_y, double velocity_z, double attitude_qw, double attitude_qx, double attitude_qy, double attitude_qz, double angular_velocity_x, double angular_velocity_y, double angular_velocity_z, double acceleration_x, double acceleration_y, double acceleration_z, double engine_thrust, double engine_mass, double navigation_quality, uint8_t navigation_mode, bool navigation_valid, uint64_t time_monotonic)
static NavigationMessage generateTestMessageNavigation()
CommsMessage - Template-based message serialization.