<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xmi:id="_9iVsMN3PEd6WKZI_ybAZEQ" name="Model">
  <packagedElement xmi:type="uml:StateMachine" xmi:id="_9jYOAN3PEd6WKZI_ybAZEQ" name="Searcher Robot">
    <region xmi:id="_9jYOAd3PEd6WKZI_ybAZEQ" name="Region">
      <subvertex xmi:type="uml:Pseudostate" xmi:id="_MNtUcN3QEd6WKZI_ybAZEQ" name="Initial"/>
      <subvertex xmi:type="uml:FinalState" xmi:id="_MohoMN3QEd6WKZI_ybAZEQ" name="Final"/>
      <subvertex xmi:type="uml:State" xmi:id="_PS2gcN3QEd6WKZI_ybAZEQ" name="Searching">
        <entry xmi:type="uml:Activity" xmi:id="_OXy6gN3dEd6WKZI_ybAZEQ" name="SearchingEntry">
          <eAnnotations xmi:id="_QprdkN3dEd6WKZI_ybAZEQ">
            <details xmi:id="_Q7Q80N3dEd6WKZI_ybAZEQ" value="LCD.clear();&#xD;&#xA;LCD.drawString(&quot;Searching!&quot;, 0, 2);&#xD;&#xA;LCD.refresh();&#xD;&#xA;Motor.C.setSpeed(300);&#xD;&#xA;Motor.C.resetTachoCount();&#xD;&#xA;Motor.C.forward();"/>
          </eAnnotations>
        </entry>
        <doActivity xmi:type="uml:Activity" xmi:id="_DZT0sN3SEd6WKZI_ybAZEQ" name="SearchingOutput">
          <eAnnotations xmi:id="_EYy7wN3SEd6WKZI_ybAZEQ">
            <details xmi:id="_Ex1G0N3SEd6WKZI_ybAZEQ" key="" value="LCD.clear();&#xD;&#xA;LCD.drawString(&quot;T: &quot; +Motor.C.getTachoCount(), 0, 2);&#xD;&#xA;LCD.refresh();&#xD;&#xA;if(Motor.C.getTachoCount() >= 900) {&#xD;&#xA;&#x9;Motor.C.backward();&#xD;&#xA;}&#xD;&#xA;else if(Motor.C.getTachoCount() &lt;= -900) {&#xD;&#xA;&#x9;Motor.C.forward();&#xD;&#xA;}"/>
          </eAnnotations>
        </doActivity>
      </subvertex>
      <subvertex xmi:type="uml:State" xmi:id="_SS6_MN3QEd6WKZI_ybAZEQ" name="Following">
        <entry xmi:type="uml:Activity" xmi:id="_HfuQcN3SEd6WKZI_ybAZEQ" name="FollowingEntry">
          <eAnnotations xmi:id="_HfuQcd3SEd6WKZI_ybAZEQ">
            <details xmi:id="_HfuQct3SEd6WKZI_ybAZEQ" value="LCD.clear();&#xD;&#xA;    &#x9;LCD.drawString(&quot;Following!&quot;, 0, 2);&#xD;&#xA;    &#x9;LCD.refresh();&#xD;&#xA;    &#x9;&#xD;&#xA;    &#x9;// Move to right position&#xD;&#xA;Motor.C.stop();&#xD;&#xA;    &#x9;int rotation = Motor.C.getTachoCount();&#xD;&#xA;    &#x9;Motor.C.rotate(-rotation, true);&#xD;&#xA;    &#x9;&#xD;&#xA;    &#x9;int turn = (int) Math.abs(Math.round(rotation / 2.8));&#xD;&#xA;    &#x9;&#xD;&#xA;    &#x9;if(rotation &lt;  0) {&#xD;&#xA;    &#x9;&#x9;Motor.B.rotate(turn);&#xD;&#xA;    &#x9;} else {&#xD;&#xA;    &#x9;&#x9;Motor.A.rotate(turn);&#xD;&#xA;    &#x9;}&#xD;&#xA;    &#x9;&#xD;&#xA;    &#x9;Motor.A.setSpeed(100);&#xD;&#xA;    &#x9;Motor.B.setSpeed(100);&#xD;&#xA;    &#x9;Motor.A.forward();&#xD;&#xA;    &#x9;Motor.B.forward();"/>
          </eAnnotations>
        </entry>
        <doActivity xmi:type="uml:Activity" xmi:id="_DEqAEN3iEd6WKZI_ybAZEQ">
          <eAnnotations xmi:id="_DxM9AN3iEd6WKZI_ybAZEQ">
            <details xmi:id="_EJC1QN3iEd6WKZI_ybAZEQ" key="" value=""/>
          </eAnnotations>
        </doActivity>
      </subvertex>
      <subvertex xmi:type="uml:State" xmi:id="_S8zCoN3QEd6WKZI_ybAZEQ" name="Waiting">
        <entry xmi:type="uml:Activity" xmi:id="_HsruYN3SEd6WKZI_ybAZEQ">
          <eAnnotations xmi:id="_HsruYd3SEd6WKZI_ybAZEQ">
            <details xmi:id="_HsruYt3SEd6WKZI_ybAZEQ" value="LCD.clear();&#xD;&#xA;LCD.drawString(&quot;Waiting!&quot;, 0, 2);&#xD;&#xA;LCD.refresh();&#xD;&#xA;Motor.A.stop();&#xD;&#xA;Motor.B.stop();"/>
          </eAnnotations>
        </entry>
      </subvertex>
      <subvertex xmi:type="uml:State" xmi:id="_-reDgePaEd6HKZD-OeHsew" name="Stop">
        <entry xmi:type="uml:Activity" xmi:id="_oVJFQOPbEd6HKZD-OeHsew">
          <eAnnotations xmi:id="_o9OY8OPbEd6HKZD-OeHsew">
            <details xmi:id="_pZ1ccOPbEd6HKZD-OeHsew" value="Motor.C.stop();&#xD;&#xA;int rotation = Motor.C.getTachoCount();&#xD;&#xA;Motor.C.rotate(-rotation);"/>
          </eAnnotations>
        </entry>
      </subvertex>
      <transition xmi:id="_V0FY0N3QEd6WKZI_ybAZEQ" name="Start" target="_PS2gcN3QEd6WKZI_ybAZEQ" source="_MNtUcN3QEd6WKZI_ybAZEQ"/>
      <transition xmi:id="_WYu-AN3QEd6WKZI_ybAZEQ" name="FoundObject" guard="_-hQWEN3QEd6WKZI_ybAZEQ" target="_SS6_MN3QEd6WKZI_ybAZEQ" source="_PS2gcN3QEd6WKZI_ybAZEQ">
        <ownedRule xmi:id="_-hQWEN3QEd6WKZI_ybAZEQ" name="&lt;30"/>
        <trigger xmi:id="_8Dc24N3QEd6WKZI_ybAZEQ" name="distance"/>
      </transition>
      <transition xmi:id="_Wzj40N3QEd6WKZI_ybAZEQ" name="ReachedObject" guard="_DHs8wN3REd6WKZI_ybAZEQ" target="_S8zCoN3QEd6WKZI_ybAZEQ" source="_SS6_MN3QEd6WKZI_ybAZEQ">
        <ownedRule xmi:id="_DHs8wN3REd6WKZI_ybAZEQ" name="&lt;8"/>
        <trigger xmi:id="_BnSS4N3REd6WKZI_ybAZEQ" name="distance"/>
      </transition>
      <transition xmi:id="_XUfboN3QEd6WKZI_ybAZEQ" name="LostObject" guard="_HpYYMN3REd6WKZI_ybAZEQ" target="_PS2gcN3QEd6WKZI_ybAZEQ" source="_S8zCoN3QEd6WKZI_ybAZEQ">
        <ownedRule xmi:id="_HpYYMN3REd6WKZI_ybAZEQ" name=">30"/>
        <trigger xmi:id="_GHLloN3REd6WKZI_ybAZEQ" name="distance"/>
      </transition>
      <transition xmi:id="_YRvHAN3QEd6WKZI_ybAZEQ" name="WaitingAbort" guard="_MaZ3MN3REd6WKZI_ybAZEQ" target="_-reDgePaEd6HKZD-OeHsew" source="_S8zCoN3QEd6WKZI_ybAZEQ">
        <ownedRule xmi:id="_MaZ3MN3REd6WKZI_ybAZEQ" name="pressed"/>
        <trigger xmi:id="_KkrrsN3REd6WKZI_ybAZEQ" name="touch"/>
      </transition>
      <transition xmi:id="_PtjqAN3REd6WKZI_ybAZEQ" name="SearchingAbort" guard="_S-nLEN3REd6WKZI_ybAZEQ" target="_-reDgePaEd6HKZD-OeHsew" source="_PS2gcN3QEd6WKZI_ybAZEQ">
        <ownedRule xmi:id="_S-nLEN3REd6WKZI_ybAZEQ" name="pressed"/>
        <trigger xmi:id="_R2ynYN3REd6WKZI_ybAZEQ" name="touch"/>
      </transition>
      <transition xmi:id="_QTtEAN3REd6WKZI_ybAZEQ" name="FollowingAbort" guard="_UIhZcN3REd6WKZI_ybAZEQ" target="_-reDgePaEd6HKZD-OeHsew" source="_SS6_MN3QEd6WKZI_ybAZEQ">
        <ownedRule xmi:id="_UIhZcN3REd6WKZI_ybAZEQ" name="pressed"/>
        <trigger xmi:id="_VG9XoN3REd6WKZI_ybAZEQ" name="touch"/>
      </transition>
      <transition xmi:id="_p1NuYN3cEd6WKZI_ybAZEQ" source="_PS2gcN3QEd6WKZI_ybAZEQ"/>
      <transition xmi:id="_YDrsYd5eEd6qyYeGUD05fg" name="LostObjectWhileFollowing" guard="_2P7BgN5eEd6qyYeGUD05fg" target="_S8zCoN3QEd6WKZI_ybAZEQ" source="_SS6_MN3QEd6WKZI_ybAZEQ">
        <ownedRule xmi:id="_2P7BgN5eEd6qyYeGUD05fg" name=">30"/>
        <trigger xmi:id="_uSc0oN5eEd6qyYeGUD05fg" name="distance"/>
      </transition>
      <transition xmi:id="_d4YLcOPbEd6HKZD-OeHsew" guard="_kaYqcOPcEd6HKZD-OeHsew" target="_MohoMN3QEd6WKZI_ybAZEQ" source="_-reDgePaEd6HKZD-OeHsew">
        <ownedRule xmi:id="_kaYqcOPcEd6HKZD-OeHsew" name=">0"/>
        <trigger xmi:id="_iGHhwOPcEd6HKZD-OeHsew" name="distance"/>
      </transition>
    </region>
  </packagedElement>
  <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_9mgagN3PEd6WKZI_ybAZEQ" name="Integer"/>
  <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_9mgagd3PEd6WKZI_ybAZEQ" name="String"/>
  <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_9mgagt3PEd6WKZI_ybAZEQ" name="Boolean"/>
  <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_9mgag93PEd6WKZI_ybAZEQ" name="UnlimitedNatural"/>
  <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_9mgahN3PEd6WKZI_ybAZEQ" name="Time"/>
  <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_9mgahd3PEd6WKZI_ybAZEQ" name="Date"/>
  <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_9mgaht3PEd6WKZI_ybAZEQ" name="DateTime"/>
</uml:Model>
