The league attempts to create log files of all official matches during each RoboCup. They contain the timestamped ProtoBuf messages of ssl-vision and ssl-game-controller.
Software
The league provides multiple tools to deal with log files of SSL games:
- ssl-logtools (C++): Original tooling with recorder and player
- ssl-go-tools (Go): Set of CLI tools to record, play and analyze log files
File Format
Each log file starts with the following header:
1: String – File type (“SSL_LOG_FILE”)
2: Int32 – Log file format version
Format version 1 encodes the protobuf messages in the following format:
1: Int64 – Receiver timestamp in ns
2: Int32 – Message type
3: Int32 – Size of binary protobuf message
4: String – Binary protobuf message
The message types are:
MESSAGE_BLANK = 0 (ignore message)
MESSAGE_UNKNOWN = 1 (try to guess message type by parsing the data)
MESSAGE_SSL_VISION_2010 = 2
MESSAGE_SSL_REFBOX_2013 = 3
MESSAGE_SSL_VISION_2014 = 4
MESSAGE_SSL_VISION_TRACKER_2020 = 5
MESSAGE_SSL_INDEX_2021 = 6
Files can optionally contain an index at the end of the file for random access to messages (for fast seeking for example). An indexed log file has a message of type MESSAGE_SSL_INDEX_2021 as the last message. The value of the timestamp is irrelevant. The message is not in protobuf format, but in simple binary format for easy relative access from the end of the file:
1: []Int64 – Array with byte-aligned offsets, starting at the beginning of the file
2: Int64 – Offset from the end of the file to the beginning of the index message
3: String – Index marker (“INDEXED”) to quickly check if a file is indexed
Storage locations
See Collected Data