0
$\begingroup$

Rosanswers logo

I followed the tutorial on http://wiki.ros.org/ROS/Tutorials/MultipleMachines. I tried setting up 3 computer running ROS. Let's call them RobotComputer, MasterComputer, NodeComputer.

MasterComputer can see topics of RobotComputer, and command sent on them move the robot as expected. Calling rostopic list on NodeComputer, I can see topics from RobotComputer. The problem is : rostopic echo on MasterComputer shows data, it doesn't on NodeComputer.

I created 2 separated network, with MasterComputer acting as a gateway. I won't be able to put them all on the same network. Is there a way to make this work? Am I missing an obvious step?


Originally posted by Vic on ROS Answers with karma: 71 on 2021-06-02

Post score: 0


Original comments

Comment by parzival on 2021-06-02:
Is it related to this: https://answers.ros.org/question/371773/

Comment by Vic on 2021-06-02:
Sadly no, because topics I send on the NodeComputer doesn't show up either on MasterComputer. Plus, the unanswered question deals with services, I am only trying to read and write on a topic for now.

Comment by gvdhoorn on 2021-06-02:
There is no difference in services, messages or actions when it comes to networking setup. So anything you read about any of those applies to your problem as well.

Comment by gvdhoorn on 2021-06-02:\

I created 2 separated network, with MasterComputer acting as a gateway. I won't be able to put them all on the same network.

please provide much more information about your network setup. IPs, subnets, routers involved, is NAT enabled? What sort of network(s)? Etc.

At the very least bi-directional IP (TCP and perhaps even UDP) traffic between all involved hosts on both networks must be working. If that works, checking DNS settings and the various ROS_ environment variables on all hosts must be configured correctly.

I followed the tutorial on http://wiki.ros.org/ROS/Tutorials/Mul.... I tried setting up 3 computer running ROS

then please show what you configured on which host.

Comment by Vic on 2021-06-03:
Network between RobotComputer and MasterComputer : ethernet LAN (just an ethernet cable between the 2 computers). IP adresses are 198.168.100.40 (RobotComputer) and 198.168.100.50 (MasterComputer). Net mask is 255.255.255.0 Both device ping each other.

Network between NodeComputer and MasterComputer : ethernet LAN (just an ethernet cable between the 2 computers). IP adresses are 10.0.0.2 (NodeComputer) and 10.0.0.1 (MasterComputer). Net mask is 255.255.255.0 Both device ping each other.

I exported ROS_MASTER_URI and ROS_IP and ROS_HOSTNAME Focusing on the "faulty" network : On NodeComputer,

ping 10.0.0.1
export ROS_MASTER_URI=http://10.0.0.1:11311/
export ROS_IP = 10.0.0.2
export ROS_HOSTNAME = 10.0.0.2
$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Should had RTFM better.

One of ROS requirement in Networking : "There must be complete, bi-directional connectivity between all pairs of machines, on all ports. " Not the case on my network. Will try again after buying a switch


Originally posted by Vic with karma: 71 on 2021-06-03

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by gvdhoorn on 2021-06-03:
Did you use a NAT router?

Comment by Vic on 2021-06-03:
No, all computers are connected on the main one by Ethernet cable, on differents ethernet cards. Thus, RobotComputer is unpingable from NodeComputer, which break ROS Network requirements

Comment by gvdhoorn on 2021-06-03:
That sounds like something which IP routing could solve for you.

You're probably aware, but a switch would only work if you place everything in the same subnet.

Comment by Vic on 2021-06-11:
Yes. The actual underlying issue of the subnet : we are using 2 robots with lots of components that were'nt made to work in fleet. On the same network, there would have been tons of collision for topic because all the component share name and IP. We putted a switch linked to the second ethernet card of the computer inside the robot, everything is now reachable by everyone, problem solved

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.