HiveMind
|
#include <AngleCalculatorParameters.h>
Public Attributes | |
std::array< float, NUM_ANTENNA_PAIRS > | m_pdoaNormalizationFactors {} |
std::array< std::array< float, NUM_PDOA_SLOPES >, NUM_ANTENNA_PAIRS > | m_pdoaSlopes {} |
std::array< std::array< float, NUM_PDOA_SLOPES >, NUM_ANTENNA_PAIRS > | m_pdoaIntercepts {} |
std::array< std::array< uint8_t, 2 >, NUM_ANTENNA_PAIRS > | m_antennaPairs {} |
std::array< std::array< uint8_t, NUM_ANTENNA_PAIRS >, NUM_ANTENNA_PAIRS > | m_slopeDecisionMatrix {} |
std::array< uint8_t, NUM_ANTENNA_PAIRS > | m_parametersValidSecretNumbers |
float | m_boardOrientationOffset |
Structure containing all parameters used to calculate an angle. These parameters are calculated using the Python tooling during calibration and then transferred to the board.
std::array<std::array<uint8_t, 2>, NUM_ANTENNA_PAIRS> AngleCalculatorParameters::m_antennaPairs {} |
Lookup table used to know which antenna IDs are used in each pair ID
float AngleCalculatorParameters::m_boardOrientationOffset |
Offset (in degrees) of the BeeBoard assembly on the robot to allow placing it at any orientation. Applied after interloc is calculated
std::array<uint8_t, NUM_ANTENNA_PAIRS> AngleCalculatorParameters::m_parametersValidSecretNumbers |
Numbers used to verify if the data loaded from flash was written beforehand. If the numbers equals the constant, we can consider everything is OK for a given pair.
std::array<std::array<float, NUM_PDOA_SLOPES>, NUM_ANTENNA_PAIRS> AngleCalculatorParameters::m_pdoaIntercepts {} |
Intercepts (b in y=ax+b) of the non-reciprocated PDOA functions for every curve (calculatedAngle = a*realAngle+b)
std::array<float, NUM_ANTENNA_PAIRS> AngleCalculatorParameters::m_pdoaNormalizationFactors {} |
Normalization factors used to stretch PDOA angles between -90 and +90 degrees. (Applied by dividing by the normalization after applying the asin() on the PDOA)
std::array<std::array<float, NUM_PDOA_SLOPES>, NUM_ANTENNA_PAIRS> AngleCalculatorParameters::m_pdoaSlopes {} |
Slopes (a in y=ax+b) of the non-reciprocated PDOA functions (calculatedAngle = a*realAngle+b)
std::array<std::array<uint8_t, NUM_ANTENNA_PAIRS>, NUM_ANTENNA_PAIRS> AngleCalculatorParameters::m_slopeDecisionMatrix {} |
Decision matrix used to choose between two slopes for the TDOA.
The first index represents the pair ID for which we are choosing the slope while the second index represents the slope ID (0 or 1) that should be used if the TDOA of the current index pair is OVER the confusion line (+30 degrees). The opposite of this value is used when UNDER the line.
In summary, decisionMatrix[i][j] tells which slope index to use for antenna pair i when the TDOA of antenna pair j is over 30 degrees.