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.