0
$\begingroup$

Rosanswers logo

Hi community!!

Following setup: one Ubuntu 16.04 PC with ros-kinetic and one Raspberry Pi with Ubuntu Mate and ros-kinetic.

On each machine there is a lauch-file for some nodes, they are configured to work together. As long as i launch them manually everything is fine :)

Problem: Now i merged the two separate launch-file and added the "machine"-tag.... For simplification and debuging, i tried it with the talker and listener from ros-tuorial. My approach looks like this:

<launch>
    <machine name="alice" address="alice.emma.lab" env-loader="/opt/ros/kinetic/env.sh" />
    <machine name="rosPi" address="rosPi.emma.lab"  env-loader="/opt/ros/kinetic/env.sh" />
    <node machine="alice" pkg="dummy" name="talker-alice" type="talker"/>
    <node machine="rosPi" pkg="delault_pkg" name="listener-pi" output="screen" type="listener" /> 
 </launch>

But all i get is:

....
remote[rosPi.emma.lab-0]: ssh connection created
....
MACHINES
* alice
* rosPi
....
process[talker-alice-6]: started with pid [4155]
[rosPi.emma.lab-0]: launching nodes...
[rosPi.emma.lab-0]: ROS_MASTER_URI=http://10.42.0.1:11311/
[rosPi.emma.lab-0]: ERROR: cannot launch node of type [delault_pkg/listener-pi]: delault_pkg
ROS path [0]=/opt/ros/kinetic/share/ros
ROS path [1]=/opt/ros/kinetic/share
[rosPi.emma.lab-0]: ... done launching nodes

So i checked: http://wiki.ros.org/ROS/NetworkSetup. Result: ssh-login with keys, ping, netcat and name resolution works, ROS_HOSTNAME & ROS_MASTER_URI are correct. On both PCs the firewall is down.

But still no chance with the given launch-file :/ Have i missed anything?? Any config, tag or somesing? I am grateful for any hint!

EDIT and Solution:

With the exact path to env-loader for the remote package:

<machine name="rosPi" address="ros-rasp-mate.emma.lab"  env-loader="/home/labh/plattform-ros/devel/env.sh" />

It works :)


Originally posted by krl101 on ROS Answers with karma: 48 on 2018-03-26

Post score: 1


Original comments

Comment by gvdhoorn on 2018-03-26:
roslaunch xml substitution args (ie: find and friends) are evaluated on the machine where roslaunch is invoked. This means that if default_pkg / your workspace is not in the exact same location as on your desktop, it cannot be started on your Pi.

Can you check?

Comment by gvdhoorn on 2018-03-26:
Also: pkg="delault_pkg": is that a typo, or is it really delault (and not default)?

Comment by krl101 on 2018-03-26:
Thank you for your answer! Yes, default vs delault is a typo in my Question -.-' Sorry for this! If i understand your comment right, on both machines have to be the default_pkg under the same path? This is not the case. This package is only on the Pi and not at the desktop, should it?

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

You're using the default environment loader, which will only set up the package path for ROS packages that are installed in opt.

You should instead use the environment loader from your remote workspace; there should be an auto-generated environment loader in devel/env.sh within your remote catkin workspace.


Originally posted by ahendrix with karma: 47576 on 2018-03-26

This answer was ACCEPTED on the original site

Post score: 4


Original comments

Comment by krl101 on 2018-03-26:
So instead of:

<machine name="rosPi" address="rosPi.emma.lab"  env-loader="/opt/ros/kinetic/env.sh" />

is should be

<machine name="rosPi" address="rosPi.emma.lab"  env-loader="/path/to/workspace/devel/env.sh" />

? Thank you for your answer! I will give it a try asap.

Comment by ahendrix on 2018-03-26:
Yes. The exact path will depend on the path to your workspace.

Comment by krl101 on 2018-03-27:
Checked!!! Thank you very much!!

Comment by SJ on 2018-03-29:
Met the same problem and it is the reason. Upvote.

$\endgroup$

Your Answer

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