rosproxy was mainly an experiment in having a single rospy node interface with multiple masters and present dual interfaces. It resulted in some improvements in the internal design of rospy and provided ideas for future implementations. There are currently no efforts to continue this experiment.

Setting up the proxy

When using rosproxy, we refer to the internal side of the proxy to mean the ROS graph that is providing the desired data, e.g. inside the firewall. The external side refers to one or more ROS graphs that are connecting to the proxy to retrieve this data.


  1. Run the proxy node. The proxy accepts a whitelist of services and topics that it proxies. You probably want to explicitly set the TCPROS and XML-RPC ports as well to simplify configuration.

  2. For each external master, run the script for each service and topic that you wish to proxy into the external master.

Scripts service /service_name rosrpc://HOSTNAME:PORT

  • Register the service on the current ROS master. pub /topic_name topic/Type http://HOSTNAME:PORT

  • Register the publication on the current ROS master.



The proxy node can proxy service calls and subscriptions, which is useful when traversing firewalls or other configurations where you wish to limit access to another ROS graph. NOTE: the proxy only talks to the master on the internal side. In order to enable the proxy to work with multiple external graphs, the script should be used to register it with other masters.


~pubs ([string], default: [])
  • List of topics that proxy should provide as a publisher.
~services ([string], default: [])
  • List of services that proxy should provide.
~tcpros_port (int, default: 11312)
  • Port number for external TCPROS server
~xmlrpc_port (int, default: 11313)
  • Port number for external XMLRPC server

Wiki: rosproxy (last edited 2010-10-06 19:42:32 by KenConley)