Browse Source

use separate altitude offset check in FW

sbg
Andreas Antener 9 years ago committed by Lorenz Meier
parent
commit
57fa9d2070
  1. 17
      integrationtests/python_src/px4_it/mavros/mission_test.py

17
integrationtests/python_src/px4_it/mavros/mission_test.py

@ -73,6 +73,7 @@ class MavrosMissionTest(unittest.TestCase): @@ -73,6 +73,7 @@ class MavrosMissionTest(unittest.TestCase):
self.home_alt = 0
self.mc_rad = 5
self.fw_rad = 50
self.fw_alt_rad = 10
self.last_alt_d = 9999
self.last_pos_d = 9999
@ -111,7 +112,7 @@ class MavrosMissionTest(unittest.TestCase): @@ -111,7 +112,7 @@ class MavrosMissionTest(unittest.TestCase):
#
# Helper methods
#
def is_at_position(self, lat, lon, alt, offset):
def is_at_position(self, lat, lon, alt, xy_offset, z_offset):
R = 6371000 # metres
rlat1 = math.radians(lat)
rlat2 = math.radians(self.global_position.latitude)
@ -135,7 +136,7 @@ class MavrosMissionTest(unittest.TestCase): @@ -135,7 +136,7 @@ class MavrosMissionTest(unittest.TestCase):
if self.last_alt_d > alt_d:
self.last_alt_d = alt_d
return d < offset and alt_d < offset
return d < xy_offset and alt_d < z_offset
def reach_position(self, lat, lon, alt, timeout, index):
# reset best distances
@ -146,11 +147,13 @@ class MavrosMissionTest(unittest.TestCase): @@ -146,11 +147,13 @@ class MavrosMissionTest(unittest.TestCase):
count = 0
while count < timeout:
# use different radius matching vehicle state
radius = self.mc_rad
xy_radius = self.mc_rad
z_radius = self.mc_rad
if self.extended_state.vtol_state == ExtendedState.VTOL_STATE_FW:
radius = self.fw_rad
xy_radius = self.fw_rad
z_radius = self.fw_alt_rad
if self.is_at_position(lat, lon, alt, radius):
if self.is_at_position(lat, lon, alt, xy_radius, z_radius):
rospy.loginfo("position reached, index: %d, count: %d, pos_d: %f, alt_d: %f" %
(index, count, self.last_pos_d, self.last_alt_d))
break
@ -158,8 +161,8 @@ class MavrosMissionTest(unittest.TestCase): @@ -158,8 +161,8 @@ class MavrosMissionTest(unittest.TestCase):
self.rate.sleep()
self.assertTrue(count < timeout, ("took too long to get to position " +
"lat: %f, lon: %f, alt: %f, radius: %f, timeout: %d, index: %d, pos_d: %f, alt_d: %f" %
(lat, lon, alt, radius, timeout, index, self.last_pos_d, self.last_alt_d)))
"lat: %f, lon: %f, alt: %f, xy off: %f, z off: %f, timeout: %d, index: %d, pos_d: %f, alt_d: %f" %
(lat, lon, alt, xy_radius, z_radius, timeout, index, self.last_pos_d, self.last_alt_d)))
def run_mission(self):
"""switch mode: armed | auto"""

Loading…
Cancel
Save