ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

tldr: In general you can run a process on a remote but routeable IP that can subscribe to a message, process the data, and then publish a follow up message. That is the standard way that ROS nodes operate.

Your question is not clear and has some conflicting statements.

If you define a ROS2 message as a data structure you can send it to any address using your own custom UDP data protocol.

If you want to send a ROS2 message using the ROS2 protocols the far end would be considered a ROS2 node at that point. So your assertion that the other end is not a ROS node is conflicting. Any executable can be turned into a ROS2 node by just using the ROS2 libraries for IO inside your process. ROS2 nodes can be run on a machine with a specific IP, but you cannot send things to the specific address it goes through the topic discovery and connections.

tldr: In general you can run a process on a remote but routeable IP that can subscribe to a message, process the data, and then publish a follow up message. That is the standard way that ROS nodes operate.

Your question is not clear and has some conflicting statements.

If you define a ROS2 message as a data structure you can send it to any address using your own custom UDP data protocol.

If you want to send a ROS2 message using the ROS2 protocols the far end would be considered a ROS2 node at that point. So your assertion that the other end is not a ROS node is conflicting. Any executable can be turned into a ROS2 node by just using the ROS2 libraries for IO inside your process. ROS2 nodes can be run on a machine with a specific IP, but you cannot send things to the specific address it goes through the topic discovery and connections.

Edit with new info:

It is possible to interact with a ROS2 system by sending pure DDS messages. ROS2 just defines conventions for using DDS. If you publish the right datatype on the right topic it will be compatible with ROS2 listeners. And you can do the same for subscribing. The .msg files automatically generate .idl files that you can used for understanding the DDS datatypes natively.

However besides very trivial cases you will have to do a lot of the implementations of the ROS2 standards which means implementing a large part of the ROS2 client library implementations and I'd encourage you to consider just using the client libraries in your "non ROS2" process.

In particular I don't believe there's any commonly used python DDS implementation for you to leverage. But we do provide a python implementation of the ROS2 API in rclpy that you can import inside your python tool to interact with ROS2 directly.