[ros-users] ros communication without roscore
Christian Verbeek
verbeek at servicerobotics.eu
Tue Feb 8 13:11:57 UTC 2011
Hi Ken,
Thank you for this answer. A good hint is to bind the nodes to specific
ports. I will try to connect to the nodes directly not using ROS but raw
xmlrpc.
Christian
> 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
>>
> _______________________________________________
> 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