Skip to content

Add support for ROS-O (ROS One) distribution#854

Open
iory wants to merge 3 commits into
ros-tooling:mainfrom
iory:ros-o-support
Open

Add support for ROS-O (ROS One) distribution#854
iory wants to merge 3 commits into
ros-tooling:mainfrom
iory:ros-o-support

Conversation

@iory

@iory iory commented Oct 27, 2025

Copy link
Copy Markdown

Summary

This PR adds support for ROS-O (ROS One), a community-supported ROS 1 distribution that works on Ubuntu 20.04 and newer versions.

Changes

Core functionality

  • Add ROS-O repository configuration with GPG key handling
  • Support mixed ROS 1 and ROS 2 repository installation on the same system
  • Implement proper repository selection based on Ubuntu version and requested distributions

Bug fixes

  • Fix SSL certificate handling when downloading ROS-O GPG key by ensuring ca-certificates is installed
  • Pin meson version (>=0.60.0,<0.64.0) to avoid colcon-meson 0.4.2 compatibility issues with newer meson releases

Testing

  • Add ROS-O test cases to CI workflow
  • Test matrix includes: ubuntu:jammy with ROS-O, ubuntu:noble with ROS-O

Use cases

This enables several useful combinations:

  • Install ROS-O alongside ROS 2 Humble on Ubuntu 22.04
  • Install ROS-O alongside ROS 2 Jazzy on Ubuntu 24.04

Example usage:

- uses: ros-tooling/setup-ros@ros-o-support
  with:
    required-ros-distributions: one humble

Technical details

The implementation handles backward compatibility by:

  • Always adding ROS 1 repository on Focal (Ubuntu 20.04) for focal-specific dependencies
  • Adding ROS 2 repository on newer Ubuntu versions when no distributions are specified
  • Adding both repositories when mixed distributions are requested

Testing

All CI tests pass with these changes. The implementation has been tested with:

  • ROS-O + Humble on Ubuntu 22.04
  • ROS-O + Jazzy on Ubuntu 24.04

Breaking changes

None. This is fully backward compatible with existing configurations.

ROS-O is a community-supported ROS 1 distribution that works on Ubuntu
20.04 and newer versions. This change adds support for installing ROS-O
alongside ROS 2 distributions.

Changes:
- Add ROS-O repository configuration and GPG key handling
- Support mixed ROS 1 and ROS 2 repository installation
- Add ROS-O test cases to CI workflow
- Fix SSL certificate handling for ROS-O repository
- Ensure correct repository selection based on Ubuntu version
- Pin meson version to avoid colcon-meson compatibility issues

The implementation allows installing multiple ROS distributions
simultaneously, such as 'noetic rolling' on Ubuntu 20.04 or
'one humble' on Ubuntu 22.04.

Technical notes:
- Meson is constrained to >=0.60.0,<0.64.0 for colcon-meson 0.4.2
  compatibility, avoiding IntrospectionInterpreter API breakage

Signed-off-by: Iori Yanokura <ab.ioryz@gmail.com>
@christophebedard

Copy link
Copy Markdown
Member

Like I said in ros-tooling/action-ros-ci#1008 (review), I'm 💯 on board with this if it is maintained by ROS-O users/maintainers.

@christophebedard

Copy link
Copy Markdown
Member

Noetic + Rolling on Ubuntu 20.04

Can you explain this? Rolling isn't officially supported on Ubuntu 20.04.

schedule:
# Run the CI automatically twice per day to look for flakyness.
- cron: "0 */12 * * *"
workflow_dispatch:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

What's the intent behind this?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

It just lets us trigger the test workflow manually, which was handy for checking the ROS-O matrix. Happy to drop it if you'd prefer to keep it out of this PR.

Comment thread src/setup-ros-ubuntu.ts
await utils.exec("sudo", [
"bash",
"-c",
"curl -sSL https://ros.packages.techfak.net/gpg.key -o /etc/apt/keyrings/ros-one-keyring.gpg",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

who is behind this key and the repo?

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Packages for this specific repository are build through https://github.com/ubi-agni/ros-builder-action/ and owned by @rhaschke at CITEC Bielefeld. It is pretty much the go-to repository for anyone to "just install ROS-O" these days.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks for the info!

I would just mention this in the README so that people know that ROS-O debs are downloaded from a separate apt repo and not the usual Open Robotics apt repo. @iory can you add that?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Done — added a note to the README in the latest commit.
22b0ef7

@christophebedard

Copy link
Copy Markdown
Member

Note: #873 removed .github/workflows/check-ros-distribution.sh. This PR should add it back.

@christophebedard

Copy link
Copy Markdown
Member

@iory, @v4hn: do you still want to get this in?

@v4hn

v4hn commented May 24, 2026

Copy link
Copy Markdown

do you still want to get this in?

I do think that would make sense, yes.

@iory

iory commented Jun 28, 2026

Copy link
Copy Markdown
Author

do you still want to get this in?

Yes, I'd like to get this in. I've added a note to the README about the separate ROS-O APT repo as requested, and cleaned up the PR description. Let me know if anything else is needed.

Noetic + Rolling on Ubuntu 20.04
Can you explain this? Rolling isn't officially supported on Ubuntu 20.04.

You're right, that was misleading — Rolling isn't supported on 20.04 and the CI doesn't test that combo (it runs Rolling on Noble/AlmaLinux only). I've removed it from the PR description.

Signed-off-by: Iori Yanokura <ab.ioryz@gmail.com>
Signed-off-by: Iori Yanokura <ab.ioryz@gmail.com>
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