A dedicated communication bridge between the vehicle's internal systems (like the main application, sensors, Autoware) and the external cloud backend. This gateway module handles bidirectional communication, enabling telemetry data transmission from the vehicle to the cloud and command reception from the cloud to the vehicle.
The Vehicle Cloud Gateway serves as a critical middleware component in the Yaquod autonomous vehicle system. It provides secure and reliable data transmission between the vehicle and the cloud, protocol translation, message routing, and ensures that commands and telemetry are delivered efficiently and safely.
First, ensure you have Homebrew installed. Then, install all dependencies:
brew install \
cmake \
git \
pkg-config \
ninja \
openssl \
zlib \
grpc \
protobuf \
boost \
libpaho-mqtt \
paho-cpp# Update package list and install all dependencies
sudo apt-get update && sudo apt-get install -y \
build-essential \
cmake \
git \
pkg-config \
ninja-build \
libssl-dev \
zlib1g-dev \
libgrpc++-dev \
libprotobuf-dev \
protobuf-compiler-grpc \
protobuf-compiler \
libpaho-mqtt-dev \
libpaho-mqttpp-dev \
libboost-system-dev \
libboost-thread-devsudo dnf install -y \
gcc-c++ \
cmake \
git \
pkg-config \
ninja-build \
openssl-devel \
zlib-devel \
grpc-devel \
grpc-plugins \
protobuf-devel \
boost-devel \
paho-c-devel \
paho-cpp-develClone the repository with submodules (required for third-party dependencies):
git clone --recursive https://github.com/Yaquod/iv-cloud-gateway.git
cd iv-cloud-gatewayIf you've already cloned without --recursive, initialize the submodules:
git submodule update --init --recursivemkdir -p build
cd buildcmake ..BUILD_TESTS: Build unit tests (default: ON)ENABLE_COVERAGE: Enable code coverage reporting (default: OFF)ENABLE_SANITIZERS: Enable sanitizers for debugging (default: OFF)
Example with options:
cmake -DBUILD_TESTS=ON -DENABLE_SANITIZERS=OFF ..if [[ "$(uname)" == "Darwin" ]]; then
# For macOS
make -j$(sysctl -n hw.ncpu)
else
# For Linux
make -j$(nproc)
fiOr for a specific target:
make vehicle_gatewayctest --output-on-failureOr directly:
make testAfter building, the executable will be located in the build/bin directory:
./build/bin/vehicle_gateway- Implement your feature in the appropriate module (
http_client/,mqtt_client/, etc.) - Add corresponding tests in the
tests/directory - Update the CMakeLists.txt if adding new source files
- Run tests to ensure everything works
See the LICENSE file for details.
- Yaquod Project Team - 2025-2026