[Sim Theme E] ROS 2 integration for Gazebo (ros_gz)#26
Conversation
- Changed default Gazebo render engine reference from Jetty to Ionic in documentation. - Updated Dockerfile for ROS service to set default ROS_DISTRO to Kilted. - Modified DDS discovery configuration to reflect Kilted changes. - Adjusted simulator Dockerfile to set GZ_RELEASE to Ionic and added ROS_DISTRO as an argument. - Revised Copilot instructions and agent expectations to align with Kilted and Ionic. - Added new Business Requirements Document (BRD) for UbeROS Simulation and Visualization, outlining the need for a pluggable simulator framework and native web visualization for Gazebo.
…tion - Introduced a comprehensive PRD outlining the goals, requirements, and architecture for the UbeROS simulation and visualization framework. - Defined the context, core opportunity, and user personas to clarify the project's objectives. - Detailed functional and non-functional requirements, including a pluggable simulator framework, launch menu, and ROS 2 integration. - Specified the solution architecture, including component models and discovery systems. - Included operational considerations, risks, and rollout phases to guide implementation.
All open questions resolved (gzweb spike, kilted/ionic pairing, configurable autostart, drop ros-gz from ros image). Status -> Approved.
…ata-driven menu (FR-A1..A4)
…turtlesim/novnc route (FR-C1..C4)
…t behind proxy; retire Gazebo VNC (FR-F1..F5)
5e50e12 to
56720e5
Compare
…covery-server wiring; drop ros-gz from ros image (FR-E1..E6)
🤖 Automated PR reviewros_gz integration — adds Findings
✅ Installing only Recommendation: Approve. |
jmservera
left a comment
There was a problem hiding this comment.
🤖 Automated line-anchored review — see the summary comment for the full findings table.
- Update CI workflow to install Playwright browsers and dependencies. - Modify acceptance tests to validate gzweb scene-state delivery. - Enhance README with instructions for browser installation. - Introduce script to ensure Playwright browser is installed. - Adjust smoke tests and helper functions for new gzweb endpoints.
…nd improve comments
…tlesim integration
…s, and PRD with new metadata and improved clarity on simulator transport and integration details.
There was a problem hiding this comment.
Pull request overview
Adds Theme E (Gazebo backend lane) ROS 2 integration by co-locating ros_gz_bridge with gz sim inside the Gazebo container, using Fast DDS discovery-server (unicast) and a default /clock bridge mapping, while removing redundant ros-gz packages from the ROS core image.
Changes:
- Remove
ros-${ROS_DISTRO}-ros-gzfrom the ROS core image and document the rationale. - Install and launch
ros_gz_bridge parameter_bridgeinside the Gazebo container after sourcing ROS, using a YAML config for/clock. - Add Fast DDS discovery client profile and wire
FASTRTPS_DEFAULT_PROFILES_FILEinto the Gazebo service environment.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| services/ros/Dockerfile | Drops ros-gz from ROS core image and documents why the bridge lives with Gazebo. |
| services/gazebo/entrypoint.sh | Sources ROS and starts parameter_bridge alongside gz sim and websocket server; updates shutdown/wait logic. |
| services/gazebo/Dockerfile | Adds ROS 2 apt repo setup and installs ros-${ROS_DISTRO}-ros-gz-bridge; bundles DDS + bridge config files. |
| services/gazebo/config/ros_gz_bridge.yaml | Defines default /clock bridge mapping via parameter_bridge config file. |
| services/gazebo/config/dds_discovery.xml | Adds Fast DDS discovery-server client profile for unicast discovery. |
| docs/plans/sim-theme-e-ros-integration.md | Adds Theme E plan stub describing FR-E1..FR-E6 scope and acceptance notes. |
| compose.yaml | Ensures Gazebo container uses the DDS discovery XML profile via FASTRTPS_DEFAULT_PROFILES_FILE. |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
services/gazebo/Dockerfile:55
- The ROS apt repository setup downloads a key without failing on HTTP errors and uses an
http://apt source.curl -sSLwill succeed on a 404 and write an HTML error page into the keyring path, causing harder-to-debug apt failures later; and using HTTPS for the repo avoids downgrade/MITM risks on the transport layer.
RUN . /etc/os-release \
&& curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu ${UBUNTU_CODENAME} main" \
> /etc/apt/sources.list.d/ros2.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
ros-${ROS_DISTRO}-ros-gz-bridge \
&& rm -rf /var/lib/apt/lists/*
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
services/gazebo/config/dds_discovery.xml:7
- The comment says this file is “identical to services/ros/config/dds_discovery.xml”, but it isn’t identical (the header comments differ). This can be misleading when someone tries to diff/verify the copy.
This is the Gazebo container's copy of the shared discovery-client profile
(identical to services/ros/config/dds_discovery.xml). The ros_gz bridge that
runs in this container joins the ROS graph through the central
…kerfile comments for clarity
…recation of FASTRTPS_DEFAULT_PROFILES_FILE
Implements Theme E of the Simulation & Visualization PRD (FR-E1..E6). Lane 2 (Gazebo backend) — coordinate with Theme F (both touch the Gazebo container). Co-located ros_gz_bridge, /clock default, discovery-server (no multicast), source ROS in entrypoint, drop ros-gz from the ros image. Plan: docs/plans/sim-theme-e-ros-integration.md. Draft.