HiveMind
Public Attributes | List of all members
AngleCalculatorParameters Struct Reference

#include <AngleCalculatorParameters.h>

Collaboration diagram for AngleCalculatorParameters:
Collaboration graph

Public Attributes

std::array< float, NUM_ANTENNA_PAIRSm_pdoaNormalizationFactors {}
 
std::array< std::array< float, NUM_PDOA_SLOPES >, NUM_ANTENNA_PAIRSm_pdoaSlopes {}
 
std::array< std::array< float, NUM_PDOA_SLOPES >, NUM_ANTENNA_PAIRSm_pdoaIntercepts {}
 
std::array< std::array< uint8_t, 2 >, NUM_ANTENNA_PAIRSm_antennaPairs {}
 
std::array< std::array< uint8_t, NUM_ANTENNA_PAIRS >, NUM_ANTENNA_PAIRSm_slopeDecisionMatrix {}
 
std::array< uint8_t, NUM_ANTENNA_PAIRSm_parametersValidSecretNumbers
 
float m_boardOrientationOffset
 

Detailed Description

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.

Member Data Documentation

◆ m_antennaPairs

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

◆ m_boardOrientationOffset

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

◆ m_parametersValidSecretNumbers

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.

◆ m_pdoaIntercepts

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)

◆ m_pdoaNormalizationFactors

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)

◆ m_pdoaSlopes

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)

◆ m_slopeDecisionMatrix

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.


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