Skip to content

gazebo-ros-integration#21

Merged
jmservera merged 9 commits into
mainfrom
jmservera/gazebo-ros-integration
Jul 21, 2026
Merged

gazebo-ros-integration#21
jmservera merged 9 commits into
mainfrom
jmservera/gazebo-ros-integration

Conversation

@jmservera

Copy link
Copy Markdown
Owner

No description provided.

- 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.
Copilot AI review requested due to automatic review settings July 20, 2026 22:13

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

This PR updates the repository’s ROS/Gazebo baseline and guidance from ROS 2 Lyrical + Gazebo Jetty to ROS 2 Kilted + Gazebo Ionic, aligning Docker build defaults, Compose args, and project documentation with the new target stack while adding a new BRD for future simulator/visualization improvements.

Changes:

  • Switch default stack references and environment defaults to ROS 2 Kilted and Gazebo Ionic across docs and Copilot guidance.
  • Update container build configuration (Compose + Dockerfiles) to reflect the new defaults and install ros-${ROS_DISTRO}-ros-gz in the simulator image.
  • Add a Simulation and Visualization BRD describing a pluggable simulator framework, ROS integration, and Gazebo web visualization direction.

Reviewed changes

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

Show a summary per file
File Description
workspace/src/AGENTS.md Updates workspace agent expectations to Kilted/Ionic.
workspace/src/.github/copilot-instructions.md Updates Copilot guidance header, assumptions, and references to Kilted/Ionic.
services/simulator/Dockerfile Changes default GZ_RELEASE to ionic, introduces ROS_DISTRO, and installs ros-${ROS_DISTRO}-ros-gz.
services/ros/Dockerfile Changes default ROS_DISTRO to kilted.
services/ros/config/dds_discovery.xml Updates Fast DDS version comment to reflect Kilted baseline.
README.md Updates .env defaults and stack note to Kilted/Ionic.
docs/specs/04-gazebo-gpu-wsl2-research.md Updates references from Jetty to Ionic where applicable.
docs/specs/01-Init-research.md Broadly updates research report wording from Lyrical/Jetty to Kilted/Ionic and related references.
docs/prds/uberos-init.md Updates PRD dependency/risk wording to Kilted baseline.
docs/decisions/README.md Updates ADR-001 implementation summary to Kilted/Ionic defaults.
docs/decisions/ADR-001-ros-distro.md Updates ADR-001 decision and SPIKE-A results text for Kilted/Ionic.
docs/brds/uberos-simulation-visualization-brd.md Adds new BRD for simulator/visualization roadmap (pluggability, ROS integration, web viz).
compose.yaml Updates defaults to ROS_DISTRO=kilted, GZ_RELEASE=ionic, and passes ROS_DISTRO to simulator build.
.squad/decisions.md Updates recorded decision summary to Kilted/Ionic.
.env.example Updates committed example defaults to Kilted/Ionic.

Comment thread README.md Outdated
Comment thread .env.example Outdated
Comment thread docs/decisions/ADR-001-ros-distro.md Outdated
Comment thread docs/decisions/ADR-001-ros-distro.md Outdated
Comment thread docs/specs/01-Init-research.md Outdated
Comment thread docs/specs/01-Init-research.md Outdated
Comment thread docs/specs/01-Init-research.md Outdated
Comment thread docs/specs/01-Init-research.md Outdated
Comment thread docs/specs/01-Init-research.md Outdated
Comment thread docs/specs/01-Init-research.md Outdated
…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.
Copilot AI review requested due to automatic review settings July 21, 2026 08:21

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 17 out of 17 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (12)

README.md:119

  • ionic is a Gazebo release, not a ROS 2 distro. The fallback here should point to a ROS distro (Jazzy) plus the Gazebo Harmonic release, matching the table above.
> If verification fails, set `ROS_DISTRO=ionic` and `GZ_RELEASE=harmonic`.

docs/decisions/ADR-001-ros-distro.md:28

  • Fallback instructions set ROS_DISTRO=ionic, but ionic is a Gazebo release (and is already covered by GZ_RELEASE). The ROS fallback distro here should be jazzy.
  `ROS_DISTRO=ionic` and `GZ_RELEASE=harmonic`.

docs/decisions/ADR-001-ros-distro.md:40

  • This fallback references ros:ionic-ros-base, but ionic is not a ROS Docker tag (it’s a Gazebo release name). The ROS fallback should be ros:jazzy-ros-base, and the Gazebo image should include the ghcr.io/openrobotics/gazebo registry prefix for consistency with the rest of the doc.
- Fallbacks `ros:ionic-ros-base` and `gazebo:harmonic-full` — EXIST.

docs/specs/01-Init-research.md:726

  • ros-ionic-rosbridge-suite is not a valid ROS package name (Ionic is a Gazebo release). This should reference Jazzy as the fallback ROS distro, alongside Kilted.
- **Server package:** `ros-ionic-rosbridge-suite` or `ros-kilted-rosbridge-suite`; Kilted availability is a SPIKE-A gate.

docs/specs/01-Init-research.md:1668

  • This ROS documentation URL uses /en/ionic/, but Ionic is a Gazebo release, not a ROS distro. The path should match the ROS distro being referenced (e.g. /en/kilted/).
| <https://docs.ros.org/en/ionic/Tutorials/Advanced/Improved-Dynamic-Discovery.html> | ROS 2 DDS discovery configuration | Verified |

docs/specs/01-Init-research.md:1716

  • This domain ID reference URL points at /en/ionic/ (Gazebo). It should point at a ROS docs path (e.g. /en/kilted/).
[^dds-domain]: ROS 2 domain ID guidance: <https://docs.ros.org/en/ionic/Concepts/Intermediate/About-Domain-ID.html>. IDs 0–101 and 215–232 avoid Linux ephemeral-port collisions; `42` is safe across the target platforms.

docs/specs/01-Init-research.md:1756

  • This sentence claims ros-ionic-rosbridge-suite was verified, but ionic is not a ROS distro. This should reference the verified Jazzy package (or whichever ROS distro was actually verified).
[^rosbridge]: rosbridge sources include `RobotWebTools/rosbridge_suite:QUALITY_DECLARATION.md` at Quality Level 3 and `ROSBRIDGE_PROTOCOL.md` v2.1.0. Humble, Jazzy, and Rolling support was confirmed; `ros-ionic-rosbridge-suite` was verified, while the Kilted package remained a SPIKE-A question.

docs/specs/01-Init-research.md:1540

  • osrf/ros:ionic-simulation is not a valid ROS image tag (Ionic is a Gazebo release). For a Jazzy + Harmonic fallback, this should reference osrf/ros:jazzy-simulation.
> - **Mitigation:** Run SPIKE-A P3 and fall back to `osrf/ros:ionic-simulation` with Harmonic.

docs/specs/01-Init-research.md:1630

  • This claims osrf/ros:ionic-simulation exists, but ionic is not a ROS distro/tag. The fallback image here should be osrf/ros:jazzy-simulation (or another real ROS distro tag).
- `osrf/ros:ionic-simulation` bundles Gazebo Harmonic and is a viable fallback image.[^ros-docker-hub]

docs/specs/01-Init-research.md:1692

  • This footnote references osrf/ros:ionic-simulation, which is not a valid ROS image tag. Replace with the actual fallback tag (e.g. osrf/ros:jazzy-simulation).
[^ros-docker-hub]: Official ROS Docker image guidance: <https://hub.docker.com/_/ros>, accessed 2026-07-17. It documents multi-stage builds, distinguishes `ros-base` from `ros-core`, and recommends a `/root/.ros/` volume. Research also recorded `osrf/ros:ionic-simulation` as a roughly 735 MB image bundling Gazebo Harmonic, last pushed 2026-07-17.

.env.example:7

  • This comment mixes up ROS and Gazebo naming: ionic is a Gazebo release, not a ROS 2 distribution. The example should use a ROS distro name (e.g. kilted -> jazzy).
# Switching the ROS 2 distribution (e.g. kilted -> ionic) is a one-line change.

README.md:118

  • This note says the primary distro is still pending SPIKE-A verification, but ADR-001 in this PR is marked "SPIKE-A passed" and "Implemented". The README should reflect that SPIKE-A has already passed (or clarify what is still unverified).
> **Note:** The primary ROS distribution (Kilted) is pending SPIKE-A image and
> package verification. See [ADR-001](docs/decisions/ADR-001-ros-distro.md).

Comment thread docs/specs/01-Init-research.md Outdated
Comment thread docs/specs/01-Init-research.md Outdated
Comment thread docs/specs/01-Init-research.md Outdated
Comment thread services/simulator/Dockerfile Outdated
@jmservera

Copy link
Copy Markdown
Owner Author

🤖 Automated PR review

Reviewed as part of the full open-PR sweep. This PR is the base of the simulation stack (main#21#22#24#27#26#23#25). Mostly a distro pivot (ROS Lyrical→Kilted, Gazebo Jetty→Ionic) plus adding the ROS apt repo + ros-gz to the simulator image and *.xml text eol=lf.

Findings

Severity Location Finding
🟡 Medium docs/specs/01-Init-research.md The mechanical find/replace introduced factual errors: "Rolling with Jetty" → "Rolling with Ionic" (wrong pairing — Rolling pairs with the newest Gazebo, not Ionic), and the REP‑2000 footnote now reads it "must not be cited as authority for Kilted's platform tier" while that same page does list Kilted (self-contradiction). Re-check the sed'd footnotes by hand.
🟢 Low services/simulator/Dockerfile ROS key fetched with curl -sSL from raw.githubusercontent.com with no checksum pin; the ASCII-armored key is stored at a *.gpg path. Works with signed-by, but not idiomatic — consider dearmoring or naming it .asc.

compose.yaml, .env.example, and .gitattributes changes are consistent and correct.

Recommendation: Approve after fixing the two doc pairing errors.

@jmservera

Copy link
Copy Markdown
Owner Author

🤖 Automated PR review

Reviewed as part of the full open-PR sweep. This PR is the base of the simulation stack (main#21#22#24#27#26#23#25). Mostly a distro pivot (ROS Lyrical→Kilted, Gazebo Jetty→Ionic) plus adding the ROS apt repo + ros-gz to the simulator image and *.xml text eol=lf.

Findings

Severity Location Finding
🟡 Medium docs/specs/01-Init-research.md The mechanical find/replace introduced factual errors: "Rolling with Jetty" → "Rolling with Ionic" (wrong pairing — Rolling pairs with the newest Gazebo, not Ionic), and the REP‑2000 footnote now reads it "must not be cited as authority for Kilted's platform tier" while that same page does list Kilted (self-contradiction). Re-check the sed'd footnotes by hand.
🟢 Low services/simulator/Dockerfile ROS key fetched with curl -sSL from raw.githubusercontent.com with no checksum pin; the ASCII-armored key is stored at a *.gpg path. Works with signed-by, but not idiomatic — consider dearmoring or naming it .asc.

compose.yaml, .env.example, and .gitattributes changes are consistent and correct.

Recommendation: Approve after fixing the two doc pairing errors.

@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 docs/specs/01-Init-research.md Outdated
Copilot AI review requested due to automatic review settings July 21, 2026 20:38

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 17 out of 17 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (2)

docs/specs/01-Init-research.md:1756

  • This footnote references ros-ionic-rosbridge-suite, but “Ionic” is a Gazebo release name, not a ROS distro. The package name should use a ROS distro (e.g. ros-jazzy-rosbridge-suite / ros-kilted-rosbridge-suite).
[^rosbridge]: rosbridge sources include `RobotWebTools/rosbridge_suite:QUALITY_DECLARATION.md` at Quality Level 3 and `ROSBRIDGE_PROTOCOL.md` v2.1.0. Humble, Jazzy, and Rolling support was confirmed; `ros-ionic-rosbridge-suite` was verified, while the Kilted package remained a SPIKE-A question.

docs/specs/01-Init-research.md:1692

  • This reference claims an osrf/ros:ionic-simulation image “bundling Gazebo Harmonic”. “Ionic” is a Gazebo release, not a ROS image tag, and the sentence contradicts itself (ionic vs harmonic). This likely meant the existing osrf/ros:jazzy-simulation image that bundles Gazebo Harmonic.
[^ros-docker-hub]: Official ROS Docker image guidance: <https://hub.docker.com/_/ros>, accessed 2026-07-17. It documents multi-stage builds, distinguishes `ros-base` from `ros-core`, and recommends a `/root/.ros/` volume. Research also recorded `osrf/ros:ionic-simulation` as a roughly 735 MB image bundling Gazebo Harmonic, last pushed 2026-07-17.

Comment thread docs/prds/uberos-simulation-visualization.md Outdated
Comment thread services/simulator/Dockerfile
Copilot AI review requested due to automatic review settings July 21, 2026 20:44
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

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 17 out of 17 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (4)

docs/specs/01-Init-research.md:1692

  • The ROS Docker Hub note references osrf/ros:ionic-simulation but describes it as bundling Gazebo Harmonic. Ionic is a Gazebo release name; the commonly referenced fallback image for Harmonic is osrf/ros:jazzy-simulation, so this citation looks like an incorrect tag and will mislead readers.
[^ros-docker-hub]: Official ROS Docker image guidance: <https://hub.docker.com/_/ros>, accessed 2026-07-17. It documents multi-stage builds, distinguishes `ros-base` from `ros-core`, and recommends a `/root/.ros/` volume. Research also recorded `osrf/ros:ionic-simulation` as a roughly 735 MB image bundling Gazebo Harmonic, last pushed 2026-07-17.

docs/specs/01-Init-research.md:1756

  • This footnote cites ros-ionic-rosbridge-suite, but "Ionic" is a Gazebo release and not a ROS distro, so the package name is incorrect. This should reference a real ROS distro package (e.g., ros-jazzy-rosbridge-suite).
[^rosbridge]: rosbridge sources include `RobotWebTools/rosbridge_suite:QUALITY_DECLARATION.md` at Quality Level 3 and `ROSBRIDGE_PROTOCOL.md` v2.1.0. Humble, Jazzy, and Rolling support was confirmed; `ros-ionic-rosbridge-suite` was verified, while the Kilted package remained a SPIKE-A question.

README.md:119

  • The README note says Kilted is "pending SPIKE-A" verification, but ADR-001 and other updated docs in this PR state SPIKE-A passed. This should be reconciled so users aren’t told verification is still outstanding.
> **Note:** The primary ROS distribution (Kilted) is pending SPIKE-A image and
> package verification. See [ADR-001](docs/decisions/ADR-001-ros-distro.md).
> If verification fails, set `ROS_DISTRO=jazzy` and `GZ_RELEASE=harmonic`.

docs/prds/uberos-simulation-visualization.md:385

  • This PRD references the ROS "lyrical" Turtlesim tutorial URL, but the rest of the document/PR standardizes on ROS 2 Kilted. The link should match the selected distro to avoid sending readers to the wrong docs set.
| Turtlesim | https://docs.ros.org/en/kilted/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.html | Turtlesim intro |

Comment thread docs/specs/01-Init-research.md
Comment thread docs/decisions/ADR-001-ros-distro.md Outdated
Copilot AI review requested due to automatic review settings July 21, 2026 20:54

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 17 out of 17 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (3)

docs/specs/01-Init-research.md:68

  • This sentence says Kilted has a support horizon of ~May 2031, but the cited ROS lifecycle footnote later in this document states Kilted ends in November 2026. These should be reconciled so decision guidance doesn’t contradict the referenced evidence.
- **Context:** The user-supplied Kilted Kaiju page signals possible intent to target Kilted. Research found an active Kilted base image and a support horizon of approximately May 2031, but its ecosystem package coverage remained unverified at the research date.[^kilted-base][^ros-eol]

docs/specs/01-Init-research.md:1692

  • This footnote claims osrf/ros:ionic-simulation bundles Gazebo Harmonic, but earlier the document already states osrf/ros:jazzy-simulation bundles Harmonic. ionic here appears to be a mistaken tag name (ROS images are typically keyed by ROS distro, not Gazebo release) and creates an internal inconsistency.
[^ros-docker-hub]: Official ROS Docker image guidance: <https://hub.docker.com/_/ros>, accessed 2026-07-17. It documents multi-stage builds, distinguishes `ros-base` from `ros-core`, and recommends a `/root/.ros/` volume. Research also recorded `osrf/ros:ionic-simulation` as a roughly 735 MB image bundling Gazebo Harmonic, last pushed 2026-07-17.

docs/specs/01-Init-research.md:1756

  • ros-ionic-rosbridge-suite does not match ROS package naming (the prefix should be the ROS distro, e.g. ros-jazzy-* / ros-kilted-*). Given the preceding sentence says Humble/Jazzy/Rolling were confirmed and Kilted remained a SPIKE-A question, this should likely refer to ros-jazzy-rosbridge-suite.
[^rosbridge]: rosbridge sources include `RobotWebTools/rosbridge_suite:QUALITY_DECLARATION.md` at Quality Level 3 and `ROSBRIDGE_PROTOCOL.md` v2.1.0. Humble, Jazzy, and Rolling support was confirmed; `ros-ionic-rosbridge-suite` was verified, while the Kilted package remained a SPIKE-A question.

Comment thread services/simulator/Dockerfile
Copilot AI review requested due to automatic review settings July 21, 2026 21:08

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 17 out of 17 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (4)

docs/specs/01-Init-research.md:1686

  • This citation line still says REP-2000 had no Lyrical section, but the surrounding citations were updated to Kilted and REP-2000 is referenced as missing Kilted. Update the distro name here to keep the citations consistent.
[^ros-eol]: ROS 2 lifecycle schedule: <https://endoflife.date/ros-2>, last updated 2026-06-01 and accessed 2026-07-17. It records Iron EOL in November 2024, Humble in May 2027, Jazzy in May 2029, Kilted in November 2026, and Lyrical ending in approximately May 2031. REP-2000 had no Lyrical section at the research date.

docs/specs/01-Init-research.md:1692

  • This footnote references osrf/ros:ionic-simulation but then says it bundles Gazebo Harmonic. Elsewhere in this doc you reference osrf/ros:jazzy-simulation as the Harmonic-bundled fallback; please align this footnote with that image/tag to avoid confusion.
[^ros-docker-hub]: Official ROS Docker image guidance: <https://hub.docker.com/_/ros>, accessed 2026-07-17. It documents multi-stage builds, distinguishes `ros-base` from `ros-core`, and recommends a `/root/.ros/` volume. Research also recorded `osrf/ros:ionic-simulation` as a roughly 735 MB image bundling Gazebo Harmonic, last pushed 2026-07-17.

docs/specs/01-Init-research.md:1756

  • ros-ionic-rosbridge-suite is not a valid ROS package naming pattern (ROS packages are keyed by ROS distro, not Gazebo release). Replace it with the verified Kilted package name to avoid pointing readers at a non-existent package.
[^rosbridge]: rosbridge sources include `RobotWebTools/rosbridge_suite:QUALITY_DECLARATION.md` at Quality Level 3 and `ROSBRIDGE_PROTOCOL.md` v2.1.0. Humble, Jazzy, and Rolling support was confirmed; `ros-ionic-rosbridge-suite` was verified, while the Kilted package remained a SPIKE-A question.

services/simulator/Dockerfile:7

  • The fallback note says changing only GZ_RELEASE=harmonic requires “no other edits”, but this Dockerfile also installs ros-${ROS_DISTRO}-ros-gz and the README/ADR describe the fallback as Jazzy+Harmonic. Updating only GZ_RELEASE could leave an incompatible ROS_DISTRO/Gazebo pairing.
# GZ_RELEASE is parameterized (default ionic). If SPIKE-A shows the Ionic image
# is unavailable, switch GZ_RELEASE=harmonic in .env with no other edits.

Comment thread docs/decisions/ADR-001-ros-distro.md Outdated
Comment thread docs/specs/01-Init-research.md
Copilot AI review requested due to automatic review settings July 21, 2026 21:16

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 17 out of 17 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (4)

services/simulator/Dockerfile:27

  • The ROS apt source is configured with an HTTP URL. Even though packages are signed, using HTTPS avoids downgrade/MITM risks and is the standard for apt sources.
    && curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
        | gpg --dearmor -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 $(. /etc/os-release && echo "$VERSION_CODENAME") main" \
        > /etc/apt/sources.list.d/ros2.list \

docs/decisions/ADR-001-ros-distro.md:15

  • This ADR’s Context section still describes Lyrical/Jetty as the primary candidate, but the Decision and Implementation sections are now Kilted/Ionic. Updating the Context keeps the ADR internally consistent.
UbeROS needs a ROS 2 baseline distribution. The candidates are Lyrical Luth
(Ubuntu 26.04, Gazebo Jetty, support to ~May 2031), Jazzy Jalisco (Ubuntu 24.04,
Gazebo Harmonic, proven ecosystem to ~May 2029), and Humble (nearing EOL).
Lyrical offers the longest runway but its ecosystem package coverage
(`rosbridge-suite`, `ros-gz`) was unverified at research time.

docs/decisions/ADR-001-ros-distro.md:17

  • This paragraph references falling back from Lyrical/Jetty to Jazzy and claims Ionic is supported by Jazzy+Lyrical, which conflicts with the ADR’s current Kilted/Ionic decision. Consider rewriting it to explain why Kilted/Ionic is the chosen baseline and how the fallback works.
During development we found out that the Jetty image is using Ubuntu Noble, which is not supported by ROS 2 Lyrical, so we had to fall back to Jazzy Jalisco. The Gazebo Ionic image is supported by Jazzy and Lyrical, so it is the preferred Gazebo baseline.

docs/specs/01-Init-research.md:1688

  • The ros-eol footnote still includes a Lyrical-specific REP-2000 note even though REP-2000 is now discussed in the separate rep2000 footnote, and the list of lifecycle dates can drift from the values used earlier in the document. Consider making this footnote describe the source more generally to avoid internal inconsistencies.
[^ros-eol]: ROS 2 lifecycle schedule: <https://endoflife.date/ros-2>, last updated 2026-06-01 and accessed 2026-07-17. It records Iron EOL in November 2024, Humble in May 2027, Jazzy in May 2029, Kilted in November 2026, and Lyrical ending in approximately May 2031. REP-2000 had no Lyrical section at the research date.

[^rep2000]: REP-2000 live review on 2026-07-17: <https://www.ros.org/reps/rep-2000.html>. The page covered Humble, Iron, Jazzy, Kilted, and Rolling, then ended after Rolling Ridley. It must not be cited as authority for Kilted’s platform tier or LTS status.

Copilot AI review requested due to automatic review settings July 21, 2026 21:35
@jmservera
jmservera merged commit 949440f into main Jul 21, 2026
4 checks passed
@jmservera
jmservera deleted the jmservera/gazebo-ros-integration branch July 21, 2026 21:35

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 19 out of 19 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (3)

services/simulator/Dockerfile:26

  • The ROS 2 apt source is configured over plain HTTP. Even though APT signatures help, using HTTPS prevents trivial MITM/tampering with repository metadata in transit and aligns with typical secure defaults.
    && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") main" \

docs/specs/01-Init-research.md:1756

  • This footnote references ros-ionic-rosbridge-suite, but ROS Debian packages are named by ROS distro (e.g., ros-jazzy-*, ros-kilted-*), not by Gazebo release. As written, the package name is inconsistent with the rest of the document and likely invalid.
[^rosbridge]: rosbridge sources include `RobotWebTools/rosbridge_suite:QUALITY_DECLARATION.md` at Quality Level 3 and `ROSBRIDGE_PROTOCOL.md` v2.1.0. Humble, Jazzy, and Rolling support was confirmed; `ros-ionic-rosbridge-suite` was verified, while the Kilted package remained a SPIKE-A question.

docs/specs/01-Init-research.md:1692

  • This reference mentions osrf/ros:ionic-simulation, but ionic is a Gazebo release name, not a ROS distro tag used by osrf/ros images. If the intent is the Gazebo Harmonic fallback image that pairs with Jazzy, this should point at the Jazzy simulation tag.
[^ros-docker-hub]: Official ROS Docker image guidance: <https://hub.docker.com/_/ros>, accessed 2026-07-17. It documents multi-stage builds, distinguishes `ros-base` from `ros-core`, and recommends a `/root/.ros/` volume. Research also recorded `osrf/ros:ionic-simulation` as a roughly 735 MB image bundling Gazebo Harmonic, last pushed 2026-07-17.

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.

2 participants