Integrate Zenoh into PerceptionBridge and update build system#36
Merged
Conversation
* ci: install zenoh and zenoh-cxx from source in Dockerfile.ci * feat: replace gRPC with Zenoh for PerceptionBridge publishing - Refactor PerceptionBridge to publish perception frames via Zenoh instead of gRPC - Add ZenohPublisher utility class for publishing serialized messages - Update CMakeLists.txt to include zenohc and zenohcxx dependencies - Update PerceptionBridge and main.cc to use Zenoh session for publishing - Remove gRPC service and related code from PerceptionBridge * test: add unit test for PerceptionBridge zenoh streaming refactor: improve formatting and consistency in PerceptionBridge and related files * feat: update build system and main for Zenoh integration and cleanup - Refactor CMakeLists.txt to use find_package for gRPC and Protobuf, add proto subdirectory, and update install targets - Remove gRPC and protobuf linking from main target, add zenohcxx dependency in package.xml - Update main.cc for improved Zenoh session configuration and logging, minor code cleanup - Fix PerceptionBridge Zenoh prefix, update test to use explicit Zenoh session - Minor style fixes in bridge service implementations * ci: update build scripts to set CMAKE_PREFIX_PATH and LD_LIBRARY_PATH for local dependencies * ci: add Docker image build and publish workflow, update dependencies and .dockerignore * ci: update autoware-ci.yaml to skip autoware_internal_msgs in rosdep install * ci: update CI to use custom Docker image and skip ament_cmake_clang_format in rosdep install * ci: update Docker image tag to use dynamic repository owner in docker-publish workflow * ci: trigger Docker image build on pull requests updating Dockerfile.ci * ci: update Docker image tag to use static repository owner in docker-publish workflow * ci: add LLVM APT repository setup to Dockerfile.ci for clang installation * ci: update Dockerfile.ci to build zenoh-c and zenoh-cpp from source * ci: install Rust toolchain in Dockerfile.ci for zenoh-c build * ci: fix working directory cleanup after zenoh-cpp build in Dockerfile.ci * cmake: refactor protobuf and gRPC integration into proto_lib target - Use find_package with CONFIG for protobuf and gRPC - Move proto code generation and dependencies to proto_lib - Update bridge and test targets to link against proto_lib instead of direct gRPC/protobuf targets - Remove redundant add_dependencies and manual proto file handling - Clean up commented and duplicate code * ci: enable Docker build cache in docker-publish workflow * ci: update .dockerignore and docker-publish workflow for improved Docker caching zenoh: integrate Zenoh as a middleware for perception data publishing, removes gRPC/protobuf as build dependencies in several places. Signed-off-by: AhmedAdelWafdy7 <fandes99@gmail.com> --------- Signed-off-by: AhmedAdelWafdy7 <fandes99@gmail.com>
…date Dockerfile dependencies
…clang-common in CI image
…publish workflow Signed-off-by: AhmedAdelWafdy7 <fandes99@gmail.com>
…t test arguments in autoware-ci.yaml Signed-off-by: AhmedAdelWafdy7 <fandes99@gmail.com>
Improve CI coverage build with Clang and update Dockerfile dependencies
Refactor TripBridge to use Zenoh for publishing instead of gRPC
…to Zenoh-based publishing
…proved monitoring - Add Zenoh session and subscriber to monitor autoware topic streams - Subscribe to /planning/mission_planning/route and track route reception - Improve test output with detailed state transitions and streaming status - Refactor setup and teardown for Zenoh and ROS2 resources - Add checks for Zenoh data flow during vehicle motion phase
Refactor PlanningBridge and ClusterBridge for Zenoh integration
…er adapters, and app handles - Introduce VehicleGatewayClient and VehicleGatewayService for gRPC-based vehicle gateway communication - Add Providers.h interface definitions for ETA, location, and trip management abstraction - Implement ClusterBridgeProvider and AutowareControllerProvider adapters for gateway integration - Add AutowareApp.h/cpp to encapsulate application startup/shutdown and component wiring - Update CMakeLists.txt to build and link new gateway and provider components - Extend TripController and related classes for ETA queries, trip move, and state callbacks - Refactor namespace usage to autoware_agent for consistency - Update proto files for new VehicleGateway service and remove deprecated gRPC contracts - Add longitude/latitude to FrameStates and propagate through ClusterBridge - Update tests and bridges to use new namespace and method names
…pters for improved trip lifecycle handling - Refactor TripStatus to use explicit member naming and add current_gps/start_gps fields - Update TripState enum with INITIALIZING_IN_MAP and clarify state transitions - Revise AutowareController and TripController APIs: startTrip now takes only a callback, add queryEtaSync helper, and ArrivalCallback support - Adjust adapters (AutowareControllerProvider, ClusterBridgeProvider) to use new TripStatus fields and propagate trip_id - Update VehicleGatewayService and VehicleGatewayClient for revised proto and trip_id handling - Fix namespace casing inconsistencies (AutowareAgent → autoware_agent) - Update tests to use new TripStatus fields and skip/guard tests if controller is not IDLE or Autoware services are unavailable - Minor formatting, whitespace, and comment improvements for clarity
Integrate VehicleGateway with gRPC and refactor trip lifecycle handling
…g and integrate into AutowareApp
Add VehicleGatewayStreamClient with gRPC streaming integration
…rt and new map files
Integrate LaneletMap for route handling and update configurations
Vechile routing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces significant improvements to the CI pipeline and build system, focusing on reproducibility, maintainability, and performance. The main changes include the introduction of a custom Docker CI image and workflow, refactoring the CMake build configuration for better dependency handling, and streamlining the GitHub Actions workflows to use the new CI image and cache compilation artifacts. Additionally, there are minor documentation and compatibility updates.
CI/CD Infrastructure Improvements:
.github/workflows/docker-publish.ymlto build and publish a custom Docker CI image (ghcr.io/yaquod/autoware-agent-ci:latest) used in all CI jobs, ensuring consistent build environments. ([.github/workflows/docker-publish.ymlR1-R39](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-5b21991be47c2922383bdc0b6bf00b65af7db51b82d049dd8d6ad03e3d37ac98R1-R39)).dockerignorefile to minimize Docker build context and only include necessary files for the CI image. ([.dockerignoreR1-R6](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-2f754321d62f08ba8392b9b168b83e24ea2852bb5d815d63e767f6c3d23c6ac5R1-R6)).github/workflows/autoware-ci.yamlto use the new custom Docker image, removed manual dependency installation steps, and added ccache caching for faster builds. ([[1]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-f334dc65ebb547327aedd5d5bd69627488d31b613deac56042112e9a1c1e8ae8L17-R17),[[2]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-f334dc65ebb547327aedd5d5bd69627488d31b613deac56042112e9a1c1e8ae8L28-L48),[[3]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-f334dc65ebb547327aedd5d5bd69627488d31b613deac56042112e9a1c1e8ae8L87-R85),[[4]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-f334dc65ebb547327aedd5d5bd69627488d31b613deac56042112e9a1c1e8ae8R99-L130),[[5]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-f334dc65ebb547327aedd5d5bd69627488d31b613deac56042112e9a1c1e8ae8L175-R154),[[6]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-f334dc65ebb547327aedd5d5bd69627488d31b613deac56042112e9a1c1e8ae8L185-L198),[[7]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-f334dc65ebb547327aedd5d5bd69627488d31b613deac56042112e9a1c1e8ae8L221-R193),[[8]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-f334dc65ebb547327aedd5d5bd69627488d31b613deac56042112e9a1c1e8ae8L256-R267))lcovtogcovrfor improved coverage reporting and simplified setup. ([.github/workflows/autoware-ci.yamlR279-R297](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-f334dc65ebb547327aedd5d5bd69627488d31b613deac56042112e9a1c1e8ae8R279-R297))Build System and Dependency Management:
CMakeLists.txtto use CMake'sfind_packagefor dependencies (protobuf,gRPC,zenohc,zenohcxx,OpenMP) instead ofpkg_check_modules, and modularized proto/gRPC code generation into aprotosubdirectory for better maintainability. ([[1]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aL35-L98),[[2]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aL110-R89))[[1]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aL110-R89),[[2]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aL161-R112))CMP0144for compatibility with newer CMake versions. ([CMakeLists.txtR7-R10](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aR7-R10))Documentation and Miscellaneous:
README.mdto point to the correct AWSIM map download location. ([README.mdL156-R156](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L156-R156))[[1]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aL173-R128),[[2]](https://github.com/Yaquod/autoware-agent/pull/36/files#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aR138))These changes make the CI pipeline more robust and reproducible, simplify maintenance, and ensure that builds are faster and more reliable.