ros multiple machines setup
Im using ROS Indigo on two Ubuntu 14.04 machines. I try to create a distributed system based on this but I get an error message. I want to run the core and data processor node on the desktop (host) and the hardware driver on the laptop (slave).
I did some major changes so I re-wrote the setup as follows:
On salve I created the file /opt/ros/indigo/salve_env.sh
:
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/user_salve/workspace/src
. /home/user_slave/workspace/devel/setup.sh
exec "$@"
added at the end to /home/user_slave/workspace/devel/setup.sh
:
export ROS_MASTER_URI=http://host_IP:11311
export ROS_HOSTNAME=salve_IP
On host in /opt/ros/indigo/host_env.sh
similarly load the setup from devel folder on host (this might be wrong, details at the end of post):
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/user_slave/workspace/src
export ROSLAUNCH_SSH_UNKNOWN=1
. /home/user_salve/workspace/devel/setup.sh
exec "$@"
I added to the end of the file /home/user_host/workspace/devel/setup.sh
:
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=host_IP
Finally, I start a core on my host machine and launch this file:
<!-- mode:xml -->
<launch>
<!-- This assumes roscore is running on this machine -->
<env name="ROS_MASTER_URI" value="http://host_IP:11311"/>
<machine name="desktop" address="host_IP" password="***" env-loader="/opt/ros/indigo/host_env.sh" default="true"/>
<machine name="laptop" address="slave_IP" password="***" env-loader="/opt/ros/indigo/slave_env.sh"/>
<!-- Web Camera controller node -->
<node machine="laptop" pkg="uvc_camera" type="uvc_camera_node" name="uvc_camera" output="screen" respawn="true">
<param name="width" type="int" value="1280" />
<param name="height" type="int" value="720" />
<param name="fps" type="int" value="15" />
<param name="frame" type="string" value="wide_stereo" />
<param name="auto_focus" type="bool" value="False" />
<param name="focus_absolute" type="int" value="0" />
<param name="device" type="string" value="/dev/video1" />
<param name="camera_info_url" type="string" value="file://$(find uvc_camera)/example.yaml" />
</node>
<!-- CAMERA NODES -->
<node machine="desktop" pkg="viewpoint_estimation" type="viewpoint_estimation" name="viewpoint_estimation" output="screen" respawn="true">
<param name=" calibration_file" type="string" value="$(find mobile_robot_system)/config/ost1280x720ML.txt" />
</node>
</launch>
The node on the salve starts and I can see the images from a web camera, but the node on the host doesn't start, and the error message is:
SUMMARY
========
PARAMETERS
* /rosdistro: indigo
* /rosversion: 1.11.13
* /uvc_camera/auto_focus: False
* /uvc_camera/camera_info_url: file:///home/elod...
* /uvc_camera/device: /dev/video1
* /uvc_camera/focus_absolute: 0
* /uvc_camera/fps: 15
* /uvc_camera/frame: wide_stereo
* /uvc_camera/height: 720
* /uvc_camera/width: 1280
* /viewpoint_estimation/calibration_file: /home/elod/TE_wor...
MACHINES
* desktop
* laptop
NODES
/
uvc_camera (uvc_camera/uvc_camera_node)
viewpoint_estimation (viewpoint_estimation/viewpoint_estimation)
ROS_MASTER_URI=http://localhost:11311
core service [/rosout] found
ERROR: cannot launch node of type [viewpoint_estimation/viewpoint_estimation]: can't locate node [viewpoint_estimation] in package [viewpoint_estimation]
[slave_IP-0]: launching nodes...
[slave_IP-0]: ROS_MASTER_URI=http://host_IP:11311
[slave_IP-0]: process[uvc_camera-1]: started with pid [8773]
[slave_IP-0]: ... done launching nodes
By hand I can run the node on host, but while I double tab for auto-fill the name of the pkg I get the following error:
rosrun view[rospack] Warning: error while crawling /home/user_host: boost::filesystem::status: Permission denied: "/home/user_host/.gvfs"
point_estimation