110 SENSOR_MAX_X_F64 = ( ( ( 1 << 30 ) - 3 ) / 3) * 3,
112 SENSOR_MAX_Y_F64 = SENSOR_MAX_X_F64 + 1,
114 SENSOR_MAX_Z_F64 = SENSOR_MAX_X_F64 + 2,
142 template<
Field... field>
183 virtual
void result( const
CallbackData& data ) override;
184 virtual
void cleanup() override;
192 size_t m_elementSize{ 0u };
193 agx::Real m_paddingValue{ std::numeric_limits<agx::Real>::signaling_NaN() };
194 bool m_hasUnreadData{
false };
195 BinaryOutputBuffer m_output{};
203 ( this->
add( field ), ... );
208 #pragma pack(push, 1)
214 inline SixDoFValue() {}
224 inline SixDoFValue(
const SixDoFValue& ) =
default;
225 inline SixDoFValue& operator=(
const SixDoFValue& ) =
default;
227 inline agx::Vec3 getTriplet(
const size_t i )
const noexcept
244 inline NineDoFValue() {}
257 inline NineDoFValue(
const NineDoFValue& ) =
default;
258 inline NineDoFValue& operator=(
const NineDoFValue& ) =
default;
260 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.
IMUOutput()=default
Default constructor.
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.
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.