From 3e15ecd77ffb745aeb6db76233a0e362b1ff19c7 Mon Sep 17 00:00:00 2001 From: Michal Faferek Date: Mon, 12 Oct 2026 11:51:17 +0200 Subject: [PATCH 1/2] turtlebot3: build on ros:jazzy-ros-base so the demo runs natively on arm64 osrf/ros:jazzy-desktop is published for amd64 only. On Apple Silicon the whole demo ran under emulation: a 9.6 GB image, the lidar and Nav2 too slow to work. ros:jazzy-ros-base is multi-arch, Gazebo comes in with ros_gz, and the package lists are refreshed before rosdep. --- demos/turtlebot3_integration/Dockerfile | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/demos/turtlebot3_integration/Dockerfile b/demos/turtlebot3_integration/Dockerfile index f92fd61..f7f9b9e 100644 --- a/demos/turtlebot3_integration/Dockerfile +++ b/demos/turtlebot3_integration/Dockerfile @@ -1,7 +1,10 @@ # TurtleBot3 + ros2_medkit Discovery Demo with Nav2 Navigation -# Full desktop image with Gazebo GUI support +# +# ros:jazzy-ros-base is multi-arch. osrf/ros:jazzy-desktop is amd64 only, so on +# Apple Silicon and other arm64 hosts it ran under emulation, which broke the +# simulated lidar and Nav2. Gazebo (server and GUI) comes in with ros_gz. -FROM osrf/ros:jazzy-desktop +FROM ros:jazzy-ros-base ENV DEBIAN_FRONTEND=noninteractive ENV ROS_DISTRO=jazzy @@ -11,6 +14,7 @@ ENV COLCON_WS=/root/demo_ws # Install TurtleBot3, Nav2, and build dependencies RUN apt-get update && apt-get install -y \ + ros-jazzy-ros-gz \ ros-jazzy-turtlebot3-gazebo \ ros-jazzy-turtlebot3-msgs \ ros-jazzy-turtlebot3-description \ @@ -78,9 +82,13 @@ RUN find /var/lib/ros2_medkit/scripts -name "*.bash" -exec chmod +x {} \; # Build ros2_medkit and demo package WORKDIR ${COLCON_WS} +# apt-get update first: the base image ships no package lists, and rosdep +# installs what the workspace needs that the image does not carry. RUN bash -c "source /opt/ros/jazzy/setup.bash && \ + apt-get update && \ rosdep update && \ rosdep install --from-paths src --ignore-src -r -y && \ + rm -rf /var/lib/apt/lists/* && \ MAKEFLAGS='-j 2' colcon build --executor sequential --symlink-install --cmake-args -DBUILD_TESTING=OFF" # Setup environment From 1a4c72de4f25d1b22679dab75e952753fc4c746b Mon Sep 17 00:00:00 2001 From: Michal Faferek Date: Mon, 12 Oct 2026 18:33:21 +0200 Subject: [PATCH 2/2] turtlebot3: install rviz2 instead of ros-gz turtlebot3_gazebo already brings Gazebo. ros-gz only added ros-gz-sim-demos (rviz2, rqt, Qt, ~254 MB). Smoke and navigation tests pass on arm64. --- demos/turtlebot3_integration/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/demos/turtlebot3_integration/Dockerfile b/demos/turtlebot3_integration/Dockerfile index f7f9b9e..b483ff8 100644 --- a/demos/turtlebot3_integration/Dockerfile +++ b/demos/turtlebot3_integration/Dockerfile @@ -2,7 +2,8 @@ # # ros:jazzy-ros-base is multi-arch. osrf/ros:jazzy-desktop is amd64 only, so on # Apple Silicon and other arm64 hosts it ran under emulation, which broke the -# simulated lidar and Nav2. Gazebo (server and GUI) comes in with ros_gz. +# simulated lidar and Nav2. Gazebo (server and GUI) comes in with +# turtlebot3_gazebo. FROM ros:jazzy-ros-base @@ -14,7 +15,7 @@ ENV COLCON_WS=/root/demo_ws # Install TurtleBot3, Nav2, and build dependencies RUN apt-get update && apt-get install -y \ - ros-jazzy-ros-gz \ + ros-jazzy-rviz2 \ ros-jazzy-turtlebot3-gazebo \ ros-jazzy-turtlebot3-msgs \ ros-jazzy-turtlebot3-description \