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