mad-location-manager-lib 1.0
Library for fusing GPS and ENU accelerometer data
Loading...
Searching...
No Matches
sensor_data.h
Go to the documentation of this file.
1#ifndef SENSOR_DATA_H
2#define SENSOR_DATA_H
3
4#include <cmath>
5#include <string>
6
7#include "commons.h"
8
13 double x;
14 double y;
15 double z;
16 accelerometer() : x(0.0), y(0.0), z(0.0) {}
17 accelerometer(double x, double y, double z) : x(x), y(y), z(z) {}
18};
19
23struct gyroscope {
24 double x;
25 double y;
26 double z;
27 gyroscope() : x(0.0), y(0.0), z(0.0) {}
28 gyroscope(double x, double y, double z) : x(x), y(y), z(z) {}
29};
30
35 double x;
36 double y;
37 double z;
38 magnetometer() : x(0.0), y(0.0), z(0.0) {}
39 magnetometer(double x, double y, double z) : x(x), y(y), z(z) {}
40};
42
47 double x;
48 double y;
49 double z;
50 enu_accelerometer() : x(0.0), y(0.0), z(0.0) {}
51 enu_accelerometer(double x, double y, double z) : x(x), y(y), z(z) {}
52 enu_accelerometer(double acc, double azimuth)
53 {
54 double a_rad = degree_to_rad(azimuth);
55 x = acc * cos(a_rad);
56 y = acc * sin(a_rad);
57 z = 0.0; // for now
58 }
59
60 double cartezian_angle(void) const
61 {
62 return rad_to_degree(atan2(y, x));
63 }
64
65 double acceleration(void) const
66 {
67 return sqrt(x * x + y * y);
68 }
69};
71
77 double x;
78 double y;
79 double z;
80 linear_accelerometer() : x(0.), y(0.), z(0.) {};
81 linear_accelerometer(double x, double y, double z) : x(x), y(y), z(z) {};
82};
84
90 double w, x, y, z;
91 rotation_quaternion() : w(0.), x(0.), y(0.), z(0.) {};
92 rotation_quaternion(double w, double x, double y, double z)
93 : w(w), x(x), y(y), z(z) {};
94};
96
108 double acc_y,
109 double acc_z,
110 double q_w,
111 double q_x,
112 double q_y,
113 double q_z)
114 : acc(acc_x, acc_y, acc_z), rq(q_w, q_x, q_y, q_z) {};
115};
117
121struct geopoint {
122 double latitude;
123 double longitude;
124 double altitude;
125 double error;
126
127 geopoint() : latitude(0.), longitude(0.), altitude(0.), error(1e-6) {};
129 double longitude,
130 double altitude = 0.,
131 double error = 1e-6)
135 error(error)
136 {
137 }
138};
140
144struct gps_speed {
145 double value;
146 double azimuth;
147 double error;
148
149 gps_speed() : value(0.0), azimuth(0.0), error(0.0) {}
150 gps_speed(double value, double azimuth, double error)
152 {
153 }
154};
156
163
165 gps_coordinate(double latitude,
166 double longitude,
167 double altitude,
168 double loc_error,
169 double speed_value,
170 double speed_azimuth,
171 double speed_error)
172 : location(latitude, longitude, altitude, loc_error),
174 {
175 }
176};
178
196
211
242
243std::string sdr_serialize_str(const sd_record &rec);
244
253 sd_record &rec);
254
255#endif // SENSOR_DATA_H
double degree_to_rad(double degree)
Definition commons.cpp:5
double rad_to_degree(double rad)
Definition commons.cpp:11
#define mtx_t
Definition kalman.h:20
sensor_data_record_type
Definition sensor_data.h:179
@ SD_GPS_FILTERED
GPS_FILTERED coordinates after Kalman filter applied.
Definition sensor_data.h:187
@ SD_GPS_SET
GPS_SET manually by user in visualizer.
Definition sensor_data.h:185
@ SD_ACC_ENU_GENERATED
ACC_ENU_GENERATED - with noise OR from real device.
Definition sensor_data.h:183
@ SD_RAW_ENU_ACC
Definition sensor_data.h:192
@ SD_GPS_GENERATED
GPS_GENERATED coordinates with noise.
Definition sensor_data.h:189
@ SD_ACC_ENU_SET
ACC_ENU_SET - calculated ENU acceleration based on GPS_SET points.
Definition sensor_data.h:181
@ SD_UNKNOWN
just the end of this enum
Definition sensor_data.h:194
sdr_deserialize_error
Definition sensor_data.h:245
@ SDRDE_SUCCESS
Definition sensor_data.h:246
@ SDRDE_UNEXPECTED_FMT
Definition sensor_data.h:248
@ SDRDE_UNSUPPORTED
Definition sensor_data.h:249
@ SDRDE_WRONG_HDR_SEPARATOR
Definition sensor_data.h:247
@ SDRDE_UNDEFINED
Definition sensor_data.h:250
sdr_deserialize_error sdr_deserialize_str(const std::string &str, sd_record &rec)
Definition sensor_data.cpp:171
std::string sdr_serialize_str(const sd_record &rec)
Definition sensor_data.cpp:155
accelerometer - raw accelerometer data (without g compensation)
Definition sensor_data.h:12
double z
z - axis Z
Definition sensor_data.h:15
double y
y - axis Y
Definition sensor_data.h:14
double x
x - axis X
Definition sensor_data.h:13
accelerometer()
Definition sensor_data.h:16
accelerometer(double x, double y, double z)
Definition sensor_data.h:17
enu_accelerometer - acceleration in ENU coordinates (east, north, up)
Definition sensor_data.h:46
double x
x - axis X (longitude/east)
Definition sensor_data.h:47
enu_accelerometer(double acc, double azimuth)
Definition sensor_data.h:52
double y
y - axis Y (latitude/north)
Definition sensor_data.h:48
double cartezian_angle(void) const
Definition sensor_data.h:60
enu_accelerometer()
Definition sensor_data.h:50
double acceleration(void) const
Definition sensor_data.h:65
double z
z - axis Z (altitude/up)
Definition sensor_data.h:49
enu_accelerometer(double x, double y, double z)
Definition sensor_data.h:51
geopoint - part of gps coordinate representing location
Definition sensor_data.h:121
double altitude
altitude (axis Z)
Definition sensor_data.h:124
double error
error in meters (distance from real point 68% confidence)
Definition sensor_data.h:125
geopoint(double latitude, double longitude, double altitude=0., double error=1e-6)
Definition sensor_data.h:128
double latitude
latitude (axis Y) - 0 .. M_PI
Definition sensor_data.h:122
geopoint()
Definition sensor_data.h:127
double longitude
longitude (axis X) - 0 .. 2 * M_PI
Definition sensor_data.h:123
gps_coordinate - consists of 2 independent parts : location and speed
Definition sensor_data.h:160
gps_speed speed
gps speed
Definition sensor_data.h:162
gps_coordinate()
Definition sensor_data.h:164
geopoint location
geopoint
Definition sensor_data.h:161
gps_coordinate(double latitude, double longitude, double altitude, double loc_error, double speed_value, double speed_azimuth, double speed_error)
Definition sensor_data.h:165
gps_speed - part of gps coordinate representing speed
Definition sensor_data.h:144
double value
speed in m/s
Definition sensor_data.h:145
double azimuth
azimuth in degrees (HDOP)
Definition sensor_data.h:146
gps_speed(double value, double azimuth, double error)
Definition sensor_data.h:150
double error
the estimated speed error in meters per second of this
Definition sensor_data.h:147
gps_speed()
Definition sensor_data.h:149
gyroscope - raw gyroscope data
Definition sensor_data.h:23
double z
z - around axis Z
Definition sensor_data.h:26
double x
x - around axis X
Definition sensor_data.h:24
double y
y - around axis Y
Definition sensor_data.h:25
gyroscope(double x, double y, double z)
Definition sensor_data.h:28
gyroscope()
Definition sensor_data.h:27
acceleration along each device axis, not including gravity. All values have units of m/s^2
Definition sensor_data.h:76
double y
y - axis Y
Definition sensor_data.h:78
linear_accelerometer()
Definition sensor_data.h:80
double x
x - axis X
Definition sensor_data.h:77
double z
z - axis Z
Definition sensor_data.h:79
linear_accelerometer(double x, double y, double z)
Definition sensor_data.h:81
magnetometer - raw magnetometer data
Definition sensor_data.h:34
double z
z - axis Z
Definition sensor_data.h:37
double x
x - axis X
Definition sensor_data.h:35
double y
y - axis Y
Definition sensor_data.h:36
magnetometer()
Definition sensor_data.h:38
magnetometer(double x, double y, double z)
Definition sensor_data.h:39
Raw accelerometer data with rotation quaternion in ENU frame.
Definition sensor_data.h:100
raw_enu_accelerometer(double acc_x, double acc_y, double acc_z, double q_w, double q_x, double q_y, double q_z)
Definition sensor_data.h:107
rotation_quaternion rq
Rotation quaternion.
Definition sensor_data.h:102
raw_enu_accelerometer(const linear_accelerometer &acc, const rotation_quaternion &rq)
Definition sensor_data.h:104
raw_enu_accelerometer()
Definition sensor_data.h:103
linear_accelerometer acc
Linear accelerometer data.
Definition sensor_data.h:101
rotation_quaternion - normalized quaternion in form [w, x, y, z] describing device orientation in ENU...
Definition sensor_data.h:89
double y
Definition sensor_data.h:90
double w
Definition sensor_data.h:90
rotation_quaternion()
Definition sensor_data.h:91
rotation_quaternion(double w, double x, double y, double z)
Definition sensor_data.h:92
double z
Definition sensor_data.h:90
double x
Definition sensor_data.h:90
sd_record_hdr - header for all sensor data output records
Definition sensor_data.h:200
sd_record_hdr(sensor_data_record_type type, double ts)
Definition sensor_data.h:205
sd_record_hdr()
Definition sensor_data.h:204
double timestamp
ts of event (in seconds)
Definition sensor_data.h:202
sensor_data_record_type type
type of header
Definition sensor_data.h:201
Container for data records received from logger.
Definition sensor_data.h:218
sd_record(sd_record_hdr hdr, enu_accelerometer acc)
Definition sensor_data.h:232
sd_record(sd_record_hdr hdr, gps_coordinate gps)
Definition sensor_data.h:236
sd_record_hdr hdr
Record header with type and metadata.
Definition sensor_data.h:219
sd_record()=default
union sd_record::data_t data
sensor data storage
Union for different sensor data types.
Definition sensor_data.h:223
gps_coordinate gps
gps coordinate (location + speed)
Definition sensor_data.h:226
data_t()
Definition sensor_data.h:224
enu_accelerometer acc
accelerometer data (ENU)
Definition sensor_data.h:225
raw_enu_accelerometer raw_enu_acc
Definition sensor_data.h:227