Bridging the Gap: A Dockerized ROS 1 Noetic ↔ ROS 2 Jazzy Bridge (Ubuntu 24.04) for Gradual Migration

Hi ROS Community!

I want to share an open-source project I’ve been working on that solves a very real, very painful business problem: Migrating massive legacy ROS 1 robotics systems to ROS 2.

Like many companies, we realized that rewriting our entire historic ROS 1 codebase to ROS 2 all at once would be financially devastating and halt our feature development. We needed a way to develop new components purely in ROS 2 (Jazzy) while keeping our reliable legacy stack in ROS 1 (Noetic), migrating piece by piece over time.

The challenge? ROS 1 Noetic isn’t natively supported on Ubuntu 24.04 (Noble), which is required for ROS 2 Jazzy.

So, I built a robust, Dockerized integration: GitHub - Lukas-Kozel/ros-noetic-jazzy-bridge: A robust, Dockerized bridge for bidirectional communication between ROS 1 Noetic (compiled from source) and ROS 2 Jazzy on Ubuntu 24.04. Designed for gradual migration of legacy robotics systems without full codebase rewrites. Includes E2E integration tests. · GitHub

What it does:

  • Compiles ROS 1 Noetic from source alongside ROS 2 Jazzy in a single ubuntu:24.04 container.
  • Provides a fully configured ros1_bridge with custom message mapping.
  • Highly optimized Dockerfile (using BuildKit, parallel workers via ARG, and selective ros_core dependencies to prevent memory/OOM crashes and keep build times short).
  • Includes a Python-based E2E Integration Test Runner and a GitHub Actions CI pipeline.

The repository contains a clean example/ directory so you can spin it up via docker-compose and test bidirectional communication in seconds.

I’d love for you to check it out, use it in your migration strategies, and drop any feedback, issues, or PRs. Let’s make the transition to ROS 2 easier for everyone!