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 | # 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.
aggregate NeedComms {
arguments {
DiveInterval = 1 hour
"""
Elapsed time after most recent surfacing when vehicle will begin to
ascend to the surface again. The timing is actually based on the
variable Universal:time_fix instead of the variable
Universal:platform_communications because the latter is not toggled
until the message queue is clear. As a result, there are situations
where the vehicle might dive for the first half of a yo, then return to
the surface to continue communications, rendering the communications
timeout useless. When adjusting this parameter, do not use "set", use
Assign in a mission, or set NeedComms:DiveInterval from the command
line.
"""
WaitForPitchUp = 10 minute
"""
Extra time to wait for the vehicle to pitch up (avoid truncating a yo).
"""
SurfacePitch = 20 degree
"""
Pitch to maintain while ascending
"""
SurfaceDepthRate = NaN meter_per_second
"""
Depth rate to maintain while ascending. Set to NaN if using pitch
"""
SurfaceSpeed = 1 meter_per_second
"""
Standard speed during surfacing. Don't reduce this too much below 1 m/s
-- the elevators can stall. (At 0.5 m/s, we have observed evidence of
stall in the past.)
"""
SurfacingTimeout = 1000 second
"""
The maximum time allowed for the ascent to surface.
"""
GPSTimeout = 7 minute
"""
Maximum amount of time to spend trying to get each GPS fix.
"""
CommsTimeout = 30 minute
"""
Maximum amount of time to spend on the surface trying to communicate
before giving up, getting another GPS fix, and diving again.
"""
}
run when (
called
or ( elapsed ( Universal:time_fix ) > ( DiveInterval + WaitForPitchUp ) )
or (
elapsed ( Universal:time_fix ) > DiveInterval
and ( Universal:platform_pitch_angle > 0 degree )
)
)
syslog info "last time_fix was: " + Universal:time_fix~epoch_second
behavior Guidance:GoToSurface {
run in progression
set pitch = SurfacePitch
set depthRate = SurfaceDepthRate
set speed = SurfaceSpeed
set surfaceTimeout = SurfacingTimeout
}
readDatum {
timeout duration=GPSTimeout {
syslog important "first GPS update timeout"
}
Universal:time_fix
}
readDatum {
timeout duration=CommsTimeout {
syslog important "Comms timed out after " + CommsTimeout~minute + "minutes"
}
Universal:platform_communications
}
readDatum {
timeout duration=GPSTimeout {
syslog important "second GPS update timeout"
}
Universal:time_fix
}
}
|