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 | # 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 {
"""
Sink to depth, then hold neutral. Force PowerOnly and backseat on, read platform communications.
!!!Tank use only!!!, no envelopes, no science, no GPS, no needcomms.
"""
arguments {
Depth = 2 meter
"""
Sink depth
"""
SinkTimeout = 10 minute
"""
Maximum time to reach depth before giving up and holding neutral
anyway.
"""
MissionTimeout = 1 hour
"""
Maximum duration of the mission.
"""
}
timeout duration=MissionTimeout
insert Insert/BackseatDriver.tl
assign in sequence BackseatDriver:EnableBackseat = true
insert Insert/PowerOnly.tl
assign in sequence PowerOnly:SampleAll = true
# Send data when a connection exists, but never require one.
aggregate dataRead {
run while ( true )
readDatum {
Universal:platform_communications
}
behavior Guidance:Wait {
run in sequence
set duration = 5 minute
}
}
behavior Guidance:SetSpeed {
run in parallel
set speed = 0 meter_per_second
}
aggregate Sink {
run in sequence
syslog important "Sinking to " + Depth~meter
behavior Guidance:Pitch{
run in sequence
timeout duration=SinkTimeout {
syslog important "Timed out sinking. Holding neutral at current depth of "
+ Universal:depth~meter
}
set depth = Depth
set massPosition = Control:VerticalControl.massDefault
}
}
aggregate Hold {
run in sequence
syslog important "Reached " + Universal:depth~meter
+ ". Holding neutral buoyancy."
behavior Guidance:Buoyancy {
run in parallel
set position = Control:VerticalControl.buoyancyNeutral
}
behavior Guidance:Pitch {
run in parallel
set massPosition = Control:VerticalControl.massDefault
}
behavior Guidance:Wait {
run in sequence
set duration = MissionTimeout
}
}
}
|