ros1_bridge icon indicating copy to clipboard operation
ros1_bridge copied to clipboard

Add ROS-O support and fix compatibility issues

Open iory opened this issue 2 months ago • 0 comments

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

    • https://github.com/ros-tooling/setup-ros/pull/854
  2. action-ros-ci: Add ROS-O distribution recognition

    • https://github.com/ros-tooling/action-ros-ci/pull/1008
  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 [email protected]

iory avatar Oct 27 '25 17:10 iory