Protobuffers
What are Protobuffers?
Keep this short — one paragraph explaining that Protocol Buffers are Google's binary serialization format, why the team chose them (compact, fast, language-agnostic, strongly typed), and link to the official documentation: https://protobuf.dev/overview/
The ERC-Protobufs Repository
Explain that all protobuf definitions live in a shared repository called ERC-Protobufs, used as a submodule across the rover's software stack. Link to the repo. Explain the folder structure — components/board_name/ — and why messages are organized by the hardware board or subsystem they belong to (e.g. components/arm_board/, components/basestation/).
Naming Conventions
This is important enough to call out explicitly. Every message name must be globally unique across the entire repo regardless of folder, because proto3 imports use filename paths and name collisions cause build failures. The convention is to prefix with the component name — ArmBoardControlSignals, BasestationControlMode, SensorBoardIMUInfo etc.
How Protobufs are Compiled
Briefly explain that the comms package fetches ERC-Protobufs at build time via CMake's FetchContent, pinned to a specific commit hash. protoc then generates .pb.h and .pb.cc files into the build directory. Mention that when new protos are added to ERC-Protobufs, the GIT_TAG in CMakeLists.txt needs to be updated to the new commit — link to the "Adding a New Message" page for the full procedure.
The PBEnvelope
One short paragraph: all protobuf messages on this rover are wrapped inside a PBEnvelope before being sent over UDP. Link to the dedicated PBEnvelope page for the full explanation.