0.4.1
Loading...
Searching...
No Matches
ImuOutputs.hpp
Go to the documentation of this file.
1// This file is part of INSTINCT, the INS Toolkit for Integrated
2// Navigation Concepts and Training by the Institute of Navigation of
3// the University of Stuttgart, Germany.
4//
5// This Source Code Form is subject to the terms of the Mozilla Public
6// License, v. 2.0. If a copy of the MPL was not distributed with this
7// file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
9/// @file TimeOutputs.hpp
10/// @brief Binary Group 3 - IMU Outputs
11/// @author T. Topp (topp@ins.uni-stuttgart.de)
12/// @date 2021-07-01
13
14#pragma once
15
16#include <cstdint>
17#include "util/Eigen.hpp"
18
19#include <vn/types.h>
20
22{
23/// @brief Binary Group 3 - IMU Outputs
25{
26 /// @brief Available data in this struct
27 vn::protocol::uart::ImuGroup imuField = vn::protocol::uart::ImuGroup::IMUGROUP_NONE;
28
29 /// @brief Reserved for future use.
30 ///
31 /// Status is reserved for future use. Not currently used in the current code, as such will always report 0.
32 uint16_t imuStatus{};
33
34 /// @brief Uncompensated magnetic measurement.
35 ///
36 /// The IMU magnetic field measured in units of Gauss, given in the body frame. This measurement is
37 /// compensated by the static calibration (individual factory calibration stored in flash), and the user
38 /// compensation, however it is not compensated by the onboard Hard/Soft Iron estimator.
39 Eigen::Vector3f uncompMag;
40
41 /// @brief Uncompensated acceleration measurement.
42 ///
43 /// The IMU acceleration measured in units of m/s^2, given in the body frame. This measurement is
44 /// compensated by the static calibration (individual factory calibration stored in flash), however it is not
45 /// compensated by any dynamic calibration such as bias compensation from the onboard INS Kalman filter.
46 Eigen::Vector3f uncompAccel;
47
48 /// @brief Uncompensated angular rate measurement.
49 ///
50 /// The IMU angular rate measured in units of rad/s, given in the body frame. This measurement is compensated
51 /// by the static calibration (individual factory calibration stored in flash), however it is not compensated by any
52 /// dynamic calibration such as the bias compensation from the onboard AHRS/INS Kalman filters.
53 Eigen::Vector3f uncompGyro;
54
55 /// @brief Temperature measurement.
56 ///
57 /// The IMU temperature measured in units of Celsius.
58 float temp{};
59
60 /// @brief Pressure measurement.
61 ///
62 /// The IMU pressure measured in kilopascals. This is an absolute pressure measurement. Typical pressure at
63 /// sea level would be around 100 kPa.
64 float pres{};
65
66 /// @brief Delta time.
67 ///
68 /// The delta time (dtime) is the time interval that the delta angle and velocities are integrated over.
69 /// Delta time is given in seconds.
70 float deltaTime{};
71
72 /// @brief Delta theta angles.
73 ///
74 /// The delta time (dtime) is the time interval that the delta angle and velocities are integrated over.
75 /// The delta theta (dtheta) is the delta rotation angles incurred due to rotation, by the local body reference frame, since
76 /// the last time the values were outputted by the device. The delta velocity (dvel) is the delta velocity incurred
77 /// due to motion, by the local body reference frame, since the last time the values were outputted by the device.
78 /// The frame of reference of these delta measurements are determined by the IntegrationFrame field in the
79 /// Delta Theta and Delta Velocity Configuration Register (Register 82). These delta angles and delta velocities
80 /// are calculated based upon the onboard coning and sculling integration performed onboard the sensor at the
81 /// full IMU rate (default 800Hz). The integration for both the delta angles and velocities are reset each time
82 /// either of the values are either polled or sent out due to a scheduled asynchronous ASCII or binary output.
83 /// Delta Theta and Delta Velocity values correctly capture the nonlinearities involved in measuring motion from
84 /// a rotating strapdown platform (as opposed to the older mechanically inertial navigation systems), thus
85 /// providing you with the ability to integrate velocity and angular rate at much lower speeds (say for example
86 /// 10 Hz, reducing bandwidth and computational complexity), while still maintaining the same numeric
87 /// precision as if you had performed the integration at the full IMU measurement rate of 800Hz. Time is given
88 /// in seconds. Delta angles are given in degrees.
89 Eigen::Vector3f deltaTheta;
90
91 /// @brief Delta velocity.
92 ///
93 /// The delta velocity (dvel) is the delta velocity incurred due to motion, since the last time the values were output
94 /// by the device. The delta velocities are calculated based upon the onboard conning and sculling integration
95 /// performed onboard the sensor at the IMU sampling rate (nominally 800Hz). The integration for the delta
96 /// velocities are reset each time the values are either polled or sent out due to a scheduled asynchronous ASCII
97 /// or binary output. Delta velocity is given in meters per second.
98 Eigen::Vector3f deltaV;
99
100 /// @brief Compensated magnetic measurement.
101 ///
102 /// The IMU compensated magnetic field measured units of Gauss, and given in the body frame. This
103 /// measurement is compensated by the static calibration (individual factory calibration stored in flash), the user
104 /// compensation, and the dynamic calibration from the onboard Hard/Soft Iron estimator.
105 Eigen::Vector3f mag;
106
107 /// @brief Compensated acceleration measurement.
108 ///
109 /// The compensated acceleration measured in units of m/s^2, and given in the body frame. This measurement
110 /// is compensated by the static calibration (individual factory calibration stored in flash), the user
111 /// compensation, and the dynamic bias compensation from the onboard INS Kalman filter.
112 Eigen::Vector3f accel;
113
114 /// @brief Compensated angular rate measurement.
115 ///
116 /// The compensated angular rate measured in units of rad/s, and given in the body frame. This measurement
117 /// is compensated by the static calibration (individual factor calibration stored in flash), the user compensation,
118 /// and the dynamic bias compensation from the onboard INS Kalman filter.
119 Eigen::Vector3f angularRate;
120};
121
122} // namespace NAV::vendor::vectornav
Vector space operations.
Binary Group 3 - IMU Outputs.
Eigen::Vector3f uncompGyro
Uncompensated angular rate measurement.
vn::protocol::uart::ImuGroup imuField
Available data in this struct.
float pres
Pressure measurement.
Eigen::Vector3f accel
Compensated acceleration measurement.
uint16_t imuStatus
Reserved for future use.
Eigen::Vector3f mag
Compensated magnetic measurement.
Eigen::Vector3f deltaV
Delta velocity.
Eigen::Vector3f angularRate
Compensated angular rate measurement.
Eigen::Vector3f deltaTheta
Delta theta angles.
Eigen::Vector3f uncompAccel
Uncompensated acceleration measurement.
float temp
Temperature measurement.
Eigen::Vector3f uncompMag
Uncompensated magnetic measurement.