diff --git a/integrationtests/python_src/px4_it/mavros/mavros_offboard_attctl_test.py b/integrationtests/python_src/px4_it/mavros/mavros_offboard_attctl_test.py
index 5d724b4c9d8973b868cee174776a16fc41ed10d6..7c81e75c9061f6e128e5ade7fdb09bb8aefaad62 100755
--- a/integrationtests/python_src/px4_it/mavros/mavros_offboard_attctl_test.py
+++ b/integrationtests/python_src/px4_it/mavros/mavros_offboard_attctl_test.py
@@ -132,7 +132,10 @@ class MavrosOffboardAttctlTest(MavrosTestCommon):
                 crossed = True
                 break
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(crossed, (
             "took too long to cross boundaries | current position x: {0:.2f}, y: {1:.2f}, z: {2:.2f} | timeout(seconds): {3}".
diff --git a/integrationtests/python_src/px4_it/mavros/mavros_offboard_posctl_test.py b/integrationtests/python_src/px4_it/mavros/mavros_offboard_posctl_test.py
index 263f1597be84ae3b8903e15d63e764db1d630aa0..6778371905865fbd69b0ef9f721470a4adf227b5 100755
--- a/integrationtests/python_src/px4_it/mavros/mavros_offboard_posctl_test.py
+++ b/integrationtests/python_src/px4_it/mavros/mavros_offboard_posctl_test.py
@@ -139,7 +139,10 @@ class MavrosOffboardPosctlTest(MavrosTestCommon):
                 reached = True
                 break
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(reached, (
             "took too long to get to position | current position x: {0:.2f}, y: {1:.2f}, z: {2:.2f} | timeout(seconds): {3}".
diff --git a/integrationtests/python_src/px4_it/mavros/mavros_test_common.py b/integrationtests/python_src/px4_it/mavros/mavros_test_common.py
index 810299a20c4cdfedcdb27be665e431b6bc5eb0cc..b9d9c9ffa73293569e8ee33656972ad64d26e254 100644
--- a/integrationtests/python_src/px4_it/mavros/mavros_test_common.py
+++ b/integrationtests/python_src/px4_it/mavros/mavros_test_common.py
@@ -48,7 +48,7 @@ class MavrosTestCommon(unittest.TestCase):
         except rospy.ROSException:
             self.fail("failed to connect to services")
         self.get_param_srv = rospy.ServiceProxy('mavros/param/get', ParamGet)
-        self.set_arming_srv = rospy.ServiceProxy('/mavros/cmd/arming',
+        self.set_arming_srv = rospy.ServiceProxy('mavros/cmd/arming',
                                                  CommandBool)
         self.set_mode_srv = rospy.ServiceProxy('mavros/set_mode', SetMode)
         self.wp_clear_srv = rospy.ServiceProxy('mavros/mission/clear',
@@ -184,7 +184,10 @@ class MavrosTestCommon(unittest.TestCase):
                 except rospy.ServiceException as e:
                     rospy.logerr(e)
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(arm_set, (
             "failed to set arm | new arm: {0}, old arm: {1} | timeout(seconds): {2}".
@@ -211,7 +214,10 @@ class MavrosTestCommon(unittest.TestCase):
                 except rospy.ServiceException as e:
                     rospy.logerr(e)
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(mode_set, (
             "failed to set mode | new mode: {0}, old mode: {1} | timeout(seconds): {2}".
@@ -232,7 +238,10 @@ class MavrosTestCommon(unittest.TestCase):
                               format(i / loop_freq, timeout))
                 break
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(simulation_ready, (
             "failed to hear from all subscribed simulation topics | topic ready flags: {0} | timeout(seconds): {1}".
@@ -252,13 +261,16 @@ class MavrosTestCommon(unittest.TestCase):
                               format(i / loop_freq, timeout))
                 break
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(landed_state_confirmed, (
             "landed state not detected | desired: {0}, current: {1} | index: {2}, timeout(seconds): {3}".
             format(mavutil.mavlink.enums['MAV_LANDED_STATE'][
                 desired_landed_state].name, mavutil.mavlink.enums[
-                    'MAV_VTOL_STATE'][self.extended_state.landed_state].name,
+                    'MAV_LANDED_STATE'][self.extended_state.landed_state].name,
                    index, timeout)))
 
     def wait_for_vtol_state(self, transition, timeout, index):
@@ -277,7 +289,10 @@ class MavrosTestCommon(unittest.TestCase):
                 transitioned = True
                 break
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(transitioned, (
             "transition not detected | desired: {0}, current: {1} | index: {2} timeout(seconds): {3}".
@@ -304,7 +319,10 @@ class MavrosTestCommon(unittest.TestCase):
                 except rospy.ServiceException as e:
                     rospy.logerr(e)
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(wps_cleared, (
             "failed to clear waypoints | timeout(seconds): {0}".format(timeout)
@@ -340,7 +358,10 @@ class MavrosTestCommon(unittest.TestCase):
                               format(i / loop_freq, timeout))
                 break
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue((
             wps_sent and wps_verified
@@ -366,7 +387,10 @@ class MavrosTestCommon(unittest.TestCase):
             except rospy.ServiceException as e:
                 rospy.logerr(e)
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(res.success, (
             "MAV_TYPE param get failed | timeout(seconds): {0}".format(timeout)
diff --git a/integrationtests/python_src/px4_it/mavros/mission_test.py b/integrationtests/python_src/px4_it/mavros/mission_test.py
index 5de036f6ea205d3f7f681b03725c01a7b8b95767..a048c6134d1c719faabb4850063a4bba762bf722 100755
--- a/integrationtests/python_src/px4_it/mavros/mission_test.py
+++ b/integrationtests/python_src/px4_it/mavros/mission_test.py
@@ -252,7 +252,10 @@ class MavrosMissionTest(MavrosTestCommon):
                     format(self.mission_wp.current_seq, xy_radius, z_radius,
                            pos_xy_d, pos_z_d))
 
-            rate.sleep()
+            try:
+                rate.sleep()
+            except rospy.ROSException as e:
+                self.fail(e)
 
         self.assertTrue(
             reached,
diff --git a/launch/mavros_posix_sitl.launch b/launch/mavros_posix_sitl.launch
index 7bc706a87a9e0a641f1930afa82725941e641e42..390452cd8652e7954f414cb1b7e202be2230ecfd 100644
--- a/launch/mavros_posix_sitl.launch
+++ b/launch/mavros_posix_sitl.launch
@@ -24,6 +24,7 @@
     <arg name="debug" default="false"/>
     <arg name="verbose" default="false"/>
     <arg name="paused" default="false"/>
+    <arg name="respawn_gazebo" default="false"/>
 
     <arg name="pluginlists_yaml" default="$(find mavros)/launch/px4_pluginlists.yaml" />
     <arg name="config_yaml" default="$(find mavros)/launch/px4_config.yaml" />
@@ -45,6 +46,7 @@
         <arg name="debug" value="$(arg debug)"/>
         <arg name="verbose" value="$(arg verbose)"/>
         <arg name="paused" value="$(arg paused)"/>
+        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
     </include>
 
     <include file="$(find px4)/launch/mavros.launch">
diff --git a/launch/posix_sitl.launch b/launch/posix_sitl.launch
index d06f6b8a54bf3d6c3e486f1f279ad5d675d4ffb6..9e828182c2338f3976782fe59eceb6fd53aa8f91 100644
--- a/launch/posix_sitl.launch
+++ b/launch/posix_sitl.launch
@@ -20,6 +20,7 @@
     <arg name="debug" default="false"/>
     <arg name="verbose" default="false"/>
     <arg name="paused" default="false"/>
+    <arg name="respawn_gazebo" default="false"/>
 
     <node name="sitl" pkg="px4" type="px4" output="screen"
         args="$(find px4) $(arg rcS)">
@@ -32,6 +33,7 @@
         <arg name="debug" value="$(arg debug)" />
         <arg name="verbose" value="$(arg verbose)" />
         <arg name="paused" value="$(arg paused)" />
+        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
     </include>
 
     <node name="$(anon vehicle_spawn)" output="screen" pkg="gazebo_ros" type="spawn_model"
diff --git a/test/mavros_posix_test_mission.test b/test/mavros_posix_test_mission.test
index e3111d32a422a3dea1754f4a3442f267ff8e2faf..5b48ce16d81f6c6dfa6d06d471cd06039323ca84 100644
--- a/test/mavros_posix_test_mission.test
+++ b/test/mavros_posix_test_mission.test
@@ -7,6 +7,7 @@
     <arg name="est" default="ekf2"/>
     <arg name="mission"/>
     <arg name="vehicle"/>
+    <arg name="respawn_gazebo" default="true"/>
 
     <include file="$(find px4)/launch/mavros_posix_sitl.launch">
         <arg name="ns" value="$(arg ns)"/>
@@ -14,6 +15,7 @@
         <arg name="gui" value="$(arg gui)"/>
         <arg name="vehicle" value="$(arg vehicle)"/>
         <arg name="est" value="$(arg est)"/>
+        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
     </include>
 
     <group ns="$(arg ns)">
diff --git a/test/mavros_posix_tests_iris_opt_flow.test b/test/mavros_posix_tests_iris_opt_flow.test
index f4361e128518b2f33fc170d9763ca46311f9c3fa..ae174029fdee046428a46a79e8a412f854275a90 100644
--- a/test/mavros_posix_tests_iris_opt_flow.test
+++ b/test/mavros_posix_tests_iris_opt_flow.test
@@ -5,6 +5,7 @@
     <arg name="headless" default="true"/>
     <arg name="gui" default="false"/>
     <arg name="est" default="ekf2"/>
+    <arg name="respawn_gazebo" default="true"/>
 
     <include file="$(find px4)/launch/mavros_posix_sitl.launch">
         <arg name="ns" value="$(arg ns)"/>
@@ -12,6 +13,7 @@
         <arg name="gui" value="$(arg gui)"/>
         <arg name="vehicle" value="iris_opt_flow"/>
         <arg name="est" value="$(arg est)"/>
+        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
     </include>
 
     <group ns="$(arg ns)">
diff --git a/test/mavros_posix_tests_missions.test b/test/mavros_posix_tests_missions.test
index 2494d93b893cac53fe25b32ddbcbd87264ac3be2..2ac8217ad4ccf97a34809ea5f7983df134fae64f 100644
--- a/test/mavros_posix_tests_missions.test
+++ b/test/mavros_posix_tests_missions.test
@@ -5,6 +5,7 @@
     <arg name="headless" default="true"/>
     <arg name="gui" default="false"/>
     <arg name="est" default="ekf2"/>
+    <arg name="respawn_gazebo" default="true"/>
 
     <include file="$(find px4)/launch/mavros_posix_sitl.launch">
         <arg name="ns" value="$(arg ns)"/>
@@ -12,6 +13,7 @@
         <arg name="gui" value="$(arg gui)"/>
         <arg name="vehicle" value="standard_vtol"/>
         <arg name="est" value="$(arg est)"/>
+        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
     </include>
 
     <group ns="$(arg ns)">
diff --git a/test/mavros_posix_tests_offboard_attctl.test b/test/mavros_posix_tests_offboard_attctl.test
index 890a36ad17aa44843bdd08bae43469778ef0417e..e6407166f15b41664abb0e54ea23814bf93d113c 100644
--- a/test/mavros_posix_tests_offboard_attctl.test
+++ b/test/mavros_posix_tests_offboard_attctl.test
@@ -5,6 +5,7 @@
     <arg name="headless" default="true"/>
     <arg name="gui" default="false"/>
     <arg name="est" default="ekf2"/>
+    <arg name="respawn_gazebo" default="true"/>
 
     <include file="$(find px4)/launch/mavros_posix_sitl.launch">
         <arg name="ns" value="$(arg ns)"/>
@@ -12,6 +13,7 @@
         <arg name="gui" value="$(arg gui)"/>
         <arg name="vehicle" value="iris"/>
         <arg name="est" value="$(arg est)"/>
+        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
     </include>
 
     <group ns="$(arg ns)">
diff --git a/test/mavros_posix_tests_offboard_posctl.test b/test/mavros_posix_tests_offboard_posctl.test
index 38d5b065664d5adbfdf7a368a93414dec5bcae41..92905e6870434064c29d0c13222b7e5ab69dcadf 100644
--- a/test/mavros_posix_tests_offboard_posctl.test
+++ b/test/mavros_posix_tests_offboard_posctl.test
@@ -5,6 +5,7 @@
     <arg name="headless" default="true"/>
     <arg name="gui" default="false"/>
     <arg name="est" default="ekf2"/>
+    <arg name="respawn_gazebo" default="true"/>
 
     <include file="$(find px4)/launch/mavros_posix_sitl.launch">
         <arg name="ns" value="$(arg ns)"/>
@@ -12,6 +13,7 @@
         <arg name="gui" value="$(arg gui)"/>
         <arg name="vehicle" value="iris"/>
         <arg name="est" value="$(arg est)"/>
+        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
     </include>
 
     <group ns="$(arg ns)">