112 SENSOR_MAX_X_F64 = (((1 << 30) - 3) / 3) * 3,
114 SENSOR_MAX_Y_F64 = SENSOR_MAX_X_F64 + 1,
116 SENSOR_MAX_Z_F64 = SENSOR_MAX_X_F64 + 2,
145 template <
Field... field>
223 virtual
void cleanup() override;
231 size_t m_elementSize {0u};
232 agx::Real m_paddingValue {std::numeric_limits<agx::Real>::signaling_NaN()};
233 bool m_hasUnreadData {
false};
234 BinaryOutputBuffer m_output {};
242 (this->
add(field), ...);
253 inline SixDoFValue() {}
263 inline SixDoFValue(
const SixDoFValue&) =
default;
264 inline SixDoFValue& operator=(
const SixDoFValue&) =
default;
266 inline agx::Vec3 getTriplet(
const size_t i)
const noexcept
283 inline NineDoFValue() {}
296 inline NineDoFValue(
const NineDoFValue&) =
default;
297 inline NineDoFValue& operator=(
const NineDoFValue&) =
default;
299 inline agx::Vec3 getTriplet(
const size_t i)
const noexcept
#define AGX_DECLARE_POINTER_TYPES(type)
#define AGXSTREAM_DECLARE_SERIALIZABLE(T)
Use this in a Serializable class to add the required methods Important: Use full namespace in the dec...
Buffer used for sensor output of a wide range of output element types.
IMU sensor output data where IMUOutput::Field is used to define the data available.
virtual size_t getElementSize() const override
"Element size" is the summed data size of the currently added fields.
virtual bool hasUnreadData(bool markAsRead=true) override
std::vector< Field > FieldVector
virtual const BinaryOutputBuffer & getData() override
static size_t sizeOf(Field field)
static const char * getFieldName(Field field)
void build()
Add one or more fields, build a matching data structure.
agx::Vec3 computeMagnetometerCovariance() const
Compute the covariance of the magnetometer signal values for the magnetometer entry in the output.
IMUOutput()=default
Default constructor.
agx::Vec3 computeGyroscopeCovariance() const
Compute the covariance of the gyroscope signal values for the gyroscope entry in the output.
size_t getOffset(Field field) const
Offset in bytes of the first entry of field in the pack of fields.
const FieldVector & getFields() const
IMUOutput & add(Field field)
Add new field.
@ SENSOR_1_X_F64
1x 64-bit floating point x-axis output from the second sensor in the IMU.
@ SENSOR_1_Y_F64
1x 64-bit floating point y-axis output from the second sensor in the IMU.
@ ACCELEROMETER_Z_F64
1x 64-bit floating point accelerometer z-axis output.
@ SENSOR_0_Z_F64
1x 64-bit floating point z-axis output from the first sensor in the IMU.
@ GYROSCOPE_Y_F64
1x 64-bit floating point gyroscope y-axis output.
@ MAGNETOMETER_Y_F64
1x 64-bit floating point magnetometer y-axis output.
@ ACCELEROMETER_X_F64
1x 64-bit floating point accelerometer x-axis output.
@ ACCELEROMETER_Y_F64
1x 64-bit floating point accelerometer y-axis output.
@ SENSOR_0_Y_F64
1x 64-bit floating point y-axis output from the first sensor in the IMU.
@ MAGNETOMETER_Z_F64
1x 64-bit floating point magnetometer z-axis output.
@ SENSOR_1_Z_F64
1x 64-bit floating point z-axis output from the second sensor in the IMU.
@ SENSOR_0_X_F64
1x 64-bit floating point x-axis output from the first sensor in the IMU.
@ GYROSCOPE_X_F64
1x 64-bit floating point gyroscope x-axis output.
@ MAGNETOMETER_X_F64
1x 64-bit floating point magnetometer x-axis output.
@ GYROSCOPE_Z_F64
1x 64-bit floating point gyroscope z-axis output.
bool contains(Field field) const
agx::Vec3 computeAccelerometerCovariance() const
Compute the covariance of the accelerometer signal values for the accelerometer entry in the output.
void setPaddingValue(const agx::Real &value)
Set value to use for padding when no underlying signal data can be found.
Common interface for sensor output data.
System node is a separate step/operation in an execution tree representing a sensor (or such) in a se...
#define DOXYGEN_END_INTERNAL_BLOCK()
#define DOXYGEN_START_INTERNAL_BLOCK()
The agxSensor namespace contains components to model real-time sensors connected to the physics of AG...
Vec3T< Real > Vec3
The object holding 3 dimensional vectors and providing basic arithmetic.