RLPark 1.0.0
Reinforcement Learning Framework in Java

CritterbotEnvironment.java

Go to the documentation of this file.
00001 package rlpark.plugin.critterbot.environment;
00002 
00003 import java.awt.Color;
00004 
00005 import rlpark.plugin.critterbot.CritterbotProblem;
00006 import rlpark.plugin.critterbot.actions.CritterbotAction;
00007 import rlpark.plugin.critterbot.data.CritterbotLabels;
00008 import rlpark.plugin.critterbot.data.CritterbotLabels.LedMode;
00009 import rlpark.plugin.critterbot.data.CritterbotObservation;
00010 import rlpark.plugin.critterbot.internal.CritterbotConnection;
00011 import rlpark.plugin.rltoys.envio.actions.Action;
00012 import rlpark.plugin.rltoys.envio.observations.Legend;
00013 import rlpark.plugin.rltoys.envio.observations.ObsFilter;
00014 import rlpark.plugin.robot.helpers.RobotEnvironment;
00015 import rlpark.plugin.robot.observations.ObservationReceiver;
00016 import zephyr.plugin.core.api.monitoring.abstracts.DataMonitor;
00017 import zephyr.plugin.core.api.monitoring.abstracts.MonitorContainer;
00018 
00019 public class CritterbotEnvironment extends RobotEnvironment implements CritterbotProblem, MonitorContainer {
00020   protected CritterbotAction agentAction;
00021   private LedMode ledMode = LedMode.BUSY;
00022   private final Color[] ledValues = new Color[CritterbotLabels.NbLeds];
00023   protected final CritterbotConnection critterbotConnection;
00024 
00025   protected CritterbotEnvironment(ObservationReceiver receiver) {
00026     super(receiver, false);
00027     critterbotConnection = (CritterbotConnection) receiver();
00028   }
00029 
00030   @Override
00031   public Legend legend() {
00032     return critterbotConnection.legend();
00033   }
00034 
00035   public void sendAction(CritterbotAction action) {
00036     agentAction = action;
00037     if (action != null)
00038       critterbotConnection.sendActionDrop(action, ledMode, ledValues);
00039     ledMode = LedMode.CLEAR;
00040   }
00041 
00042   public void setLed(Color[] colors) {
00043     setLedMode(LedMode.CUSTOM);
00044     System.arraycopy(colors, 0, ledValues, 0, ledValues.length);
00045   }
00046 
00047   public void setLedMode(LedMode ledMode) {
00048     this.ledMode = ledMode;
00049   }
00050 
00051   public CritterbotObservation getCritterbotObservation(double[] obs) {
00052     return getCritterbotObservation(System.currentTimeMillis(), obs);
00053   }
00054 
00055   public CritterbotObservation getCritterbotObservation(long time, double[] obs) {
00056     return new CritterbotObservation(legend(), time, obs);
00057   }
00058 
00059   public ObsFilter getDefaultFilter() {
00060     return CritterbotLabels.newDefaultFilter(legend());
00061   }
00062 
00063   @Override
00064   public void addToMonitor(DataMonitor monitor) {
00065     CritterbotEnvironments.addObservationsLogged(this, monitor);
00066     CritterbotEnvironments.addActionsLogged(this, monitor);
00067   }
00068 
00069   public void sendAction(Action a) {
00070     sendAction((CritterbotAction) a);
00071   }
00072 
00073   @Override
00074   public CritterbotAction lastAction() {
00075     return agentAction;
00076   }
00077 
00078   @Override
00079   public void close() {
00080     super.close();
00081   }
00082 
00083   @Override
00084   public boolean isClosed() {
00085     return super.isClosed();
00086   }
00087 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark