From 1b3d02559bdb2626c497b8568ada63a2905b6fbe Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Fri, 21 Aug 2026 20:29:51 +0800 Subject: [PATCH 01/14] :heavy_plus_sign: Added supplementary Dockerfile.nav2 to run dual Nav2 simulation out of the box for docker users. Signed-off-by: Gary Bey --- docker/Dockerfile.nav2 | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docker/Dockerfile.nav2 diff --git a/docker/Dockerfile.nav2 b/docker/Dockerfile.nav2 new file mode 100644 index 0000000..d7cbfbc --- /dev/null +++ b/docker/Dockerfile.nav2 @@ -0,0 +1,37 @@ +ARG ROS_DISTRO=jazzy + +# ========================================== +# Builder +# ========================================== +FROM ghcr.io/open-rmf/ros2_rust_base:${ROS_DISTRO} + +ENV DEBIAN_FRONTEND=noninteractive +ENV ROS_DISTRO=${ROS_DISTRO} + +WORKDIR /nav2_traffic_ws/src + +# Copy your workspace packages +COPY ./ ./next_gen_prototype + +# Install package dependencies +WORKDIR /nav2_traffic_ws + +RUN apt-get update && \ + rosdep update && \ + rosdep install \ + --from-paths src \ + --ignore-src -yr --skip-keys="rclrs ament_cargo ament_python" \ + --ignore-src \ + -r \ + -y && \ + rm -rf /var/lib/apt/lists/* + +# Build the workspace +RUN . /opt/ros/${ROS_DISTRO}/setup.sh && \ + colcon build --packages-up-to sp_demo_nav2_bringup rmf_nav2_traffic rmf_path_server_demo rmf_path_server_test --symlink-install + +# Source the workspace whenever a shell starts +RUN echo "source /nav2_traffic_ws/install/setup.bash" >> /root/.bashrc + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["bash"] From 1c95d7e17821349aa33bce7fd31108e39538f00d Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Fri, 21 Aug 2026 20:34:57 +0800 Subject: [PATCH 02/14] :blue_book: Added Method 3 under Building Instructions for purely local container build approach. Signed-off-by: Gary Bey --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 66b9485..d146dde 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ on discourse.
- Method 2: Using a container (click here) + Method 2: Using distrobox (click here) > We pre-build base containers with all the dependencies you can use `rocker`, `distrobox`, `podman` or any other oci compliant tool to get a base dev environment. For the purposes of this set of instructions we use distrobox: > ```bash @@ -57,6 +57,15 @@ on discourse. > ```
+
+ Method 3: Using docker container (click here) + +> If you prefer to build the base Docker image from scratch. Please use the following command: +> ```bash +> docker build -t ros2_rust_base:jazzy -f docker/Dockerfile.base . +> ``` +
+ ### 2. Import Workspace Dependencies Create a workspace and clone the repo: ```bash From 7fe080cc1f88fec610adcfef416ba9b3917f3cb7 Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Fri, 21 Aug 2026 20:36:38 +0800 Subject: [PATCH 03/14] :blue_book: Made coherent the last section header in root README.md to match style of previous section header. Signed-off-by: Gary Bey --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d146dde..705a595 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ on discourse. > If you prefer to build the base Docker image from scratch. Please use the following command: > ```bash -> docker build -t ros2_rust_base:jazzy -f docker/Dockerfile.base . +> docker build --load -t ros2_rust_base:jazzy -f docker/Dockerfile.base . > ``` @@ -94,7 +94,7 @@ Verify core scenario coordination and robust following behavior: colcon test --packages-select rmf_path_server_test --event-handlers console_direct+ ``` -## Running the Interactive Web Demonstration +## Running Interactive Web Demonstration https://github.com/user-attachments/assets/d5793eee-515d-49a9-a92c-9926617b48ed From 0772c195671a41afb825ff266ec1d9a69a6e2c7c Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Fri, 21 Aug 2026 20:55:19 +0800 Subject: [PATCH 04/14] :blue_book: Added new section to surface Nav2 integration features of next_gen_prototype with linked sub-README.md. Signed-off-by: Gary Bey --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 705a595..8935c92 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,9 @@ colcon test --packages-select rmf_path_server_test --event-handlers console_dire ## Running Interactive Web Demonstration +> [!NOTE] +> This provides a lightweight visualization of how `next_gen_prototype` utilizes `mapf` to guide multiple robot agents towards their goal while managing their traffic. + https://github.com/user-attachments/assets/d5793eee-515d-49a9-a92c-9926617b48ed @@ -107,3 +110,10 @@ ros2 launch rmf_path_server_demo demo.launch.py 2. Click **Add Robot** to drop active participants onto the canvas. 3. Select a robot and click a cell to place its goal. 4. Click **Send Scenario** to observe multi-agent trajectory generation and live execution progress. + +## Running Nav2 Integration Demonstration + +> [!NOTE] +> This shows users how `next_gen_prototype`'s prototype messages and traffic management design is used for multi-robot coordinations through [Nav2](https://docs.nav2.org/) navigation system. + +Follow instructions in [nav2_integration/README.md](./nav2_integration/README.md). \ No newline at end of file From 91bcfe361775e2bb311e36398d0adffcce24b903 Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Fri, 21 Aug 2026 21:14:10 +0800 Subject: [PATCH 05/14] :blue_book: Added docker build and run instructions under nav2_integration demo README.md with reference to Dockerfile.nav2. Signed-off-by: Gary Bey --- nav2_integration/README.md | 97 +++++++++++++++++++++++++++++++++++--- 1 file changed, 90 insertions(+), 7 deletions(-) diff --git a/nav2_integration/README.md b/nav2_integration/README.md index 54d7ef8..86baa27 100644 --- a/nav2_integration/README.md +++ b/nav2_integration/README.md @@ -91,8 +91,23 @@ graph TD ## Try out the demo +### Docker Setup -### Setup +Follow the steps below to use pre-made `docker/Dockerfile.nav2` to run the demo containerized without fuss: + +
+ Click here. + +```bash +docker build --load -t ros2_rust_nav2_tb4_sim:jazzy -f docker/Dockerfile.nav2 . +``` + +
+ +> [!WARNING] +> This process typically takes about **20 minutes**, depending on internet connectivity strength. + +### Manual Setup Do a fresh update & upgrade: ``` @@ -133,18 +148,45 @@ colcon build --packages-up-to sp_demo_nav2_bringup rmf_nav2_traffic rmf_path_ser With the workspace built and sourced, run the following nodes: Spin up the Nav2 simulation: -``` +```bash ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py robots:="robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};" ``` -In a separate terminal, run the demo launch file containing the path server, plan executor, destination server, path visualizer and Nav2 traffic nodes: +
+ Click here if running in docker container. + +```bash +xhost +local:docker + +docker run -it --rm \ +--name ros2_rust_nav2_tb4_sim_c \ +--gpus all \ +--env="DISPLAY" \ +--env="QT_X11_NO_MITSHM=1" \ +-v /tmp/.X11-unix:/tmp/.X11-unix \ +--device=/dev/dri \ +ros2_rust_nav2_tb4_sim:jazzy bash -c "source /nav2_traffic_ws/install/setup.bash && ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\"" ``` + +
+ +In a separate terminal, run the demo launch file containing the path server, plan executor, destination server, path visualizer and Nav2 traffic nodes: +```bash ros2 launch rmf_path_server_demo demo_nav2.launch.py robots:="robot0 robot1" ``` -Send action goals to the robots: +
+ Click here if running in docker container. +```bash +docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && ros2 launch rmf_path_server_demo demo_nav2.launch.py robots:=\"robot0 robot1\"" ``` + +
+ +Send action goals to the robots: + +```bash ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose "{ pose: { header: { @@ -158,8 +200,28 @@ ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose "{ } }" ``` - +
+ Click here if running in docker container. + +```bash +docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ + ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose \"{ + pose: { + header: { + stamp: {sec: 0, nanosec: 0}, + frame_id: 'map' + }, + pose: { + position: {x: 9.0, y: 3.0, z: 0.0}, + orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0} + } + } + }\" +" ``` +
+ +```bash ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose "{ pose: { header: { @@ -174,9 +236,30 @@ ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose "{ }" ``` +
+ Click here if running in docker container. + +```bash +docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ + ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose \"{ + pose: { + header: { + stamp: {sec: 0, nanosec: 0}, + frame_id: 'map' + }, + pose: { + position: {x: 9.0, y: 6.0, z: 0.0}, + orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0} + } + } + }\" +" +``` +
+ Alternate navigation goals: -``` +```bash ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose "{ pose: { header: { @@ -191,7 +274,7 @@ ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose "{ }" ``` -``` +```bash ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose "{ pose: { header: { From 951b88fbbf26b8dee6eb3fdefcd9c93108f9de69 Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Sat, 22 Aug 2026 11:37:05 +0800 Subject: [PATCH 06/14] :blue_book: Utilized warning highlight formatting for fore-warnining in root README.md. Signed-off-by: Gary Bey --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8935c92..25c85d2 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ on discourse. # Setup & Building -:warning: As this is a project under construction, these instructions are likely to change rapidly. +> [!WARNING] +> As this is a project under construction, these instructions are likely to change rapidly. ## Pre-requisites From 83d7df175d98f915d4c9283eef4b1ed33705c52c Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Sat, 22 Aug 2026 11:37:59 +0800 Subject: [PATCH 07/14] :hammer: Added specific label on what type of desktop gui config types are available for containerized display. Signed-off-by: Gary Bey --- nav2_integration/README.md | 45 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/nav2_integration/README.md b/nav2_integration/README.md index 86baa27..a10ab51 100644 --- a/nav2_integration/README.md +++ b/nav2_integration/README.md @@ -153,7 +153,7 @@ ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py robots: ```
- Click here if running in docker container. + Click here if running in docker container (GPU + X11). ```bash xhost +local:docker @@ -165,9 +165,50 @@ docker run -it --rm \ --env="QT_X11_NO_MITSHM=1" \ -v /tmp/.X11-unix:/tmp/.X11-unix \ --device=/dev/dri \ -ros2_rust_nav2_tb4_sim:jazzy bash -c "source /nav2_traffic_ws/install/setup.bash && ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\"" +ros2_rust_nav2_tb4_sim:jazzy \ +bash -c "source /nav2_traffic_ws/install/setup.bash && \ +ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py \ +robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\"" ``` +
+ +
+ Click here if running in docker container (GPU + Wayland). + +```bash +xhost +local:docker +docker run -it --rm \ +--name ros2_rust_nav2_tb4_sim_c \ +--gpus all \ +--env="DISPLAY=${DISPLAY}" \ +--env="QT_X11_NO_MITSHM=1" \ +-v /tmp/.X11-unix:/tmp/.X11-unix:rw \ +--device=/dev/dri \ +ros2_rust_nav2_tb4_sim:jazzy \ +bash -c "source /nav2_traffic_ws/install/setup.bash && \ + ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py \ + robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\"" +``` +
+ +
+ Click here if running in docker container (CPU). + +```bash +xhost +local:docker + +docker run -it --rm \ +--name ros2_rust_nav2_tb4_sim_c \ +--env="DISPLAY=${DISPLAY}" \ +--env="QT_X11_NO_MITSHM=1" \ +-v /tmp/.X11-unix:/tmp/.X11-unix:rw \ +--device=/dev/dri \ +ros2_rust_nav2_tb4_sim:jazzy \ +bash -c "source /nav2_traffic_ws/install/setup.bash && \ + ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py \ + robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\"" +```
In a separate terminal, run the demo launch file containing the path server, plan executor, destination server, path visualizer and Nav2 traffic nodes: From ebcf16a242af55f50798aa6a9364318949739115 Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Mon, 24 Aug 2026 16:14:23 +0800 Subject: [PATCH 08/14] :fire: Removed Dockerfile.nav2. Signed-off-by: Gary Bey --- docker/Dockerfile.nav2 | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 docker/Dockerfile.nav2 diff --git a/docker/Dockerfile.nav2 b/docker/Dockerfile.nav2 deleted file mode 100644 index d7cbfbc..0000000 --- a/docker/Dockerfile.nav2 +++ /dev/null @@ -1,37 +0,0 @@ -ARG ROS_DISTRO=jazzy - -# ========================================== -# Builder -# ========================================== -FROM ghcr.io/open-rmf/ros2_rust_base:${ROS_DISTRO} - -ENV DEBIAN_FRONTEND=noninteractive -ENV ROS_DISTRO=${ROS_DISTRO} - -WORKDIR /nav2_traffic_ws/src - -# Copy your workspace packages -COPY ./ ./next_gen_prototype - -# Install package dependencies -WORKDIR /nav2_traffic_ws - -RUN apt-get update && \ - rosdep update && \ - rosdep install \ - --from-paths src \ - --ignore-src -yr --skip-keys="rclrs ament_cargo ament_python" \ - --ignore-src \ - -r \ - -y && \ - rm -rf /var/lib/apt/lists/* - -# Build the workspace -RUN . /opt/ros/${ROS_DISTRO}/setup.sh && \ - colcon build --packages-up-to sp_demo_nav2_bringup rmf_nav2_traffic rmf_path_server_demo rmf_path_server_test --symlink-install - -# Source the workspace whenever a shell starts -RUN echo "source /nav2_traffic_ws/install/setup.bash" >> /root/.bashrc - -ENTRYPOINT ["/ros_entrypoint.sh"] -CMD ["bash"] From 648a6bbf89ef9a449685d3cc4280af23c6cfb14f Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Mon, 24 Aug 2026 16:15:26 +0800 Subject: [PATCH 09/14] :hammer: Update nav2 integration package README.md to use Dockerfile.base instead of Dockerfile.nav2. Signed-off-by: Gary Bey --- nav2_integration/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nav2_integration/README.md b/nav2_integration/README.md index a10ab51..662ae01 100644 --- a/nav2_integration/README.md +++ b/nav2_integration/README.md @@ -93,13 +93,13 @@ graph TD ### Docker Setup -Follow the steps below to use pre-made `docker/Dockerfile.nav2` to run the demo containerized without fuss: +Follow the steps below to use pre-made `docker/Dockerfile.base` to run the demo containerized without fuss:
Click here. ```bash -docker build --load -t ros2_rust_nav2_tb4_sim:jazzy -f docker/Dockerfile.nav2 . +docker build --load -t ros2_rust_nav2_tb4_sim:jazzy -f docker/Dockerfile.base . ```
From ed9db9a9237464d75e0dc93a50338827bc85083d Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Mon, 24 Aug 2026 16:16:33 +0800 Subject: [PATCH 10/14] :hammer: Updated Dockerfile.base to retain next_gen_prototype binaries after colcon-building workspace. Signed-off-by: Gary Bey --- docker/Dockerfile.base | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base index 122af87..c2657ec 100644 --- a/docker/Dockerfile.base +++ b/docker/Dockerfile.base @@ -42,15 +42,18 @@ RUN apt-get update && \ rosdep init || true && \ rosdep update && \ rosdep install --from-paths /tmp/next_gen_prototype --ignore-src -yr --skip-keys="rclrs ament_cargo ament_python" && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /tmp/next_gen_prototype + rm -rf /var/lib/apt/lists/* + +WORKDIR /nav2_traffic_ws # Build the Underlay Workspace -#RUN /bin/bash -c "source /opt/ros/jazzy/setup.bash && \ -# colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release" +RUN mkdir src && mv /tmp/next_gen_prototype /nav2_traffic_ws/src/next_gen_prototype +RUN /bin/bash -c "source /opt/ros/jazzy/setup.bash && \ + colcon build --packages-up-to sp_demo_nav2_bringup rmf_nav2_traffic rmf_path_server_demo rmf_path_server_test --cmake-args -DCMAKE_BUILD_TYPE=Release && \ + rm -r build/ log/ src/" # Provide automatic sourcing entrypoint configuration inside ~/.bashrc RUN echo "source /opt/ros/jazzy/setup.bash" >> /root/.bashrc -#echo "source /opt/ros2_rust_ws/install/setup.bash" >> /root/.bashrc +RUN echo "source /nav2_traffic_ws/install/setup.bash" >> /root/.bashrc CMD ["/bin/bash"] From e1244edc922132ad2666c688d214559360ef566d Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Mon, 24 Aug 2026 16:19:38 +0800 Subject: [PATCH 11/14] :blue_book: Added whale emojis to make it easier to find docker-related instructions in wall of text. Signed-off-by: Gary Bey --- nav2_integration/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/nav2_integration/README.md b/nav2_integration/README.md index 662ae01..dd134c1 100644 --- a/nav2_integration/README.md +++ b/nav2_integration/README.md @@ -96,7 +96,7 @@ graph TD Follow the steps below to use pre-made `docker/Dockerfile.base` to run the demo containerized without fuss:
- Click here. + Click here 🐳. ```bash docker build --load -t ros2_rust_nav2_tb4_sim:jazzy -f docker/Dockerfile.base . @@ -153,7 +153,7 @@ ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py robots: ```
- Click here if running in docker container (GPU + X11). + Click here if running in docker container (GPU + X11) 🐳. ```bash xhost +local:docker @@ -173,7 +173,7 @@ robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\
- Click here if running in docker container (GPU + Wayland). + Click here if running in docker container (GPU + Wayland) 🐳. ```bash xhost +local:docker @@ -193,7 +193,7 @@ bash -c "source /nav2_traffic_ws/install/setup.bash && \
- Click here if running in docker container (CPU). + Click here if running in docker container (CPU) 🐳. ```bash xhost +local:docker @@ -217,7 +217,7 @@ ros2 launch rmf_path_server_demo demo_nav2.launch.py robots:="robot0 robot1" ```
- Click here if running in docker container. + Click here if running in docker container 🐳. ```bash docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && ros2 launch rmf_path_server_demo demo_nav2.launch.py robots:=\"robot0 robot1\"" @@ -242,7 +242,7 @@ ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose "{ }" ```
- Click here if running in docker container. + Click here if running in docker container 🐳. ```bash docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ @@ -278,7 +278,7 @@ ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose "{ ```
- Click here if running in docker container. + Click here if running in docker container 🐳. ```bash docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ From c658b8170ae9025df1a035d96057128cfaee05c3 Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Mon, 24 Aug 2026 16:21:34 +0800 Subject: [PATCH 12/14] :blue_book: Corrected corresponding docker-centric instructs for each action publish example in nav2 integration package README.md. Signed-off-by: Gary Bey --- nav2_integration/README.md | 46 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/nav2_integration/README.md b/nav2_integration/README.md index dd134c1..9058390 100644 --- a/nav2_integration/README.md +++ b/nav2_integration/README.md @@ -253,7 +253,7 @@ docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/instal frame_id: 'map' }, pose: { - position: {x: 9.0, y: 3.0, z: 0.0}, + position: {x: 5.0, y: 5.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0} } } @@ -289,7 +289,7 @@ docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/instal frame_id: 'map' }, pose: { - position: {x: 9.0, y: 6.0, z: 0.0}, + position: {x: 0.0, y: 3.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0} } } @@ -315,6 +315,27 @@ ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose "{ }" ``` +
+ Click here if running in docker container 🐳. + +```bash +docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ + ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose \"{ + pose: { + header: { + stamp: {sec: 0, nanosec: 0}, + frame_id: 'map' + }, + pose: { + position: {x: 9.0, y: 3.0, z: 0.0}, + orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0} + } + } + }\" +" +``` +
+ ```bash ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose "{ pose: { @@ -329,3 +350,24 @@ ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose "{ } }" ``` + +
+ Click here if running in docker container 🐳. + +```bash +docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ + ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose \"{ + pose: { + header: { + stamp: {sec: 0, nanosec: 0}, + frame_id: 'map' + }, + pose: { + position: {x: 9.0, y: 6.0, z: 0.0}, + orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0} + } + } + }\" +" +``` +
\ No newline at end of file From aeb210a9d5051cdd9220fa81628a0625846960a7 Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Thu, 3 Sep 2026 21:07:46 +0800 Subject: [PATCH 13/14] :hammer: Ensured docker build label is consistent throughout guides. Signed-off-by: Gary Bey --- nav2_integration/README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/nav2_integration/README.md b/nav2_integration/README.md index 9058390..17aada6 100644 --- a/nav2_integration/README.md +++ b/nav2_integration/README.md @@ -99,7 +99,7 @@ Follow the steps below to use pre-made `docker/Dockerfile.base` to run the demo Click here 🐳. ```bash -docker build --load -t ros2_rust_nav2_tb4_sim:jazzy -f docker/Dockerfile.base . +docker build --load -t ros2_rust_base:jazzy -f docker/Dockerfile.base . ```
@@ -159,13 +159,13 @@ ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py robots: xhost +local:docker docker run -it --rm \ ---name ros2_rust_nav2_tb4_sim_c \ +--name ros2_rust_base_c \ --gpus all \ --env="DISPLAY" \ --env="QT_X11_NO_MITSHM=1" \ -v /tmp/.X11-unix:/tmp/.X11-unix \ --device=/dev/dri \ -ros2_rust_nav2_tb4_sim:jazzy \ +ros2_rust_base:jazzy \ bash -c "source /nav2_traffic_ws/install/setup.bash && \ ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py \ robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\"" @@ -179,13 +179,13 @@ robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\ xhost +local:docker docker run -it --rm \ ---name ros2_rust_nav2_tb4_sim_c \ +--name ros2_rust_base_c \ --gpus all \ --env="DISPLAY=${DISPLAY}" \ --env="QT_X11_NO_MITSHM=1" \ -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ --device=/dev/dri \ -ros2_rust_nav2_tb4_sim:jazzy \ +ros2_rust_base:jazzy \ bash -c "source /nav2_traffic_ws/install/setup.bash && \ ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py \ robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\"" @@ -199,12 +199,12 @@ bash -c "source /nav2_traffic_ws/install/setup.bash && \ xhost +local:docker docker run -it --rm \ ---name ros2_rust_nav2_tb4_sim_c \ +--name ros2_rust_base_c \ --env="DISPLAY=${DISPLAY}" \ --env="QT_X11_NO_MITSHM=1" \ -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ --device=/dev/dri \ -ros2_rust_nav2_tb4_sim:jazzy \ +ros2_rust_base:jazzy \ bash -c "source /nav2_traffic_ws/install/setup.bash && \ ros2 launch sp_demo_nav2_bringup cloned_multi_tb3_simulation_launch.py \ robots:=\"robot0={x: 0.0, y: 5.0, yaw: 0.0}; robot1={x: 3.0, y: 5.0, yaw: 0.0};\"" @@ -220,7 +220,7 @@ ros2 launch rmf_path_server_demo demo_nav2.launch.py robots:="robot0 robot1" Click here if running in docker container 🐳. ```bash -docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && ros2 launch rmf_path_server_demo demo_nav2.launch.py robots:=\"robot0 robot1\"" +docker exec -it ros2_rust_base_c bash -c "source /nav2_traffic_ws/install/setup.bash && ros2 launch rmf_path_server_demo demo_nav2.launch.py robots:=\"robot0 robot1\"" ```
@@ -245,7 +245,7 @@ ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose "{ Click here if running in docker container 🐳. ```bash -docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ +docker exec -it ros2_rust_base_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose \"{ pose: { header: { @@ -281,7 +281,7 @@ ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose "{ Click here if running in docker container 🐳. ```bash -docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ +docker exec -it ros2_rust_base_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose \"{ pose: { header: { @@ -319,7 +319,7 @@ ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose "{ Click here if running in docker container 🐳. ```bash -docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ +docker exec -it ros2_rust_base_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ ros2 action send_goal robot0/navigate_to_pose nav2_msgs/action/NavigateToPose \"{ pose: { header: { @@ -355,7 +355,7 @@ ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose "{ Click here if running in docker container 🐳. ```bash -docker exec -it ros2_rust_nav2_tb4_sim_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ +docker exec -it ros2_rust_base_c bash -c "source /nav2_traffic_ws/install/setup.bash && \ ros2 action send_goal robot1/navigate_to_pose nav2_msgs/action/NavigateToPose \"{ pose: { header: { From 752d555f965ae3e1cc3354d8e03541a537609838 Mon Sep 17 00:00:00 2001 From: Gary Bey Date: Thu, 3 Sep 2026 23:04:48 +0800 Subject: [PATCH 14/14] :hammer: Optimised Dockerfile.base to minimise build time and have ready built-in switch to zenoh and cyclone DDS. Signed-off-by: Gary Bey --- docker/Dockerfile.base | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base index c2657ec..bec6f97 100644 --- a/docker/Dockerfile.base +++ b/docker/Dockerfile.base @@ -17,7 +17,8 @@ RUN apt-get update && apt-get upgrade -y && \ python3-colcon-cargo\ libssl-dev \ pkg-config \ - && rm -rf /var/lib/apt/lists/* + ros-${ROS_DISTRO}-rmw-cyclonedds-cpp \ + ros-${ROS_DISTRO}-rmw-zenoh-cpp # Install colcon extensions for Rust RUN pip3 install --no-cache-dir --break-system-packages colcon-ros-cargo @@ -30,7 +31,6 @@ RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no cargo install cargo-ament-build && \ chmod -R a+rwX /usr/local/cargo /usr/local/rustup - # Initialize Underlay Workspace WORKDIR /opt/ros2_rust_ws @@ -38,8 +38,7 @@ WORKDIR /opt/ros2_rust_ws COPY . /tmp/next_gen_prototype # Install ROS 2 dependencies via rosdep for both underlay and prototype branch -RUN apt-get update && \ - rosdep init || true && \ +RUN rosdep init || true && \ rosdep update && \ rosdep install --from-paths /tmp/next_gen_prototype --ignore-src -yr --skip-keys="rclrs ament_cargo ament_python" && \ rm -rf /var/lib/apt/lists/* @@ -48,12 +47,12 @@ WORKDIR /nav2_traffic_ws # Build the Underlay Workspace RUN mkdir src && mv /tmp/next_gen_prototype /nav2_traffic_ws/src/next_gen_prototype -RUN /bin/bash -c "source /opt/ros/jazzy/setup.bash && \ +RUN /bin/bash -c "source /opt/ros/${ROS_DISTRO}/setup.bash && \ colcon build --packages-up-to sp_demo_nav2_bringup rmf_nav2_traffic rmf_path_server_demo rmf_path_server_test --cmake-args -DCMAKE_BUILD_TYPE=Release && \ - rm -r build/ log/ src/" + rm -rf build/ log/ src/" # Provide automatic sourcing entrypoint configuration inside ~/.bashrc -RUN echo "source /opt/ros/jazzy/setup.bash" >> /root/.bashrc +RUN echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> /root/.bashrc RUN echo "source /nav2_traffic_ws/install/setup.bash" >> /root/.bashrc CMD ["/bin/bash"]