missioncircle_virtual_drifter{""" Vehicle yo-yo's to the specified waypoint, with science turned on. """arguments{InitialLatitude=36.78degree""" Latitude to initialize virtual drifter at. """InitialLongitude=-121.85degree""" Longitude to initialize virtual drifter at. """MinAltitude=10.0meter""" Minimum height above the sea floor for the entire mission. """MaxDepth=55.0meter""" Maximum depth for the entire mission. """MinOffshore=2000.0meter""" Minimum offshore distance for the entire mission. """YoYoMinDepth=3.0meter""" Minimum depth while performing the YoYo behavior. """YoYoMaxDepth=50.0meter""" Maximum depth while performing the YoYo behavior. """YoYoUpPitch=20.0degree""" Vehicle up pitch while performing the YoYo behavior. """YoYoDownPitch=-20.0degree""" Vehicle down pitch while performing the YoYo behavior. """CircleMaxError=50meterCircleRadius=250meterCircleTurnToPort=trueKwpHeading=0.010radian_per_meter""" Used to relax waypoint cross-track error constant that is adjusted for docking. (You can override this setting by passing an argument.) """NeedCommsTime=60minute""" Elapsed time after previous surface communications when vehicle will begin to ascend for additional surface communications, if the vehicle has a positive pitch. If the vehicle has a negative pitch, it will wait up to 10 minutes more to begin ascent. """Speed=1meter_per_second""" Speed while performing the YoYo behavior. """Timeout=6hour""" Maximum length of mission """BuoyancyNeutral=Control:VerticalControl.buoyancyNeutral""" Buoyancy bladder position while performing the YoYo behavior. Defaults to buoyancyNeutral setting in the Config/Control.cfg file. Set to NaN cc for active buoyancy """MassDefault=Control:VerticalControl.massDefault""" Static setting for mass during the mission. Set to NaN mm for active mass position """}timeoutduration=TimeoutaggregateAltEnvWrapper{runwhen(MinAltitude>0meter)behaviorGuidance:AltitudeEnvelope{""" Safety behavior that keeps vehicle off sea floor """runinparallelsetGuidance:AltitudeEnvelope.minAltitude=MinAltitude}}behaviorGuidance:DepthEnvelope{""" Safety behavior that keeps vehicle from going too deep """runinparallelsetGuidance:DepthEnvelope.maxDepth=MaxDepth}aggregateOffshoreWrapper{runwhen(MinOffshore>0meter)behaviorGuidance:OffshoreEnvelope{""" Safety behavior that keeps vehicle away from the shore """runinparallelsetGuidance:OffshoreEnvelope.minOffshore=MinOffshore}}behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.massPosition=MassDefault}# GPS Update. Don't go too long w/o a GPS fix.insertInsert/NeedComms.xmlid="NeedComms"# NOTE: The <Assign> clauses below will not take effect until you actually run the mission. RedefineArg will not work in this case if you use a "set" after loading the mission.assigninsequenceNeedComms:DiveInterval=NeedCommsTimeassigninsequenceNeedComms:SurfaceSpeed=Speedsyslogdebug"NeedComms:DiveInterval is "+NeedComms:DiveInterval~minute+", should be "+NeedCommsTime~minute+"."syslogdebug"NeedComms:SurfaceSpeed is "+NeedComms:SurfaceSpeed~meter_per_second+", should be "+Speed~meter_per_second+"."insertInsert/Science.xml{""" If we're executing here or below, lets' get science data! """redefineArgPeakDetectChlActive=true}behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=BuoyancyNeutral}behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=Speed}behaviorGuidance:DepthEnvelope{runinparallelsetGuidance:DepthEnvelope.minDepth=YoYoMinDepthsetGuidance:DepthEnvelope.maxDepth=YoYoMaxDepthsetGuidance:DepthEnvelope.upPitch=YoYoUpPitchsetGuidance:DepthEnvelope.downPitch=YoYoDownPitch}behaviorGuidance:YoYo{runinparallelsetGuidance:YoYo.upPitch=YoYoUpPitchsetGuidance:YoYo.downPitch=YoYoDownPitch}# (re)initialize the virtual surface drifterEstimation:ReinitializeHFRCMVirtualSurfaceDrifter#! xml2tethysl note: A non-behavior Tethys definition used by itself.syslogimportant"Reinitialized virtual drifter location."# go circle the virtual drifteraggregateCircleDrifter{""" Circle virtual drifter. """runinparallelassigninparallelControl:HorizontalControl.kwpHeading=KwpHeadingbehaviorGuidance:Circle{runinsequencesetGuidance:Circle.latitude=customUri"HFRCMVirtualSurfaceDrifter.latitude"setGuidance:Circle.longitude=customUri"HFRCMVirtualSurfaceDrifter.longitude"setGuidance:Circle.radius=CircleRadiussetGuidance:Circle.maxError=CircleMaxErrorsetGuidance:Circle.turnToPort=CircleTurnToPort}}behaviorGuidance:Wait{runinsequence}}
<?xml version="1.0" encoding="UTF-8"?><Missionxmlns="Tethys"xmlns:Control="Tethys/Control"xmlns:Estimation="Tethys/Estimation"xmlns:Guidance="Tethys/Guidance"xmlns:Units="Tethys/Units"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/Control http://okeanids.mbari.org/tethys/Xml/Control.xsd Tethys/Estimation http://okeanids.mbari.org/tethys/Xml/Estimation.xsd Tethys/Guidance http://okeanids.mbari.org/tethys/Xml/Guidance.xsd Tethys/Units http://okeanids.mbari.org/tethys/Xml/Units.xsd Tethys/Universal http://okeanids.mbari.org/tethys/Xml/Universal.xsd"Id="circle_virtual_drifter"><Description>
Vehicle yo-yo's to the specified waypoint, with science turned on.
</Description><DefineArgName="InitialLatitude"><Description>
Latitude to initialize virtual drifter at.
</Description><Units:degree/><Value>36.78</Value></DefineArg><DefineArgName="InitialLongitude"><Description>
Longitude to initialize virtual drifter at.
</Description><Units:degree/><Value>-121.85</Value></DefineArg><DefineArgName="MinAltitude"><Description>
Minimum height above the sea floor for the entire mission.
</Description><Units:meter/><Value>10.0</Value></DefineArg><DefineArgName="MaxDepth"><Description>
Maximum depth for the entire mission.
</Description><Units:meter/><Value>55.0</Value></DefineArg><DefineArgName="MinOffshore"><Description>
Minimum offshore distance for the entire mission.
</Description><Units:meter/><Value>2000.0</Value></DefineArg><DefineArgName="YoYoMinDepth"><Description>
Minimum depth while performing the YoYo behavior.
</Description><Units:meter/><Value>3.0</Value></DefineArg><DefineArgName="YoYoMaxDepth"><Description>
Maximum depth while performing the YoYo behavior.
</Description><Units:meter/><Value>50.0</Value></DefineArg><DefineArgName="YoYoUpPitch"><Description>
Vehicle up pitch while performing the YoYo behavior.
</Description><Units:degree/><Value>20.0</Value></DefineArg><DefineArgName="YoYoDownPitch"><Description>
Vehicle down pitch while performing the YoYo behavior.
</Description><Units:degree/><Value>-20.0</Value></DefineArg><DefineArgName="CircleMaxError"><Units:meter/><Value>50</Value></DefineArg><DefineArgName="CircleRadius"><Units:meter/><Value>250</Value></DefineArg><DefineArgName="CircleTurnToPort"><True/></DefineArg><DefineArgName="KwpHeading"><Description>
Used to relax waypoint cross-track error constant that is adjusted for
docking. (You can override this setting by passing an argument.)
</Description><Units:radian_per_meter/><Value>0.010</Value></DefineArg><DefineArgName="NeedCommsTime"><Description>
Elapsed time after previous surface communications when vehicle will
begin to ascend for additional surface communications, if the vehicle
has a positive pitch. If the vehicle has a negative pitch, it will wait
up to 10 minutes more to begin ascent.
</Description><Units:minute/><Value>60</Value></DefineArg><DefineArgName="Speed"><Description>
Speed while performing the YoYo behavior.
</Description><Units:meter_per_second/><Value>1</Value></DefineArg><DefineArgName="Timeout"><Description>
Maximum length of mission
</Description><Units:hour/><Value>6</Value></DefineArg><DefineArgName="BuoyancyNeutral"><Description>
Buoyancy bladder position while performing the YoYo behavior. Defaults
to buoyancyNeutral setting in the Config/Control.cfg file. Set to NaN cc
for active buoyancy
</Description><Control:VerticalControl.buoyancyNeutral/></DefineArg><DefineArgName="MassDefault"><Description>
Static setting for mass during the mission. Set to NaN mm for active
mass position
</Description><Control:VerticalControl.massDefault/></DefineArg><TimeoutDuration="Timeout"/><AggregateId="AltEnvWrapper"><When><ArgName="MinAltitude"/><Gt><Units:meter/><Value>0</Value></Gt></When><Guidance:AltitudeEnvelope><Description>
Safety behavior that keeps vehicle off sea floor
</Description><Parallel/><Setting><Guidance:AltitudeEnvelope.minAltitude/><ArgName="MinAltitude"/></Setting></Guidance:AltitudeEnvelope></Aggregate><Guidance:DepthEnvelope><Description>
Safety behavior that keeps vehicle from going too deep
</Description><Parallel/><Setting><Guidance:DepthEnvelope.maxDepth/><ArgName="MaxDepth"/></Setting></Guidance:DepthEnvelope><AggregateId="OffshoreWrapper"><When><ArgName="MinOffshore"/><Gt><Units:meter/><Value>0</Value></Gt></When><Guidance:OffshoreEnvelope><Description>
Safety behavior that keeps vehicle away from the shore
</Description><Parallel/><Setting><Guidance:OffshoreEnvelope.minOffshore/><ArgName="MinOffshore"/></Setting></Guidance:OffshoreEnvelope></Aggregate><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.massPosition/><ArgName="MassDefault"/></Setting></Guidance:Pitch><!-- GPS Update. Don't go too long w/o a GPS fix. --><InsertFilename="Insert/NeedComms.xml"Id="NeedComms"/><!-- NOTE: The <Assign> clauses below will not take effect until you actually run the mission. RedefineArg will not work in this case if you use a "set" after loading the mission. --><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsTime"/></Assign><Assign><Sequence/><ArgName="NeedComms:SurfaceSpeed"/><ArgName="Speed"/></Assign><SyslogSeverity="Debug">NeedComms:DiveInterval is <ArgName="NeedComms:DiveInterval"/><Units:minute/>, should be <ArgName="NeedCommsTime"/><Units:minute/>.</Syslog><SyslogSeverity="Debug">NeedComms:SurfaceSpeed is <ArgName="NeedComms:SurfaceSpeed"/><Units:meter_per_second/>, should be <ArgName="Speed"/><Units:meter_per_second/>.</Syslog><InsertFilename="Insert/Science.xml"><Description>
If we're executing here or below, lets' get science data!
</Description><RedefineArgName="PeakDetectChlActive"><True/></RedefineArg></Insert><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="BuoyancyNeutral"/></Setting></Guidance:Buoyancy><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="Speed"/></Setting></Guidance:SetSpeed><Guidance:DepthEnvelope><Parallel/><Setting><Guidance:DepthEnvelope.minDepth/><ArgName="YoYoMinDepth"/></Setting><Setting><Guidance:DepthEnvelope.maxDepth/><ArgName="YoYoMaxDepth"/></Setting><Setting><Guidance:DepthEnvelope.upPitch/><ArgName="YoYoUpPitch"/></Setting><Setting><Guidance:DepthEnvelope.downPitch/><ArgName="YoYoDownPitch"/></Setting></Guidance:DepthEnvelope><Guidance:YoYo><Parallel/><Setting><Guidance:YoYo.upPitch/><ArgName="YoYoUpPitch"/></Setting><Setting><Guidance:YoYo.downPitch/><ArgName="YoYoDownPitch"/></Setting></Guidance:YoYo><!-- (re)initialize the virtual surface drifter --><Estimation:ReinitializeHFRCMVirtualSurfaceDrifter><Sequence/><Setting><Estimation:ReinitializeHFRCMVirtualSurfaceDrifter.initial_latitude_setting/><ArgName="InitialLatitude"/></Setting><Setting><Estimation:ReinitializeHFRCMVirtualSurfaceDrifter.initial_longitude_setting/><ArgName="InitialLongitude"/></Setting></Estimation:ReinitializeHFRCMVirtualSurfaceDrifter><SyslogSeverity="Important">Reinitialized virtual drifter location.</Syslog><!-- go circle the virtual drifter --><AggregateId="CircleDrifter"><Description>
Circle virtual drifter.
</Description><Parallel/><Assign><Parallel/><Control:HorizontalControl.kwpHeading/><ArgName="KwpHeading"/></Assign><Guidance:Circle><Sequence/><Setting><Guidance:Circle.latitude/><CustomUriUri="HFRCMVirtualSurfaceDrifter.latitude"/></Setting><Setting><Guidance:Circle.longitude/><CustomUriUri="HFRCMVirtualSurfaceDrifter.longitude"/></Setting><Setting><Guidance:Circle.radius/><ArgName="CircleRadius"/></Setting><Setting><Guidance:Circle.maxError/><ArgName="CircleMaxError"/></Setting><Setting><Guidance:Circle.turnToPort/><ArgName="CircleTurnToPort"/></Setting></Guidance:Circle></Aggregate><Guidance:Wait><Sequence/></Guidance:Wait></Mission>