RawIMUData.hpp
Go to the documentation of this file.
1 #pragma once
2 
7 
8 namespace dai {
9 
10 struct IMUReport {
11  enum class Accuracy : std::uint8_t {
12  UNRELIABLE = 0,
13  LOW = 1,
14  MEDIUM = 2,
15  HIGH = 3,
16  };
22  int32_t sequence = 0;
23 
26 
29 
32 
36  std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration> getTimestamp() const {
37  return timestamp.get();
38  }
39 
44  std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration> getTimestampDevice() const {
45  return tsDevice.get();
46  }
47 
51  int32_t getSequenceNum() const {
52  return sequence;
53  }
54 };
55 DEPTHAI_SERIALIZE_EXT(IMUReport, sequence, accuracy, timestamp, tsDevice);
56 
63  float x = 0;
64  float y = 0;
65  float z = 0;
66 };
67 DEPTHAI_SERIALIZE_EXT(IMUReportAccelerometer, x, y, z, sequence, accuracy, timestamp, tsDevice);
68 
74 struct IMUReportGyroscope : public IMUReport {
75  float x = 0;
76  float y = 0;
77  float z = 0;
78 };
79 DEPTHAI_SERIALIZE_EXT(IMUReportGyroscope, x, y, z, sequence, accuracy, timestamp, tsDevice);
80 
87  float x = 0;
88  float y = 0;
89  float z = 0;
90 };
91 DEPTHAI_SERIALIZE_EXT(IMUReportMagneticField, x, y, z, sequence, accuracy, timestamp, tsDevice);
92 
99  float i = 0;
100  float j = 0;
101  float k = 0;
102  float real = 0;
104 };
105 DEPTHAI_SERIALIZE_EXT(IMUReportRotationVectorWAcc, i, j, k, real, rotationVectorAccuracy, sequence, accuracy, timestamp, tsDevice);
106 
107 #if 0
108 
114 struct IMUReportGyroscopeUncalibrated : public IMUReport {
115  /* Units are rad/s */
116  float x = 0;
117  float y = 0;
118  float z = 0;
119  float biasX = 0;
120  float biasY = 0;
121  float biasZ = 0;
122 };
123 DEPTHAI_SERIALIZE_EXT(IMUReportGyroscopeUncalibrated, x, y, z, biasX, biasY, biasZ, sequence, accuracy, timestamp, tsDevice);
124 
125 
126 
132 struct IMUReportMagneticFieldUncalibrated : public IMUReport {
133  /* Units are uTesla */
134  float x = 0;
135  float y = 0;
136  float z = 0;
137  float biasX = 0;
138  float biasY = 0;
139  float biasZ = 0;
140 };
141 DEPTHAI_SERIALIZE_EXT(IMUReportMagneticFieldUncalibrated, x, y, z, biasX, biasY, biasZ, sequence, accuracy, timestamp, tsDevice);
142 
143 
144 
150 struct IMUReportRotationVector : public IMUReport {
151  float i = 0;
152  float j = 0;
153  float k = 0;
154  float real = 0;
155 };
156 DEPTHAI_SERIALIZE_EXT(IMUReportRotationVector, i, j, k, real, sequence, accuracy, timestamp, tsDevice);
157 
158 
164 struct IMUReportGyroIntegratedRV : public IMUReport {
165  float i = 0;
166  float j = 0;
167  float k = 0;
168  float real = 0;
169  float angVelX = 0;
170  float angVelY = 0;
171  float angVelZ = 0;
172 };
173 DEPTHAI_SERIALIZE_EXT(IMUReportGyroIntegratedRV, i, j, k, real, angVelX, angVelY, angVelZ, sequence, accuracy, timestamp, tsDevice);
174 
175 #endif
176 
182 struct IMUPacket {
187 
188 #if 0
189  IMUReportAccelerometer rawAcceleroMeter;
190 
191  IMUReportAccelerometer linearAcceleroMeter;
192  IMUReportAccelerometer gravity;
193 
194  IMUReportGyroscope rawGyroscope;
195  IMUReportGyroscopeUncalibrated gyroscopeUncalibrated;
196 
197  IMUReportMagneticField rawMagneticField;
198  IMUReportMagneticFieldUncalibrated magneticFieldUncalibrated;
199 
200  IMUReportRotationVector gameRotationVector;
201  IMUReportRotationVectorWAcc geoMagRotationVector;
202 
203  IMUReportRotationVectorWAcc arvrStabilizedRotationVector;
204  IMUReportRotationVector arvrStabilizedGameRotationVector;
205  IMUReportGyroIntegratedRV gyroIntegratedRotationVector;
206 #endif
207 };
208 
209 DEPTHAI_SERIALIZE_EXT(IMUPacket, acceleroMeter, gyroscope, magneticField, rotationVector);
210 
211 struct RawIMUData : public RawBuffer {
212  std::vector<IMUPacket> packets;
213 
214  void serialize(std::vector<std::uint8_t>& metadata, DatatypeEnum& datatype) const override {
215  metadata = utility::serialize(*this);
216  datatype = DatatypeEnum::IMUData;
217  };
218 
219  DatatypeEnum getType() const override {
220  return DatatypeEnum::IMUData;
221  }
222 
224 };
225 
226 } // namespace dai
dai::IMUReportGyroscope::x
float x
Definition: RawIMUData.hpp:75
dai::IMUReportRotationVectorWAcc::k
float k
Quaternion component k.
Definition: RawIMUData.hpp:101
dai::IMUReport::timestamp
Timestamp timestamp
Definition: RawIMUData.hpp:28
dai::RawIMUData::packets
std::vector< IMUPacket > packets
Definition: RawIMUData.hpp:212
dai::IMUReportRotationVectorWAcc::j
float j
Quaternion component j.
Definition: RawIMUData.hpp:100
dai::DatatypeEnum
DatatypeEnum
Definition: DatatypeEnum.hpp:7
dai::DEPTHAI_SERIALIZE_EXT
DEPTHAI_SERIALIZE_EXT(CameraSensorConfig, width, height, minFps, maxFps, fov, type)
dai::IMUReport::tsDevice
Timestamp tsDevice
Definition: RawIMUData.hpp:31
dai::IMUReport::Accuracy::UNRELIABLE
@ UNRELIABLE
dai::RawIMUData::serialize
void serialize(std::vector< std::uint8_t > &metadata, DatatypeEnum &datatype) const override
Definition: RawIMUData.hpp:214
dai::IMUReport
Definition: RawIMUData.hpp:10
dai::IMUReport::Accuracy::HIGH
@ HIGH
dai::utility::serialize
bool serialize(const T &obj, std::vector< std::uint8_t > &data)
Definition: Serialization.hpp:38
dai::IMUReport::Accuracy
Accuracy
Definition: RawIMUData.hpp:11
dai::IMUReportGyroscope::y
float y
Definition: RawIMUData.hpp:76
dai::IMUPacket::acceleroMeter
IMUReportAccelerometer acceleroMeter
Definition: RawIMUData.hpp:183
dai::RawIMUData::DEPTHAI_SERIALIZE
DEPTHAI_SERIALIZE(RawIMUData, packets, RawBuffer::sequenceNum, RawBuffer::ts, RawBuffer::tsDevice)
dai::IMUPacket::magneticField
IMUReportMagneticField magneticField
Definition: RawIMUData.hpp:185
dai::RawBuffer::sequenceNum
int64_t sequenceNum
Definition: RawBuffer.hpp:16
dai::IMUReportGyroscope::z
float z
Definition: RawIMUData.hpp:77
dai::IMUReportMagneticField::z
float z
Definition: RawIMUData.hpp:89
dai::IMUReport::Accuracy::LOW
@ LOW
dai::Timestamp
Timestamp structure.
Definition: Timestamp.hpp:12
dai::IMUReport::accuracy
Accuracy accuracy
Definition: RawIMUData.hpp:25
dai::IMUReport::sequence
int32_t sequence
Definition: RawIMUData.hpp:22
dai::IMUReportAccelerometer::z
float z
Definition: RawIMUData.hpp:65
dai::IMUReportMagneticField
Magnetic field.
Definition: RawIMUData.hpp:86
dai::IMUReportAccelerometer::x
float x
Definition: RawIMUData.hpp:63
dai::RawBuffer::tsDevice
Timestamp tsDevice
Definition: RawBuffer.hpp:18
dai::IMUReportRotationVectorWAcc::rotationVectorAccuracy
float rotationVectorAccuracy
Accuracy estimate [radians], 0 means no estimate.
Definition: RawIMUData.hpp:103
dai::Timestamp::get
std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > get() const
Definition: Timestamp.hpp:14
RawBuffer.hpp
dai::RawIMUData::getType
DatatypeEnum getType() const override
Definition: RawIMUData.hpp:219
Serialization.hpp
dai::IMUReportRotationVectorWAcc
Rotation Vector with Accuracy.
Definition: RawIMUData.hpp:98
dai::IMUReport::getTimestampDevice
std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > getTimestampDevice() const
Definition: RawIMUData.hpp:44
dai::IMUPacket
Definition: RawIMUData.hpp:182
Timestamp.hpp
dai::RawBuffer
RawBuffer structure.
Definition: RawBuffer.hpp:12
dai::IMUReportMagneticField::x
float x
Definition: RawIMUData.hpp:87
dai::IMUReportAccelerometer
Accelerometer.
Definition: RawIMUData.hpp:62
dai::IMUReport::getSequenceNum
int32_t getSequenceNum() const
Definition: RawIMUData.hpp:51
dai::DatatypeEnum::IMUData
@ IMUData
dai::IMUReportMagneticField::y
float y
Definition: RawIMUData.hpp:88
dai::IMUReportGyroscope
Gyroscope.
Definition: RawIMUData.hpp:74
dai
Definition: CameraExposureOffset.hpp:6
dai::IMUReportAccelerometer::y
float y
Definition: RawIMUData.hpp:64
dai::RawIMUData
Definition: RawIMUData.hpp:211
dai::IMUReport::getTimestamp
std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > getTimestamp() const
Definition: RawIMUData.hpp:36
dai::IMUReportRotationVectorWAcc::real
float real
Quaternion component, real.
Definition: RawIMUData.hpp:102
Point3f.hpp
dai::IMUReport::Accuracy::MEDIUM
@ MEDIUM
dai::IMUPacket::gyroscope
IMUReportGyroscope gyroscope
Definition: RawIMUData.hpp:184
dai::IMUReportRotationVectorWAcc::i
float i
Quaternion component i.
Definition: RawIMUData.hpp:99
dai::RawBuffer::ts
Timestamp ts
Definition: RawBuffer.hpp:17
dai::IMUPacket::rotationVector
IMUReportRotationVectorWAcc rotationVector
Definition: RawIMUData.hpp:186


depthai
Author(s): Martin Peterlin
autogenerated on Sat Mar 22 2025 02:58:19