Ask Your Question
0

ROS2: Running subscriber_lambda and publisher_lambda on different machines (in the same network)

asked 2019-04-05 03:44:20 -0500

nickcage gravatar image

updated 2019-04-05 05:51:45 -0500

gvdhoorn gravatar image

Hello,

I have two machines connected via ethernet cable, configured to be in the same network and they can ping each other successfully. What I would like to know is what would be the necessary steps to run build/examples_rclcpp_minimal_subscriber/subscriber_lambda on one machine and build/examples_rclcpp_minimal_publisher/publisher_lambda on another? I have tried it but the subscriber never gets anything.

Note that I cannot use ros2 run demo_nodes_cpp on one of the machines because it has not been ported yet so that example is not a choice.

Thank you in advance.

edit retag flag offensive close merge delete

Comments

@nickcage: I've changed the title of your question slightly so as to better reflect what you are asking.

gvdhoorn gravatar imagegvdhoorn ( 2019-04-05 05:51:19 -0500 )edit

Note that I cannot use ros2 run demo_nodes_cpp on one of the machines because it has not been ported yet so that example is not a choice.

what do you mean exactly by this? What hasn't been "ported yet"?

gvdhoorn gravatar imagegvdhoorn ( 2019-04-05 05:52:07 -0500 )edit

The thing is one of the machines is an ARM of Texas Instruments SoC, the other one is Intel PC. We have got a ros2 workspace from our clients that we are to use on ARM. Actually the talker and listener demos work on ARM when run locally (from two terminals within the same system) but also output a number of 'Failed to load entry point' messages before they start. They work properly afterwards, though. So maybe they can be used but I have not been able to make them work over network.

nickcage gravatar imagenickcage ( 2019-04-05 07:13:22 -0500 )edit

I'm confused: are you trying to run ARM binaries on an amd64 PC or the other way around?

Edit: O wait, you have an ARM install made available by your client, and have installed ROS2 on an amd64 machine yourself. You're now trying to make those two "see" each other.

Correct?

gvdhoorn gravatar imagegvdhoorn ( 2019-04-05 07:15:12 -0500 )edit

Yes, that is mostly correct. What I mean by that is that we have also been provided a workspace for the PC but I think it was installed by standard procedure. Both distros are bouncy (on ARM and on PC).

nickcage gravatar imagenickcage ( 2019-04-05 07:35:08 -0500 )edit

I would at least replace the PC side of this with a proper install, instead of a "reused workspace". Debugging issues with this sw is hard enough without a lot of things being unknown variables.

gvdhoorn gravatar imagegvdhoorn ( 2019-04-05 10:43:24 -0500 )edit

Hi, thank you for sticking around. Will do that and come back to you with an update.

nickcage gravatar imagenickcage ( 2019-04-08 02:57:48 -0500 )edit

I can't seem to get ROS2 bouncy from the repos, I always end up having crystal after executing 'printenv ROS_DISTRO'. I followed this tutorial https://index.ros.org/doc/ros2/Instal... and only changed the --rosdistro parameter from crystal to bouncy in "Install dependencies using rosdep" section. However, I still got crystal.

nickcage gravatar imagenickcage ( 2019-04-08 03:52:26 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2019-07-10 14:36:19 -0500

nickcage gravatar image

OP here, actually I have solved this issue. The problem was the routing for multicast was not setup correctly on participating machines. The solution was to run the following command on appropriate eth port on both machines:

route add -net 224.0.0.0 netmask 240.0.0.0 dev ethX

That should enable the node discovery mechanism in a local network.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2019-04-05 03:44:20 -0500

Seen: 40 times

Last updated: Jul 10