Skip to content

Conversation

@iory
Copy link

@iory iory commented Oct 27, 2025

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
  • Install Noetic + Rolling on Ubuntu 20.04 (both ROS 1 and ROS 2 repos)

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
  • Noetic + Rolling on Ubuntu 20.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 <[email protected]>
@christophebedard
Copy link
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
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
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?

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
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

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
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?

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