Skip to content

underIce/DefaultWithUndock.tl

  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
#   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 DefaultWithUndock {
  arguments {
    ElapsedSinceDefaultStarted = 0 minute

    DetachTimeout = 6 hour
      """
      Maximum time duration for the vehicle to detach form the dock.
      """

    TransponderCode = Dock:Dock.transponderCode
      """
      Dock transponder address.
      """

    TrackingUpdatePeriod = 10 second
      """
      Time duration between acoustic range queries while the mission is
      detaching from the dock.
      """

    NumberOfPings = 1 count
      """
      Number of pings requested each time.
      """

    DriftTimeout = 3 minute
      """
      How long to allow vehicle to drift away from dock before retrying reverse
      """
  }

  behavior Guidance:Wait {
    """
    Wait a moment to see if the scheduler starts a new mission before
    starting to actually run Default.
    """

    run in sequence

    set duration = 30 second
  }

  aggregate LeaveDock {
    run in sequence

    timeout duration=DetachTimeout {
      syslog important "Timed out while trying to detach from dock at current depth of "
           + Universal:depth~meter + "."
    }

    # Acoustic tracking directives

    behavior Estimation:TrackAcousticContact {
      run while (
        Universal:depth > Control:VerticalControl.surfaceThreshold
      )

      set contactLabelSetting = TransponderCode
      set numberOfSamplesSetting = NumberOfPings
      set updatePeriodSetting = TrackingUpdatePeriod
    }

    # Leave the dock

    behavior Dock:Undock {
      run in sequence

      set driftTimeout = DriftTimeout
    }
  }

  aggregate SurfaceDefault {
    run in sequence

    # This mission assumes open water so from here on it's the same old default that's always used

    behavior Guidance:GoToSurface {
      run in progression
    }

    aggregate CheckIn {
      run in sequence repeat=288

      readDatum id="Read_GPS" {
        timeout duration=P5M

        Universal:time_fix
      }

      readDatum id="Read_Iridium" {
        timeout duration=P2H {
          behavior Guidance:Execute {
            run in sequence

            set command = "Burn on"
          }

          syslog critical "Dropped weight due to communications timeout."
        }

        Universal:platform_communications
      }

      behavior Guidance:Wait {
        run in sequence

        set duration = 5 minute
      }

      assign in sequence ElapsedSinceDefaultStarted = elapsed ( Universal:mission_started )

      syslog important "Default mission has been running for " + ElapsedSinceDefaultStarted~minute
    }
  }

  syslog important "Restarting logs and Default mission."

  behavior Guidance:Execute {
    run in sequence

    set command = "restart logs"
  }
}