Skip to content

Add ROS-O support and fix compatibility issues#462

Open
iory wants to merge 3 commits intoros2:masterfrom
iory:ros-o-support
Open

Add ROS-O support and fix compatibility issues#462
iory wants to merge 3 commits intoros2:masterfrom
iory:ros-o-support

Conversation

@iory
Copy link

@iory iory commented Oct 27, 2025

Summary

This PR adds support for testing ros1_bridge with ROS-O (ROS One) and fixes compatibility issues when testing with the noetic + rolling combination.

Changes

Copyright header

  • Add Apache License 2.0 copyright header to controller_manager_msgs_controller_state_adapter.cpp
  • This file was missing the required copyright header, causing linting tests to fail

pep257 compatibility fix

  • Skip pep257 test on Ubuntu 20.04 (Focal) with ROS 2 Rolling
  • The pep257 linter (ament_pep257 0.11.4) has a compatibility issue with Python 3.8
  • Error encountered: ValueError: too many values to unpack (expected 3)
  • This is a known issue with the API changes in ament_pep257

CI workflow updates

  • Add ROS-O test configurations to CI workflow
  • Update to use action-ros-ci with ROS-O support
  • Add workflow_dispatch for manual testing
  • Test ROS-O + Humble and ROS-O + Jazzy combinations

Build fixes

  • Fix std::vector specialization issues
  • Fix ControllerState message mapping between ROS 1 and ROS 2

Related PRs

This PR is part of a series to add ROS-O support to the ROS tooling ecosystem:

  1. setup-ros: Add ROS-O repository and installation support

  2. action-ros-ci: Add ROS-O distribution recognition

  3. ros1_bridge (this PR): Enable testing with ROS-O and fix compatibility issues

Together, these PRs enable:

  • Installing ROS-O via setup-ros
  • Building and testing ROS-O packages via action-ros-ci
  • Testing ros1_bridge with ROS-O + ROS 2 combinations

Testing

With these changes, the CI successfully tests:

  • ROS-O + Humble on Ubuntu 22.04
  • ROS-O + Jazzy on Ubuntu 24.04
  • Noetic + Rolling on Ubuntu 20.04 (with pep257 skipped)

All tests pass successfully with these combinations.

Technical details

The pep257 skip is necessary because:

  • Ubuntu 20.04 uses Python 3.8
  • ROS 2 Rolling includes ament_pep257 0.11.4
  • This version has API changes incompatible with Python 3.8
  • Newer Ubuntu versions (22.04+, 24.04) use Python 3.10+ and work correctly

Breaking changes

None. These are additive changes that:

  • Add missing copyright header (fixes linting)
  • Skip one problematic test on a specific platform combination
  • Add new test configurations for ROS-O
  • Fix build issues for better compatibility
  • All other tests pass successfully

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

Copy link
Contributor

Choose a reason for hiding this comment

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

So this file is adding in completely new functionality to the bridge, and also taking a dependency on ros_control::controller_manager_msgs without declaring it in the package.xml. I'm going to say that we should not take this part of the change. The rest of it is fine with me.

Copy link
Author

Choose a reason for hiding this comment

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

Thanks. I've removed the commits related to controller_manager_msgs.

Also, before this can be merged, we need to enable the ros-o repositories in our GitHub Actions, which is handled in ros-tooling/setup-ros#854 and ros-tooling/action-ros-ci#1008 .

Could you please take a look at that PR as well?"

iory added 3 commits October 30, 2025 21:55
- Add support for ROS 1 One (ROS-O) distribution
- Configure matrix builds for multiple ROS distros combinations
- Add manual workflow trigger option
- Update actions to versions with ROS-O support

Signed-off-by: Iori Yanokura <ab.ioryz@gmail.com>
Skip pep257 linting test to resolve compatibility issues
with Python 3.8 and ament_pep257 0.11.4

Signed-off-by: Iori Yanokura <ab.ioryz@gmail.com>
Implement specialized serialization functions for std::vector<bool>
to handle proxy object references correctly in ROS message conversion.
Adds read, write, and length stream operations.

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.

2 participants