Arbitration¶
The arbitration algorithm in Autopilot 4x is based on a scoring system. Each autopilot must send continuously a set of arbitration variables that will be used by the arbiter in order to calculate the score for each unit. Then, based on the scores and the current arbitration mode, the arbiter will choose to keep the current selected autopilot, or switching to one of the other units.
A Score is a 32 bit, single precission, floating-point value. This parameter is first computed resulting in a range between 0 and 0xFFFFFFFF, where 0 is a perfect score (Score’). To achieve a better understanding, Score’ is converted to a value comprehended between 0 an 100 (Score), being 100 the best possible score in the end.
Scores are calculated using the arbitration variables received from each autopilot at their dedicated addresses. After receiving the value, the following formula is used to compute the score for their respective unit:
Where:
\(j\) |
Variable index |
\(x_{i,j}\) |
j variable from autopilot i |
\(\mu_j\) |
j variable reference |
\(d_{j,max}\) |
Maximum allowed error |
\(w_j\) |
Weight of j variable |
\(N\) |
Number of variables |
\(score'_i\) |
Score’ of unit i |
\(score_i\) |
Score of unit i |
Tip
The Arbitration weights should be used to increase or decrease the relevance that a certain arbitration variable has over the calculation of the score.
Any variable in Veronte can be used as an arbitration variable. Depending on the platform, operation, application etc. the more relevant variables can be selected for its use as arbitration references.
Config¶
Absolute Arbitration Variables¶
Absolute arbitration variables are indicators that are inherently good or bad, and so they are added directly to the score.
Examples of absolute arbitration variables are Link Quality, GNSS accuracy or warnings such as Sensors error or Position not fixed.
Relative Arbitration Variables¶
Relative arbitration variables are not inherently good or bad, and hence need to be compared against the other autopilots in order to calculate its score contribution.
The contribution to the score from a relative arbitration variable will be its Deviation from the Average of the same variable from each autopilot.
Examples of relative arbitration variables are Attitude, Position, measurements from sensors, etc.
Arbitration Example¶
Autopilot |
Var. Nº |
Veronte Variable |
Type |
\(x_{i,j}\) |
\(\mu_j\) |
\(w_j\) |
Relative score |
\(Score'_i\) |
\(Score_i\) |
---|---|---|---|---|---|---|---|---|---|
1 |
1 |
Roll |
Relative |
0.12 |
0.096 |
1 |
0.054 |
0.043 |
95.67 |
2 |
Pitch |
Relative |
0.30 |
0.283 |
1 |
0.027 |
|||
3 |
GNSS 1 Accuracy |
Absolute |
1.7 |
0.01 |
0.004 |
||||
2 |
1 |
Roll |
Relative |
0.10 |
0.096 |
1 |
0.0011 |
0.0039 |
99.60 |
2 |
Pitch |
Relative |
0.28 |
0.283 |
1 |
0.0011 |
|||
3 |
GNSS 1 Accuracy |
Absolute |
1.9 |
0.01 |
0.005 |
||||
3 |
1 |
Roll |
Relative |
0.07 |
0.096 |
1 |
0.071 |
0.046 |
95.39 |
2 |
Pitch |
Relative |
0.27 |
0.283 |
1 |
0.017 |
|||
3 |
GNSS 1 Accuracy |
Absolute |
1.5 |
0.01 |
0.0036 |
In the above example, AP2 is considered to be the best, since it has the highest total score. Even though its GNSS accuracy is the worst of all 3, its values for pitch and roll are the ones with the lower deviation from the mean.
CAN Setup¶
Here users can configure the received CAN Ids for each one of the 3 possible Autopilots 1x that are sending data to arbiters. Therefore, to send data from any of them to arbiters, these Ids must be specified.
Send status: The user can enable status sending and set a status message period.
Send score: Score sending can be enabled and a period of scoring messages can be set.
Status message ID: CAN ID to which Status and Score messages are sent.
Extended: If enabled, the frame format will be this, ‘Extended’, i.e. with a 29-bit identifier. Otherwise, the frame format ‘Standard’ (11-bit identifier) is set by default.
Autopilot 1-3: CAN IDs used for the reception of autopilot 4x arbitration messages for each AP.
Extended: If enabled, the frame format will be this, ‘Extended’, i.e. with a 29-bit identifier. Otherwise, the frame format ‘Standard’ (11-bit identifier) is set by default.