Remote (internet-based) control of ROS 2-based robots

What are the best practices for enabling remote (internet-based) control of ROS 2-based robots through web or mobile applications?

I’m aware of the following options:

•	rosbridge
•	MQTT (though ROS 2 doesn’t natively support MQTT communication)

Are there any recommended approaches or best practices for this use case?

MQTT is a good choice, but you don’t need to start that low. We’ve built the Transitive framework to make it easy to build full-stack robotics capabilities, connecting robot, cloud and web UIs. It is indeed built on MQTT but raises the abstraction level from message passing to data-synchronization, called MQTTSync. For instance, to show your robots battery level you don’t need to repeatedly send that battery level over MQTT to a web component. Instead you just write the value into the shared MQTTSync data – think: a big JSON object – and read it from your web components. What’s more, if you use React, the values you read are reactive so your UI will update automatically when the robot publishes a new battery level – all without any polling anywhere along the chain!

All this is open-source (Apache-2.0). We also have some ready-to-go capabilities for things like direct ROS communication from the web, map display, video streaming over webrtc, and teleop (see all capabilities).

Re. rosbridge: The issue with rosbridge is that it is peer-to-peer, i.e., relies on a direct connection between the robot to the web browser. This that robot and web user need to be on the same network (VPN or similar). It also makes it awkward when your robots are not online all the time, especially if you host the web server directly on the robot. More details here:
How does Transitive’s data-sync differ from ROSbridge?

Happy to chat if you have questions.

Hi @Raman

If you’re looking for something robust and native to ROS 2’s underlying communication (DDS), you should look into the eProsima DDS Router.

The DDS Router is designed exactly for scenarios like this — connecting ROS 2 systems over wide area networks (WAN), across NATs, firewalls, or cloud infrastructure. Think of it as a secure relay that forwards only the data you want, where you want, without requiring full DDS discovery across the Internet (which is tricky and not ideal).

Some reasons it fits perfectly for this use case:

  • Edge-cloud communication: You can place a DDS Router instance in the cloud and another on your robot or edge device. They forward only selected topics, keeping bandwidth low and latency predictable.
  • Security: It supports TLS, so your data is encrypted end-to-end.
  • No hacks required: It’s fully aligned with the DDS/ROS 2 ecosystem. .

In our documentation, there is already a tutorial that walks you through the steps for setting this up: Cloud-Edge ROS 2 Communication Tutorial

This guide shows you how to use DDS Router in a WAN setup, so your ROS 2 nodes can talk to each other across the Internet, no VPNs or complex routing tricks needed.