API Documentation
Loading...
Searching...
No Matches
MadgwickOrientationSensor Class Reference

Used to calculate madgick orientation given sensor streams for gyro and optionally magnetometer(s) and accelerometer(s) More...

#include <MadgwickOrientationSensor.h>

Inheritance diagram for MadgwickOrientationSensor:
[legend]
Collaboration diagram for MadgwickOrientationSensor:
[legend]

Public Member Functions

Vector< 3, Angle< fltp08 > > angleFromQuaternion (const Quaternion< fltp08 > &quaternion) const
 
Angle< fltp08angularVelocity () const
 
bool collectRecentRecords (const Time &cutoff_time, Buffer< IMU::Point, uint04, ObjectAllocator< false > > &imu_points, const Time &offset_time)
 
sint02 getPacketGyroState () const
 
void initialComputeMadgwick (Vector< 3, fltp08 > a, Vector< 3, fltp08 > m, Quaternion< fltp08 > &q, Time time)
 
 MadgwickOrientationSensor (const Model &model, ProgressInfo *log, QObject *parent=nullptr)
 
Matrix< fltp08orientationAt (const Time &time) const
 
void processAcceleration (Ray< 3, fltp08 > accel_data, const Time &ts)
 
void processGyro (Ray< 3, fltp08 > gyro_data, const Time &ts)
 
void processMadgwick (Time time)
 
void processQuaternion (const Quaternion< fltp08 > &quaternion, const Time &ts)
 
bool readyToSetupFrame () const
 
bool requestGyroCalibration () override
 
void reset ()
 
void setGyroState (GyroState state)
 
void setPacketGyroState (sint02 state)
 
void setRequestGyroCallback (const std::function< void()> &callback)
 
void setStoreReadings (bool store_readings)
 
bool supportsFixed () const override
 
bool supportsRodded () const override
 
void updateFromQuaternion (Time time)
 
- Public Member Functions inherited from OrientationSensor
virtual Ray< 3, fltp08calibratedMagnetometerVector () const
 
virtual UUID calibrationID () const
 
virtual TranslatedString calibrationMessage () const
 
fltp04 calibrationPercent () const
 
IMUCalibratorcalibrator () const
 
void checkForSetMagneticDeclination ()
 
virtual void clearCurrentDrift ()
 
virtual Angle< fltp08compassAngle () const
 
void createCalibrationOffset (const Matrix< fltp08 > &map_from, const Matrix< fltp08 > &map_to)
 
Vector< 3, Angle< fltp08 > > deviceOffsets () const
 
const Vector< 3, Angle< fltp08 > > & driftRate () const
 
Vector< 3, Angle< fltp08 > > driftValue () const
 
virtual Time getGyroCalibrationTime () const
 
Vector< 3, Angle< fltp08 > > gravityAccelerationToAngle (const Vector< 3, fltp08 > &acceleration_vector)
 
virtual GyroState gyroState () const
 
virtual bool hasCalibratedDrift () const
 
virtual bool hasLockedRoll () const
 
virtual bool hasLockedYaw () const
 
virtual bool isGyroUpdating () const
 
virtual bool isLocked () const
 
virtual Matrix< fltp08lastOrientation () const
 
virtual void lockRoll (bool lock_roll, Angle< fltp08 > roll=Constant< Angle< fltp08 > >::Invalid, Angle< fltp08 > yaw=Constant< Angle< fltp08 > >::Invalid)
 
virtual void lockYaw (bool lock_yaw, Angle< fltp08 > lock_heading=Constant< Angle< fltp08 > >::Invalid)
 
virtual MagneticCalibrationDatamagnetometerCalibrationObject ()
 
virtual MagnetometerState magnetometerState () const
 
virtual bool needsMagnetometerCalibration () const
 
 OrientationSensor (const Model &model, ProgressInfo *log, QObject *parent=nullptr)
 
Vector< 3, Angle< fltp08 > > quaternionToAngle (const Vector< 4, fltp08 > &quaternion) const
 
virtual Ray< 3, fltp08rawMagnetometerVector () const
 
virtual Ray< 3, fltp08referenceDirection () const
 
virtual bool requestAccelerationBiasLimit (fltp04 bias_limit)
 
virtual bool requestApplyMagnetometerCalibration ()
 
virtual bool requestMagnetometerCalibration (bool)
 
virtual bool requestUsingAccelerometer (bool using_accelerometer)
 
virtual bool requestUsingCompass (bool using_compass)
 
virtual bool requestUsingGyro (bool using_gyro, bool reset_state)
 
void setCalibrationOffset (const Matrix< fltp08 > &offset)
 
virtual void setCalibrator (IMUCalibrator *imu_calibrator)
 
void setDeviceOffsets (Vector< 3, Angle< fltp08 > > device_offsets)
 
virtual void setDriftRate (const Vector< 3, Angle< fltp08 > > &drift_rate)
 
void setFromAngles (const Vector< 3, Angle< fltp08 > > &angles)
 
void setFromGravityAcceleration (const Vector< 3, fltp08 > &acceleration_vector)
 
virtual void setFromQuaternion (const Vector< 4, fltp08 > &quaternion)
 
void setUserSpecifiedOffsets (const Vector< 3, Angle< fltp08 > > &user_specified_offsets)
 
virtual bool supportsModes () const
 
Vector< 3, Angle< fltp08 > > userSpecifiedOffsets () const
 
virtual bool usingAccelerometer () const
 
virtual bool usingCompass () const
 
virtual bool usingGyro () const
 
- Public Member Functions inherited from Device
 Device (const Model &model, ProgressInfo *log, QObject *parent=nullptr)
 
ProgressInfodeviceLog () const
 
virtual void endUpdates ()
 
virtual void setLog (ProgressInfo *log)
 
void setWarningCallback (const std::function< void(const Exception &warning, ProgressInfo *log)> &warning_callback)
 
void startAutoUpdate (DesignObjectLookup *lookup=nullptr)
 
void stopAutoUpdate (DesignObjectLookup *lookup=nullptr)
 
virtual void update ()
 
virtual void update (DesignObjectLookup *lookup, Time time) override
 
virtual TimeSpan updateInterval () const
 
- Public Member Functions inherited from Model
void addChild (Model &child)
 
void addChild (uint04 child_index)
 
void addPerVertexColorFromMaterialConstant (UVType constant_index)
 
Matrix< fltp08applyTransformToParent (const Matrix< fltp08 > &parent_mat) const
 
Vector< 3, fltp08calculateAverageDirection (const Matrix< fltp08 > &parent_transform=Constant< Matrix< fltp08 > >::Invalid) const
 
Vector< 2, fltp08calculateHVLength (const Matrix< fltp08 > &parent_transform=Constant< Matrix< fltp08 > >::Invalid) const
 
void calculateIndexNeighborList ()
 
fltp08 calculateLength (const Matrix< fltp08 > &transform=Constant< Matrix< fltp08 > >::Invalid) const
 
void calculateNormals (NormalMode mode, Angle< fltp08 > smoothing_angle)
 
void calculateSmoothTextures (Vector< 3, fltp08 > origin, fltp08 scale)
 
fltp08 calculateSurfaceArea (const Matrix< fltp08 > &transform=Constant< Matrix< fltp08 > >::Invalid) const
 
void calculateTangentSpace (bool calc_tan, bool calc_bitan)
 
fltp08 calculateVolume (const Matrix< fltp08 > &transform=Constant< Matrix< fltp08 > >::Invalid) const
 
Vector< 2, fltp08calculateVolumeAndSurfaceArea (const Matrix< fltp08 > &transform=Constant< Matrix< fltp08 > >::Invalid, const void *lock=nullptr) const
 
bool canExplode () const
 
bool canInteract () const
 
Vertex< 3, fltp08centerAlignModel ()
 
void checkBounds ()
 
uint04 childCount () const
 
void clearChildren ()
 
void clearLayer ()
 
void clearMaterialDescendents ()
 
void colorByChannel (Material &mat, const String &channel, fltp08 avg=Constant< fltp08 >::Invalid) const
 
Dictionary< UUID, DesignObjectcopyFrom (const Model &model, bool deep_copy, bool copy_ids=false, bool recursive=true)
 
Dictionary< UUID, DesignObjectcopyMaterialProperties (const Model &model)
 
Model createChild ()
 
Model createChild (uint04 child_slot)
 
Effect createChildEffect ()
 
Geometry createChildGeometry ()
 
Material createChildMaterial (bool copy_child=false)
 
Material createChildMaterial (PrimitiveProperty property, bool copy_child=false)
 
void createChildren (uint04 child_size)
 
Effect createSceneEffect () const
 
Geometry createSceneGeometry () const
 
Model createSceneLayer () const
 
Material createSceneMaterial () const
 
Model createSceneModel () const
 
RGBColor customModelColor (ModelColorMode mode) const
 
void deleteModel (bool delete_children, bool remove_from_parent=true)
 
BitFlag descendedFlags () const
 
BitFlag descendedFlagsNoCache (bool complete_cache_ignore) const
 
BitFlag descendedPersonalFlagsNoCache () const
 
Buffer< GeometryTypedescendentGeometryTypes () const
 
TranslatedString displayName () const
 
TranslatedString displayNamePath (const String &seperator=":") const
 
bool doesModelPropertyContain (ModelProperty property, const char *value, bool ignore_case) const
 
bool doesModelPropertyContain (ModelProperty property, const String &value, bool ignore_case) const
 
void eraseModel ()
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > explodeModel ()
 
bool exportIgnored () const
 
Model findDescendentByName (const String &name) const
 
Model findDescendentByType (const String &type) const
 
Time getAscModifiedTime (bool include_self, bool include_layer=true) const
 
Bounds< 3, fltp08getBounds () const
 
Bounds< 3, fltp08getBoundsOfVisible () const
 
Model getChild (uint04 child) const
 
uint04 getChildIndex () const
 
uint04 getChildIndex (uint04 child) const
 
Buffer< uint04getChildIndices () const
 
uint04 getChildLayerIndex () const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getChildren () const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getChildrenByName (const String &name) const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getChildrenByType (const Buffer< String > &type) const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getChildrenByType (const String &type) const
 
Buffer< UUIDgetChildrenIDs () const
 
Buffer< std::pair< Model, Geometry >, uint04, ObjectAllocator< DESIGN_PRIM > > getClippingGeometry () const
 
Matrix< fltp08getCompleteTransform () const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getDescendents (bool include_deleted=false, bool local_only=false) const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getDescendentsByName (const String &name, uint04 max_count=Constant< uint04 >::Max) const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getDescendentsByNameAndType (const String &name, const String &type, uint04 max_count=Constant< uint04 >::Max) const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getDescendentsByType (const String &type, uint04 max_count=Constant< uint04 >::Max) const
 
Time getDescModifiedTime (bool include_self) const
 
uint04 getDirectLayerIndex () const
 
Effect getEffect (uint04 index=0) const
 
Buffer< Effect, uint04, ObjectAllocator< false > > getEffectChildren () const
 
Buffer< Effect, uint04, ObjectAllocator< false > > getEffectDescendents () const
 
uint04 getEffectIndex (uint04 child_index=0) const
 
Model getFamilyMember (uint04 index) const
 
Geometry getGeometry () const
 
Buffer< Geometry, uint04, ObjectAllocator< DESIGN_PRIM > > getGeometryDescendents (bool remove_redundant=true, uint04 max_count=Constant< uint04 >::Max) const
 
uint04 getGeometryIndex () const
 
Model getLayer () const
 
Material getMaterial (PrimitiveProperty property) const
 
Buffer< Material, uint04, ObjectAllocator< DESIGN_PRIM > > getMaterialChildren () const
 
Buffer< Material, uint04, ObjectAllocator< DESIGN_PRIM > > getMaterialDescendents (bool local_only=false) const
 
Buffer< Material, uint04, ObjectAllocator< DESIGN_PRIM > > getMaterialDescendents (PrimitiveProperty property) const
 
Buffer< Material, uint04, ObjectAllocator< DESIGN_PRIM > > getMaterialDescendentsByName (const String &name, uint04 max_count=Constant< uint04 >::Max) const
 
uint04 getMaterialIndex (PrimitiveProperty property) const
 
MaterialMode getMaterialMode (PrimitiveProperty property) const
 
String getModelIcon () const
 
template<class t_type >
t_type getModelProperty (ModelProperty property) const
 
uint04 getNumOfEffects () const
 
Model getParent () const
 
uint04 getParentIndex () const
 
Matrix< fltp08getParentTransform () const
 
Material getRootMaterial (PrimitiveProperty property) const
 
Model getRootMaterialModel (PrimitiveProperty property)
 
Effect getSceneEffect (UUID id) const
 
Buffer< Effect, uint04, ObjectAllocator< false > > getSceneEffects () const
 
Buffer< Geometry, uint04, ObjectAllocator< DESIGN_PRIM > > getSceneGeometries () const
 
Geometry getSceneGeometry (uint04 index) const
 
Geometry getSceneGeometry (UUID id) const
 
Model getSceneLayer (UUID id) const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getSceneLayers (bool include_deleted=false) const
 
Material getSceneMaterial (uint04 index) const
 
Material getSceneMaterial (UUID id) const
 
Buffer< Material, uint04, ObjectAllocator< DESIGN_PRIM > > getSceneMaterials () const
 
Model getSceneModel (UUID id) const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getSceneModels (bool include_deleted=false, bool local_only=false) const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getSceneModelsByName (const String &name, uint04 max_count=Constant< uint04 >::Max, bool include_deleted=false) const
 
Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > getSceneModelsByType (const String &type, uint04 max_count=Constant< uint04 >::Max, bool include_deleted=false) const
 
Bounds< 3, fltp08getSelectionBounds () const
 
template<class t_type >
Buffer< t_type > getTypeChildren (const String &type) const
 
template<class t_type >
Buffer< t_type > getTypeDescendents (const String &type) const
 
Bounds< 3, fltp08globalBounds () const
 
Vertex< 3, fltp08globalCenterOfRotation () const
 
Bounds< 3, fltp08globalSelectionBounds () const
 
bool hasChild (uint04 child_index) const
 
bool hasDescendent (const Model &model) const
 
bool hasDescendent (const UUID &id) const
 
void hasDescendents (bool &has_point, bool &has_line, bool &has_mesh) const
 
bool hasDirectLayer () const
 
bool hasEffect (uint04 index=0) const
 
bool hasFocus () const
 
bool hasGeometryDescendent () const
 
bool hasHoles (PrimitiveProperty property) const
 
bool hasLayer () const
 
bool hasLayerRootMaterial (PrimitiveProperty property) const
 
bool hasLinearDescendent () const
 
bool hasMaterial () const
 
bool hasMaterial (PrimitiveProperty property) const
 
bool hasMeshDescendent () const
 
bool hasPointsDescendent () const
 
bool hasSelectedDescendent () const
 
Vector< 32, bool > inheritedFlags () const
 
Vector< 32, bool > inheritedFlagsNoCache (bool complete_cache_ignore) const
 
Vector< 32, bool > inheritedPersonalFlagsNoCache () const
 
void invalidateBounds ()
 
void invalidateGlobalBoundsAsc ()
 
void invalidateGlobalBoundsDesc ()
 
void invalidateTransformCache ()
 
void invalidateVisibleBounds ()
 
bool isApplicationOwned () const
 
bool isDeleted () const
 
bool isLayer () const
 
bool isLocked () const
 
bool isModelProperty (ModelProperty property, const char *value) const
 
bool isModelProperty (ModelProperty property, const String &value) const
 
bool isOfType (const char *type) const
 
bool isOfType (const String &type) const
 
bool isScene () const
 
bool isSelected () const
 
bool isTreeVisible () const
 
bool isVisible () const
 
 Model ()
 
 Model (const DesignObject &obj)
 
 Model (DesignObjectBase *base)
 
 Model (uint04 index, DesignObjectBase *base)
 
 operator bool () const
 
void overrideMaterialDescendents (MaterialMode vertex, MaterialMode outline, MaterialMode solid)
 
void overrideMaterialDescendents (PrimitiveProperty property, MaterialMode override_desc)
 
BitFlag parentMatrixFlags () const
 
BitFlag personalDescendedFlags () const
 
Vector< 32, bool > personalInheritedFlags () const
 
void removeChild (const Model &model)
 
void removeDuplicateVertices (fltp08 epsilon, void *lock, ProgressInfo *log=nullptr)
 
void removeGeometry ()
 
void removeMaterial (const Material &material)
 
void removeMaterial (PrimitiveProperty property)
 
void restoreModel ()
 
void setChildIndex (uint04 child, uint04 id)
 
void setGeometryChild (const Geometry &geo)
 
void setGeometryChild (uint04 geo_index)
 
void setIsLayer (bool is_layer)
 
void setLayer (Model layer)
 
void setMaterial (const Material &material)
 
void setMaterial (PrimitiveProperty property, const Material &material)
 
void setMaterial (PrimitiveProperty property, uint04 material_index)
 
void setMaterial (uint04 material_index)
 
void setMaterialMode (MaterialMode vertex, MaterialMode outline, MaterialMode solid)
 
void setMaterialMode (PrimitiveProperty property, MaterialMode option)
 
template<class t_type >
void setModelProperty (ModelProperty property, const t_type &value)
 
void setNormalMode (NormalMode mode, Angle< fltp08 > smoothing_angle, ProgressInfo *log)
 
void setOrientation (const Vector< 3, Angle< fltp08 > > &new_orientation, const void *lock=nullptr)
 
void setOrientation (const Vector< 3, Angle< sint04 > > &new_orientation, const void *lock=nullptr)
 
void setParentMatrixFlag (ParentMatrixFlags flag, bool value)
 
void setParentMatrixFlags (BitFlag flags)
 
void setSize (const Vector< 3, fltp08 > &size)
 
void setTransform (const Matrix< fltp08 > &transform)
 
void setWindingMode (WindingMode mode)
 
Vector< 3, fltp08size () const
 
void swapChildren (uint04 a, uint04 b)
 
void updateAscTime (const Time &time, bool include_self)
 
void updateDescendedFlagsCache (bool force_update_all=false)
 
void updateDescTime (const Time &time, bool include_self)
 
void updateFrom (const Model &model, bool check_resources)
 
void updateInheritedFlagsCache (bool force_update_all=false, bool update_personal_flags=false)
 
template<class t_type >
void updateModelProperty (ModelProperty property, const t_type &type, const void *lock_ptr=nullptr)
 
void updateModifiedTime (Time time=Time::SystemTime())
 
void updateTransform (const Matrix< fltp08 > &transform, const void *lock=nullptr)
 
void updateVisible (bool is_visible)
 
void updateVisibleRecursive (bool is_visible)
 
void validate (bool validate_children=true) const
 
uint04 vertexCount () const
 
uint04 visibleVertexCount () const
 
- Public Member Functions inherited from DesignObject
void actionDeletedIndex (uint04 index, uint04 size)
 
JSONNode activeFilters () const
 
void addIndex (uint04 index, uint04 size)
 
void appendData (const String &data, bool compressed)
 
DesignObjectBasebase () const
 
void clearMetaData (const String &index)
 
void copyFrom (const DesignObject &object)
 
uint04 designIndex () const
 
 DesignObject ()=default
 Creates an "invalid" design object. This object does not have a backing database, and all indices will be Invalid. Checking properties on this object is not permitted but you may use the '=' to set this model to a different model.
 
 DesignObject (DesignObjectBase *base)
 Creates an new design object within the given DesignObjectBase. This object is appended to the end of the DesignObjectBase data structure and values are setup to defaults.
 
 DesignObject (uint04 index, DesignObjectBase *base)
 Sets a DesignObject up to be a pointer to an existing object in the database. If the index is invalid behavior is undefined.
 
bool doesPropertyBeginWith (DesignProperty property, const char *value, bool ignore_case) const
 
bool doesPropertyBeginWith (DesignProperty property, const String &value, bool ignore_case) const
 
bool doesPropertyContain (DesignProperty property, const char *value, bool ignore_case) const
 
bool doesPropertyContain (DesignProperty property, const String &value, bool ignore_case) const
 
File file () const
 
uint04 getDesignParentIndex () const
 
String getIcon () const
 
template<class t_type >
t_type getInheritedProperty (DesignProperty property) const
 
Time getModifiedTime () const
 
template<class t_type >
t_type getProperty (DesignProperty property) const
 
Scene getScene () const
 
Matrix< fltp08getTransform () const
 
bool hasMetaData (const String &index) const
 
template<class t_type >
bool hasProperty (DesignProperty property) const
 
uint04 index () const
 
bool isDesignType (DesignObjectType mode) const
 
bool isDesignType (uint04 mode) const
 
bool isProperty (DesignProperty property, const char *value) const
 
bool isProperty (DesignProperty property, const String &value) const
 
bool isValid () const
 
const JSONNodemetaData () const
 
const JSONNodemetaData (const String &index) const
 
void offset (const Vector< 3, fltp08 > &offset)
 
 operator bool () const
 
bool operator!= (const DesignObject &model) const
 
bool operator< (const DesignObject &model) const
 
bool operator== (const DesignObject &model) const
 
bool operator> (const DesignObject &model) const
 
DynamicPointer< Table > & propertyTable ()
 
const DynamicPointer< Table > & propertyTable () const
 
void removeMetaData (const String &index, const void *lock_ptr=nullptr)
 
void scale (Vector< 3, fltp08 > scale, Vertex< 3, fltp08 > center_of_scale=Constant< Vertex< 3, fltp08 > >::Invalid)
 
void setActiveFilters (const JSONNode &node)
 
void setDesignType (DesignObjectType mode, bool is_type)
 
void setDesignVisible (bool is_visible)
 
void setMetaData (const JSONNode &node)
 
void setMetaData (const String &index, const bool &data)
 
void setMetaData (const String &index, const fltp08 &data)
 
void setMetaData (const String &index, const JSONNode &node)
 
void setMetaData (const String &index, const String &data)
 
void setMetaData (const String &index, const uint04 &data)
 
template<>
void setProperty (DesignProperty property, const String &value)
 
template<class t_type >
void setProperty (DesignProperty property, const t_type &value)
 
template<>
void setProperty (DesignProperty property, const UUID &value)
 
void updateCreatedTime ()
 
void updateDesignModifiedTime (Time time=Time::SystemTime())
 
void updateDesignTransform (const Matrix< fltp08 > &transform, const void *lock=nullptr)
 
void updateDesignVisible (bool is_visible, const void *lock=nullptr)
 
void updateMetaData (const String &index, const bool &data, const void *lock_ptr=nullptr)
 
void updateMetaData (const String &index, const fltp08 &data, const void *lock_ptr=nullptr)
 
void updateMetaData (const String &index, const String &data, const void *lock_ptr=nullptr)
 
template<class t_type >
void updateProperty (DesignProperty property, const t_type &value, const void *lock=nullptr)
 
UUID uuid () const
 
bool validateDesignObject () const
 
- Public Member Functions inherited from DesignObjectUpdateTarget

Static Public Member Functions

static void updateMadgwick (Vector< 3, fltp08 > g, Vector< 3, fltp08 > a, Vector< 3, fltp08 > m, Quaternion< fltp08 > &q, TimeSpan time_span, fltp08 beta)
 
- Static Public Member Functions inherited from OrientationSensor
static Matrix< fltp08, 3, 3 > calculateDeviation (TimeSpan time, const Vector< 4, fltp08 > &start, const Vector< 4, fltp08 > &end)
 
static Angle< fltp08calculateNorthFacing (const Matrix< fltp08, 3, 3 > &offset_mat)
 
static Matrix< fltp08, 3, 3 > offsetCalibration (TimeSpan time_since_calibration, const Matrix< fltp08, 3, 3 > &current_orientation, const Matrix< fltp08, 3, 3 > &dev_matrix)
 
- Static Public Member Functions inherited from Device
static void SetDefaultDeviceLookup (DesignObjectLookup *lookup)
 
- Static Public Member Functions inherited from Model
static Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > ReduceToRoots (const Buffer< Model, uint04, ObjectAllocator< DESIGN_PRIM > > &children, const std::function< bool(const Model &, const Set< Model > &)> &filter)
 
- Static Public Member Functions inherited from DesignObject
static constexpr const char * FilePathDesignNameVariable ()
 

Protected Attributes

Vector< 3, fltp08m_accel = Constant<Vector<3, fltp08>>::Invalid
 
fltp08 m_beta = 0.042
 
TimeSpan m_calibration_time = TimeSpan(5.0)
 
Vector< 3, fltp08m_gyro = Constant<Vector<3, fltp08>>::Invalid
 
Vector< 3, fltp08m_gyro_calibration = Vector<3, fltp08>(0.0)
 
QueueBuffer< OrientationReading, uint04, ObjectAllocator< true, uint04 > > m_historic_orientation
 
uint04 m_init_count = 0
 
Time m_last_timestamp = Constant<Time>::Invalid
 
Vector< 3, fltp08m_magnet = Constant<Vector<3, fltp08>>::Invalid
 
Vector< 3, fltp08m_prev_accel_data = { 0,0,0 }
 
Time m_prev_accel_timestamp = Time(0)
 
Quaternion< fltp08m_quaternion = Quaternion<fltp08>(1.0, 0.0, 0.0, 0.0)
 
std::function< void()> m_request_gyro_callback
 
bool m_reset_gyro = true
 
Time m_start_calibration_time = Constant<Time>::Invalid
 
bool m_store_readings = false
 
std::mutex m_theta_mtx
 
TimeSpan m_total_ts
 
Buffer< Ray< 3, fltp08 > > v_accel_data_sync
 
Buffer< Ray< 3, fltp08 > > v_gyro_data
 
Buffer< Timev_gyro_timestamp
 
Angle< fltp08yaw_offset = Constant<Angle<fltp08>>::Invalid
 
- Protected Attributes inherited from OrientationSensor
AccelerometerState m_acceleromter_state
 
Vector< 3, Angle< fltp08 > > m_angle_drift_rate
 
Time m_angle_drift_start_time
 
Ray< 3, fltp08m_calibrated_magnetomer_vector = Constant<Ray<3, fltp08>>::Invalid
 
UUID m_calibration_id
 
Matrix< fltp08m_calibration_offset
 
fltp04 m_calibration_percent
 
Time m_calibration_time
 
Vector< 3, Angle< fltp08 > > m_device_specified_offsets
 
bool m_gyro_calibration_requested = false
 
GyroState m_gyro_state
 
bool m_has_calibrated_drift = false
 
IMUCalibratorm_imu_calibrator = nullptr
 
bool m_is_gyro_updating = false
 
bool m_is_locked = false
 
MagnetometerState m_magnetometer_state
 
Ray< 3, fltp08m_raw_magnetometer_vector = Constant<Ray<3, fltp08>>::Invalid
 
Angle< fltp08m_roll_lock
 
Angle< fltp08m_roll_lock_reference_yaw
 
Vector< 3, Angle< fltp08 > > m_tilt_angle
 
Vector< 3, Angle< fltp08 > > m_user_specified_offsets
 
bool m_using_accelerometer = false
 
bool m_using_compass = false
 
bool m_using_gyro = false
 
Angle< fltp08m_yaw_lock
 
- Protected Attributes inherited from Device
ProgressInfom_log
 
DeviceUpdateThreadm_update_thread = nullptr
 
std::function< void(const Exception &warning, ProgressInfo *log)> m_warning_callback
 
- Protected Attributes inherited from DesignObject
DesignObjectBasem_base = nullptr
 
uint04 m_design_index = Constant<uint04>::Invalid
 
uint04 m_index = Constant<uint04>::Invalid
 
UUID m_uuid = Constant<UUID>::Invalid
 

Additional Inherited Members

- Public Types inherited from Model
enum  DescendedFlags { e_descendent_selected = 0 , e_descendent_focussed = 1 , e_descendent_deletion_blocked = 2 }
 
enum  InheritedFlags : uint01 {
  e_inherited_is_visible = 0 , e_inherited_has_no_focus = 1 , e_inherited_is_tree_visible = 2 , e_inherited_not_selected = 3 ,
  e_inherited_is_manager_visible = 4 , e_inherited_can_delete = 5 , e_inherited_does_not_follow_camera = 6 , e_inherited_does_not_orient_to_camera = 7 ,
  e_inherited_does_not_scale_to_camera = 8 , e_inherited_not_deleted = 9 , e_inherited_not_application_owned = 10 , e_inherited_exportable = 11
}
 
enum class  MaterialMode { e_by_parent , e_by_layer , e_custom , e_hidden }
 
enum class  ModelColorMode { e_direct , e_by_selectable_children , e_by_material_root , e_by_layer }
 
enum  ModelProperty {
  e_type , e_fixed_bounding_box , e_visible_box , e_calculation_ignored ,
  e_can_select_children , e_complete_transform , e_material_mode_solid , e_material_mode_outline ,
  e_material_mode_vertices , e_parent_matrix_flags , e_global_bounds , e_global_selection_bounds ,
  e_model_color , e_inherited_flags , e_personal_inherited_flags , e_export_ignored ,
  e_descended_flags , e_personal_descended_flags , e_application_constructed , e_application_constructed_parent_base ,
  e_model_property_size
}
 
enum  ParentMatrixFlags : uint01 {
  e_ignore_offset = 0 , e_ignore_scale = 1 , e_ignore_rotation = 2 , e_ignore_scale_distortion = 3 ,
  e_use_only_for_offset = 4 , e_orient_to_camera = 5 , e_follow_camera = 6 , e_scale_to_camera = 7
}
 
- Public Types inherited from DesignObject
enum  DesignObjectType {
  e_model = 0x00000001 , e_geometry = 0x00000002 , e_material = 0x00000004 , e_bone = 0x00000008 ,
  e_effect = 0x00000010 , e_layer = 0x00000020 , e_scene = 0x00000040 , e_camera = 0x00000080 ,
  e_selection = 0x00000100
}
 
enum  DesignProperty {
  e_guid , e_design_types , e_transform , e_bounding_box ,
  e_selection_box , e_name , e_description , e_editable_description ,
  e_creation_time , e_modified_time , e_asc_modified_time , e_desc_modified_time ,
  e_bounds_modified_time , e_author , e_creation_software , e_3D_visible ,
  e_tree_visible , e_icon , e_is_selected , e_is_focused ,
  e_allow_interactions , e_file , e_search_terms , e_category ,
  e_deletion_allowed , e_is_deleted , e_is_application_locked , e_is_application_owned ,
  e_bounds_ignored , e_selection_ignored , e_meta_data , e_untranslated_string_data ,
  e_translated_string_data , e_uncompressed_data , e_compressed_data , e_manager_visible ,
  e_library_id , e_is_frozen , e_applied_filters , e_design_property_size
}
 Values stored in the property database. More...
 
- Signals inherited from OrientationSensor
void calibrationChangedSignal ()
 
void deploymentModeOptionsUpdatedSignal ()
 
void driftRateUpdatedSignal ()
 
void magnetometerCalibrationUpdatedSignal ()
 
- Signals inherited from Device
void onUpdated ()
 
- Protected Member Functions inherited from OrientationSensor
virtual Vector< 3, Angle< fltp08 > > lastOrientationAngle () const
 
- Protected Member Functions inherited from Device
virtual void showWarning (const Exception &warning) const
 
virtual void showWarning (const TranslatedString &warning) const
 
- Protected Member Functions inherited from Model
DesignObjectBasechildBase () const
 
uint04 childToParentReference () const
 
DesignObjectBaseparentBase () const
 
uint04 parentToChildReference () const
 
- Protected Member Functions inherited from DesignObject
void onNameChange (const String &new_name)
 
- Static Protected Attributes inherited from Device
static DesignObjectLookups_default_lookup
 

Detailed Description

Used to calculate madgick orientation given sensor streams for gyro and optionally magnetometer(s) and accelerometer(s)


Constructor & Destructor Documentation

◆ MadgwickOrientationSensor()

MadgwickOrientationSensor ( const Model & model,
ProgressInfo * log,
QObject * parent = nullptr )

Member Function Documentation

◆ angleFromQuaternion()

Vector< 3, Angle< fltp08 > > angleFromQuaternion ( const Quaternion< fltp08 > & quaternion) const

◆ angularVelocity()

Angle< fltp08 > angularVelocity ( ) const

◆ collectRecentRecords()

bool collectRecentRecords ( const Time & cutoff_time,
Buffer< IMU::Point, uint04, ObjectAllocator< false > > & imu_points,
const Time & offset_time )

◆ getPacketGyroState()

sint02 getPacketGyroState ( ) const

◆ initialComputeMadgwick()

void initialComputeMadgwick ( Vector< 3, fltp08 > a,
Vector< 3, fltp08 > m,
Quaternion< fltp08 > & q,
Time time )

◆ orientationAt()

Matrix< fltp08 > orientationAt ( const Time & time) const

◆ processAcceleration()

void processAcceleration ( Ray< 3, fltp08 > accel_data,
const Time & ts )

◆ processGyro()

void processGyro ( Ray< 3, fltp08 > gyro_data,
const Time & ts )

◆ processMadgwick()

void processMadgwick ( Time time)

◆ processQuaternion()

void processQuaternion ( const Quaternion< fltp08 > & quaternion,
const Time & ts )

◆ readyToSetupFrame()

bool readyToSetupFrame ( ) const

◆ requestGyroCalibration()

bool requestGyroCalibration ( )
overridevirtual

Reimplemented from OrientationSensor.

◆ reset()

void reset ( )

◆ setGyroState()

void setGyroState ( GyroState state)

◆ setPacketGyroState()

void setPacketGyroState ( sint02 state)

◆ setRequestGyroCallback()

void setRequestGyroCallback ( const std::function< void()> & callback)
inline

◆ setStoreReadings()

void setStoreReadings ( bool store_readings)

◆ supportsFixed()

bool supportsFixed ( ) const
inlineoverridevirtual

Reimplemented from OrientationSensor.

◆ supportsRodded()

bool supportsRodded ( ) const
inlineoverridevirtual

Reimplemented from OrientationSensor.

◆ updateFromQuaternion()

void updateFromQuaternion ( Time time)

◆ updateMadgwick()

static void updateMadgwick ( Vector< 3, fltp08 > g,
Vector< 3, fltp08 > a,
Vector< 3, fltp08 > m,
Quaternion< fltp08 > & q,
TimeSpan time_span,
fltp08 beta )
static

Member Data Documentation

◆ m_accel

Vector<3, fltp08> m_accel = Constant<Vector<3, fltp08>>::Invalid
protected

◆ m_beta

fltp08 m_beta = 0.042
protected

◆ m_calibration_time

TimeSpan m_calibration_time = TimeSpan(5.0)
protected

◆ m_gyro

Vector<3, fltp08> m_gyro = Constant<Vector<3, fltp08>>::Invalid
protected

◆ m_gyro_calibration

Vector<3, fltp08> m_gyro_calibration = Vector<3, fltp08>(0.0)
protected

◆ m_historic_orientation

QueueBuffer<OrientationReading, uint04, ObjectAllocator<true, uint04> > m_historic_orientation
protected

◆ m_init_count

uint04 m_init_count = 0
protected

◆ m_last_timestamp

Time m_last_timestamp = Constant<Time>::Invalid
protected

◆ m_magnet

Vector<3, fltp08> m_magnet = Constant<Vector<3, fltp08>>::Invalid
protected

◆ m_prev_accel_data

Vector<3, fltp08> m_prev_accel_data = { 0,0,0 }
protected

◆ m_prev_accel_timestamp

Time m_prev_accel_timestamp = Time(0)
protected

◆ m_quaternion

Quaternion<fltp08> m_quaternion = Quaternion<fltp08>(1.0, 0.0, 0.0, 0.0)
protected

◆ m_request_gyro_callback

std::function<void()> m_request_gyro_callback
protected

◆ m_reset_gyro

bool m_reset_gyro = true
protected

◆ m_start_calibration_time

Time m_start_calibration_time = Constant<Time>::Invalid
protected

◆ m_store_readings

bool m_store_readings = false
protected

◆ m_theta_mtx

std::mutex m_theta_mtx
protected

◆ m_total_ts

TimeSpan m_total_ts
protected

◆ v_accel_data_sync

Buffer<Ray<3, fltp08> > v_accel_data_sync
protected

◆ v_gyro_data

Buffer<Ray<3, fltp08> > v_gyro_data
protected

◆ v_gyro_timestamp

Buffer<Time> v_gyro_timestamp
protected

◆ yaw_offset

Angle<fltp08> yaw_offset = Constant<Angle<fltp08>>::Invalid
protected

The documentation for this class was generated from the following file: