-
Notifications
You must be signed in to change notification settings - Fork 0
/
match_collection_qr_schema.yml
93 lines (85 loc) · 4.06 KB
/
match_collection_qr_schema.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Used for Match Collection QR compression by Match Collection App and QR decompression by Server
# QR is encoded in an Alphanumeric QR
# Contains information about this schema file
schema_file:
# Version of schema file
# Incremented every merged schema change
version: 2
# Each decompressed variable name corresponds to a length 2 or 3 list
# First item is the compressed variable name
# Second item is server-side data type
# Third item (if it exists) is the type within the list, if a dict it requires specific implementation in decompressor
# Fourth item (if it exists) is the length of each item in a none-dict list, if not provided _list_data_separator is used as a separator
# Names starting with "_" do not correspond to a compressed variable, they are used to aid in (de)compression
_list_data_separator: "&"
# Data that is shared between the objective and subjective QRs.
generic_data:
_separator: '$' # Separates key:value pairs
_section_separator: '%' # Separates generic from objective/subjective data
schema_version: [A, int] # Must remain constant between versions
match_number: [B, int]
timestamp: [C, int]
match_collection_version_number: [D, str]
scout_name: [E, str]
alliance_color_is_red: [F, bool]
# Data specific to objective match collection QR
objective_tim:
_start_character: '+' # First character in QR used to identify QR type
_separator: '$' # Separates key:value pairs
team_number: [Z, str] # The team number
scout_id: ['Y', int] # Used to determine which tablets have not submitted ('Y' in quotes because it's a keyword on its own)
start_position: [X, str] # str representing where a robot starts in auto (1, 2, 3, or 4)
timeline: [W, list, dict] # List of dictionaries
has_preload: [V, bool] # bool representing if a robot has a preloaded note
stage_level_left: [U, str] # str representing if a robot is onstage on the amp chain, failed to get on chain, or didn't attempt(the specific chain)
stage_level_right: [T, str] # str representing if a robot is onstage on the source chain, failed to get on chain, or didn't attempt
stage_level_center: [S, str] # str representing if a robot is onstage on the blind(farthest from alliance) chain, failed to get on chain, or didn't attempt
parked: [R, bool] # bool representing if a robot parked
# Timeline is part of objective match collection QR
# Data for an action in the timeline
# First value represents the length, second represents the target type, third represents the position within
# each action
timeline:
# No separators within timeline to reduce QR size. Each action is a fixed 5-character length
time: [3, int, 0] # Encoded in base 10. Always length 3, e.g. '051' for 51 seconds
action_type: [2, "Enum[str]", 1] # Encoded in alphabet base 26. Always length 2, e.g. 'AJ' for the 10th action
# Data specific to subjective match collection QR
subjective_aim:
_start_character: '*' # First character in QR used to identify QR type
_separator: '$' # Separates each key:value pair
_team_separator: '#' # Separates each team's section
_alliance_data_separator: '^' # Separates team data from data about the entire alliance
team_number: [A, str] # The team number
quickness_score: [B, int] # A ranking value between 1 and 3
field_awareness_score: [C, int] # A ranking value between 1 and 3
time_left_to_climb: [D, int] # A value equal to the number of seconds left when a robot leaves to climb
climb_after: [E, bool] # True if robot climbed after, else False
# Contains all the enums and their values
# Action type is a alphabet base 26 string representation
action_type:
score_speaker: AA
score_amp: AB
start_incap_time: AC
end_incap_time: AD
auto_intake_spike_1: AE
auto_intake_spike_2: AF
auto_intake_spike_3: AG
auto_intake_center_1: AH
auto_intake_center_2: AI
auto_intake_center_3: AJ
auto_intake_center_4: AK
auto_intake_center_5: AL
auto_intake_other: AM
intake_amp: AN
intake_poach: AO
intake_center: AP
intake_far: AQ
score_amplify: AR
drop: AS
ferry: AT
fail: AU
to_teleop: AV
to_endgame: AW
score_trap: AX
ferry_shoot: AY
ferry_drive: AZ