Open Source ROS1 to ROS2 Version Converter SDK

Hello everyone,

I’m working on an open-source ROS1 to ROS2 Version Converter SDK designed to simplify migration of legacy robotics systems.

Key features:

  • Automatic conversion support
  • Reduced manual migration effort
  • Improved compatibility for ROS2 adoption

GitHub:

I would love feedback from the community and contributors interested in improving ROS migration workflows.

Thanks!

3 Likes

Great effort! It’s only for ROS nodes written in Python, right?

Adding to this: anyone using ROS from node.js might be interested in the rosnodejs + rclnodejs wrapper we’ve developed as part of Transitive, providing a unified interface for working with ROS1 and ROS2 (with minor caveats where unification isn’t possible), even at the same time.

Example

const { getForVersion } = require('@transitive-sdk/utils-ros');

const demo = async (version) => {
  const ros = getForVersion(version);
  await ros.init();

  const topic = '/utils_ros/test1';
  const type = 'std_msgs/String' // gets converted to 'std_msgs/msg/String' for ROS2

  // publish the date once a second
  const interval = setInterval(() => {
    ros.publish(topic, type, {data: String(Date.now())});
  }, 1000);

  // subscribe to our own topic and print to console
  const sub = ros.subscribe(topic, type, (msg) => {
    console.log(ros.rosVersion, 'received', msg.data);
  });
};

demo(1); // run demo using ROS1
demo(2); // run demo using ROS2

@Darshil_Arora I’ve been thinking a lot about how we can better assist users with ROS upgrades. While the number of ROS 1 users is rapidly decreasing, the number of ROS 2 users continues to grow. What I would like to see is a an AI-based tool that partially automates the process of migrating between subsequent ROS 2 LTS releases. By the numbers, almost half the community will need to upgrade from Humble to Jazzy / Lyrical in the next year.

I was hoping to have an intern work on building a prototype this year but I missed our internship deadline. If someone in the community wants to make this happen please let me know. I think the technology is probably there and it would absolutely be worth our time.

@Katherine_Scott This is exactly the kind of problem I’ve been thinking about as well.

I’ve been working on robotics middleware, ROS migration workflows, and developer tooling, and I strongly believe an AI-assisted migration system for ROS 2 LTS upgrades (like Humble → Jazzy / Lyrical) would be extremely valuable for the community.

Instead of only syntax conversion, the bigger challenge is handling API changes, package compatibility, deprecated interfaces, launch system updates, QoS differences, Nav2 changes, and build system adaptations across releases.

I’d be very interested in contributing to building a prototype for this. I’m also exploring an SDK-focused approach that could support automated migration analysis, code suggestions, and compatibility validation.

Would love to discuss how this could be structured and where the highest-impact starting point would be.

Between ROSCon, Open Hardware Summit, GSoC, summer conference season, and the Lyric release I don’t have a lot of bandwidth right now, but I can certainly offer some guidance.

My suggestion is that anyone can create a community group about anything they want. If you want to manage a meeting to start workshopping an idea for an automated ROS upgrade tool you are more than welcome and encouraged to do that. If that group happens to generate a concrete proposal for a feature they would like to see in ROS, and has a critical mass of contributors willing to work on it, you are more than welcome to ask myself or @mjcarroll to put it in front of the PMC for a formal working group (see §8).