The generated TethysL source could not be parsed,
likely due to source XML not being well-formed.
Below is the compile error at the TethysL level,
as well as the source XML.
The TethysL file name shown below does not necessarily indicate the
file exists, but hints about the actual corresponding .xml file.
Syntax error:
--> lrauv-application/Missions/Demo/DockingTankTest.xml:161:7
|
157 |
158 | # Let's fire up the DockingServo component here just so it's ready to go
159 |
160 | readData strategy="MinError" {
161 | in parallel
| ^^
162 | Dock:Dock.docking_state
163 | }
164 |
165 | # Start with the arm closed if it isn't already
|
Unexpected: `in`
One of the following is possible (total 9):
"""
while
timeout
break
interval
period
someID
Universal:...
universal
# - 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.missionDockingTankTest{""" 1.) Wait timeout for loading in launcher. 2.) Turn on prop and arm for docking. 3.) Wait timeout for either cable present or timeout. 4.) Cable present == latch for timeout then release, back up and end mission. 5.) No cable present == speed 0 and end mission. 6.) end mission == float up at 0 speed """arguments{MissionTimeout=15minute""" Maximum length of mission """Speed=1meter_per_second""" Thruster speed for docking. """LatchingSpeed=0.5meter_per_second""" Thruster speed while closing the latch (ideally slower) than docking. """WaitForLoadTimeout=90second""" Time to wait prior to turning on the prop. """LaunchTimeout=70second""" Time to wait with the prop on driving to the dock. """LatchTimeout=10second""" Time to wait before closing the latch after seeing the cable. """LatchCloseTimeout=10second""" Time to wait while the latch closes. """DockTimeout=15second""" Time to wait on the dock. """DetachTimeout=7second""" Time to wait while performing dock detach. """FloatTimeout=120second""" How long to wait for the vehicle to float to the surface. """ElevatorDefault=-4.0degree""" Static setting for elevator. """RudderDefault=3.0degree""" Static setting for rudder. """}output{DockingDepth=1.22meter""" How deep in the tank do you want to swim? """DiveMode=0count""" Mission variable (don't change). The mission sets this variable to switch between dive modes. """DoingComms=0count""" Mission variable (don't change). The mission will run in this to mode when running surface comms. """LatchSequence=1count""" Mission variable (don't change). The mission will run in this mode to initiate the debouncing latch sequence. """ArmClose=2count""" Mission variable (don't change). The mission will run in this mode when surface comms are done to dive the vehicle to DVL bottom range. """WaitOnDock=3count""" Mission variable (don't change). The mission will run in this mode to maintatin depth while the vehicle is latched on the dock. """DetachFromDock=4count""" Mission variable (don't change). The mission will run in this mode to drift away from the dock after is unlatched. """FloatUp=5count""" Mission variable (don't change). The mission will run in this mode to float back to the surface rather than drive. """}timeoutduration=MissionTimeoutaggregateTankDocking{runinsequence# Be neutral the entire time# <Guidance:Buoyancy># <Parallel/># <Setting><Guidance:Buoyancy.position/><Control:VerticalControl.buoyancyNeutral/></Setting># </Guidance:Buoyancy># set up the vertical controlbehaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.depth=DockingDepthsetGuidance:Pitch.elevatorAngle=ElevatorDefaultsetGuidance:Pitch.massPosition=Control:VerticalControl.massDefault}# set up the horizontal controlbehaviorGuidance:Point{runinparallelsetGuidance:Point.rudderAngle=RudderDefault}# Let's fire up the DockingServo component here just so it's ready to goreadDatastrategy="MinError"{inparallelDock:Dock.docking_state}# Start with the arm closed if it isn't alreadyassigninsequenceDock:Dock.docking_state_cmd=1enumaggregateLatchSequence{""" Vehicle hit cable and now needs to debounce. """syslogimportant"Initiating latching sequence. Waiting for debounce"runwhile(DiveMode==LatchSequence)behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=Speed}aggregatedive{runinsequencebehaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=LatchTimeout}assigninsequenceDiveMode=ArmClose}}aggregateArmClose{""" Change speed and close arm. """syslogimportant"Closing and changing speed."runwhile(DiveMode==ArmClose)behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=LatchingSpeed}# <Aggregate Id="dive">assigninsequenceDock:Dock.docking_state_cmd=1enumbehaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=LatchCloseTimeout}aggregateassign{runwhen(Dock:Dock.dock_cable_present==trueand(Servo:DockingServo.armAngle<(-12degree)))syslogimportant"Latch confirmed closed."assigninsequenceDiveMode=WaitOnDock}# If we didn't change the mode above, let's detachsyslogimportant"Could not confirm latch closed. Detaching."assigninsequenceDiveMode=DetachFromDock}# </Aggregate>aggregateDockHold{""" Wait on dock after vehicle latches. """syslogimportant"Holding on dock."runwhile(DiveMode==WaitOnDock)aggregatedive{runinsequenceassigninsequenceDock:Dock.docking_state_cmd=1enumbehaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=0meter_per_second}# <ReadData Id="PowerRedLights"># <Parallel/># <Sensor:PowerOnly.sampleLoad3/># </ReadData>behaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=DockTimeout}assigninsequenceDiveMode=DetachFromDock}}aggregateDetach{""" Reverse off the dock. """syslogimportant"Detaching From Dock."runwhile(DiveMode==DetachFromDock)aggregatedive{runinsequence# open to detachassigninsequenceDock:Dock.docking_state_cmd=2enum# And reversebehaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=-1meter_per_second}behaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=DetachTimeout}assigninsequenceDiveMode=FloatUp}}aggregateFloat_Up{runwhile(DiveMode==FloatUp)syslogimportant"Floating Up."# keep open while floating upassigninsequenceDock:Dock.docking_state_cmd=2enumbehaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=Control:VerticalControl.buoyancyDefault}behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=0meter_per_second}behaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=FloatTimeout}assigninsequenceDiveMode=DoingComms}aggregateWait_for_loading{runinsequencesysloginfo"Waiting to load for "+WaitForLoadTimeout~secondbehaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=Control:VerticalControl.buoyancyNeutral}behaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=WaitForLoadTimeout}}aggregateLaunchAndDock{runinsequencetimeoutduration=LaunchTimeout{syslogimportant"Timed out while driving to the dock."}breakif(DiveMode>DoingComms)sysloginfo"Prop on and arming!"behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=Speed}# Arm the....arm. Hmm....assigninsequenceDock:Dock.docking_state_cmd=2enumaggregateLatch{runwhen(Dock:Dock.dock_cable_present==trueand(not(DiveMode==LatchSequence)))assigninsequenceDiveMode=LatchSequence}behaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=LaunchTimeout}}behaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=MissionTimeout}}}
<?xml version="1.0" encoding="UTF-8"?><!--- 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.--><Missionxmlns="Tethys"xmlns:Sensor="Tethys/Sensor"xmlns:Units="Tethys/Units"xmlns:Estimation="Tethys/Estimation"xmlns:Dock="Tethys/Dock"xmlns:Guidance="Tethys/Guidance"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/Dock http://okeanids.mbari.org/tethys/Xml/Dock.xsd Tethys/Guidance http://okeanids.mbari.org/tethys/Xml/Guidance.xsd Tethys/Sensor http://okeanids.mbari.org/tethys/Xml/Sensor.xsd Tethys/Units http://okeanids.mbari.org/tethys/Xml/Units.xsd Tethys/Universal http://okeanids.mbari.org/tethys/Xml/Universal.xsd"Id="DockingTankTest"><Description>
1.) Wait timeout for loading in launcher. 2.) Turn on prop and arm for
docking. 3.) Wait timeout for either cable present or timeout. 4.) Cable
present == latch for timeout then release, back up and end mission. 5.)
No cable present == speed 0 and end mission. 6.) end mission == float up
at 0 speed
</Description><DefineArgName="MissionTimeout"><Description>
Maximum length of mission
</Description><Units:minute/><Value>15</Value></DefineArg><DefineArgName="Speed"><Description>
Thruster speed for docking.
</Description><Units:meter_per_second/><Value>1</Value></DefineArg><DefineArgName="LatchingSpeed"><Description>
Thruster speed while closing the latch (ideally slower) than docking.
</Description><Units:meter_per_second/><Value>0.5</Value></DefineArg><DefineOutputName="DockingDepth"><Description>
How deep in the tank do you want to swim?
</Description><Units:meter/><Value>1.22</Value></DefineOutput><DefineArgName="WaitForLoadTimeout"><Description>
Time to wait prior to turning on the prop.
</Description><Units:second/><Value>90</Value></DefineArg><DefineArgName="LaunchTimeout"><Description>
Time to wait with the prop on driving to the dock.
</Description><Units:second/><Value>70</Value></DefineArg><DefineArgName="LatchTimeout"><Description>
Time to wait before closing the latch after seeing the cable.
</Description><Units:second/><Value>10</Value></DefineArg><DefineArgName="LatchCloseTimeout"><Description>
Time to wait while the latch closes.
</Description><Units:second/><Value>10</Value></DefineArg><DefineArgName="DockTimeout"><Description>
Time to wait on the dock.
</Description><Units:second/><Value>15</Value></DefineArg><DefineArgName="DetachTimeout"><Description>
Time to wait while performing dock detach.
</Description><Units:second/><Value>7</Value></DefineArg><DefineArgName="FloatTimeout"><Description>
How long to wait for the vehicle to float to the surface.
</Description><Units:second/><Value>120</Value></DefineArg><DefineArgName="ElevatorDefault"><Description>
Static setting for elevator.
</Description><Units:degree/><Value>-4.0</Value></DefineArg><DefineArgName="RudderDefault"><Description>
Static setting for rudder.
</Description><Units:degree/><Value>3.0</Value></DefineArg><DefineOutputName="DiveMode"><Description>
Mission variable (don't change). The mission sets this variable to
switch between dive modes.
</Description><Units:count/><Value>0</Value></DefineOutput><DefineOutputName="DoingComms"><Description>
Mission variable (don't change). The mission will run in this to mode
when running surface comms.
</Description><Units:count/><Value>0</Value></DefineOutput><DefineOutputName="LatchSequence"><Description>
Mission variable (don't change). The mission will run in this mode to
initiate the debouncing latch sequence.
</Description><Units:count/><Value>1</Value></DefineOutput><DefineOutputName="ArmClose"><Description>
Mission variable (don't change). The mission will run in this mode when
surface comms are done to dive the vehicle to DVL bottom range.
</Description><Units:count/><Value>2</Value></DefineOutput><DefineOutputName="WaitOnDock"><Description>
Mission variable (don't change). The mission will run in this mode to
maintatin depth while the vehicle is latched on the dock.
</Description><Units:count/><Value>3</Value></DefineOutput><DefineOutputName="DetachFromDock"><Description>
Mission variable (don't change). The mission will run in this mode to
drift away from the dock after is unlatched.
</Description><Units:count/><Value>4</Value></DefineOutput><DefineOutputName="FloatUp"><Description>
Mission variable (don't change). The mission will run in this mode to
float back to the surface rather than drive.
</Description><Units:count/><Value>5</Value></DefineOutput><TimeoutDuration="MissionTimeout"/><AggregateId="TankDocking"><!-- Be neutral the entire time <Guidance:Buoyancy> <Parallel/> <Setting><Guidance:Buoyancy.position/><Control:VerticalControl.buoyancyNeutral/></Setting> </Guidance:Buoyancy> --><!-- set up the vertical control --><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.depth/><ArgName="DockingDepth"/></Setting><Setting><Guidance:Pitch.elevatorAngle/><ArgName="ElevatorDefault"/></Setting><Setting><Guidance:Pitch.massPosition/><Control:VerticalControl.massDefault/></Setting></Guidance:Pitch><!-- set up the horizontal control --><Guidance:Point><Parallel/><Setting><Guidance:Point.rudderAngle/><ArgName="RudderDefault"/></Setting></Guidance:Point><!-- Let's fire up the DockingServo component here just so it's ready to go --><ReadDataStrategy="MinError"><Parallel/><Dock:Dock.docking_state/></ReadData><!-- Start with the arm closed if it isn't already --><Assign><Sequence/><Dock:Dock.docking_state_cmd/><Units:enum/><Value>1</Value></Assign><AggregateId="LatchSequence"><Description>
Vehicle hit cable and now needs to debounce.
</Description><SyslogSeverity="Important">Initiating latching sequence. Waiting for debounce</Syslog><While><ArgName="DiveMode"/><Eq><ArgName="LatchSequence"/></Eq></While><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="Speed"/></Setting></Guidance:SetSpeed><AggregateId="dive"><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="LatchTimeout"/></Setting></Guidance:Wait><Assign><Sequence/><ArgName="DiveMode"/><ArgName="ArmClose"/></Assign></Aggregate></Aggregate><AggregateId="ArmClose"><Description>
Change speed and close arm.
</Description><SyslogSeverity="Important">Closing and changing speed.</Syslog><While><ArgName="DiveMode"/><Eq><ArgName="ArmClose"/></Eq></While><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="LatchingSpeed"/></Setting></Guidance:SetSpeed><!-- <Aggregate Id="dive">--><Assign><Sequence/><Dock:Dock.docking_state_cmd/><Units:enum/><Value>1</Value></Assign><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="LatchCloseTimeout"/></Setting></Guidance:Wait><AggregateId="assign"><When><Dock:Dock.dock_cable_present/><Eq><True/></Eq><And><Servo:DockingServo.armAngle/><Lt><Units:degree/><Value>-12</Value></Lt></And></When><SyslogSeverity="Important">Latch confirmed closed.</Syslog><Assign><Sequence/><ArgName="DiveMode"/><ArgName="WaitOnDock"/></Assign></Aggregate><!-- If we didn't change the mode above, let's detach --><SyslogSeverity="Important">Could not confirm latch closed. Detaching.</Syslog><Assign><Sequence/><ArgName="DiveMode"/><ArgName="DetachFromDock"/></Assign><!--</Aggregate>--></Aggregate><AggregateId="DockHold"><Description>
Wait on dock after vehicle latches.
</Description><SyslogSeverity="Important">Holding on dock.</Syslog><While><ArgName="DiveMode"/><Eq><ArgName="WaitOnDock"/></Eq></While><AggregateId="dive"><Assign><Sequence/><Dock:Dock.docking_state_cmd/><Units:enum/><Value>1</Value></Assign><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><Units:meter_per_second/><Value>0</Value></Setting></Guidance:SetSpeed><!-- <ReadData Id="PowerRedLights"> <Parallel/> <Sensor:PowerOnly.sampleLoad3/> </ReadData>--><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="DockTimeout"/></Setting></Guidance:Wait><Assign><Sequence/><ArgName="DiveMode"/><ArgName="DetachFromDock"/></Assign></Aggregate></Aggregate><AggregateId="Detach"><Description>
Reverse off the dock.
</Description><SyslogSeverity="Important">Detaching From Dock.</Syslog><While><ArgName="DiveMode"/><Eq><ArgName="DetachFromDock"/></Eq></While><AggregateId="dive"><!-- open to detach --><Assign><Sequence/><Dock:Dock.docking_state_cmd/><Units:enum/><Value>2</Value></Assign><!-- And reverse --><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><Units:meter_per_second/><Value>-1</Value></Setting></Guidance:SetSpeed><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="DetachTimeout"/></Setting></Guidance:Wait><Assign><Sequence/><ArgName="DiveMode"/><ArgName="FloatUp"/></Assign></Aggregate></Aggregate><AggregateId="Float Up"><While><ArgName="DiveMode"/><Eq><ArgName="FloatUp"/></Eq></While><SyslogSeverity="Important">Floating Up.</Syslog><!-- keep open while floating up --><Assign><Sequence/><Dock:Dock.docking_state_cmd/><Units:enum/><Value>2</Value></Assign><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><Control:VerticalControl.buoyancyDefault/></Setting></Guidance:Buoyancy><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="FloatTimeout"/></Setting></Guidance:Wait><Assign><Sequence/><ArgName="DiveMode"/><ArgName="DoingComms"/></Assign></Aggregate><AggregateId="Wait for loading"><SyslogSeverity="Info">Waiting to load for <ArgName="WaitForLoadTimeout"/><Units:second/></Syslog><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><Control:VerticalControl.buoyancyNeutral/></Setting></Guidance:Buoyancy><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="WaitForLoadTimeout"/></Setting></Guidance:Wait></Aggregate><AggregateId="LaunchAndDock"><TimeoutDuration="LaunchTimeout"><SyslogSeverity="Important">Timed out while driving to the dock.</Syslog></Timeout><Break><ArgName="DiveMode"/><Gt><ArgName="DoingComms"/></Gt></Break><SyslogSeverity="Info">Prop on and arming!</Syslog><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="Speed"/></Setting></Guidance:SetSpeed><!-- Arm the....arm. Hmm.... --><Assign><Sequence/><Dock:Dock.docking_state_cmd/><Units:enum/><Value>2</Value></Assign><AggregateId="Latch"><When><Dock:Dock.dock_cable_present/><Eq><True/></Eq><And><Not><ArgName="DiveMode"/><Eq><ArgName="LatchSequence"/></Eq></Not></And></When><Assign><Sequence/><ArgName="DiveMode"/><ArgName="LatchSequence"/></Assign></Aggregate><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="LaunchTimeout"/></Setting></Guidance:Wait></Aggregate><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="MissionTimeout"/></Setting></Guidance:Wait></Aggregate></Mission>