<commit_before>/**************************************************************************/ /**
 * @brief Platform position/attitude solution messages.
 ******************************************************************************/

#pragma once

#include "point_one/fusion_engine/messages/defs.h"

namespace point_one {
namespace fusion_engine {
namespace messages {

// Enforce 4-byte alignment and packing of all data structures and values so
// that floating point values are aligned on platforms that require it.
#pragma pack(push, 4)

/**
 * @brief Platform pose solution (position, velocity, attitude). \[@ref
 *        MessageType::POSE\]
 *
 * @note
 * All data is timestamped using the Point One Time, which is a monotonic
 * timestamp referenced to the start of the device. Corresponding messages (@ref
 * GNSSInfoMessage, @ref IMUCorrectionsMessage, etc.) may be associated using
 * their @ref p1_time values.
 */
struct PoseMessage {
  /** The time of the message, in P1 time (beginning at power-on). */
  Timestamp p1_time;

  /** The GPS time of the message, if available, referenced to 1980/1/6. */
  Timestamp gps_time;

  /** The type of this position solution. */
  SolutionType solution_type;

  uint8_t reserved[3] = {0};

  /**
   * The WGS-84 geodetic latitude, longitude, and altitude (in degrees/meters).
   */
  double lla_deg[3] = {NAN, NAN, NAN};

  /**
   * The platform attitude (in degrees), if known, described as Euler-321 angles
   * (yaw, pitch, roll), or `NAN` if attitude has not been initialized.
   *
   * @note
   * The platform body axes are defined as +x forward, +y left, and +z up. A
   * positive yaw is a left turn, positive pitch points the nose of the vehicle
   * down, and positive roll is a roll toward the right. Yaw is measured from
   * east in a counter-clockwise direction. For example, north is +90 degrees.
   */
  double ypr_deg[3] = {NAN, NAN, NAN};

  /**
   * The platform body velocity (in meters/second), resolved in the local level
   * frame: east, north, up.
   */
  double velocity_enu_mps[3] = {NAN, NAN, NAN};

  /**
   * The X/Y/Z position standard deviation (in meters), resolved in the ECEF
   * frame.
   */<commit_msg>Clarify Euler rotation as intrinsic.<commit_after>/**************************************************************************/ /**
 * @brief Platform position/attitude solution messages.
 ******************************************************************************/

#pragma once

#include "point_one/fusion_engine/messages/defs.h"

namespace point_one {
namespace fusion_engine {
namespace messages {

// Enforce 4-byte alignment and packing of all data structures and values so
// that floating point values are aligned on platforms that require it.
#pragma pack(push, 4)

/**
 * @brief Platform pose solution (position, velocity, attitude). \[@ref
 *        MessageType::POSE\]
 *
 * @note
 * All data is timestamped using the Point One Time, which is a monotonic
 * timestamp referenced to the start of the device. Corresponding messages (@ref
 * GNSSInfoMessage, @ref IMUCorrectionsMessage, etc.) may be associated using
 * their @ref p1_time values.
 */
struct PoseMessage {
  /** The time of the message, in P1 time (beginning at power-on). */
  Timestamp p1_time;

  /** The GPS time of the message, if available, referenced to 1980/1/6. */
  Timestamp gps_time;

  /** The type of this position solution. */
  SolutionType solution_type;

  uint8_t reserved[3] = {0};

  /**
   * The WGS-84 geodetic latitude, longitude, and altitude (in degrees/meters).
   */
  double lla_deg[3] = {NAN, NAN, NAN};

  /**
   * The platform attitude (in degrees), if known, described as intrinsic
   * Euler-321 angles (yaw, pitch, roll), or `NAN` if attitude has not been
   * initialized.
   *
   * @note
   * The platform body axes are defined as +x forward, +y left, and +z up. A
   * positive yaw is a left turn, positive pitch points the nose of the vehicle
   * down, and positive roll is a roll toward the right. Yaw is measured from
   * east in a counter-clockwise direction. For example, north is +90 degrees.
   */
  double ypr_deg[3] = {NAN, NAN, NAN};

  /**
   * The platform body velocity (in meters/second), resolved in the local level
   * frame: east, north, up.
   */
  double velocity_enu_mps[3] = {NAN, NAN, NAN};

  /**
   * The X/Y/Z position standard deviation (in meters), resolved in the ECEF
   * frame.
   */
{'fraction_non_alphanumeric': 0.16583822864889292, 'fraction_numerical': 0.010845006778129237, 'mean_word_length': 3.635602094240838, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2882957', 'n_tokens_mistral': 1322, 'n_tokens_neox': 1240, 'n_words': 515}