RLPark 1.0.0
Reinforcement Learning Framework in Java

RobotEnvironment.java

Go to the documentation of this file.
00001 package rlpark.plugin.robot.helpers;
00002 
00003 
00004 import rlpark.plugin.robot.interfaces.RobotLive;
00005 import rlpark.plugin.robot.internal.sync.ObservationSynchronizer;
00006 import rlpark.plugin.robot.observations.ObservationReceiver;
00007 import rlpark.plugin.robot.observations.ObservationVersatile;
00008 import rlpark.plugin.robot.observations.ObservationVersatileArray;
00009 import zephyr.plugin.core.api.labels.Labeled;
00010 
00011 public abstract class RobotEnvironment implements RobotLive, Labeled {
00012   protected final ObservationSynchronizer obsSync;
00013   protected ObservationVersatile lastReceivedObsBuffer;
00014 
00015   public RobotEnvironment(ObservationReceiver receiver, boolean persistent) {
00016     obsSync = new ObservationSynchronizer(receiver, persistent);
00017   }
00018 
00019   public ObservationSynchronizer synchronizer() {
00020     return obsSync;
00021   }
00022 
00023   protected ObservationReceiver receiver() {
00024     return obsSync.receiver();
00025   }
00026 
00027   public double[] newObsNow() {
00028     ObservationVersatileArray rawObs = newRawObsNow();
00029     return rawObs != null ? rawObs.doubleValues() : null;
00030   }
00031 
00032   public ObservationVersatileArray newRawObsNow() {
00033     ObservationVersatileArray newObs = obsSync.newObsNow();
00034     if (newObs != null)
00035       lastReceivedObsBuffer = newObs.last();
00036     return newObs;
00037   }
00038 
00039   public double[] waitNewObs() {
00040     return waitNewRawObs().doubleValues();
00041   }
00042 
00043   @Override
00044   public ObservationVersatileArray waitNewRawObs() {
00045     ObservationVersatileArray observations = obsSync.waitNewObs();
00046     if (observations == null) {
00047       lastReceivedObsBuffer = null;
00048       // close(); JVM - removed this as it causes a lost observation to cause
00049       // more problems.
00050       return null;
00051     }
00052     if (observations.last() != null)
00053       lastReceivedObsBuffer = observations.last();
00054     return observations;
00055   }
00056 
00057   @Override
00058   public void close() {
00059     obsSync.terminate();
00060   }
00061 
00062   @Override
00063   public String label() {
00064     return getClass().getSimpleName();
00065   }
00066 
00067   public double[] lastReceivedObs() {
00068     return lastReceivedObsBuffer != null ? lastReceivedObsBuffer.doubleValues() : null;
00069   }
00070 
00071   @Override
00072   public ObservationVersatile lastReceivedRawObs() {
00073     return lastReceivedObsBuffer;
00074   }
00075 
00076   @Override
00077   public int observationPacketSize() {
00078     return receiver().packetSize();
00079   }
00080 
00081   public boolean isClosed() {
00082     return obsSync.isTerminated();
00083   }
00084 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark