[ros-users] ros communication without roscore

Ken Conley kwc at willowgarage.com
Mon Feb 7 16:44:43 UTC 2011


Hi Christian,

In the 'ronin' and 'rosproxy' package we explore various solutions to
the problem you describe.  In general, all you need to do is have
another program register the remote node on another master.  The
'register.py' script in rosproxy contains code to do this.  What you
need is the IP address of the remote node, plus the port of the TCPROS
server that it is running.  This will let you connect to a remote
publisher; a remote subscriber is more difficult because a subscriber
needs regular callbacks to notify it of a new publisher.  The ronin
node, in Python, is a node that is capable of re-attaching to masters.

You can force a roscpp node to bind to a particular TCPROS port by using:

__tcpros_server_port:=<port_num>

as a command-line argument.  Unfortunately this option does exist in
rospy yet, though it could be hacked in.

In the longer term, we want to explore mDNS/Avahi-based solutions for
doing the network config.  There are some packages that already
experiment with this, such as Jon Fink's bonjour-based multimaster:

https://github.com/jonfink/multimaster-ros-pkg

It might be a solution to the problems you describe, but I don't have
first-hand experience with it.

 - Ken

On Mon, Feb 7, 2011 at 3:16 AM, Christian Verbeek
<verbeek at servicerobotics.eu> wrote:
> Dear all,
>
> It might be quite unusual but I would like to communicate with a ROS
> system without connecting to a roscore. The problem I see is the
> following. My robots run Ubuntu and are perfectly suited to run ROS. The
> app for programming these robots is a Windows program. We already ported
> ROS to Windows (http://ros-win32.servicerobotics.eu/). In general we
> would be able to integrate ROS into our Windows app and connect to the
> roscore running on the robots.
>
> This will not do for the following reasons:
>
> 1) The IP address of the robot is not fixed, i.e. can be change by the
> user. In order to be able to connect from the outside to the robot
> ROS_MASTER_URI and ROS_IP on the robot would have to reflect the current
> IP address. This might not be a general problem but makes things quite
> complicated for the user when the IP address has to be changed. I would
> prefer to set ROS_MASTER_URI and ROS_IP on the robot to 127.0.0.1 as
> this will always work.
>
> 2) We also have a simulator for our robot which is also a Windows
> application. If we would use ROS to connect to our robot we would have
> to run a roscore on Windows and connect the simulated robot to this ROS
> master. With a single simulated robot this might work. But when we
> simulate more than one robot we are getting in very big trouble because
> there are many statics in libros. The robots are loaded at runtime to
> the simulator and the statics make it impossible to handle the robots
> individually as it is done right now.
>
> What we would need is a point to point communication with a specific ROS
> node. We know the IP address of the robot and we know which nodes are
> running there. Is there a way to connect to a node's topic directly? Or
> is there a better solution to my problem?
>
> Regards
> Christian
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>



More information about the ros-users mailing list