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/Engineering/hotBunk.xml:170:5
|
166 | aggregate Home {
167 | """
168 | Head towards the target.
169 | """
170 | break if ( Universal:acoustic_contact_range < ContactDistance )
| ^^^^^
171 | behavior Guidance:Pitch {
172 |
173 | run in parallel
174 |
|
Unexpected: `break`
One of the following is possible:
arguments
output
run
missionhotBunk{""" Home to target and, when within ContactDistance, perform a hockey stop (rudder hard over, speed 0) and wait for settle time to expire at ContactDepth. Ideally this mission would be used in conjunction with the scheduler in order to kick off another mission underwater once the settle time has expired. """# Define mission argumentsarguments{MissionTimeout=2hour""" Maximum length of mission """NeedCommsTime=60minute""" How often to surface for commumications """ContactLabel=9count""" The acoustic address of the asset to be tracked """ContactDepth=10meter""" The depth of the asset to be tracked """ContactDistance=50meter""" How close to get before stopping """TrackingUpdatePeriod=5second""" How long to wait between acoustic queries. """NumberOfPings=1count""" Number of pings requested each time. """Speed=1meter_per_second""" Vehicle speed. """MinAltitude=5meter""" Minimum height above the sea floor for the entire mission. """MaxDepth=205meter""" Maximum depth for the entire mission. """MinOffshore=2kilometer""" Minimum offshore distance for the entire mission. """SettleTime=10minute""" Wait this long to settle after stopping the prop """CenterLatitude=36.797degree""" The latitude of the center of the circle. Fill this in to specify a start position, it will be overwritten once the vehicle receives an acoustic signal from the contact. """CenterLongitude=-121.847degree""" The longitude of the center of the circle. Fill this in to specify a start position, it will be overwritten once the vehicle receives an acoustic signal from the contact. """CircleRadius=25meter""" Radius of circle around acoustic contact during wait time """CircleMaxError=10meter""" If this distance away from the circle, drive straight towards (or away from the center). Otherwise, try to reduce distance from the ideal circle. """CircleTurnToPort=false""" If true, vehicle turns to the left around the center point. If false, vehicle turns to the right. """}# Internal variables that you should not changeoutput{CenterTouched=false""" Flag to indicate center lon/lat was updated. """}# Mission timeouttimeoutduration=MissionTimeoutinsertInsert/Science.xml{""" Most missions will run the science sensors. If you don't place this aggregate above NeedComms, science instruments get turned off on the last upcast and while floating on the surface. """}# Safety nets and surfacing behaviorsinsertInsert/StandardEnvelopes.xmlassigninsequenceStandardEnvelopes:MinAltitude=MinAltitudeassigninsequenceStandardEnvelopes:MaxDepth=MaxDepthassigninsequenceStandardEnvelopes:MinOffshore=MinOffshoreinsertInsert/NeedComms.xmlid="NeedComms"assigninsequenceNeedComms:DiveInterval=NeedCommsTimeassigninsequenceNeedComms:WaitForPitchUp=0minute# Add track acoustic contact directive high in the stack.behaviorEstimation:TrackAcousticContact{runinparallelsetEstimation:TrackAcousticContact.contactLabelSetting=ContactLabelsetEstimation:TrackAcousticContact.contactDepthSetting=ContactDepthsetEstimation:TrackAcousticContact.numberOfSamplesSetting=NumberOfPingssetEstimation:TrackAcousticContact.updatePeriodSetting=TrackingUpdatePeriod}aggregateUpdateCenter{runwhen(elapsed(Estimation:TrackAcousticContact.range_to_contact)<elapsed(CenterTouched))assigninsequenceCenterLatitude=Estimation:TrackAcousticContact.contact_latitudeassigninsequenceCenterLongitude=Estimation:TrackAcousticContact.contact_longitudeassigninsequenceCenterTouched=true}# Start mission sequence.aggregateHome{""" Head towards the target. """breakif(Universal:acoustic_contact_range<ContactDistance)behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.massPosition=Control:VerticalControl.massDefault}behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=Control:VerticalControl.buoyancyNeutral}behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=Speed}behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.depth=ContactDepth}behaviorGuidance:Circle{runinparallelsetGuidance:Circle.latitude=CenterLatitudesetGuidance:Circle.longitude=CenterLongitudesetGuidance:Circle.radius=CircleRadiussetGuidance:Circle.maxError=CircleMaxErrorsetGuidance:Circle.turnToPort=CircleTurnToPort}}aggregateHockey_Stop{syslogimportant"Hockey stop! Range: "+Universal:acoustic_contact_range~meterbehaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=0meter_per_second}behaviorGuidance:Point{runinparallelsetGuidance:Point.rudderAngle=13degree}behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.depth=ContactDepth}behaviorGuidance:Wait{runinsequencesetGuidance:Wait.duration=SettleTime}}}
<?xml version="1.0" encoding="UTF-8"?><Missionxmlns="Tethys"xmlns:Estimation="Tethys/Estimation"xmlns:Guidance="Tethys/Guidance"xmlns:Units="Tethys/Units"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="Tethys http://okeanids.mbari.org/tethys/Xml/Tethys.xsd Tethys/Dock http://okeanids.mbari.org/tethys/Xml/Dock.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"Id="hotBunk"><Description>
Home to target and, when within ContactDistance, perform a hockey stop (rudder hard over, speed 0) and
wait for settle time to expire at ContactDepth. Ideally this mission would be used in conjunction with
the scheduler in order to kick off another mission underwater once the settle time has expired.
</Description><!-- Define mission arguments --><DefineArgName="MissionTimeout"><Description>
Maximum length of mission
</Description><Units:hour/><Value>2</Value></DefineArg><DefineArgName="NeedCommsTime"><Description>
How often to surface for commumications
</Description><Units:minute/><Value>60</Value></DefineArg><DefineArgName="ContactLabel"><Description>
The acoustic address of the asset to be tracked
</Description><Units:count/><Value>9</Value></DefineArg><DefineArgName="ContactDepth"><Description>
The depth of the asset to be tracked
</Description><Units:meter/><Value>10</Value></DefineArg><DefineArgName="ContactDistance"><Description>
How close to get before stopping
</Description><Units:meter/><Value>50</Value></DefineArg><DefineArgName="TrackingUpdatePeriod"><Description>
How long to wait between acoustic queries.
</Description><Units:second/><Value>5</Value></DefineArg><DefineArgName="NumberOfPings"><Description>
Number of pings requested each time.
</Description><Units:count/><Value>1</Value></DefineArg><DefineArgName="Speed"><Description>
Vehicle speed.
</Description><Units:meter_per_second/><Value>1</Value></DefineArg><DefineArgName="MinAltitude"><Description>
Minimum height above the sea floor for the entire mission.
</Description><Units:meter/><Value>5</Value></DefineArg><DefineArgName="MaxDepth"><Description>
Maximum depth for the entire mission.
</Description><Units:meter/><Value>205</Value></DefineArg><DefineArgName="MinOffshore"><Description>
Minimum offshore distance for the entire mission.
</Description><Units:kilometer/><Value>2</Value></DefineArg><DefineArgName="SettleTime"><Description>
Wait this long to settle after stopping the prop
</Description><Units:minute/><Value>10</Value></DefineArg><DefineArgName="CenterLatitude"><Description>
The latitude of the center of the circle. Fill this in to specify a
start position, it will be overwritten once the vehicle receives an
acoustic signal from the contact.
</Description><Units:degree/><Value>36.797</Value></DefineArg><DefineArgName="CenterLongitude"><Description>
The longitude of the center of the circle. Fill this in to specify a
start position, it will be overwritten once the vehicle receives an
acoustic signal from the contact.
</Description><Units:degree/><Value>-121.847</Value></DefineArg><DefineArgName="CircleRadius"><Description>
Radius of circle around acoustic contact during wait time
</Description><Units:meter/><Value>25</Value></DefineArg><DefineArgName="CircleMaxError"><Description>
If this distance away from the circle, drive straight towards (or away
from the center). Otherwise, try to reduce distance from the ideal
circle.
</Description><Units:meter/><Value>10</Value></DefineArg><DefineArgName="CircleTurnToPort"><Description>
If true, vehicle turns to the left around the center point. If false,
vehicle turns to the right.
</Description><False/></DefineArg><!-- Internal variables that you should not change --><DefineOutputName="CenterTouched"><Description>
Flag to indicate center lon/lat was updated.
</Description><False/></DefineOutput><!-- Mission timeout --><TimeoutDuration="MissionTimeout"/><InsertFilename="Insert/Science.xml"><Description>
Most missions will run the science sensors. If you don't place this
aggregate above NeedComms, science instruments get turned off on the
last upcast and while floating on the surface.
</Description></Insert><!-- Safety nets and surfacing behaviors --><InsertFilename="Insert/StandardEnvelopes.xml"/><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/NeedComms.xml"Id="NeedComms"/><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsTime"/></Assign><Assign><Sequence/><ArgName="NeedComms:WaitForPitchUp"/><Units:minute/><Value>0</Value></Assign><!-- Add track acoustic contact directive high in the stack. --><Estimation:TrackAcousticContact><Parallel/><Setting><Estimation:TrackAcousticContact.contactLabelSetting/><ArgName="ContactLabel"/></Setting><Setting><Estimation:TrackAcousticContact.contactDepthSetting/><ArgName="ContactDepth"/></Setting><Setting><Estimation:TrackAcousticContact.numberOfSamplesSetting/><ArgName="NumberOfPings"/></Setting><Setting><Estimation:TrackAcousticContact.updatePeriodSetting/><ArgName="TrackingUpdatePeriod"/></Setting></Estimation:TrackAcousticContact><AggregateId="UpdateCenter"><When><Elapsed><Estimation:TrackAcousticContact.range_to_contact/></Elapsed><Lt><Elapsed><ArgName="CenterTouched"/></Elapsed></Lt></When><Assign><Sequence/><ArgName="CenterLatitude"/><Estimation:TrackAcousticContact.contact_latitude/></Assign><Assign><Sequence/><ArgName="CenterLongitude"/><Estimation:TrackAcousticContact.contact_longitude/></Assign><Assign><Sequence/><ArgName="CenterTouched"/><True/></Assign></Aggregate><!-- Start mission sequence. --><AggregateId="Home"><Description>
Head towards the target.
</Description><Break><Universal:acoustic_contact_range/><Lt><ArgName="ContactDistance"/></Lt></Break><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.massPosition/><Control:VerticalControl.massDefault/></Setting></Guidance:Pitch><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><Control:VerticalControl.buoyancyNeutral/></Setting></Guidance:Buoyancy><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="Speed"/></Setting></Guidance:SetSpeed><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.depth/><ArgName="ContactDepth"/></Setting></Guidance:Pitch><Guidance:Circle><Parallel/><Setting><Guidance:Circle.latitude/><ArgName="CenterLatitude"/></Setting><Setting><Guidance:Circle.longitude/><ArgName="CenterLongitude"/></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><AggregateId="Hockey Stop"><SyslogSeverity="Important">Hockey stop! Range: <Universal:acoustic_contact_range/><Units:meter/></Syslog><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><Units:meter_per_second/><Value>0</Value></Setting></Guidance:SetSpeed><Guidance:Point><Parallel/><Setting><Guidance:Point.rudderAngle/><Units:degree/><Value>13</Value></Setting></Guidance:Point><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.depth/><ArgName="ContactDepth"/></Setting></Guidance:Pitch><Guidance:Wait><Sequence/><Setting><Guidance:Wait.duration/><ArgName="SettleTime"/></Setting></Guidance:Wait></Aggregate></Mission>