From d11e37b14e3f8daf52434e4f3e7301e67387be6a Mon Sep 17 00:00:00 2001 From: Hector Cruz <37127013+hect95@users.noreply.github.com> Date: Tue, 21 May 2024 17:07:31 +0100 Subject: [PATCH] Add Cyclone DDS ROS RMW (#7) * Add cyclone DDS as ROS RMW + configurate it to support high msg throughput * Avoid `dev.sh` override `latest` docker tag for convenience * Rename docker images' names from `aw_radar_bridge_humble` to `av_radar_bridge` * Rename `aw_radar_bridge` pkg to `av_radar_bridge` * Enable colorised ROS log * Synchronise host time with docker container --- Dockerfile | 17 ++++++++-- README.md | 4 +-- .../CHANGELOG.rst | 9 +++++- .../CMakeLists.txt | 2 +- .../launch/av_radar_bridge.launch.xml | 32 +++++++++---------- .../package.xml | 2 +- .../src/radar_bridge_node.cpp | 0 cyclone_dds.xml | 9 ++++++ dev.sh | 7 ++-- runtime.sh | 5 +-- 10 files changed, 59 insertions(+), 28 deletions(-) rename {aw_radar_bridge => av_radar_bridge}/CHANGELOG.rst (68%) rename {aw_radar_bridge => av_radar_bridge}/CMakeLists.txt (98%) rename aw_radar_bridge/launch/aw_radar_bridge.launch.xml => av_radar_bridge/launch/av_radar_bridge.launch.xml (84%) rename {aw_radar_bridge => av_radar_bridge}/package.xml (95%) rename {aw_radar_bridge => av_radar_bridge}/src/radar_bridge_node.cpp (100%) create mode 100644 cyclone_dds.xml diff --git a/Dockerfile b/Dockerfile index ad6b22e..4815ef0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,19 +7,32 @@ RUN apt-get update \ # Install ROS msg dependencies ros-"$ROS_DISTRO"-radar-msgs \ ros-"$ROS_DISTRO"-sensor-msgs \ + # Install Cyclone DDS ROS RMW + ros-"$ROS_DISTRO"-rmw-cyclonedds-cpp \ && rm -rf /var/lib/apt/lists/* # Setup ROS workspace folders ENV ROS_WS=/opt/ros_ws WORKDIR $ROS_WS +# Set cyclone DDS ROS RMW +ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp + +COPY ./cyclone_dds.xml $ROS_WS/ + +# Configure Cyclone cfg file +ENV CYCLONEDDS_URI=file://${ROS_WS}/cyclone_dds.xml + +# Enable ROS log colorised output +ENV RCUTILS_COLORIZED_OUTPUT=1 + # ----------------------------------------------------------------------- FROM base AS prebuilt # Copy ROS2 msg files and bridge code over COPY ecal_to_ros/ros2/ src/ecal_to_ros/ -COPY aw_radar_bridge src/aw_radar_bridge +COPY av_radar_bridge src/av_radar_bridge # Source ROS2 setup for dependencies and build our code RUN . /opt/ros/"$ROS_DISTRO"/setup.sh && \ @@ -63,4 +76,4 @@ RUN sed --in-place --expression \ /ros_entrypoint.sh # Launch ros package -CMD ["ros2", "launch", "aw_radar_bridge", "aw_radar_bridge.launch.xml"] +CMD ["ros2", "launch", "av_radar_bridge", "av_radar_bridge.launch.xml"] diff --git a/README.md b/README.md index 748a567..15d7338 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# AW Radar Bridge +# Av Radar Bridge Repo for bridging between internal Continental Radar msgs and standard ROS msgs. @@ -36,5 +36,5 @@ Prepare a development setting that reflects local code modifications and simplif ./dev.sh ``` -- **Live Code Synchronization**: Mounts local `aw_radar_bridge` and `ecal_to_ros` directories with the container. +- **Live Code Synchronization**: Mounts local `av_radar_bridge` and `ecal_to_ros` directories with the container. - **Convenience Alias**: The development container features a `colcon_build` alias, which simplifies the ROS2 build process. Executing `colcon_build` runs `colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release` and then sources the `setup.bash` to ensure the environment is updated with the latest build artifacts. This alias enhances productivity by combining build commands and environment setup into a single, easy command. diff --git a/aw_radar_bridge/CHANGELOG.rst b/av_radar_bridge/CHANGELOG.rst similarity index 68% rename from aw_radar_bridge/CHANGELOG.rst rename to av_radar_bridge/CHANGELOG.rst index db01d5c..4aa9218 100644 --- a/aw_radar_bridge/CHANGELOG.rst +++ b/av_radar_bridge/CHANGELOG.rst @@ -1,7 +1,14 @@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Changelog for package aw_radar_bridge +Changelog for package av_radar_bridge ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Forthcoming +----------- +* Add cyclone DDS as ROS RMW + configurate it to support high msg throughput +* Avoid `dev.sh` override `latest` docker tag for convenience +* Enable colorised ROS log +* Synchronise host time with docker container + 1.0.0 (2024-05-01) ------------------ * Initial Radar configuration PR (`#1 `_) diff --git a/aw_radar_bridge/CMakeLists.txt b/av_radar_bridge/CMakeLists.txt similarity index 98% rename from aw_radar_bridge/CMakeLists.txt rename to av_radar_bridge/CMakeLists.txt index ea6d448..82f96d8 100644 --- a/aw_radar_bridge/CMakeLists.txt +++ b/av_radar_bridge/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.8) -project(aw_radar_bridge) +project(av_radar_bridge) # Default to C++14 if(NOT CMAKE_CXX_STANDARD) diff --git a/aw_radar_bridge/launch/aw_radar_bridge.launch.xml b/av_radar_bridge/launch/av_radar_bridge.launch.xml similarity index 84% rename from aw_radar_bridge/launch/aw_radar_bridge.launch.xml rename to av_radar_bridge/launch/av_radar_bridge.launch.xml index 7f84ff2..9bef078 100644 --- a/aw_radar_bridge/launch/aw_radar_bridge.launch.xml +++ b/av_radar_bridge/launch/av_radar_bridge.launch.xml @@ -4,49 +4,49 @@ - + - + - + - + - + - + - + - + @@ -55,49 +55,49 @@ - + - + - + - + - + - + - + - + diff --git a/aw_radar_bridge/package.xml b/av_radar_bridge/package.xml similarity index 95% rename from aw_radar_bridge/package.xml rename to av_radar_bridge/package.xml index b8ae385..3834545 100644 --- a/aw_radar_bridge/package.xml +++ b/av_radar_bridge/package.xml @@ -1,7 +1,7 @@ - aw_radar_bridge + av_radar_bridge 1.0.0 Bridge from internal radar msgs to Autoware radar msgs Alejandro Bordallo diff --git a/aw_radar_bridge/src/radar_bridge_node.cpp b/av_radar_bridge/src/radar_bridge_node.cpp similarity index 100% rename from aw_radar_bridge/src/radar_bridge_node.cpp rename to av_radar_bridge/src/radar_bridge_node.cpp diff --git a/cyclone_dds.xml b/cyclone_dds.xml new file mode 100644 index 0000000..99e60b7 --- /dev/null +++ b/cyclone_dds.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/dev.sh b/dev.sh index cf5cf59..d5152b6 100755 --- a/dev.sh +++ b/dev.sh @@ -5,12 +5,13 @@ # Build docker image up to dev stage DOCKER_BUILDKIT=1 docker build \ - -t aw_radar_bridge_humble \ + -t av_radar_bridge:latest-dev \ -f Dockerfile --target dev . # Run docker image with local code volumes for development docker run -it --rm --net host --privileged \ -v /dev/shm:/dev/shm \ + -v /etc/localtime:/etc/localtime:ro \ -v ./ecal_to_ros/ros2:/opt/ros_ws/src/ecal_to_ros \ - -v ./aw_radar_bridge:/opt/ros_ws/src/aw_radar_bridge \ - aw_radar_bridge_humble + -v ./av_radar_bridge:/opt/ros_ws/src/av_radar_bridge \ + av_radar_bridge:latest-dev diff --git a/runtime.sh b/runtime.sh index 0178b41..b17801e 100755 --- a/runtime.sh +++ b/runtime.sh @@ -13,10 +13,11 @@ fi # Build docker image only up to prebuilt stage DOCKER_BUILDKIT=1 docker build \ - -t aw_radar_bridge_humble \ + -t av_radar_bridge:latest \ -f Dockerfile --target runtime . # Run docker image without volumes docker run -it --rm --net host --privileged \ -v /dev/shm:/dev/shm \ - aw_radar_bridge_humble $CMD + -v /etc/localtime:/etc/localtime:ro \ + av_radar_bridge:latest $CMD