Skip to content

[Sim Theme E] ROS 2 integration for Gazebo (ros_gz)#26

Merged
jmservera merged 32 commits into
mainfrom
jmservera/sim-theme-e-ros-integration
Jul 24, 2026
Merged

[Sim Theme E] ROS 2 integration for Gazebo (ros_gz)#26
jmservera merged 32 commits into
mainfrom
jmservera/sim-theme-e-ros-integration

Conversation

@jmservera

Copy link
Copy Markdown
Owner

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.

jmservera added 10 commits July 21, 2026 00:06
- 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.
…t behind proxy; retire Gazebo VNC (FR-F1..F5)
@jmservera
jmservera force-pushed the jmservera/sim-theme-e-ros-integration branch from 5e50e12 to 56720e5 Compare July 21, 2026 11:12
@jmservera
jmservera changed the base branch from jmservera/gazebo-ros-integration to jmservera/sim-theme-f-gzweb July 21, 2026 11:12
…covery-server wiring; drop ros-gz from ros image (FR-E1..E6)
@jmservera

Copy link
Copy Markdown
Owner Author

🤖 Automated PR review

ros_gz integration — adds ros_gz_bridge co-located with gz sim (bridge-only install, DDS client profile, /clock bridge config) and removes the redundant ros-gz from the ros image (FR-E6). Base: #27.

Findings

Severity Location Finding
🟢 Low services/gazebo/entrypoint.sh The bridge starts immediately after sourcing ROS; if it advertises before gz sim has created /clock, it relies on ros_gz_bridge reconnecting when the gz topic appears (it does — non-blocking). Worth a one-line note.
🟢 Low services/gazebo/Dockerfile Uses ${UBUNTU_CODENAME} here vs $VERSION_CODENAME in #21's simulator image; both valid on Ubuntu, but standardize one. Same armored-key-as-.gpg note as #21.

✅ Installing only ros-gz-bridge (not the full ros-gz metapackage) to keep a single Gazebo version is a good call and well-justified in the comments. Signal handling stays correct (trap + wait -n across all 3 PIDs). Clean FR-E6 cleanup of the ros image.

Recommendation: Approve.

@jmservera jmservera left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated line-anchored review — see the summary comment for the full findings table.

Comment thread services/gazebo/entrypoint.sh
jmservera added 12 commits July 23, 2026 11:02
- 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.
…s, and PRD with new metadata and improved clarity on simulator transport and integration details.
Base automatically changed from jmservera/sim-theme-f-gzweb to main July 23, 2026 22:23
@jmservera
jmservera marked this pull request as ready for review July 23, 2026 22:34
Copilot AI review requested due to automatic review settings July 23, 2026 22:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-gz from the ROS core image and document the rationale.
  • Install and launch ros_gz_bridge parameter_bridge inside the Gazebo container after sourcing ROS, using a YAML config for /clock.
  • Add Fast DDS discovery client profile and wire FASTRTPS_DEFAULT_PROFILES_FILE into 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.

Comment thread services/gazebo/Dockerfile
Comment thread docs/plans/sim-theme-e-ros-integration.md Outdated
Copilot AI review requested due to automatic review settings July 23, 2026 22:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 -sSL will 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/*

Comment thread services/gazebo/config/dds_discovery.xml
Copilot AI review requested due to automatic review settings July 23, 2026 23:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread services/gazebo/Dockerfile
Comment thread docs/plans/sim-theme-e-ros-integration.md Outdated
Copilot AI review requested due to automatic review settings July 23, 2026 23:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Comment thread docs/plans/sim-theme-e-ros-integration.md
Comment thread compose.yaml Outdated
Comment thread services/gazebo/Dockerfile Outdated
Copilot AI review requested due to automatic review settings July 24, 2026 06:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Comment thread services/gazebo/entrypoint.sh
Copilot AI review requested due to automatic review settings July 24, 2026 08:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated no new comments.

@jmservera
jmservera merged commit 2ec9d77 into main Jul 24, 2026
5 checks passed
@jmservera
jmservera deleted the jmservera/sim-theme-e-ros-integration branch July 24, 2026 08:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants