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<Contents>
108 <OBJECTS>
109 <Lib
110 LibName = "environment"
111 SimObject = "Environment"
112 Name = "Env"
113 RandomSeed = "20240601"
114 Waves.Model = "Component"
115 Waves.NumWaves = "0"
116 Current.Model = "Constant"
117 Current.Vector = "0, 0, 0"
118
119 Bathymetry.Model = "SumOfSines"
120 Bathymetry.Depth = "140"
121 Bathymetry.NumStructures = "10"
122 Bathymetry.StructureLengthMin = "150"
123 Bathymetry.StructureLengthMax = "600"
124 Bathymetry.StructureMaxHeight = "6"
125
126 ScalarField.Names = "SeaTemperature, SeaSalinity, Calanus, Mackerel, Cod"
127
128 ScalarField.SeaTemperature.Quantity = "Temperature"
129 ScalarField.SeaTemperature.Unit = "degC"
130 ScalarField.SeaTemperature.Model = "Parametric"
131 ScalarField.SeaTemperature.ConfigFile = "../examples/input/fishery/auv_ocean_fields.json"
132 ScalarField.SeaTemperature.ConfigKey = "SeaTemperature"
133
134 ScalarField.SeaSalinity.Quantity = "Salinity"
135 ScalarField.SeaSalinity.Unit = "PSU"
136 ScalarField.SeaSalinity.Model = "Parametric"
137 ScalarField.SeaSalinity.ConfigFile = "../examples/input/fishery/auv_ocean_fields.json"
138 ScalarField.SeaSalinity.ConfigKey = "SeaSalinity"
139
140 ScalarField.Calanus.Quantity = "SpeciesConcentration"
141 ScalarField.Calanus.Unit = "kg/m^3"
142 ScalarField.Calanus.Model = "Parametric"
143 ScalarField.Calanus.ConfigFile = "../examples/input/fishery/auv_ocean_fields.json"
144 ScalarField.Calanus.ConfigKey = "Calanus"
145 ScalarField.Calanus.PropertyNames = "MassKg, LengthM, LengthStdM, TargetStrengthRefDb, RefFreqkHz, TsSlopeDbPerOctave"
146 ScalarField.Calanus.PropertyValues = "0.0000011, 0.0028, 0.0007, -38.9, 200, 12"
147
148 ScalarField.Mackerel.Quantity = "SpeciesConcentration"
149 ScalarField.Mackerel.Unit = "kg/m^3"
150 ScalarField.Mackerel.Model = "Parametric"
151 ScalarField.Mackerel.ConfigFile = "../examples/input/fishery/auv_ocean_fields.json"
152 ScalarField.Mackerel.ConfigKey = "Mackerel"
153 ScalarField.Mackerel.PropertyNames = "MassKg, LengthM, TargetStrengthRefDb, RefFreqkHz, TsSlopeDbPerOctave"
154 ScalarField.Mackerel.PropertyValues = "0.35, 0.35, -44.9, 38, 2"
155
156 ScalarField.Cod.Quantity = "SpeciesConcentration"
157 ScalarField.Cod.Unit = "kg/m^3"
158 ScalarField.Cod.Model = "Parametric"
159 ScalarField.Cod.ConfigFile = "../examples/input/fishery/auv_ocean_fields.json"
160 ScalarField.Cod.ConfigKey = "Cod"
161 ScalarField.Cod.PropertyNames = "MassKg, LengthM, TargetStrengthRefDb, RefFreqkHz, TsSlopeDbPerOctave"
162 ScalarField.Cod.PropertyValues = "2.3, 0.60, -27.5, 38, 0"
163 />
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213 <Lib
214 LibName = "environment"
215 SimObject = "VisualScalarVolume"
216 Name = "CalanusVolume"
217 FieldName = "Calanus"
218 BoxCentre = "150, 50, 30"
219 BoxSize = "420, 260, 60"
220 Resolution = "84, 52, 48"
221 ReferenceLength = "20"
222 ColorRange = "3.0e-4, 2.2e-3"
223 VisibleRange = "3.0e-4, 2.6e-3"
224 AlphaRange = "0.02, 0.30"
225 />
226
227
228
229
230
231
232 <Lib
233 LibName = "environment"
234 SimObject = "VisualScalarVolume"
235 Name = "CodVolume"
236 FieldName = "Cod"
237 BoxCentre = "150, 50, 132"
238 BoxSize = "420, 260, 44"
239 Resolution = "84, 52, 44"
240 ReferenceLength = "10"
241 ColorRange = "1.0e-3, 1.2e-2"
242 VisibleRange = "1.0e-3, 1.6e-2"
243 AlphaRange = "0.03, 0.45"
244 />
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262 <Lib
263 LibName = "environment"
264 SimObject = "VisualScalarPlane"
265 Name = "TemperatureSection"
266 FieldName = "SeaTemperature"
267 Position = "600, 180, 70"
268 LocalX = "1, 0, 0"
269 LocalY = "0, 0, 1"
270 Size = "1900, 140"
271 Resolution = "475, 140"
272 ColorRange = "6.5, 9.8"
273 VisibleRange = "6.2, 10.4"
274 AlphaRange = "0.45, 0.80"
275 />
276
277 <Lib
278 LibName = "fishery"
279 SimObject = "Auv/Vehicle"
280 Name = "Auv"
281 Length = "2.0"
282 Diameter = "0.20"
283 AverageDensity = "1025"
284 Rho = "1025"
285 COG = "0, 0, 0.020"
286 AddedMass = "3.2, 58, 58, 0.1, 19, 19"
287 ThrustPerPower = "0.30"
288 MaxPropulsionPower = "120"
289 HotelPower = "15"
290 ThrusterPos = "-1.0, 0, 0"
291 AxialDragCoeff = "0.25"
292 CrossFlowDragCoeff = "1.1"
293 RollDampingLinear = "4.6"
294 RollDampingQuadratic = "1.0"
295 RudderArea = "0.016"
296 RudderAspectRatio = "1.25"
297 RudderPos = "-0.85, 0, 0"
298 RudderClMax = "0.8"
299 RudderAoaMax = "0.436"
300 RudderCd0 = "0.02"
301 RudderOswald = "0.9"
302 MaxRudderAngle = "0.35"
303 InitialBattery = "1.8e6"
304 />
305
306
307
308
309
310 <Lib
311 LibName = "fishery"
312 SimObject = "Auv/UndulateMissionControl"
313 Name = "Mission"
314 WaypointsX = "300, 300, 0"
315 WaypointsY = " 0, 100, 100"
316 RecoveryPosition = "0, 100"
317 WaypointRadius = "15"
318 CruiseSpeed = "1.5"
319 BatteryAtEndOfMission = "2.7e5"
320 LoopWaypoints = "0"
321 UpdatePeriod = "1.0"
322 />
323
324 <Lib
325 LibName = "fishery"
326 SimObject = "Auv/UndulateDiveControl"
327 Name = "Dive"
328 MaxDepth = "45"
329 MinDepth = "10"
330 MinSeafloorDistance = "15"
331 DiveAngle = "0.349"
332 DepthHysteresis = "4.0"
333 UpdatePeriod = "1.0"
334 />
335
336
337
338
339 <Lib
340 LibName = "fishery"
341 SimObject = "Trawl/PIDController"
342 Name = "HeadingPid"
343 InitOutput = "0"
344 ProportionalGain = "0.4"
345 IntegratorGain = "0"
346 DerivativeGain = "0.6"
347 MinOut = "-0.35"
348 MaxOut = "0.35"
349 MaxDerivativePart = "0.2"
350 MaxIntegratorPart = "0.1"
351 />
352
353
354 <Lib
355 LibName = "fishery"
356 SimObject = "Trawl/PIDController"
357 Name = "PitchPid"
358 InitOutput = "0"
359 ProportionalGain = "-0.6"
360 IntegratorGain = "-0.05"
361 DerivativeGain = "-0.8"
362 MinOut = "-0.35"
363 MaxOut = "0.35"
364 MaxDerivativePart = "0.2"
365 MaxIntegratorPart = "0.2"
366 />
367
368
369
370 <Lib
371 LibName = "fishery"
372 SimObject = "Trawl/PIDController"
373 Name = "SpeedPid"
374 InitOutput = "30"
375 ProportionalGain = "200"
376 IntegratorGain = "10"
377 DerivativeGain = "0"
378 MinOut = "0"
379 MaxOut = "120"
380 MaxIntegratorPart = "120"
381 />
382
383
384
385
386
387 <Lib
388 LibName = "fishery"
389 SimObject = "Auv/CTD"
390 Name = "Ctd"
391 TemperatureFieldName = "SeaTemperature"
392 SalinityFieldName = "SeaSalinity"
393 MountOffset = "0.8, 0, 0"
394 SamplePeriod = "0.0625"
395 TemperatureTimeConstant = "0.07"
396 ConductivityTimeConstant = "0.06"
397 DepthTimeConstant = "0.02"
398 NoiseSeed = "7"
399 />
400
401
402
403
404
405
406 <Lib
407 LibName = "fishery"
408 SimObject = "Auv/SilCam"
409 Name = "SilCam"
410 SpeciesFieldName = "Calanus"
411 MountOffset = "0.6, 0, 0"
412 FrameRate = "4.0"
413 FramesPerOutput = "40"
414 SampleVolume = "0.040, 0.055, 0.065"
415 CaptureEfficiency = "0.85"
416 DetectionProbability = "0.92"
417 FalsePositiveRate = "0.05"
418 SizeErrorStdRelative = "0.08"
419 NumSizeBins = "8"
420 SizeBinMin = "0.0005"
421 SizeBinMax = "0.0060"
422 NoiseSeed = "11"
423 />
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441 <Lib
442 LibName = "base"
443 SimObject = "System/ExternalLinkStandard"
444 Name = "fmi"
445 outputPortNames = "CruiseSpeedOverride, AbortMission"
446 Initial_CruiseSpeedOverride = "0"
447 Initial_AbortMission = "0"
448 inputPortNames = "Pos, Euler, Depth, Altitude, BatteryFraction, EndMission, CtdMeasurement, SilCamConcentration, SilCamSizeMean, EchoAltitude"
449 Size_Pos = "3"
450 Size_Euler = "3"
451 Size_Depth = "1"
452 Size_Altitude = "1"
453 Size_BatteryFraction = "1"
454 Size_EndMission = "1"
455 Size_CtdMeasurement = "3"
456 Size_SilCamConcentration = "1"
457 Size_SilCamSizeMean = "1"
458 Size_EchoAltitude = "1"
459 />
460
461
462 <Lib
463 LibName = "base"
464 SimObject = "Signal/Switch"
465 Name = "SpeedSelect"
466 PortWidth = "1"
467 SwitchType = "gt"
468 />
469 <Lib
470 LibName = "base"
471 SimObject = "Signal/Switch"
472 Name = "AbortGate"
473 PortWidth = "1"
474 SwitchType = "gt"
475 />
476
477 <Lib
478 LibName = "fishery"
479 SimObject = "Auv/Echosounder"
480 Name = "Echo"
481 MountOffset = "0, 0, 0.10"
482 MountDirection = "0, 0, 1"
483 PingPeriod = "1.0"
484 MaxRangeDown = "150"
485 MaxRangeUp = "50"
486 RayStepSize = "1.0"
487 RayTolerance = "0.01"
488 SpeciesFieldNames = "Calanus, Mackerel, Cod"
489 BinSize = "1.0"
490 SvPrecision = "2"
491 FlushEveryNPings = "20"
492 WriteFile = "1"
493 FileName = "AuvSurvey_echogram.csv"
494 NoiseSeed = "13"
495 />
496 </OBJECTS>
497
498 <INTERCONNECTIONS>
499 <Connection Mission.Pos = "Auv.Pos" Mission.Battery = "Auv.Battery" Mission.Heading = "Auv.Heading"/>
500 <Connection Dive.Depth = "Auv.Depth" Dive.Altitude = "Auv.Altitude"/>
501
502 <Connection HeadingPid.Reference = "Mission.Heading" HeadingPid.Measurement = "Auv.Heading"/>
503 <Connection PitchPid.Reference = "Dive.PitchRef" PitchPid.Measurement = "Auv.Pitch"/>
504
505
506 <Connection SpeedSelect.In1 = "fmi.CruiseSpeedOverride"
507 SpeedSelect.In2 = "fmi.CruiseSpeedOverride"
508 SpeedSelect.In3 = "Mission.Speed"/>
509 <Connection AbortGate.In1 = "0"
510 AbortGate.In2 = "fmi.AbortMission"
511 AbortGate.In3 = "SpeedSelect.Out"/>
512 <Connection SpeedPid.Reference = "AbortGate.Out" SpeedPid.Measurement = "Auv.Speed"/>
513
514
515
516
517 <Connection
518 Auv.RudderYaw = "HeadingPid.Out"
519 Auv.RudderDive = "PitchPid.Out"
520 Auv.ThrustPower = "SpeedPid.Out"
521 Auv.ExternalForce = "0,0,0"
522 />
523
524
525
526 <Connection Ctd.Pos = "Auv.Pos" Ctd.Quater = "Auv.Quater"/>
527 <Connection SilCam.Pos = "Auv.Pos" SilCam.Quater = "Auv.Quater"/>
528 <Connection Echo.Pos = "Auv.Pos" Echo.Quater = "Auv.Quater"/>
529
530
531
532 <Connection
533 fmi.Pos = "Auv.Pos"
534 fmi.Euler = "Auv.Euler"
535 fmi.Depth = "Auv.Depth"
536 fmi.Altitude = "Auv.Altitude"
537 fmi.BatteryFraction = "Auv.BatteryFraction"
538 fmi.EndMission = "Mission.EndMission"
539 fmi.CtdMeasurement = "Ctd.Measurement"
540 fmi.SilCamConcentration = "SilCam.Concentration"
541 fmi.SilCamSizeMean = "SilCam.SizeMean"
542 fmi.EchoAltitude = "Echo.Altitude"
543 />
544 </INTERCONNECTIONS>
545
546 <INITIALIZATION>
547 <InitialCondition
548 Auv.Pos = "0,0,20"
549 Auv.Quater = "1,0,0,0"
550 Auv.LocalVel = "1.5,0,0"
551 Auv.Omega = "0,0,0"
552 />
553 </INITIALIZATION>
554
555 <SIMULATION>
556 <Timing TStart="0" TEnd="600"/>
557 <Integrator Method="RK45_i" NumCores="1">
558 <StepControl StepMax="0.0125" StepMin="1e-8" AbsTol="1e-4" RelTol="1e-4"/>
559 </Integrator>
560 </SIMULATION>
561
562</Contents>