1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 | # Copyright (c) 2024 MBARI
# MBARI Proprietary Information. Confidential. All Rights Reserved
# Unauthorized copying or distribution of this file via any medium is strictly
# prohibited.
#
# WARNING - This file contains information whose export is restricted by the
# Export Administration Act of 1979 (Title 50, U.S.C., App. 2401 et seq.), as
# amended. Violations of these export laws are subject to severe civil and/or
# criminal penalties.
mission TestMission {
test_code {{{
r2d = 180 / 3.14159
upAngle = 25
downAngle = -25
delta = 4.5
initDelay = 150 * 2.5
upDownDelayUntil= 150
upDownStopAt= 225
upDelayCount = 0
downDelayCount = 0
upAngleTotal = 0
upAngleCount = 0
downAngleTotal = 0
downAngleCount = 0
data = slate.read("platform_pitch_angle")[0]
for i in range(len(data)):
angle = float(data[i].data)
if( i < initDelay ):
continue
if angle >= 0:
if downDelayCount > 0:
downDelayCount = 0
upDelayCount = 1
else:
upDelayCount = upDelayCount + 1
if( upDelayCount >= upDownDelayUntil and upDelayCount < upDownStopAt ):
upAngleTotal = upAngleTotal + angle
upAngleCount = upAngleCount + 1
else:
if upDelayCount > 0:
upDelayCount = 0
downDelayCount = 1
else:
downDelayCount = downDelayCount + 1
if( downDelayCount >= upDownDelayUntil and downDelayCount < upDownStopAt ):
downAngleTotal = downAngleTotal + angle
downAngleCount = downAngleCount + 1
if upAngleCount > 0 and downAngleCount > 0:
upAngleAvg = upAngleTotal / upAngleCount * r2d
downAngleAvg = downAngleTotal / downAngleCount * r2d
if utils.withinDelta(upAngleAvg, upAngle, delta) and \
utils.withinDelta(downAngleAvg, downAngle, delta):
passed = True
else:
if not utils.withinDelta(upAngleAvg, upAngle, delta):
print("|upAngleAvg(%f) - upAngle(%f)| > delta(%f)" % (upAngleAvg, upAngle, delta) )
if not utils.withinDelta(downAngleAvg, downAngle, delta):
print("|downAngleAvg(%f) - downAngle(%f)| > delta(%f)" % (downAngleAvg, downAngle, delta) )
else:
print("upAngleCount = %d, downAngleCount = %d" % (upAngleCount, downAngleCount) )
}}}
arguments {
UpAngle = 25 degree
DownAngle = -25 degree
}
timeout duration=P2H
insert RegressionTests/InsertHighPriority.xml
insert RegressionTests/InsertSurfaceOps.xml
aggregate TestAggregate {
run in sequence
behavior Guidance:AltitudeEnvelope {
run in parallel
set minAltitude = 6 meter
}
behavior Guidance:DepthEnvelope {
run in parallel
set minDepth = 5 meter
set maxDepth = 270 meter
set upPitch = UpAngle
set downPitch = DownAngle
}
behavior Guidance:SetSpeed {
run in parallel
set speed = 1 meter_per_second
}
behavior Guidance:YoYo {
run in parallel
set upPitch = UpAngle
set downPitch = DownAngle
}
behavior Guidance:Waypoint {
run in sequence
set latitudeDelta = -0.015 degree
set longitudeDelta = -0.015 degree
}
}
}
|