<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="Tethys/Guidance"
    elementFormDefault="qualified"
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:Guidance="Tethys/Guidance"
    xmlns:Tethys="Tethys">

    <import namespace="Tethys" schemaLocation="Tethys.xsd"/>

    <element name="AltitudeEnvelope" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="AltitudeEnvelope.minAltitude" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="AltitudeEnvelope.maxAltitude" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="AltitudeEnvelope.pitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="AltitudeEnvelope.downPitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="AltitudeEnvelope.upPitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="AltitudeEnvelope.depthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="AltitudeEnvelope.downDepthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="AltitudeEnvelope.upDepthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="Buoyancy" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="Buoyancy.position" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="DepthEnvelope" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="DepthEnvelope.minDepth" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthEnvelope.maxDepth" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthEnvelope.depthSurrogate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthEnvelope.pitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthEnvelope.downPitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthEnvelope.upPitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthEnvelope.depthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthEnvelope.downDepthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthEnvelope.upDepthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="DepthServo" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="DepthServo.holdValue" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthServo.uri" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthServo.proportionalGain" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthServo.integralGain" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthServo.derivativeGain" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="DepthServo.changePerMeter" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="Execute" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="Execute.command" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="GoToSurface" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="GoToSurface.speed" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="KeepStation" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="KeepStation.latitude" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="KeepStation.longitude" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="KeepStation.radius" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="Lane" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="Lane.bearing" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Lane.distance" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Lane.width" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Lane.offset" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="OffshoreEnvelope" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="OffshoreEnvelope.minOffshore" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="OffshoreEnvelope.maxOffshore" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="Pitch" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="Pitch.depth" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Pitch.depthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Pitch.elevatorAngle" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Pitch.massPosition" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Pitch.pitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Pitch.pitchRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="PitchServo" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="PitchServo.holdValue" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="PitchServo.uri" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="PitchServo.proportionalGain" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="PitchServo.integralGain" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="PitchServo.derivativeGain" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="PitchServo.changePerMeter" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="Point" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="Point.heading" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Point.headingDelta" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Point.headingRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Point.rudderAngle" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Point.latitude" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Point.latitudeDelta" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Point.northingsDelta" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Point.longitude" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Point.longitudeDelta" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Point.eastingsDelta" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="PrepareToDive" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>

    <element name="ReadSensor" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="ReadSensor.uri" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="ReadSensor.interval" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="ReadSensor.intervalUri" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="SetSpeed" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="SetSpeed.speed" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="SetSpeed.period" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="StopMission" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>

    <element name="VerticalControlConfig" type="Tethys:ParallelType" substitutionGroup="Tethys:Item"/>
    <element name="VerticalControlConfig.kdPitchElevator" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kiPitchElevator" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kpPitchElevator" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kdPitchMass" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kiPitchMass" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kpPitchMass" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.maxPitchElevatorInt" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.maxPitchMassInt" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.pitchLimit" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.elevatorLimit" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.elevatorRequired" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.massPositionLimit" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.massDefault" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.massPositionDelay" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.maxDiveRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kdDepth" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kiDepth" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kpDepth" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kdDepthBuoy" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kiDepthBuoy" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kpDepthRateBuoy" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kdDepthRateBuoy" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kiDepthRateBuoy" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kpDepthBuoy" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.maxBuoyInt" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.depthDeadband" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.buoyancyNeutral" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.maxDepthInt" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="VerticalControlConfig.kiDepthOff" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="Wait" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="Wait.duration" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Wait.interrupt" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="Waypoint" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="Waypoint.captureRadius" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Waypoint.latitude" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Waypoint.latitudeDelta" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Waypoint.longitude" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="Waypoint.longitudeDelta" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="YoYo" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="YoYo.pitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="YoYo.downPitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="YoYo.upPitch" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="YoYo.depthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="YoYo.downDepthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="YoYo.upDepthRate" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

    <element name="ZigZag" type="Tethys:SequenceType" substitutionGroup="Tethys:Item"/>
    <element name="ZigZag.bearing" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>
    <element name="ZigZag.angle" substitutionGroup="Tethys:Uri" type="Tethys:UriType"/>

</schema>