-
Notifications
You must be signed in to change notification settings - Fork 0
/
match_collection_qr_schema.yml
89 lines (82 loc) · 3.98 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
# 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: 16
# 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
serial_number: [B, str]
match_number: [C, int]
timestamp: [D, int]
match_collection_version_number: [E, str]
scout_name: [F, str]
alliance_color_is_red: [G, 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
auto_charge_level: [V, str] # str representing where a robot finishes in auto to ('none', 'docked', 'engaged')
tele_charge_level: [U, str] # str representing where a robot finished in the endgame ('none', 'park', 'docked', 'engaged')
preloaded_gamepiece: [T, str] # str representing the preloaded game piece of a robot ('NONE', 'CONE', 'CUBE')
# 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
was_tippy: [D, bool] # True if robot was tippy during match, else False
auto_pieces_start_position: [E, list, int, 1] # A list of length four for each auto starting position, 0 for cone, 1 for cube, 2 for none
played_defense: [F, bool] # True if robot played defense at least once in the match, else False
defense_timestamp: [G, int] # Always padded to 3 characters
# Contains all the enums and their values
# Action type is a alphabet base 26 string representation
action_type:
score_cone_high: AA
score_cone_mid: AB
score_cone_low: AC
score_cube_high: AD
score_cube_mid: AE
score_cube_low: AF
intake_ground: AG
intake_double: AH
intake_low_row: AI
intake_mid_row: AJ
intake_high_row: AK
start_incap: AL
end_incap: AM
charge_attempt: AN
to_teleop: AO
auto_intake_one: AP
auto_intake_two: AQ
auto_intake_three: AR
auto_intake_four: AS
score_fail: AT
intake_single: AU
supercharge: AV