NDEVR
API Documentation
CalibrationData.h
1#pragma once
2#include "DLLInfo.h"
3#include <NDEVR/IOFactory.h>
4#include <NDEVR/Model.h>
5#include <NDEVR/Buffer.h>
6#include <NDEVR/Vector.h>
7namespace NDEVR
8{
15 class HARDWARE_API CalibrationData : public Model
16 {
17 public:
21 enum CalibrationType
22 {
23 e_unspecified
24 , e_magnetic
25 , e_accelerometer
26 , e_polar_angles
27 };
28 public:
33 CalibrationData(const Model& model);
37 CalibrationData();
43 Vector<3, fltp08> correct(Vertex<3, fltp08> vec);
50 void addCalibrationPoint(const Vector<3, fltp08>& point, fltp08 hm = 1.0, fltp08 epsilon = 0.001);
54 void clearData();
59 bool resetToActive();
64 void setCalibrationType(CalibrationType calibration_type);
69 CalibrationType calibrationType() const;
74 void calculate(fltp08 hm = 1.0);
79 void magCalculate(fltp08 hm = 1.0);
84 void accCalculate(fltp08 hm = 1.0);
89 void removeOutliers(fltp08 rejection);
95 void writeToFile(File calibration_file, bool is_active);
101 void readFromFile(File calibration_file, bool is_active);
106 void setVertices(const Buffer<Vector<3, fltp08>>& vertices);
111 void setB(const Vector<3, fltp08>& B);
116 void setA(const Vector<9, fltp08>& A);
121 Vector<3, fltp08> B() const;
126 Vector<9, fltp08> A() const;
131 Matrix <fltp08> calibrationMatrix() const;
136 Buffer<Vector<3, fltp08>> data() const;
141 fltp08 stdDev() const;
146 fltp08 meanVectorLength() const;
151 Model calibratedModel() const;
156 Model uncalibratedModel() const;
161 Model referenceModel() const;
166 void addReferencePoint(const Vertex<3, fltp08>& reference_point);
171 bool hasSufficientData() const;
176 fltp04 calibrationPercent() const;
181 uint04 dataSize() const;
186 static constexpr StringView TypeName() { return "calibration_data"; }
193 static Matrix<fltp08> CalibrationMatrix(const Vector<9, fltp08>& A, const Vector<3, fltp08>& B);
194 protected:
200 void updateAndApplyCalibrationMatrix(const Vector<9, fltp08>& A, const Vector<3, fltp08>& B);
201 protected:
205 void init();
209 void createReferenceModel();
210 };
211}
A core class that represents a node on model hierarchy.
Definition Model.h:292
The primary namespace for the NDEVR SDK.
float fltp04
Defines an alias representing a 4 byte floating-point number Bit layout is as follows: -Sign: 1 bit a...
uint32_t uint04
-Defines an alias representing a 4 byte, unsigned integer -Can represent exact integer values 0 throu...
double fltp08
Defines an alias representing an 8 byte floating-point number.