Protobuffers
Overview
What are Protobuffers?
ProtobuffersKeep 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 typeshared 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 structuredfolder, messagesbecause 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 allowthe uscomms package fetches ERC-Protobufs at build time via CMake's FetchContent, pinned to efficientlya passspecific informationcommit between multiple subsystems. They have also been defined in this page of the wiki:hash. Startingprotoc withthen Protobufs.
Structure
The protobuffers are divided into components based on the type of information they reference. Throughgenerates Starting with Protobufs and page you can access a Github Repository called "ERC Protobufs" in which you can see all the protobuffers.pb.htheir.pb.cc structure, but as an example we can focus on "components/basestation/detected_object.proto". Since it is a protobuffer that will mostly be passed from Jonny Boifiles into the basestation,build thendirectory. itMention wouldn'tthat makewhen muchnew senseprotos are added to placeERC-Protobufs, itthe GIT_TAG in CMakeLists.txt needs to be updated to the driving_boardnew component,commit — link to the "Adding a New Message" page for instance.the full procedure.
The PBEnvelope
One short paragraph: all protobuf messages on this rover are wrapped inside a protobuffer documentationPBEnvelope coversbefore howbeing sent over UDP. Link to beginthe writingdedicated aPBEnvelope custom messagepage for anythingthe youfull may see fit. explanation.