Remote roslaunch: The slave doesn't publish topics after restart
I am trying to run some ros nodes in the master system and others in the slave system. Remote roslaunch works fine, all the ros nodes launch at the startup of the master system (I have configured it to run roslaunch at the startup). But when the slave system shuts down, as expected the nodes on the slave system are not re-launched. I would like both of the ros systems to be running with all the nodes even after there is a unexpected shutdown on one of them. Is there a solution for this on ROS or do I have to write a bash script for this? Any other master-slave ROS architecture that could solve this problem?
Roslaunch:(I am using upstart to launch it)
<launch>
<machine
name="<machine_name>"
address="<machine_ip>"
user="odroid"
password="passwd"
timeout="60"
env-loader="/home/odroid/ros_ws/devel/remote_env_loader.sh" />
<node name="webserver" pkg="ros_webserver" type="webserver.py" respawn="true" output="log"/>
<node name="GPS" pkg="nmea_navsat_driver" type="nmea_serial_driver" respawn="true" output="log">
<param name="port" value="/dev/ttyGPS" type="string" />
<param name="baud" value="4800" type="string" />
<remap from="fix" to="gps_data" />
</node>
<node name="web_video_server" pkg="web_video_server" type="web_video_server" respawn="true"/>
<node name="IMU" pkg="ros_phidgets_sensors" type="IMU_publisher.py" respawn="true" output="log"/>
<node name="arduino" pkg="ros_arduino" type="arduino_node.py" respawn="true" output="log"/>
<!-- The Slave node launch codes -->
<node machine="machine_name" name="usb_cam_2" pkg="usb_cam" type="usb_cam_node" respawn="true" output="log" respawn_delay="30" >
<param name="video_device" value="/dev/video6" />
<param name="framerate" value="2" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="usb_cam_2" />
<param name="io_method" value="mmap"/>
</node>
<node machine="machine_name" name="usb_cam_1" pkg="usb_cam" type="usb_cam_node" respawn="true" respawn_delay="30" output="log">
<param name="video_device" value=" /dev/video8" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="usb_cam_1" />
<param name="io_method" value="mmap"/>
</node>
</launch>
Please provide more information about how "the slave system shuts down". Remote systems use a remote instance of
roslaunch
and a normal shut down won't trigger a relaunch.Please post your launch files. It's possible you have forgotten something like the
respawn="true"
or have arequired="true"
attribute in there that is altering the behaviour from what you expect.I am using two odroids for the master and slave systems. And I have seen the odroids restart/shutdown on occasions without a warning, I am not completely sure of what causes this. I have respawn = "true" on all my launch nodes but not required="true".
Please post the launch files.
posted it.