<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>avoid_obstacles/controllers/ModelLearner/Makefile</filename>
    </added>
    <added>
      <filename>avoid_obstacles/controllers/ModelLearner/ModelLearner.java</filename>
    </added>
    <added>
      <filename>avoid_obstacles/controllers/ModelLearner/modelActions.csv</filename>
    </added>
    <added>
      <filename>avoid_obstacles/controllers/ModelLearner/modelActions.txt</filename>
    </added>
    <added>
      <filename>avoid_obstacles/worlds/model_learner.wbt</filename>
    </added>
    <added>
      <filename>avoid_obstacles/worlds/model_learner1.wbt</filename>
    </added>
    <added>
      <filename>avoid_obstacles/worlds/textures/floor.png</filename>
    </added>
    <added>
      <filename>avoid_obstacles/worlds/textures/lightwood.png</filename>
    </added>
    <added>
      <filename>avoid_obstacles/worlds/textures/stone-2.png</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -4,3 +4,4 @@
 *.svn*
 .project
 .classpath
+*~</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -37,10 +37,12 @@ public class AvoidSupervisor extends Supervisor {
 	static int TIMESTEP = 32;
 	
 	// number of episodes
-	static int EPISODES = 2;
+	static int EPISODES = 5;
 	
 	// duration of episode
-	static int MAXSTEPS = 100000;
+	static int MAXSTEPS = 10;
+	
+	static int nosteps = 0;
 	
 	// robot IDs
 	Node robot[] = new Node[ROBOTS];
@@ -61,9 +63,6 @@ public class AvoidSupervisor extends Supervisor {
 	    	initialPosition = robotTranslation[i].getSFVec3f(); 
 	    }
 
-	    /* run an empty step in order to update the world with the imported node */
-	    step(0);
-	    
 	    emitter = getEmitter(&quot;emitter&quot;);	    
 	    receiver = getReceiver(&quot;receiver&quot;);
 	    receiver.enable(TIMESTEP);
@@ -78,37 +77,48 @@ public class AvoidSupervisor extends Supervisor {
 		return false;
 	}
 	
-	public void run() {
+	public void STEP() {
+		// System.out.println(&quot;SUPER: Calling step() function&quot; + nosteps++);
+		step(TIMESTEP);
+		// System.out.println(&quot;SUPER: Out of step() function&quot; + nosteps);
+	}
+	
+	public void run() {	
+		System.out.println(&quot;SUPERVISOR-RUN&quot;);
+		STEP();
+		
 		Message msg = new MessageAgentInit(&quot;&quot;);
 		try {
 			msg.send(emitter);
-			step(TIMESTEP);
-			step(TIMESTEP);
+			STEP();
 
 			for (int episode = 0; episode &lt; EPISODES; episode++) {
+				System.out.println(episode + &quot;Episode \n&quot;);
+				
 				for (int i = 0; i &lt; ROBOTS; i++)
 					robotTranslation[i].setSFVec3f(initialPosition);
 
-				System.out.println(episode + &quot;SENDING START\n&quot;);
+
+				System.out.println(&quot;Sending AGENT-START&quot;);
 				msg = new MessageAgentStart();
 				msg.send(emitter);
-				step(TIMESTEP);
-				step(TIMESTEP);
+				STEP();
 
 				for (int step = 0; step &lt; MAXSTEPS; step++) {
-					// System.out.println(episode + &quot;/STEP &quot; + step);
+					System.out.println(episode + &quot;/STEP &quot; + step);
 
 					msg = new MessageAgentStep(0);
 					msg.send(emitter);
 
-					step(TIMESTEP);
-					step(TIMESTEP);
+					STEP();
 				}
-
+				
+				System.out.println(&quot;Sending AGENT-END&quot;);
 				msg = new MessageAgentEnd(MAXSTEPS);
 				msg.send(emitter);
-				step(TIMESTEP);
-				step(TIMESTEP);
+				STEP();
+				// STEP();
+				
 			}
 		} catch (Exception e) {
 			System.out.println(&quot;Error!!!&quot;);</diff>
      <filename>avoid_obstacles/controllers/AvoidSupervisor/AvoidSupervisor.java</filename>
    </modified>
    <modified>
      <diff>@@ -16,14 +16,16 @@ public class Learner extends Controller {
 		System.out.println(&quot;Starting webot agent.&quot;);
 		AvoiderLearner robot = new AvoiderLearner();
 
-		for (;;) {			
+		for (int i = 0; i &gt;= 0; i++) {			
 			try {
 				robot.senseAct();
 			} catch (Exception e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
 			}
+			// System.out.println(&quot;CLIENT: Calling &quot; + i);
 			robot.step(AvoiderLearner.TIMESTEP);
+			// System.out.println(&quot;CLIENT: Out of &quot; + i);
 		}
 
 	}</diff>
      <filename>avoid_obstacles/controllers/Learner/Learner.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,7 @@
 package epuck;
 
-import learners.SarsaLearner;
+import learners.EpisodicSarsaLearner;
+import rrl.Learner;
 import rrl.State;
 import tableModel.DeterministicQTable;
 import webotsRL.Message;
@@ -43,24 +44,28 @@ public class AvoiderLearner extends DifferentialWheels {
 	Receiver receiver;
 	Emitter emitter;
 	
-	static SarsaLearner learner;
+	static Learner learner;
 	static int previousLeftSpeed, previousRightSpeed;
 
 	public AvoiderLearner() {
+		System.out.println(&quot;INITALiZATION!!!&quot;);
 		rrl.TaskDescription.environment = new EpuckEnvironment();
 		String text = new String();
 		
-		camera = getCamera(&quot;camera&quot;);
-		camera.enable(5*TIMESTEP);
+		accelerometer = getAccelerometer(&quot;accelerometer&quot;);
+		accelerometer.enable(TIMESTEP);
+		
+//		camera = getCamera(&quot;camera&quot;);
+//		camera.enable(5*TIMESTEP);
 		receiver = getReceiver(&quot;receiver&quot;);
 		
-		touchSensor = getTouchSensor(&quot;touch_sensor&quot;);
-		touchSensor.enable(TIMESTEP);
+//		touchSensor = getTouchSensor(&quot;touch_sensor&quot;);
+//		touchSensor.enable(TIMESTEP);
 		
 		receiver = getReceiver(&quot;receiver&quot;);
 		receiver.enable(TIMESTEP);
 		
-		emitter = getEmitter(&quot;emitter)&quot;);
+		emitter = getEmitter(&quot;emitter&quot;);
 		
 		for (int i = 0; i &lt; NB_DIST_SENS; i++) {
 			text = String.format(&quot;ps%d&quot;, i);
@@ -83,17 +88,17 @@ public class AvoiderLearner extends DifferentialWheels {
 
 	}
 	
-
-	public static void agent_init() {
+	public void agent_init() {
+		System.out.println(&quot;Agent INIT Received&quot;);
 		//System.out.println(&quot;Size of qtable &quot; + getStateSpaceSize() + &quot;x&quot; + getActionSpaceSize());
 		// learner = new EpisodicSarsaLearner(new DeterministicQTable(getStateSpaceSize(), getActionSpaceSize()));
-		// learner = new EpisodicSarsaLearner(new DeterministicQTable(343, 14));
+		learner = new EpisodicSarsaLearner(new DeterministicQTable(400, 100));
 		
-		learner = new SarsaLearner(new DeterministicQTable(343, 14));
+		// learner = new SarsaLearner(new DeterministicQTable(400, 100));
 		//learner = new SarsaLearner(new TabularModel());
 		// learner = new SarsaLearner(new TabularModel());
 
-		learner.agent_init();
+		learner.agentInit();
 	}
 
 	public void executeAction(EpuckAction action) {
@@ -108,8 +113,8 @@ public class AvoiderLearner extends DifferentialWheels {
 		double[] av = accelerometer.getValues(); 
 		double acceleration = getAcceleration(av[0], av[1], av[2]);
 		
-//		System.out.println(&quot;Acceleration &quot; + acceleration);
-		
+		System.out.println(&quot;Acceleration &quot; + acceleration);
+//		
 		return acceleration &gt; 10;
 	}
 	
@@ -127,17 +132,20 @@ public class AvoiderLearner extends DifferentialWheels {
 	}
 	
 	public void agent_start() {
+		System.out.println(&quot;AGENT-START received&quot;);
 		//Choose and return the agent's first action
 		State state = new EpuckState(this);
 		previousLeftSpeed = previousRightSpeed = 0;
 
-		rrl.Action action = learner.agent_start(state);
+		rrl.Action action = learner.agentStart(state);
 		EpuckAction ca = (EpuckAction) action;
 
 		executeAction(ca);
 	}
 
 	public void agent_step(double r) {
+		System.out.println(&quot;AGENT-STEP received&quot;);
+		
 		if (collisionOccured()) {
 			System.out.println(&quot;COLLISION&quot;);
 			r -= 100;
@@ -148,23 +156,27 @@ public class AvoiderLearner extends DifferentialWheels {
 		// sense-act cycle
 		State state = new EpuckState(this);
 		
-		rrl.Action action = learner.agent_step(r, state);
+		rrl.Action action = learner.agentStep(r, state);
 		EpuckAction ca = (EpuckAction) action;
 
 		executeAction(ca);
 	}
 
 	public void agent_end(double r) {
+		System.out.println(&quot;AGENT-END received&quot;);
+		System.out.flush();
+		step(0);
+		
 		r += getReward();
-		learner.agent_end(r);
+		learner.agentEnd(r);
 	}
 
 	public void agent_cleanup() {
-		learner.agent_cleanup();
+		learner.agentCleanup();
 	}
 
 	public void agent_freeze() {
-		learner.agent_freeze();
+		learner.agentFreeze();
 	}
 
 	public String agent_message(String theMessage) {
@@ -174,6 +186,7 @@ public class AvoiderLearner extends DifferentialWheels {
 	public void senseAct() throws Exception {
 		if (receiver.getQueueLength() &gt; 0)  {
 			Message msg = new MessageParser(receiver.getData()).getBody();
+			receiver.nextPacket();
 			
 			switch (msg.header) {
 			case Messages.MESSAGE_AGENT_CLEANUP:
@@ -206,7 +219,8 @@ public class AvoiderLearner extends DifferentialWheels {
 				break;
 			}		
 		}
-		
-		step(TIMESTEP);
+		else
+			System.out.println(&quot;NO DATA RECEIVED!&quot;);
 	}
+	
 }</diff>
      <filename>avoid_obstacles/controllers/Learner/epuck/AvoiderLearner.java</filename>
    </modified>
    <modified>
      <diff>@@ -26,7 +26,7 @@ public class EpuckEnvironment extends tableModel.TableEnvironment implements Ser
 	public static EpuckAction[] actions;
 	
 	public EpuckEnvironment() {
-		int RESOLUTION = 50;
+		int RESOLUTION = 100;
 		int START = 0;
 		int END = 1000;
 		
@@ -45,6 +45,8 @@ public class EpuckEnvironment extends tableModel.TableEnvironment implements Ser
 			
 			rSpeed += RESOLUTION;
 		}
+		
+		System.out.println(&quot;Number of actions &quot; + k);
 	}
 	
 	public Action chooseRandomAction(State state) {</diff>
      <filename>avoid_obstacles/controllers/Learner/epuck/EpuckEnvironment.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,4 @@
-#VRML_SIM V5.0 utf8
-#000000
-#!mainWindow: 0 0 0.5 0.750501
-#!sceneTreeWindow: 0.472857 0.0911824 0.435714 0.37976 0.1
-#!logWindow: 0.523571 0.352705 0.472143 0.608216
-#!robotWindow: &quot;e-puck&quot; 0.551429 0.109218 0.29 0.259519 1
-
+#VRML_SIM V6.0 utf8
 WorldInfo {
   info [
     &quot;Author: fabien.rohrer@epfl.ch&quot;
@@ -175,17 +169,6 @@ DEF WALL Solid {
   }
   locked TRUE
 }
-Supervisor {
-  children [
-    Receiver {
-      name &quot;receiver&quot;
-    }
-    Emitter {
-      name &quot;emitter&quot;
-    }
-  ]
-  controller &quot;Supervisor&quot;
-}
 epuck_obstacle {
   translation 0.0361483 0.025 0.0822249
 }
@@ -218,3 +201,14 @@ DEF E_PUCK epuck_emitter_receiver {
   rotation -1.93909e-05 1 0.000200911 -1.23578
   controller &quot;Learner&quot;
 }
+Supervisor {
+  children [
+    Receiver {
+      name &quot;receiver&quot;
+    }
+    Emitter {
+      name &quot;emitter&quot;
+    }
+  ]
+  controller &quot;AvoidSupervisor&quot;
+}</diff>
      <filename>avoid_obstacles/worlds/avoid_obstacles.wbt</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>88385ef7739d0eabc5c860f0e7911e36133ef071</id>
    </parent>
  </parents>
  <author>
    <name>Stanislav Slusny</name>
    <email>slusnys@gmail.com</email>
  </author>
  <url>http://github.com/slusnys/webotsprojects/commit/9954eb4508e3b35aefca7df0dad91253f8d83c96</url>
  <id>9954eb4508e3b35aefca7df0dad91253f8d83c96</id>
  <committed-date>2009-02-19T05:41:19-08:00</committed-date>
  <authored-date>2009-02-19T05:41:19-08:00</authored-date>
  <message>Last chenges</message>
  <tree>148d3f8ed586466b986ced484978c05c91a0df69</tree>
  <committer>
    <name>Stanislav Slusny</name>
    <email>slusnys@gmail.com</email>
  </committer>
</commit>
