missionpassive_acoustic_monitoring{""" The mission will dive LRAUV to the start/center depth, then hold the vehicle at neutral buoyancy/trim with all actuators disengaged. The science payload will be powered. """arguments{MissionTimeout=180minute""" Maximum duration of mission """AcousticTrackingTimeout=240hour""" If the vehicle does not receive an acoustic signal for more than this length of time, it will surface for communications. Set longer than MissionTimeout to effectively disable. """SurfacingIntervalDuringListening=180minute""" When the listening depth bound is breached and the submergence time has surpassed SurfacingIntervalDuringListening, the vehicle will surface. """# debug# </Description><Units:minute/><Value>30</Value></DefineArg>NeedCommsMaxWait=180minute""" If the submergence time has surpassed NeedCommsMaxWait, the vehicle must surface, to caution against drifting too close to shore during submergence. Can set it to a huge number to effectively disable it. """NeedCommsTimeInTransit=60minute""" How often to surface for commumications during transit. """SkipStartComms=false""" Skip communications at start of mission. """# debug# </Description><True/></DefineArg>Depth=30meter""" Center depth of listening drift. """SettleTime=5minute""" Time to wait after reaching target depth. """DeepBound=32meter""" Deep depth bound of listening drift. Vehicle will return to center depth when depth bound is exceeded. """ShallowBound=28meter""" Shallow depth bound of listening drift. Vehicle will return to center depth when depth bound is exceeded. """FactorLooseningDepthBand=2count""" When the buoyancy adjustment delta drops to the minimum (meaning the vehicle is almost perfectly neutrally buoyant), loosen the depth envelope by this factor. """InitialYoyoToListeningLocation=false""" Initial yoyo transit to the listening location. """InitialLevelRunToListeningLocation=true""" Initial level run to the listening location. """YoyoBackToListeningLocation=false""" Yoyo back to the listening location. """# debug# </Description><True/></DefineArg>LevelRunBackToListeningLocation=true""" Level run back to the listening location. """# debug# </Description><False/></DefineArg>DepthLevelRunToListeningLocation=5meter""" Level run depth to the listening location. """# debug# </Description><Units:meter/><Value>30</Value></DefineArg>SpeedTransit=1meter_per_second""" Vehicle speed when transiting. """ApproachSpeedFirstTime=1meter_per_second""" Vehicle thruster speed used to reach center depth for the 1st time. """ApproachSpeedNotFirstTime=0meter_per_second""" Vehicle thruster speed used to reach center depth. Zero means thruster off. """# debug# </Description><Units:meter_per_second/><Value>1</Value></DefineArg>MinAltitude=5meterMaxDepth=50meterMinOffshore=2kilometerTransitYoYoMinDepth=2meter""" Minimum depth while performing the YoYo behavior. """TransitYoYoMaxDepth=30meter""" Maximum depth while performing the YoYo behavior. """YoYoMinAltitude=9meter""" Minimum altitude while performing the YoYo behavior (for bottom-terminated YoYos). """LatListening=NaNdegree""" Nominal latitude of acoustic monitoring. """# debug# </Description><Units:degree/><Value>36.815</Value></DefineArg># </Description><Units:degree/><Value>36.810</Value></DefineArg>LonListening=NaNdegree""" Nominal longitude of acoustic monitoring. """# debug# </Description><Units:degree/><Value>-121.835</Value></DefineArg># </Description><Units:degree/><Value>-121.825</Value></DefineArg>CheckDepths=1boolBuoyancyAdjustmentStep=16cubic_centimeter""" Initial value of buoyancy adjustment step size. Adjusted during mission. """# debug# </Description><Units:cubic_centimeter/><Value>64</Value></DefineArg>BuoyancyAdjustmentStepMin=2cubic_centimeter""" Minimum value of buoyancy adjustment step size. """# debug# </Description><Units:cubic_centimeter/><Value>32</Value></DefineArg>SinkingOrFloatingRateThreshold=0.002meter_per_second""" Threshold of depth rate of sinking or floating from the target depth to the depth bound being violated. When this threshold is breached, adjust the neutral buoyancy. """# You probably do not need to change these.YoYoUpPitch=20degree""" Vehicle up pitch while performing the YoYo behavior. """YoYoDownPitch=-20degree""" Vehicle down pitch while performing the YoYo behavior. """NeutralBuoyancy=Control:VerticalControl.buoyancyNeutral""" Neutral buoyancy value obtained from the preceding BallastAndTrim test. """MassDefault=Control:VerticalControl.massDefault""" Static setting for mass during the mission. """DepthDeadband=0.1meter""" How much vertical drift from the specified depth is allowed durnig the mission. """}output{# Internal variables that you do not need to changeSettleSpeed=1meter_per_secondSinkingOrFloatingRate=NaNmeter_per_second""" Depth rate of sinking or floating from the target depth to the depth bound being violated. """BuoyancyAdjustmentStepPrevious=NaNcubic_centimeter""" """NeutralBuoyancyPrevious=NaNcubic_centimeter""" """BuoyancyAdjustmentStepNew=NaNcubic_centimeter""" """DeepBoundMinusTargetDepth=NaNmeterDepthMinusTargetDepth=NaNmeterTargetDepthMinusShallowBound=NaNmeterTargetDepthMinusDepth=NaNmeterTimeTargetDepth=NaNsecondElapsedSinceSettledAtTargetDepth=NaNsecondElapsedSinceLastGPSfix=NaNsecondInitialTransitDone=trueBuoyancyAdjustmentDone=falseSettled=falseDeltaReduced=falseSinking=falseSurfacingStarted=falseApproachDepthPropOff=falseDepthBandLoosened=falseCnt=0count}# The timeouttimeoutduration=MissionTimeoutinsertInsert/Science.tlinsertInsert/NeedComms.tlid="NeedComms"assigninsequenceNeedComms:DiveInterval=NeedCommsMaxWaitassigninsequenceNeedComms:WaitForPitchUp=0minuteinsertInsert/StandardEnvelopes.tlassigninsequenceStandardEnvelopes:MinAltitude=MinAltitudeassigninsequenceStandardEnvelopes:MaxDepth=MaxDepthassigninsequenceStandardEnvelopes:MinOffshore=MinOffshoreinsertInsert/AbortDrift.tl{redefineArgAcousticTimeout=AcousticTrackingTimeout}aggregateCommsAndOptionallyTransitBackToListeningLocation{runwhen(called)aggregateCommsOnly{runinsequencebreakif((YoyoBackToListeningLocationorLevelRunBackToListeningLocation)and(LatListening>=0degreeor(LatListening<0degree)and(LonListening>=0degreeor(LonListening<0degree))))callid="SurfacingCommsOnly"refId="NeedComms"assigninsequenceSurfacingStarted=false}aggregateCommsAndYoYo{runinsequencebreakif(not(YoyoBackToListeningLocation)or(not(LatListening>=0degreeor(LatListening<0degree)and(LonListening>=0degreeor(LonListening<0degree)))))callid="YoyoStartComms"refId="NeedComms"syslogimportant"Yoyo back to listening location LatListening = "+LatListening~degree+", LonListening = "+LonListening~degree+"."assigninsequenceNeedComms:DiveInterval=NeedCommsTimeInTransitbehaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=SpeedTransit}behaviorGuidance:DepthEnvelope{runinparallelsetGuidance:DepthEnvelope.minDepth=TransitYoYoMinDepthsetGuidance:DepthEnvelope.maxDepth=TransitYoYoMaxDepthsetGuidance:DepthEnvelope.downPitch=YoYoDownPitchsetGuidance:DepthEnvelope.upPitch=YoYoUpPitch}behaviorGuidance:YoYo{runinparallelsetGuidance:YoYo.downPitch=YoYoDownPitchsetGuidance:YoYo.upPitch=YoYoUpPitch}behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=NeutralBuoyancy}behaviorGuidance:Waypoint{runinsequencesetGuidance:Waypoint.latitude=LatListeningsetGuidance:Waypoint.longitude=LonListening}assigninsequenceNeedComms:DiveInterval=NeedCommsMaxWaitassigninsequenceSurfacingStarted=false}aggregateCommsAndLevelRun{runinsequencebreakif(not(LevelRunBackToListeningLocation)or(not(LatListening>=0degreeor(LatListening<0degree)and(LonListening>=0degreeor(LonListening<0degree)))))callid="LevelRunStartComms"refId="NeedComms"syslogimportant"Level run back to listening location LatListening = "+LatListening~degree+", LonListening = "+LonListening~degree+"."assigninsequenceNeedComms:DiveInterval=NeedCommsTimeInTransitbehaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=SpeedTransit}behaviorGuidance:Mass{runinparallelsetGuidance:Mass.position=MassDefault}behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=NeutralBuoyancy}behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.depth=DepthLevelRunToListeningLocation}behaviorGuidance:Waypoint{runinsequencesetGuidance:Waypoint.latitude=LatListeningsetGuidance:Waypoint.longitude=LonListening}assigninsequenceNeedComms:DiveInterval=NeedCommsMaxWaitassigninsequenceSurfacingStarted=false}}syslogimportant"NeutralBuoyancy = "+NeutralBuoyancy~cubic_centimeter+"."syslogimportant"BuoyancyAdjustmentStep = "+BuoyancyAdjustmentStep~cubic_centimeter+"."syslogimportant"Initial shallow bound = "+ShallowBound~meter+"."syslogimportant"Initial deep bound = "+DeepBound~meter+"."assigninsequenceTargetDepthMinusShallowBound=Depth-ShallowBoundsyslogimportant"TargetDepthMinusShallowBound = "+TargetDepthMinusShallowBound~meter+"."assigninsequenceDeepBoundMinusTargetDepth=DeepBound-Depthsyslogimportant"DeepBoundMinusTargetDepth = "+DeepBoundMinusTargetDepth~meter+"."aggregateCheckTargetDepths{runinsequencebreakif(not(CheckDepths))aggregateCheckDepth{runinsequencebreakif(not(Depth>DeepBoundor(Depth<ShallowBound)))syslogimportant"Aborting mission. Target depth is deeper than DeepBound or shallower than ShallowBound."behaviorGuidance:Execute{runinsequencesetGuidance:Execute.command="stop"}}assigninsequenceCheckDepths=0bool}aggregateStartingMission{runinsequencebreakif(SkipStartComms)# DO NOT REMOVE the syslog entry below. The MissionManager seems to ignore the value of SkipComms, does not evaluate the Break statement properly, and always calls NeedComms. Adding the syslog call somehow fixes it.sysloginfo"Checking for additional instructions before submerging."callid="StartingMission"refId="NeedComms"}aggregateInitialTransitToListeningLocation{runinsequenceaggregateInitialYoYo{runinsequencebreakif(not(InitialYoyoToListeningLocation)or(not(LatListening>=0degreeor(LatListening<0degree)and(LonListening>=0degreeor(LonListening<0degree)))))assigninsequenceInitialTransitDone=falsesyslogimportant"Initial yoyo transit to listening location LatListening = "+LatListening~degree+", LonListening = "+LonListening~degree+"."assigninsequenceNeedComms:DiveInterval=NeedCommsTimeInTransitbehaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=SpeedTransit}behaviorGuidance:DepthEnvelope{runinparallelsetGuidance:DepthEnvelope.minDepth=TransitYoYoMinDepthsetGuidance:DepthEnvelope.maxDepth=TransitYoYoMaxDepthsetGuidance:DepthEnvelope.downPitch=YoYoDownPitchsetGuidance:DepthEnvelope.upPitch=YoYoUpPitch}behaviorGuidance:YoYo{runinparallelsetGuidance:YoYo.downPitch=YoYoDownPitchsetGuidance:YoYo.upPitch=YoYoUpPitch}behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=NeutralBuoyancy}behaviorGuidance:Waypoint{runinsequencesetGuidance:Waypoint.latitude=LatListeningsetGuidance:Waypoint.longitude=LonListening}callid="InitialYoYoReachedWaypoint"refId="NeedComms"assigninsequenceNeedComms:DiveInterval=NeedCommsMaxWaitassigninsequenceInitialTransitDone=true}aggregateInitialLevelRun{runinsequencebreakif(not(InitialLevelRunToListeningLocation)or(not(LatListening>=0degreeor(LatListening<0degree)and(LonListening>=0degreeor(LonListening<0degree)))))assigninsequenceInitialTransitDone=falsesyslogimportant"Initial level run transit to listening location LatListening = "+LatListening~degree+", LonListening = "+LonListening~degree+"."assigninsequenceNeedComms:DiveInterval=NeedCommsTimeInTransitbehaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=SpeedTransit}behaviorGuidance:Mass{runinparallelsetGuidance:Mass.position=MassDefault}behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=NeutralBuoyancy}behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.depth=DepthLevelRunToListeningLocation}behaviorGuidance:Waypoint{runinsequencesetGuidance:Waypoint.latitude=LatListeningsetGuidance:Waypoint.longitude=LonListening}callid="InitialLevelRunReachedWaypoint"refId="NeedComms"assigninsequenceNeedComms:DiveInterval=NeedCommsMaxWaitassigninsequenceInitialTransitDone=true}}aggregatePAM{runinsequencerepeat=999behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.massPosition=Control:VerticalControl.massDefault}aggregateSetToNeutralBuoyancy{runwhile(not(ApproachDepthPropOff))behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=NeutralBuoyancy}}assigninsequenceCnt=Cnt+1countsyslogimportant"Cnt = "+Cnt~countsyslogimportant"NeutralBuoyancy = "+NeutralBuoyancy~cubic_centimeter+", BuoyancyAdjustmentStep = "+BuoyancyAdjustmentStep~cubic_centimeterassigninsequenceSettled=falseassigninsequenceDeltaReduced=falseaggregateApproachDepthSettleAtDepth{runinsequenceaggregateLoosenDepthBandIfBuoyancyDeltaDropsToMinimum{runinsequencebreakif(BuoyancyAdjustmentStep>=(BuoyancyAdjustmentStepMin*2count)orDepthBandLoosened)assigninsequenceDeepBoundMinusTargetDepth=DeepBoundMinusTargetDepth*FactorLooseningDepthBandassigninsequenceTargetDepthMinusShallowBound=TargetDepthMinusShallowBound*FactorLooseningDepthBandassigninsequenceDeepBound=Depth+DeepBoundMinusTargetDepthassigninsequenceShallowBound=Depth-TargetDepthMinusShallowBoundsyslogimportant"Loosened shallow bound = "+ShallowBound~meter+"."syslogimportant"Loosened deep bound = "+DeepBound~meter+"."assigninsequenceDepthBandLoosened=true}aggregateApproachDepth{runinsequenceaggregateApproachDepthPropellerOn{breakif(not(ApproachSpeedNotFirstTime>0meter_per_secondor(Cnt==1count)))behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=NeutralBuoyancy}syslogimportant"Moving to "+Depth~meterassigninsequenceBuoyancyAdjustmentDone=falsebehaviorGuidance:Point{runinparallelsetGuidance:Point.rudderAngle=13degree}behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=ApproachSpeedFirstTime}behaviorGuidance:Pitch{runinsequencesetGuidance:Pitch.depth=Depth}}aggregateApproachDepthPropellerOff{breakif(ApproachSpeedNotFirstTime>0meter_per_secondor(Cnt==1count))assigninsequenceApproachDepthPropOff=trueassigninsequenceBuoyancyAdjustmentDone=falsesyslogimportant"Moving to "+Depth~meterbehaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=ApproachSpeedNotFirstTime}behaviorGuidance:Pitch{runinsequencesetGuidance:Pitch.depth=Depth}assigninsequenceApproachDepthPropOff=false}}aggregateSettle{runinsequencebehaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=NeutralBuoyancy}aggregateVBSDepthLimit{""" Check if the vehicle can settle using the VBS. """runinsequenceaggregateShallowerThanVBSDepthLimit{runinsequencebreakif(Universal:depth>Control:VerticalControl.buoyancyPumpDepth)assigninsequenceSettleSpeed=0meter_per_second}aggregateDeeperThanVBSDepthLimit{runinsequencebreakif(Universal:depth<=Control:VerticalControl.buoyancyPumpDepth)assigninsequenceSettleSpeed=1meter_per_second}}aggregatesettle_at_depth{runinsequencesyslogimportant"Reached "+Universal:depth~meter+", settling for "+SettleTime~minute+"at"+SettleSpeed~meter_per_secondaggregateSettleAtDepthPropellerOn{breakif(not(SettleSpeed>0meter_per_second))behaviorGuidance:Point{runinparallelsetGuidance:Point.rudderAngle=13degree}behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=SettleSpeed}behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.depth=Depth}assigninsequenceTimeTargetDepth=0secondbehaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=SettleTime}assigninsequenceSettled=true}aggregateSettleAtDepthPropellerOff{breakif(SettleSpeed>0meter_per_second)behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=SettleSpeed}behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.depth=Depth}assigninsequenceTimeTargetDepth=0secondbehaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=SettleTime}assigninsequenceSettled=true}}}aggregateHover{""" Hover neutral within depth bound. """runinsequencebreakif(Universal:depth>DeepBoundor(Universal:depth<ShallowBound))behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=NeutralBuoyancy}behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.elevatorAngle=0degree}behaviorGuidance:Point{runinparallelsetGuidance:Point.rudderAngle=0degree}behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=0meter_per_second}behaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=MissionTimeout}}aggregateDeeperThanDeepBound{runinsequencerunwhile(Universal:depth>DeepBoundandSettled)breakif(Universal:depth<=(DeepBound-DepthDeadband))assigninsequenceDepthMinusTargetDepth=Universal:depth-DepthassigninsequenceElapsedSinceSettledAtTargetDepth=elapsed(TimeTargetDepth)assigninsequenceSinkingOrFloatingRate=DepthMinusTargetDepth/ElapsedSinceSettledAtTargetDepthsyslogimportant"Now depth "+Universal:depth~meter+" is deeper than DeepBound "+DeepBound~meter+". SinkingOrFloatingRate = DepthMinusTargetDepth "+DepthMinusTargetDepth~meter+" divided by "+ElapsedSinceSettledAtTargetDepth~second+" = "+SinkingOrFloatingRate~meter_per_secondaggregateSurfacingDeeperThanDeepBound{runinsequencerunwhen(elapsed(Universal:time_fix)>SurfacingIntervalDuringListening)assigninsequenceElapsedSinceLastGPSfix=elapsed(Universal:time_fix)syslogimportant"Elapsed time since the last GPS fix "+ElapsedSinceLastGPSfix~minute+" is longer than SurfacingIntervalDuringListening "+SurfacingIntervalDuringListening~minute+". Surface and optionally transit back to listening location."assigninsequenceCnt=0countassigninsequenceSurfacingStarted=truecallid="CommsAndOptionalTransitBack"refId="CommsAndOptionallyTransitBackToListeningLocation"}aggregateDoNotIncreaseNeutralBuoyancy{runinsequencebreakif(SinkingOrFloatingRate>=SinkingOrFloatingRateThresholdorBuoyancyAdjustmentDoneand(not(SurfacingStarted)))syslogimportant"But SinkingOrFloatingRate = "+SinkingOrFloatingRate~meter_per_second+" is less than SinkingOrFloatingRateThreshold "+SinkingOrFloatingRateThreshold~meter_per_second+", or the vehicle is surfacing. Do not increase neutral buoyancy. Just go back to the target depth."assigninsequenceSinking=trueassigninsequenceBuoyancyAdjustmentDone=true}aggregateIncreaseNeutralBuoyancy{runinsequencebreakif(SinkingOrFloatingRate<SinkingOrFloatingRateThresholdorSurfacingStarted)aggregateIncreaseNeutralBuoyancyDecreaseDelta{runinsequencebreakif(Cnt==1countorSinkingor(BuoyancyAdjustmentStep<(BuoyancyAdjustmentStepMin*2count))orBuoyancyAdjustmentDone)assigninsequenceDeltaReduced=trueassigninsequenceBuoyancyAdjustmentStepPrevious=BuoyancyAdjustmentStepassigninsequenceNeutralBuoyancyPrevious=NeutralBuoyancyassigninsequenceBuoyancyAdjustmentStepNew=BuoyancyAdjustmentStep/2countassigninsequenceNeutralBuoyancy=NeutralBuoyancy+BuoyancyAdjustmentStepNewsyslogimportant"SinkingOrFloatingRate = "+SinkingOrFloatingRate~meter_per_second+" is greater than SinkingOrFloatingRateThreshold "+SinkingOrFloatingRateThreshold~meter_per_second+". Floating previously but sinking now. Decrease BuoyancyAdjustmentStep from "+BuoyancyAdjustmentStepPrevious~cubic_centimeter+" to "+BuoyancyAdjustmentStepNew~cubic_centimeter+". Increase neutral buoyancy: "+NeutralBuoyancyPrevious~cubic_centimeter+" + "+BuoyancyAdjustmentStepNew~cubic_centimeter+" = "+NeutralBuoyancy~cubic_centimeter+". Then go back to the target depth."assigninsequenceBuoyancyAdjustmentStep=BuoyancyAdjustmentStepNewassigninsequenceSinking=trueassigninsequenceBuoyancyAdjustmentDone=true}aggregateIncreaseNeutralBuoyancyDoNotChangeDelta{runinsequencebreakif(not(Sinking)and(BuoyancyAdjustmentStep>=(BuoyancyAdjustmentStepMin*2count))and(Cnt>=2count)orBuoyancyAdjustmentDoneorDeltaReduced)assigninsequenceNeutralBuoyancyPrevious=NeutralBuoyancyassigninsequenceNeutralBuoyancy=NeutralBuoyancy+BuoyancyAdjustmentStepsyslogimportant"SinkingOrFloatingRate = "+SinkingOrFloatingRate~meter_per_second+" is greater than SinkingOrFloatingRateThreshold "+SinkingOrFloatingRateThreshold~meter_per_second+". Vehicle is a little too heavy. Increase neutral buoyancy: "+NeutralBuoyancyPrevious~cubic_centimeter+" + "+BuoyancyAdjustmentStep~cubic_centimeter+" = "+NeutralBuoyancy~cubic_centimeter+". Then go back to the target depth."assigninsequenceSinking=trueassigninsequenceBuoyancyAdjustmentDone=true}}}aggregateShallowerThanShallowBound{runinsequencerunwhile(Universal:depth<ShallowBoundandSettled)breakif(Universal:depth>=(ShallowBound+DepthDeadband)or(elapsed(Universal:time_fix)>NeedCommsMaxWait)orSurfacingStarted)assigninsequenceTargetDepthMinusDepth=Depth-Universal:depthassigninsequenceElapsedSinceSettledAtTargetDepth=elapsed(TimeTargetDepth)assigninsequenceSinkingOrFloatingRate=TargetDepthMinusDepth/ElapsedSinceSettledAtTargetDepthsyslogimportant"Now depth "+Universal:depth~meter+" is shallower than ShallowBound "+ShallowBound~meter+". SinkingOrFloatingRate = TargetDepthMinusDepth "+TargetDepthMinusDepth~meter+" divided by "+ElapsedSinceSettledAtTargetDepth~second+" = "+SinkingOrFloatingRate~meter_per_second+"."aggregateSurfacingShallowerThanShallowBound{runinsequencerunwhen(elapsed(Universal:time_fix)>SurfacingIntervalDuringListening)assigninsequenceElapsedSinceLastGPSfix=elapsed(Universal:time_fix)syslogimportant"Elapsed time since the last GPS fix "+ElapsedSinceLastGPSfix~minute+" is longer than SurfacingIntervalDuringListening "+SurfacingIntervalDuringListening~minute+". Surface and optionally transit back to listening location."assigninsequenceCnt=0countassigninsequenceSurfacingStarted=truecallid="CommsAndOptionalTransitBack"refId="CommsAndOptionallyTransitBackToListeningLocation"}aggregateDoNotDecreaseNeutralBuoyancy{runinsequencebreakif(SinkingOrFloatingRate>=SinkingOrFloatingRateThresholdorBuoyancyAdjustmentDone)syslogimportant"But SinkingOrFloatingRate = "+SinkingOrFloatingRate~meter_per_second+" is less than SinkingOrFloatingRateThreshold "+SinkingOrFloatingRateThreshold~meter_per_second+", or the vehicle is surfacing. Do not decrease neutral buoyancy. Just go back to the target depth."assigninsequenceSinking=falseassigninsequenceBuoyancyAdjustmentDone=true}aggregateDecreaseNeutralBuoyancy{runinsequencebreakif(SinkingOrFloatingRate<SinkingOrFloatingRateThreshold)aggregateDecreaseNeutralBuoyancyDecreaseDelta{runinsequencebreakif(Cnt==1countor(not(Sinking))or(BuoyancyAdjustmentStep<(BuoyancyAdjustmentStepMin*2count))orBuoyancyAdjustmentDone)assigninsequenceDeltaReduced=trueassigninsequenceBuoyancyAdjustmentStepPrevious=BuoyancyAdjustmentStepassigninsequenceNeutralBuoyancyPrevious=NeutralBuoyancyassigninsequenceBuoyancyAdjustmentStepNew=BuoyancyAdjustmentStep/2countassigninsequenceNeutralBuoyancy=NeutralBuoyancy-BuoyancyAdjustmentStepNewsyslogimportant"SinkingOrFloatingRate = "+SinkingOrFloatingRate~meter_per_second+" is greater than SinkingOrFloatingRateThreshold "+SinkingOrFloatingRateThreshold~meter_per_second+". Sinking previously but floating now. Decrease BuoyancyAdjustmentStep from "+BuoyancyAdjustmentStepPrevious~cubic_centimeter+" to "+BuoyancyAdjustmentStepNew~cubic_centimeter+". Decrease neutral buoyancy: "+NeutralBuoyancyPrevious~cubic_centimeter+" - "+BuoyancyAdjustmentStepNew~cubic_centimeter+" = "+NeutralBuoyancy~cubic_centimeter+". Then go back to the target depth."assigninsequenceBuoyancyAdjustmentStep=BuoyancyAdjustmentStepNewassigninsequenceSinking=falseassigninsequenceBuoyancyAdjustmentDone=true}aggregateDecreaseNeutralBuoyancyDoNotChangeDelta{runinsequencebreakif(Sinkingand(BuoyancyAdjustmentStep>=(BuoyancyAdjustmentStepMin*2count))and(Cnt>=2count)orBuoyancyAdjustmentDoneorDeltaReduced)assigninsequenceNeutralBuoyancyPrevious=NeutralBuoyancyassigninsequenceNeutralBuoyancy=NeutralBuoyancy-BuoyancyAdjustmentStepsyslogimportant"SinkingOrFloatingRate = "+SinkingOrFloatingRate~meter_per_second+" is greater than SinkingOrFloatingRateThreshold "+SinkingOrFloatingRateThreshold~meter_per_second+". Vehicle is a little too light. Decrease neutral buoyancy: "+NeutralBuoyancyPrevious~cubic_centimeter+" - "+BuoyancyAdjustmentStep~cubic_centimeter+" = "+NeutralBuoyancy~cubic_centimeter+". Then go back to the target depth."assigninsequenceSinking=falseassigninsequenceBuoyancyAdjustmentDone=true}}}}}callid="EndingMission"refId="NeedComms"}
<?xml version="1.0" encoding="UTF-8"?><Missionxmlns="Tethys"xmlns:Units="Tethys/Units"xmlns:Control="Tethys/Control"xmlns:Guidance="Tethys/Guidance"xmlns:Universal="Tethys/Universal"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="Tethys http://okeanids.mbari.org/tethys/Xml/Tethys.xsd Tethys/Units http://okeanids.mbari.org/tethys/Xml/Units.xsd Tethys/Control http://okeanids.mbari.org/tethys/Xml/Control.xsd Tethys/Guidance http://okeanids.mbari.org/tethys/Xml/Guidance.xsd Tethys/Universal http://okeanids.mbari.org/tethys/Xml/Universal.xsd"Id="passive_acoustic_monitoring"><Description>
The mission will dive LRAUV to the start/center depth, then hold the
vehicle at neutral buoyancy/trim with all actuators disengaged. The
science payload will be powered.
</Description><DefineArgName="MissionTimeout"><Description>
Maximum duration of mission
</Description><Units:minute/><Value>180</Value></DefineArg><DefineArgName="AcousticTrackingTimeout"><Description>
If the vehicle does not receive an acoustic signal for more than this
length of time, it will surface for communications. Set longer than
MissionTimeout to effectively disable.
</Description><Units:hour/><Value>240</Value></DefineArg><DefineArgName="SurfacingIntervalDuringListening"><Description>
When the listening depth bound is breached and the submergence time has
surpassed SurfacingIntervalDuringListening, the vehicle will surface.
<!--debug </Description><Units:minute/><Value>30</Value></DefineArg>--></Description><Units:minute/><Value>180</Value></DefineArg><DefineArgName="NeedCommsMaxWait"><Description>
If the submergence time has surpassed NeedCommsMaxWait, the vehicle must
surface, to caution against drifting too close to shore during
submergence. Can set it to a huge number to effectively disable it.
</Description><Units:minute/><Value>180</Value></DefineArg><DefineArgName="NeedCommsTimeInTransit"><Description>
How often to surface for commumications during transit.
</Description><Units:minute/><Value>60</Value></DefineArg><DefineArgName="SkipStartComms"><Description>
Skip communications at start of mission.
</Description><False/></DefineArg><!--debug </Description><True/></DefineArg>--><DefineArgName="Depth"><Description>
Center depth of listening drift.
</Description><Units:meter/><Value>30</Value></DefineArg><DefineArgName="SettleTime"><Description>
Time to wait after reaching target depth.
</Description><Units:minute/><Value>5</Value></DefineArg><DefineArgName="DeepBound"><Description>
Deep depth bound of listening drift. Vehicle will return to center depth
when depth bound is exceeded.
</Description><Units:meter/><Value>32</Value></DefineArg><DefineArgName="ShallowBound"><Description>
Shallow depth bound of listening drift. Vehicle will return to center
depth when depth bound is exceeded.
</Description><Units:meter/><Value>28</Value></DefineArg><DefineArgName="FactorLooseningDepthBand"><Description>
When the buoyancy adjustment delta drops to the minimum (meaning the
vehicle is almost perfectly neutrally buoyant), loosen the depth
envelope by this factor.
</Description><Units:count/><Value>2</Value></DefineArg><DefineArgName="InitialYoyoToListeningLocation"><Description>
Initial yoyo transit to the listening location.
</Description><False/></DefineArg><DefineArgName="InitialLevelRunToListeningLocation"><Description>
Initial level run to the listening location.
</Description><True/></DefineArg><DefineArgName="YoyoBackToListeningLocation"><Description>
Yoyo back to the listening location.
</Description><False/></DefineArg><!--debug </Description><True/></DefineArg>--><DefineArgName="LevelRunBackToListeningLocation"><Description>
Level run back to the listening location.
</Description><True/></DefineArg><!--debug </Description><False/></DefineArg>--><DefineArgName="DepthLevelRunToListeningLocation"><Description>
Level run depth to the listening location.
<!--debug </Description><Units:meter/><Value>30</Value></DefineArg>--></Description><Units:meter/><Value>5</Value></DefineArg><DefineArgName="SpeedTransit"><Description>
Vehicle speed when transiting.
</Description><Units:meter_per_second/><Value>1</Value></DefineArg><DefineArgName="ApproachSpeedFirstTime"><Description>
Vehicle thruster speed used to reach center depth for the 1st time.
</Description><Units:meter_per_second/><Value>1</Value></DefineArg><DefineArgName="ApproachSpeedNotFirstTime"><Description>
Vehicle thruster speed used to reach center depth. Zero means thruster
off.
<!--debug </Description><Units:meter_per_second/><Value>1</Value></DefineArg>--></Description><Units:meter_per_second/><Value>0</Value></DefineArg><DefineArgName="MinAltitude"><Units:meter/><Value>5</Value></DefineArg><DefineArgName="MaxDepth"><Units:meter/><Value>50</Value></DefineArg><DefineArgName="MinOffshore"><Units:kilometer/><Value>2</Value></DefineArg><DefineArgName="TransitYoYoMinDepth"><Description>
Minimum depth while performing the YoYo behavior.
</Description><Units:meter/><Value>2</Value></DefineArg><DefineArgName="TransitYoYoMaxDepth"><Description>
Maximum depth while performing the YoYo behavior.
</Description><Units:meter/><Value>30</Value></DefineArg><DefineArgName="YoYoMinAltitude"><Description>
Minimum altitude while performing the YoYo behavior (for
bottom-terminated YoYos).
</Description><Units:meter/><Value>9</Value></DefineArg><DefineArgName="LatListening"><Description>
Nominal latitude of acoustic monitoring.
</Description><Units:degree/><Value>NaN</Value></DefineArg><!--debug </Description><Units:degree/><Value>36.815</Value></DefineArg> </Description><Units:degree/><Value>36.810</Value></DefineArg>--><DefineArgName="LonListening"><Description>
Nominal longitude of acoustic monitoring.
</Description><Units:degree/><Value>NaN</Value></DefineArg><!--debug </Description><Units:degree/><Value>-121.835</Value></DefineArg> </Description><Units:degree/><Value>-121.825</Value></DefineArg>--><DefineArgName="CheckDepths"><Units:bool/><Value>1</Value></DefineArg><DefineArgName="BuoyancyAdjustmentStep"><Description>
Initial value of buoyancy adjustment step size. Adjusted during mission.
<!--debug </Description><Units:cubic_centimeter/><Value>64</Value></DefineArg>--></Description><Units:cubic_centimeter/><Value>16</Value></DefineArg><DefineArgName="BuoyancyAdjustmentStepMin"><Description>
Minimum value of buoyancy adjustment step size.
<!--debug </Description><Units:cubic_centimeter/><Value>32</Value></DefineArg>--></Description><Units:cubic_centimeter/><Value>2</Value></DefineArg><DefineArgName="SinkingOrFloatingRateThreshold"><Description>
Threshold of depth rate of sinking or floating from the target depth to
the depth bound being violated. When this threshold is breached, adjust
the neutral buoyancy.
</Description><Units:meter_per_second/><Value>0.002</Value></DefineArg><!-- You probably do not need to change these. --><DefineArgName="YoYoUpPitch"><Description>
Vehicle up pitch while performing the YoYo behavior.
</Description><Units:degree/><Value>20</Value></DefineArg><DefineArgName="YoYoDownPitch"><Description>
Vehicle down pitch while performing the YoYo behavior.
</Description><Units:degree/><Value>-20</Value></DefineArg><DefineArgName="NeutralBuoyancy"><Description>
Neutral buoyancy value obtained from the preceding BallastAndTrim test.
</Description><Control:VerticalControl.buoyancyNeutral/></DefineArg><DefineArgName="MassDefault"><Description>
Static setting for mass during the mission.
</Description><Control:VerticalControl.massDefault/></DefineArg><DefineArgName="DepthDeadband"><Description>
How much vertical drift from the specified depth is allowed durnig the
mission.
</Description><Units:meter/><Value>0.1</Value></DefineArg><!-- Internal variables that you do not need to change --><DefineOutputName="SettleSpeed"><Units:meter_per_second/><Value>1</Value></DefineOutput><DefineOutputName="SinkingOrFloatingRate"><Description>
Depth rate of sinking or floating from the target depth to the depth
bound being violated.
</Description><Units:meter_per_second/><Value>NaN</Value></DefineOutput><DefineOutputName="BuoyancyAdjustmentStepPrevious"><Description></Description><Units:cubic_centimeter/><Value>NaN</Value></DefineOutput><DefineOutputName="NeutralBuoyancyPrevious"><Description></Description><Units:cubic_centimeter/><Value>NaN</Value></DefineOutput><DefineOutputName="BuoyancyAdjustmentStepNew"><Description></Description><Units:cubic_centimeter/><Value>NaN</Value></DefineOutput><DefineOutputName="DeepBoundMinusTargetDepth"><Units:meter/><Value>NaN</Value></DefineOutput><DefineOutputName="DepthMinusTargetDepth"><Units:meter/><Value>NaN</Value></DefineOutput><DefineOutputName="TargetDepthMinusShallowBound"><Units:meter/><Value>NaN</Value></DefineOutput><DefineOutputName="TargetDepthMinusDepth"><Units:meter/><Value>NaN</Value></DefineOutput><DefineOutputName="TimeTargetDepth"><Units:second/><Value>NaN</Value></DefineOutput><DefineOutputName="ElapsedSinceSettledAtTargetDepth"><Units:second/><Value>NaN</Value></DefineOutput><DefineOutputName="ElapsedSinceLastGPSfix"><Units:second/><Value>NaN</Value></DefineOutput><DefineOutputName="InitialTransitDone"><True/></DefineOutput><DefineOutputName="BuoyancyAdjustmentDone"><False/></DefineOutput><DefineOutputName="Settled"><False/></DefineOutput><DefineOutputName="DeltaReduced"><False/></DefineOutput><DefineOutputName="Sinking"><False/></DefineOutput><DefineOutputName="SurfacingStarted"><False/></DefineOutput><DefineOutputName="ApproachDepthPropOff"><False/></DefineOutput><DefineOutputName="DepthBandLoosened"><False/></DefineOutput><DefineOutputName="Cnt"><Units:count/><Value>0</Value></DefineOutput><!-- The timeout --><TimeoutDuration="MissionTimeout"/><InsertFilename="Insert/Science.tl"/><InsertFilename="Insert/NeedComms.tl"Id="NeedComms"/><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsMaxWait"/></Assign><Assign><Sequence/><ArgName="NeedComms:WaitForPitchUp"/><Units:minute/><Value>0</Value></Assign><InsertFilename="Insert/StandardEnvelopes.tl"/><Assign><Sequence/><ArgName="StandardEnvelopes:MinAltitude"/><ArgName="MinAltitude"/></Assign><Assign><Sequence/><ArgName="StandardEnvelopes:MaxDepth"/><ArgName="MaxDepth"/></Assign><Assign><Sequence/><ArgName="StandardEnvelopes:MinOffshore"/><ArgName="MinOffshore"/></Assign><InsertFilename="Insert/AbortDrift.tl"><RedefineArgName="AcousticTimeout"><ArgName="AcousticTrackingTimeout"/></RedefineArg></Insert><AggregateId="CommsAndOptionallyTransitBackToListeningLocation"><When><Called/></When><AggregateId="CommsOnly"><Sequence/><Break><ArgName="YoyoBackToListeningLocation"/><Or><ArgName="LevelRunBackToListeningLocation"/></Or><And><ArgName="LatListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LatListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or><And><ArgName="LonListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LonListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or></And></And></Break><CallId="SurfacingCommsOnly"RefId="NeedComms"/><Assign><Sequence/><ArgName="SurfacingStarted"/><False/></Assign></Aggregate><AggregateId="CommsAndYoYo"><Sequence/><Break><Not><ArgName="YoyoBackToListeningLocation"/></Not><Or><Not><ArgName="LatListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LatListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or><And><ArgName="LonListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LonListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or></And></Not></Or></Break><CallId="YoyoStartComms"RefId="NeedComms"/><SyslogSeverity="Important">Yoyo back to listening location LatListening = <ArgName="LatListening"/><Units:degree/>, LonListening = <ArgName="LonListening"/><Units:degree/>.</Syslog><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsTimeInTransit"/></Assign><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="SpeedTransit"/></Setting></Guidance:SetSpeed><Guidance:DepthEnvelope><Parallel/><Setting><Guidance:DepthEnvelope.minDepth/><ArgName="TransitYoYoMinDepth"/></Setting><Setting><Guidance:DepthEnvelope.maxDepth/><ArgName="TransitYoYoMaxDepth"/></Setting><Setting><Guidance:DepthEnvelope.downPitch/><ArgName="YoYoDownPitch"/></Setting><Setting><Guidance:DepthEnvelope.upPitch/><ArgName="YoYoUpPitch"/></Setting></Guidance:DepthEnvelope><Guidance:YoYo><Parallel/><Setting><Guidance:YoYo.downPitch/><ArgName="YoYoDownPitch"/></Setting><Setting><Guidance:YoYo.upPitch/><ArgName="YoYoUpPitch"/></Setting></Guidance:YoYo><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="NeutralBuoyancy"/></Setting></Guidance:Buoyancy><Guidance:Waypoint><Sequence/><Setting><Guidance:Waypoint.latitude/><ArgName="LatListening"/></Setting><Setting><Guidance:Waypoint.longitude/><ArgName="LonListening"/></Setting></Guidance:Waypoint><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsMaxWait"/></Assign><Assign><Sequence/><ArgName="SurfacingStarted"/><False/></Assign></Aggregate><AggregateId="CommsAndLevelRun"><Sequence/><Break><Not><ArgName="LevelRunBackToListeningLocation"/></Not><Or><Not><ArgName="LatListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LatListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or><And><ArgName="LonListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LonListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or></And></Not></Or></Break><CallId="LevelRunStartComms"RefId="NeedComms"/><SyslogSeverity="Important">Level run back to listening location LatListening = <ArgName="LatListening"/><Units:degree/>, LonListening = <ArgName="LonListening"/><Units:degree/>.</Syslog><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsTimeInTransit"/></Assign><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="SpeedTransit"/></Setting></Guidance:SetSpeed><Guidance:Mass><Parallel/><Setting><Guidance:Mass.position/><ArgName="MassDefault"/></Setting></Guidance:Mass><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="NeutralBuoyancy"/></Setting></Guidance:Buoyancy><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.depth/><ArgName="DepthLevelRunToListeningLocation"/></Setting></Guidance:Pitch><Guidance:Waypoint><Sequence/><Setting><Guidance:Waypoint.latitude/><ArgName="LatListening"/></Setting><Setting><Guidance:Waypoint.longitude/><ArgName="LonListening"/></Setting></Guidance:Waypoint><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsMaxWait"/></Assign><Assign><Sequence/><ArgName="SurfacingStarted"/><False/></Assign></Aggregate></Aggregate><SyslogSeverity="Important">NeutralBuoyancy = <ArgName="NeutralBuoyancy"/><Units:cubic_centimeter/>.</Syslog><SyslogSeverity="Important">BuoyancyAdjustmentStep = <ArgName="BuoyancyAdjustmentStep"/><Units:cubic_centimeter/>.</Syslog><SyslogSeverity="Important">Initial shallow bound = <ArgName="ShallowBound"/><Units:meter/>.</Syslog><SyslogSeverity="Important">Initial deep bound = <ArgName="DeepBound"/><Units:meter/>.</Syslog><Assign><Sequence/><ArgName="TargetDepthMinusShallowBound"/><ArgName="Depth"/><Sub><ArgName="ShallowBound"/></Sub></Assign><SyslogSeverity="Important">TargetDepthMinusShallowBound = <ArgName="TargetDepthMinusShallowBound"/><Units:meter/>.</Syslog><Assign><Sequence/><ArgName="DeepBoundMinusTargetDepth"/><ArgName="DeepBound"/><Sub><ArgName="Depth"/></Sub></Assign><SyslogSeverity="Important">DeepBoundMinusTargetDepth = <ArgName="DeepBoundMinusTargetDepth"/><Units:meter/>.</Syslog><AggregateId="CheckTargetDepths"><Sequence/><Break><Not><ArgName="CheckDepths"/></Not></Break><AggregateId="CheckDepth"><Sequence/><Break><Not><ArgName="Depth"/><Gt><ArgName="DeepBound"/></Gt><Or><ArgName="Depth"/><Lt><ArgName="ShallowBound"/></Lt></Or></Not></Break><SyslogSeverity="Important">Aborting mission. Target depth is deeper than DeepBound or shallower than ShallowBound.</Syslog><Guidance:Execute><Sequence/><Setting><Guidance:Execute.command/><String>stop</String></Setting></Guidance:Execute></Aggregate><Assign><Sequence/><ArgName="CheckDepths"/><Units:bool/><Value>0</Value></Assign></Aggregate><AggregateId="StartingMission"><Sequence/><Break><ArgName="SkipStartComms"/></Break><!-- DO NOT REMOVE the syslog entry below. The MissionManager seems to ignore the value of SkipComms, does not evaluate the Break statement properly, and always calls NeedComms. Adding the syslog call somehow fixes it. --><SyslogSeverity="Info">Checking for additional instructions before submerging.</Syslog><CallId="StartingMission"RefId="NeedComms"/></Aggregate><AggregateId="InitialTransitToListeningLocation"><Sequence/><AggregateId="InitialYoYo"><Sequence/><Break><Not><ArgName="InitialYoyoToListeningLocation"/></Not><Or><Not><ArgName="LatListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LatListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or><And><ArgName="LonListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LonListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or></And></Not></Or></Break><Assign><Sequence/><ArgName="InitialTransitDone"/><False/></Assign><SyslogSeverity="Important">Initial yoyo transit to listening location LatListening = <ArgName="LatListening"/><Units:degree/>, LonListening = <ArgName="LonListening"/><Units:degree/>.</Syslog><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsTimeInTransit"/></Assign><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="SpeedTransit"/></Setting></Guidance:SetSpeed><Guidance:DepthEnvelope><Parallel/><Setting><Guidance:DepthEnvelope.minDepth/><ArgName="TransitYoYoMinDepth"/></Setting><Setting><Guidance:DepthEnvelope.maxDepth/><ArgName="TransitYoYoMaxDepth"/></Setting><Setting><Guidance:DepthEnvelope.downPitch/><ArgName="YoYoDownPitch"/></Setting><Setting><Guidance:DepthEnvelope.upPitch/><ArgName="YoYoUpPitch"/></Setting></Guidance:DepthEnvelope><Guidance:YoYo><Parallel/><Setting><Guidance:YoYo.downPitch/><ArgName="YoYoDownPitch"/></Setting><Setting><Guidance:YoYo.upPitch/><ArgName="YoYoUpPitch"/></Setting></Guidance:YoYo><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="NeutralBuoyancy"/></Setting></Guidance:Buoyancy><Guidance:Waypoint><Sequence/><Setting><Guidance:Waypoint.latitude/><ArgName="LatListening"/></Setting><Setting><Guidance:Waypoint.longitude/><ArgName="LonListening"/></Setting></Guidance:Waypoint><CallId="InitialYoYoReachedWaypoint"RefId="NeedComms"/><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsMaxWait"/></Assign><Assign><Sequence/><ArgName="InitialTransitDone"/><True/></Assign></Aggregate><AggregateId="InitialLevelRun"><Sequence/><Break><Not><ArgName="InitialLevelRunToListeningLocation"/></Not><Or><Not><ArgName="LatListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LatListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or><And><ArgName="LonListening"/><Ge><Units:degree/><Value>0</Value></Ge><Or><ArgName="LonListening"/><Lt><Units:degree/><Value>0</Value></Lt></Or></And></Not></Or></Break><Assign><Sequence/><ArgName="InitialTransitDone"/><False/></Assign><SyslogSeverity="Important">Initial level run transit to listening location LatListening = <ArgName="LatListening"/><Units:degree/>, LonListening = <ArgName="LonListening"/><Units:degree/>.</Syslog><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsTimeInTransit"/></Assign><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="SpeedTransit"/></Setting></Guidance:SetSpeed><Guidance:Mass><Parallel/><Setting><Guidance:Mass.position/><ArgName="MassDefault"/></Setting></Guidance:Mass><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="NeutralBuoyancy"/></Setting></Guidance:Buoyancy><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.depth/><ArgName="DepthLevelRunToListeningLocation"/></Setting></Guidance:Pitch><Guidance:Waypoint><Sequence/><Setting><Guidance:Waypoint.latitude/><ArgName="LatListening"/></Setting><Setting><Guidance:Waypoint.longitude/><ArgName="LonListening"/></Setting></Guidance:Waypoint><CallId="InitialLevelRunReachedWaypoint"RefId="NeedComms"/><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsMaxWait"/></Assign><Assign><Sequence/><ArgName="InitialTransitDone"/><True/></Assign></Aggregate></Aggregate><AggregateId="PAM"><SequenceRepeat="999"/><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.massPosition/><Control:VerticalControl.massDefault/></Setting></Guidance:Pitch><AggregateId="SetToNeutralBuoyancy"><While><Not><ArgName="ApproachDepthPropOff"/></Not></While><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="NeutralBuoyancy"/></Setting></Guidance:Buoyancy></Aggregate><Assign><Sequence/><ArgName="Cnt"/><ArgName="Cnt"/><Add><Units:count/><Value>1</Value></Add></Assign><SyslogSeverity="Important">Cnt = <ArgName="Cnt"/><Units:count/></Syslog><SyslogSeverity="Important">NeutralBuoyancy = <ArgName="NeutralBuoyancy"/><Units:cubic_centimeter/>, BuoyancyAdjustmentStep = <ArgName="BuoyancyAdjustmentStep"/><Units:cubic_centimeter/></Syslog><Assign><Sequence/><ArgName="Settled"/><False/></Assign><Assign><Sequence/><ArgName="DeltaReduced"/><False/></Assign><AggregateId="ApproachDepthSettleAtDepth"><Sequence/><AggregateId="LoosenDepthBandIfBuoyancyDeltaDropsToMinimum"><Sequence/><Break><ArgName="BuoyancyAdjustmentStep"/><Ge><ArgName="BuoyancyAdjustmentStepMin"/><Mult><Units:count/><Value>2</Value></Mult></Ge><Or><ArgName="DepthBandLoosened"/></Or></Break><Assign><Sequence/><ArgName="DeepBoundMinusTargetDepth"/><ArgName="DeepBoundMinusTargetDepth"/><Mult><ArgName="FactorLooseningDepthBand"/></Mult></Assign><Assign><Sequence/><ArgName="TargetDepthMinusShallowBound"/><ArgName="TargetDepthMinusShallowBound"/><Mult><ArgName="FactorLooseningDepthBand"/></Mult></Assign><Assign><Sequence/><ArgName="DeepBound"/><ArgName="Depth"/><Add><ArgName="DeepBoundMinusTargetDepth"/></Add></Assign><Assign><Sequence/><ArgName="ShallowBound"/><ArgName="Depth"/><Sub><ArgName="TargetDepthMinusShallowBound"/></Sub></Assign><SyslogSeverity="Important">Loosened shallow bound = <ArgName="ShallowBound"/><Units:meter/>.</Syslog><SyslogSeverity="Important">Loosened deep bound = <ArgName="DeepBound"/><Units:meter/>.</Syslog><Assign><Sequence/><ArgName="DepthBandLoosened"/><True/></Assign></Aggregate><AggregateId="ApproachDepth"><Sequence/><AggregateId="ApproachDepthPropellerOn"><Break><Not><ArgName="ApproachSpeedNotFirstTime"/><Gt><Units:meter_per_second/><Value>0</Value></Gt><Or><ArgName="Cnt"/><Eq><Units:count/><Value>1</Value></Eq></Or></Not></Break><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="NeutralBuoyancy"/></Setting></Guidance:Buoyancy><SyslogSeverity="Important">Moving to <ArgName="Depth"/><Units:meter/></Syslog><Assign><Sequence/><ArgName="BuoyancyAdjustmentDone"/><False/></Assign><Guidance:Point><Parallel/><Setting><Guidance:Point.rudderAngle/><Units:degree/><Value>13</Value></Setting></Guidance:Point><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="ApproachSpeedFirstTime"/></Setting></Guidance:SetSpeed><Guidance:Pitch><Sequence/><Setting><Guidance:Pitch.depth/><ArgName="Depth"/></Setting></Guidance:Pitch></Aggregate><AggregateId="ApproachDepthPropellerOff"><Break><ArgName="ApproachSpeedNotFirstTime"/><Gt><Units:meter_per_second/><Value>0</Value></Gt><Or><ArgName="Cnt"/><Eq><Units:count/><Value>1</Value></Eq></Or></Break><Assign><Sequence/><ArgName="ApproachDepthPropOff"/><True/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentDone"/><False/></Assign><SyslogSeverity="Important">Moving to <ArgName="Depth"/><Units:meter/></Syslog><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="ApproachSpeedNotFirstTime"/></Setting></Guidance:SetSpeed><Guidance:Pitch><Sequence/><Setting><Guidance:Pitch.depth/><ArgName="Depth"/></Setting></Guidance:Pitch><Assign><Sequence/><ArgName="ApproachDepthPropOff"/><False/></Assign></Aggregate></Aggregate><AggregateId="Settle"><Sequence/><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="NeutralBuoyancy"/></Setting></Guidance:Buoyancy><AggregateId="VBSDepthLimit"><Description>
Check if the vehicle can settle using the VBS.
</Description><Sequence/><AggregateId="ShallowerThanVBSDepthLimit"><Sequence/><Break><Universal:depth/><Gt><Control:VerticalControl.buoyancyPumpDepth/></Gt></Break><Assign><Sequence/><ArgName="SettleSpeed"/><Units:meter_per_second/><Value>0</Value></Assign></Aggregate><AggregateId="DeeperThanVBSDepthLimit"><Sequence/><Break><Universal:depth/><Le><Control:VerticalControl.buoyancyPumpDepth/></Le></Break><Assign><Sequence/><ArgName="SettleSpeed"/><Units:meter_per_second/><Value>1</Value></Assign></Aggregate></Aggregate><AggregateId="settle_at_depth"><Sequence/><SyslogSeverity="Important">Reached <Universal:depth/><Units:meter/>, settling for <ArgName="SettleTime"/><Units:minute/>at<ArgName="SettleSpeed"/><Units:meter_per_second/></Syslog><AggregateId="SettleAtDepthPropellerOn"><Break><Not><ArgName="SettleSpeed"/><Gt><Units:meter_per_second/><Value>0</Value></Gt></Not></Break><Guidance:Point><Parallel/><Setting><Guidance:Point.rudderAngle/><Units:degree/><Value>13</Value></Setting></Guidance:Point><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="SettleSpeed"/></Setting></Guidance:SetSpeed><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.depth/><ArgName="Depth"/></Setting></Guidance:Pitch><Assign><Sequence/><ArgName="TimeTargetDepth"/><Units:second/><Value>0</Value></Assign><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="SettleTime"/></Setting></Guidance:Wait><Assign><Sequence/><ArgName="Settled"/><True/></Assign></Aggregate><AggregateId="SettleAtDepthPropellerOff"><Break><ArgName="SettleSpeed"/><Gt><Units:meter_per_second/><Value>0</Value></Gt></Break><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="SettleSpeed"/></Setting></Guidance:SetSpeed><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.depth/><ArgName="Depth"/></Setting></Guidance:Pitch><Assign><Sequence/><ArgName="TimeTargetDepth"/><Units:second/><Value>0</Value></Assign><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="SettleTime"/></Setting></Guidance:Wait><Assign><Sequence/><ArgName="Settled"/><True/></Assign></Aggregate></Aggregate></Aggregate><AggregateId="Hover"><Description>
Hover neutral within depth bound.
</Description><Sequence/><Break><Universal:depth/><Gt><ArgName="DeepBound"/></Gt><Or><Universal:depth/><Lt><ArgName="ShallowBound"/></Lt></Or></Break><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="NeutralBuoyancy"/></Setting></Guidance:Buoyancy><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.elevatorAngle/><Units:degree/><Value>0</Value></Setting></Guidance:Pitch><Guidance:Point><Parallel/><Setting><Guidance:Point.rudderAngle/><Units:degree/><Value>0</Value></Setting></Guidance:Point><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><Units:meter_per_second/><Value>0</Value></Setting></Guidance:SetSpeed><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="MissionTimeout"/></Setting></Guidance:Wait></Aggregate><AggregateId="DeeperThanDeepBound"><Sequence/><While><Universal:depth/><Gt><ArgName="DeepBound"/></Gt><And><ArgName="Settled"/></And></While><Break><Universal:depth/><Le><ArgName="DeepBound"/><Sub><ArgName="DepthDeadband"/></Sub></Le></Break><Assign><Sequence/><ArgName="DepthMinusTargetDepth"/><Universal:depth/><Sub><ArgName="Depth"/></Sub></Assign><Assign><Sequence/><ArgName="ElapsedSinceSettledAtTargetDepth"/><Elapsed><ArgName="TimeTargetDepth"/></Elapsed></Assign><Assign><Sequence/><ArgName="SinkingOrFloatingRate"/><ArgName="DepthMinusTargetDepth"/><Div><ArgName="ElapsedSinceSettledAtTargetDepth"/></Div></Assign><SyslogSeverity="Important">Now depth <Universal:depth/><Units:meter/> is deeper than DeepBound <ArgName="DeepBound"/><Units:meter/>. SinkingOrFloatingRate = DepthMinusTargetDepth <ArgName="DepthMinusTargetDepth"/><Units:meter/> divided by <ArgName="ElapsedSinceSettledAtTargetDepth"/><Units:second/> = <ArgName="SinkingOrFloatingRate"/><Units:meter_per_second/></Syslog><AggregateId="SurfacingDeeperThanDeepBound"><Sequence/><When><Elapsed><Universal:time_fix/></Elapsed><Gt><ArgName="SurfacingIntervalDuringListening"/></Gt></When><Assign><Sequence/><ArgName="ElapsedSinceLastGPSfix"/><Elapsed><Universal:time_fix/></Elapsed></Assign><SyslogSeverity="Important">Elapsed time since the last GPS fix <ArgName="ElapsedSinceLastGPSfix"/><Units:minute/> is longer than SurfacingIntervalDuringListening <ArgName="SurfacingIntervalDuringListening"/><Units:minute/>. Surface and optionally transit back to listening location.</Syslog><Assign><Sequence/><ArgName="Cnt"/><Units:count/><Value>0</Value></Assign><Assign><Sequence/><ArgName="SurfacingStarted"/><True/></Assign><CallId="CommsAndOptionalTransitBack"RefId="CommsAndOptionallyTransitBackToListeningLocation"/></Aggregate><AggregateId="DoNotIncreaseNeutralBuoyancy"><Sequence/><Break><ArgName="SinkingOrFloatingRate"/><Ge><ArgName="SinkingOrFloatingRateThreshold"/></Ge><Or><ArgName="BuoyancyAdjustmentDone"/></Or><And><Not><ArgName="SurfacingStarted"/></Not></And></Break><SyslogSeverity="Important">But SinkingOrFloatingRate = <ArgName="SinkingOrFloatingRate"/><Units:meter_per_second/> is less than SinkingOrFloatingRateThreshold <ArgName="SinkingOrFloatingRateThreshold"/><Units:meter_per_second/>, or the vehicle is surfacing. Do not increase neutral buoyancy. Just go back to the target depth.</Syslog><Assign><Sequence/><ArgName="Sinking"/><True/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentDone"/><True/></Assign></Aggregate><AggregateId="IncreaseNeutralBuoyancy"><Sequence/><Break><ArgName="SinkingOrFloatingRate"/><Lt><ArgName="SinkingOrFloatingRateThreshold"/></Lt><Or><ArgName="SurfacingStarted"/></Or></Break><AggregateId="IncreaseNeutralBuoyancyDecreaseDelta"><Sequence/><Break><ArgName="Cnt"/><Eq><Units:count/><Value>1</Value></Eq><Or><ArgName="Sinking"/></Or><Or><ArgName="BuoyancyAdjustmentStep"/><Lt><ArgName="BuoyancyAdjustmentStepMin"/><Mult><Units:count/><Value>2</Value></Mult></Lt></Or><Or><ArgName="BuoyancyAdjustmentDone"/></Or></Break><Assign><Sequence/><ArgName="DeltaReduced"/><True/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentStepPrevious"/><ArgName="BuoyancyAdjustmentStep"/></Assign><Assign><Sequence/><ArgName="NeutralBuoyancyPrevious"/><ArgName="NeutralBuoyancy"/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentStepNew"/><ArgName="BuoyancyAdjustmentStep"/><Div><Units:count/><Value>2</Value></Div></Assign><Assign><Sequence/><ArgName="NeutralBuoyancy"/><ArgName="NeutralBuoyancy"/><Add><ArgName="BuoyancyAdjustmentStepNew"/></Add></Assign><SyslogSeverity="Important">SinkingOrFloatingRate = <ArgName="SinkingOrFloatingRate"/><Units:meter_per_second/> is greater than SinkingOrFloatingRateThreshold <ArgName="SinkingOrFloatingRateThreshold"/><Units:meter_per_second/>. Floating previously but sinking now. Decrease BuoyancyAdjustmentStep from <ArgName="BuoyancyAdjustmentStepPrevious"/><Units:cubic_centimeter/> to <ArgName="BuoyancyAdjustmentStepNew"/><Units:cubic_centimeter/>. Increase neutral buoyancy: <ArgName="NeutralBuoyancyPrevious"/><Units:cubic_centimeter/> + <ArgName="BuoyancyAdjustmentStepNew"/><Units:cubic_centimeter/> = <ArgName="NeutralBuoyancy"/><Units:cubic_centimeter/>. Then go back to the target depth.</Syslog><Assign><Sequence/><ArgName="BuoyancyAdjustmentStep"/><ArgName="BuoyancyAdjustmentStepNew"/></Assign><Assign><Sequence/><ArgName="Sinking"/><True/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentDone"/><True/></Assign></Aggregate><AggregateId="IncreaseNeutralBuoyancyDoNotChangeDelta"><Sequence/><Break><Not><ArgName="Sinking"/></Not><And><ArgName="BuoyancyAdjustmentStep"/><Ge><ArgName="BuoyancyAdjustmentStepMin"/><Mult><Units:count/><Value>2</Value></Mult></Ge></And><And><ArgName="Cnt"/><Ge><Units:count/><Value>2</Value></Ge></And><Or><ArgName="BuoyancyAdjustmentDone"/></Or><Or><ArgName="DeltaReduced"/></Or></Break><Assign><Sequence/><ArgName="NeutralBuoyancyPrevious"/><ArgName="NeutralBuoyancy"/></Assign><Assign><Sequence/><ArgName="NeutralBuoyancy"/><ArgName="NeutralBuoyancy"/><Add><ArgName="BuoyancyAdjustmentStep"/></Add></Assign><SyslogSeverity="Important">SinkingOrFloatingRate = <ArgName="SinkingOrFloatingRate"/><Units:meter_per_second/> is greater than SinkingOrFloatingRateThreshold <ArgName="SinkingOrFloatingRateThreshold"/><Units:meter_per_second/>. Vehicle is a little too heavy. Increase neutral buoyancy: <ArgName="NeutralBuoyancyPrevious"/><Units:cubic_centimeter/> + <ArgName="BuoyancyAdjustmentStep"/><Units:cubic_centimeter/> = <ArgName="NeutralBuoyancy"/><Units:cubic_centimeter/>. Then go back to the target depth.</Syslog><Assign><Sequence/><ArgName="Sinking"/><True/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentDone"/><True/></Assign></Aggregate></Aggregate></Aggregate><AggregateId="ShallowerThanShallowBound"><Sequence/><While><Universal:depth/><Lt><ArgName="ShallowBound"/></Lt><And><ArgName="Settled"/></And></While><Break><Universal:depth/><Ge><ArgName="ShallowBound"/><Add><ArgName="DepthDeadband"/></Add></Ge><Or><Elapsed><Universal:time_fix/></Elapsed><Gt><ArgName="NeedCommsMaxWait"/></Gt></Or><Or><ArgName="SurfacingStarted"/></Or></Break><Assign><Sequence/><ArgName="TargetDepthMinusDepth"/><ArgName="Depth"/><Sub><Universal:depth/></Sub></Assign><Assign><Sequence/><ArgName="ElapsedSinceSettledAtTargetDepth"/><Elapsed><ArgName="TimeTargetDepth"/></Elapsed></Assign><Assign><Sequence/><ArgName="SinkingOrFloatingRate"/><ArgName="TargetDepthMinusDepth"/><Div><ArgName="ElapsedSinceSettledAtTargetDepth"/></Div></Assign><SyslogSeverity="Important">Now depth <Universal:depth/><Units:meter/> is shallower than ShallowBound <ArgName="ShallowBound"/><Units:meter/>. SinkingOrFloatingRate = TargetDepthMinusDepth <ArgName="TargetDepthMinusDepth"/><Units:meter/> divided by <ArgName="ElapsedSinceSettledAtTargetDepth"/><Units:second/> = <ArgName="SinkingOrFloatingRate"/><Units:meter_per_second/>.</Syslog><AggregateId="SurfacingShallowerThanShallowBound"><Sequence/><When><Elapsed><Universal:time_fix/></Elapsed><Gt><ArgName="SurfacingIntervalDuringListening"/></Gt></When><Assign><Sequence/><ArgName="ElapsedSinceLastGPSfix"/><Elapsed><Universal:time_fix/></Elapsed></Assign><SyslogSeverity="Important">Elapsed time since the last GPS fix <ArgName="ElapsedSinceLastGPSfix"/><Units:minute/> is longer than SurfacingIntervalDuringListening <ArgName="SurfacingIntervalDuringListening"/><Units:minute/>. Surface and optionally transit back to listening location.</Syslog><Assign><Sequence/><ArgName="Cnt"/><Units:count/><Value>0</Value></Assign><Assign><Sequence/><ArgName="SurfacingStarted"/><True/></Assign><CallId="CommsAndOptionalTransitBack"RefId="CommsAndOptionallyTransitBackToListeningLocation"/></Aggregate><AggregateId="DoNotDecreaseNeutralBuoyancy"><Sequence/><Break><ArgName="SinkingOrFloatingRate"/><Ge><ArgName="SinkingOrFloatingRateThreshold"/></Ge><Or><ArgName="BuoyancyAdjustmentDone"/></Or></Break><SyslogSeverity="Important">But SinkingOrFloatingRate = <ArgName="SinkingOrFloatingRate"/><Units:meter_per_second/> is less than SinkingOrFloatingRateThreshold <ArgName="SinkingOrFloatingRateThreshold"/><Units:meter_per_second/>, or the vehicle is surfacing. Do not decrease neutral buoyancy. Just go back to the target depth.</Syslog><Assign><Sequence/><ArgName="Sinking"/><False/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentDone"/><True/></Assign></Aggregate><AggregateId="DecreaseNeutralBuoyancy"><Sequence/><Break><ArgName="SinkingOrFloatingRate"/><Lt><ArgName="SinkingOrFloatingRateThreshold"/></Lt></Break><AggregateId="DecreaseNeutralBuoyancyDecreaseDelta"><Sequence/><Break><ArgName="Cnt"/><Eq><Units:count/><Value>1</Value></Eq><Or><Not><ArgName="Sinking"/></Not></Or><Or><ArgName="BuoyancyAdjustmentStep"/><Lt><ArgName="BuoyancyAdjustmentStepMin"/><Mult><Units:count/><Value>2</Value></Mult></Lt></Or><Or><ArgName="BuoyancyAdjustmentDone"/></Or></Break><Assign><Sequence/><ArgName="DeltaReduced"/><True/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentStepPrevious"/><ArgName="BuoyancyAdjustmentStep"/></Assign><Assign><Sequence/><ArgName="NeutralBuoyancyPrevious"/><ArgName="NeutralBuoyancy"/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentStepNew"/><ArgName="BuoyancyAdjustmentStep"/><Div><Units:count/><Value>2</Value></Div></Assign><Assign><Sequence/><ArgName="NeutralBuoyancy"/><ArgName="NeutralBuoyancy"/><Sub><ArgName="BuoyancyAdjustmentStepNew"/></Sub></Assign><SyslogSeverity="Important">SinkingOrFloatingRate = <ArgName="SinkingOrFloatingRate"/><Units:meter_per_second/> is greater than SinkingOrFloatingRateThreshold <ArgName="SinkingOrFloatingRateThreshold"/><Units:meter_per_second/>. Sinking previously but floating now. Decrease BuoyancyAdjustmentStep from <ArgName="BuoyancyAdjustmentStepPrevious"/><Units:cubic_centimeter/> to <ArgName="BuoyancyAdjustmentStepNew"/><Units:cubic_centimeter/>. Decrease neutral buoyancy: <ArgName="NeutralBuoyancyPrevious"/><Units:cubic_centimeter/> - <ArgName="BuoyancyAdjustmentStepNew"/><Units:cubic_centimeter/> = <ArgName="NeutralBuoyancy"/><Units:cubic_centimeter/>. Then go back to the target depth.</Syslog><Assign><Sequence/><ArgName="BuoyancyAdjustmentStep"/><ArgName="BuoyancyAdjustmentStepNew"/></Assign><Assign><Sequence/><ArgName="Sinking"/><False/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentDone"/><True/></Assign></Aggregate><AggregateId="DecreaseNeutralBuoyancyDoNotChangeDelta"><Sequence/><Break><ArgName="Sinking"/><And><ArgName="BuoyancyAdjustmentStep"/><Ge><ArgName="BuoyancyAdjustmentStepMin"/><Mult><Units:count/><Value>2</Value></Mult></Ge></And><And><ArgName="Cnt"/><Ge><Units:count/><Value>2</Value></Ge></And><Or><ArgName="BuoyancyAdjustmentDone"/></Or><Or><ArgName="DeltaReduced"/></Or></Break><Assign><Sequence/><ArgName="NeutralBuoyancyPrevious"/><ArgName="NeutralBuoyancy"/></Assign><Assign><Sequence/><ArgName="NeutralBuoyancy"/><ArgName="NeutralBuoyancy"/><Sub><ArgName="BuoyancyAdjustmentStep"/></Sub></Assign><SyslogSeverity="Important">SinkingOrFloatingRate = <ArgName="SinkingOrFloatingRate"/><Units:meter_per_second/> is greater than SinkingOrFloatingRateThreshold <ArgName="SinkingOrFloatingRateThreshold"/><Units:meter_per_second/>. Vehicle is a little too light. Decrease neutral buoyancy: <ArgName="NeutralBuoyancyPrevious"/><Units:cubic_centimeter/> - <ArgName="BuoyancyAdjustmentStep"/><Units:cubic_centimeter/> = <ArgName="NeutralBuoyancy"/><Units:cubic_centimeter/>. Then go back to the target depth.</Syslog><Assign><Sequence/><ArgName="Sinking"/><False/></Assign><Assign><Sequence/><ArgName="BuoyancyAdjustmentDone"/><True/></Assign></Aggregate></Aggregate></Aggregate></Aggregate></Aggregate><CallId="EndingMission"RefId="NeedComms"/></Mission>