Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

roslaunch on slave

Hi!

I'm having difficulties running a node using roslaunch on a slave machine. I need it for the launch-prefix that allows me to run a node with superuser privileges (my node is written in C++ for doing that easier then with Python) in order to access a GPIO on my Rasperry Pi 2 using the wiringPi library. Here's the setups:

MASTER (Debian Jessie with Indigo):

Inside .bashrc:

export ROS_IP=192.168.1.101
export ROS_MASTER_URI=http://192.168.1.101:11311
source /opt/ros/indigo/setup.bash
source ~/catkin_ws/devel/setup.bash

SLAVE (Raspbian Wheezy with Indigo):

Inside .bashrc:

export ROS_IP=192.168.1.102
export ROS_MASTER_URI=http://192.168.1.101:11311
source /opt/ros/indigo/setup.bash
source ~/catkin_ws/devel/setup.bash

Using rosrun everything works fine. I tried launching a subscriber/publisher on my master and then started a publisher/subscriber on my slave. Roscore on the slave didn't start since the master's running roscore was detected (which is what is expected in this situation) and the node launched transmitting/receiving messages to/from the master.

roslaunch however doesn't understand what ROS_MASTER_URI is hence the need to use the <machine/> tag inside the launch file of my slave's node. Here is what I have (after multiple tries):

<launch>
<!--  <machine name="raspberry" address="localhost" env-loader="/opt/ros/indigo/env.sh"/> -->
  <machine name="raspberry" address="192.168.1.102" env-loader="/opt/ros/indigo/env.sh"/>

  <node machine="raspberry" pkg="blinky" name="blinky" type="blinky" launch-prefix="sudo"/>

</launch>

And of course it doesn't work...Here is the error:

... logging to /home/pi/.ros/log/a01e59f0-4b65-11e5-8f91-5442496dee48/roslaunch-raspberrypi-5408.log Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://192.168.1.102:33999/

SUMMARY
========

PARAMETERS  * /rosdistro: indigo  * /rosversion: 1.11.13

NODES   /
    blinky (blinky/blinky)

ROS_MASTER_URI=http://192.168.1.101:11311

core service [/rosout] found process[blinky-1]: started with pid [5423] [FATAL] [1440540133.302859881]: ROS_MASTER_URI is not defined in the environment. Either type the following or (preferrably) add this to your ~/.bashrc file in order set up your local machine as a ROS master:

export ROS_MASTER_URI=http://localhost:11311

then, type 'roscore' in another shell to actually launch the master program. [blinky-1] process has died [pid 5423, exit code 139, cmd sudo /home/pi/catkin_ws/devel/lib/blinky/blinky
__name:=blinky __log:=/home/pi/.ros/log/a01e59f0-4b65-11e5-8f91-5442496dee48/blinky-1.log]. log file: /home/pi/.ros/log/a01e59f0-4b65-11e5-8f91-5442496dee48/blinky-1*.log all processes on machine have died, roslaunch will exit shutting down processing monitor... ... shutting down processing monitor complete done

Setting up ROS_MASTER_URI to localhost will not allow me to run nodes in "slave mode" (that is - remote master's roscore will be worth jack squat on my RPi2). I'm missing something but what exactly I cannot tell. I checked and double checked the network setup article, the documentation on ROS_IP, ROS_MASTER_URI, roslaunch etc.

roslaunch on slave

Hi!

I'm having difficulties running a node using roslaunch on a slave machine. I need it for the launch-prefix that allows me to run a node with superuser privileges (my node is written in C++ for doing that easier then with Python) in order to access a GPIO on my Rasperry Pi 2 using the wiringPi library. Here's the setups:

MASTER (Debian Jessie with Indigo):

Inside .bashrc:

export ROS_IP=192.168.1.101
export ROS_MASTER_URI=http://192.168.1.101:11311
source /opt/ros/indigo/setup.bash
source ~/catkin_ws/devel/setup.bash

SLAVE (Raspbian Wheezy with Indigo):

Inside .bashrc:

export ROS_IP=192.168.1.102
export ROS_MASTER_URI=http://192.168.1.101:11311
source /opt/ros/indigo/setup.bash
source ~/catkin_ws/devel/setup.bash

Using rosrun everything works fine. I tried launching a subscriber/publisher on my master and then started a publisher/subscriber on my slave. Roscore on the slave didn't start since the master's running roscore was detected (which is what is expected in this situation) and the node launched transmitting/receiving messages to/from the master.

roslaunch however doesn't understand what ROS_MASTER_URI is hence the need to use the <machine/> tag inside the launch file of my slave's node. Here is what I have (after multiple tries):

<launch>
<!--  <machine name="raspberry" address="localhost" env-loader="/opt/ros/indigo/env.sh"/> -->
  <machine name="raspberry" address="192.168.1.102" env-loader="/opt/ros/indigo/env.sh"/>

  <node machine="raspberry" pkg="blinky" name="blinky" type="blinky" launch-prefix="sudo"/>

</launch>

And of course it doesn't work...Here is the error:

... logging to /home/pi/.ros/log/a01e59f0-4b65-11e5-8f91-5442496dee48/roslaunch-raspberrypi-5408.log to /home/pi/.ros/log/a01e59f0-4b65-11e5-8f91-5442496dee48/roslaunch-raspberrypi-5408.log Checking log directory for disk usage. usage. This may take awhile. Press Ctrl-C to to interrupt Done checking log file disk disk usage. Usage is <1GB. <1GB.

started roslaunch server http://192.168.1.102:33999/ SUMMARY ======== server http://192.168.1.102:33999/

SUMMARY

PARAMETERS * /rosdistro: indigo * * /rosversion: 1.11.13 1.11.13

NODES / blinky (blinky/blinky) ROS_MASTER_URI=http://192.168.1.101:11311 (blinky/blinky)

ROS_MASTER_URI=http://192.168.1.101:11311

core service [/rosout] found found process[blinky-1]: started with pid pid [5423] [FATAL] [1440540133.302859881]: [1440540133.302859881]: ROS_MASTER_URI is not defined in the the environment. Either type the following following or (preferrably) add this to your your ~/.bashrc file in order set up your your local machine as a ROS master: export ROS_MASTER_URI=http://localhost:11311 master:

export ROS_MASTER_URI=http://localhost:11311

then, type 'roscore' in another shell shell to actually launch the master program. program. [blinky-1] process has died [pid 5423, 5423, exit code 139, cmd sudo sudo /home/pi/catkin_ws/devel/lib/blinky/blinky __name:=blinky __log:=/home/pi/.ros/log/a01e59f0-4b65-11e5-8f91-5442496dee48/blinky-1.log]. log file: /home/pi/.ros/log/a01e59f0-4b65-11e5-8f91-5442496dee48/blinky-1*.log file: /home/pi/.ros/log/a01e59f0-4b65-11e5-8f91-5442496dee48/blinky-1*.log all processes on machine have died, died, roslaunch will exit shutting down down processing monitor... ... shutting shutting down processing monitor complete done

done

Setting up ROS_MASTER_URI to localhost will not allow me to run nodes in "slave mode" (that is - remote master's roscore will be worth jack squat on my RPi2). I'm missing something but what exactly I cannot tell. I checked and double checked the network setup article, the documentation on ROS_IP, ROS_MASTER_URI, roslaunch etc.