RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.critterbot.examples; 00002 00003 import rlpark.plugin.critterbot.actions.CritterbotAction; 00004 import rlpark.plugin.critterbot.actions.VoltageSpaceAction; 00005 import rlpark.plugin.critterbot.actions.XYThetaAction; 00006 import rlpark.plugin.critterbot.data.CritterbotLabels; 00007 import rlpark.plugin.critterbot.environment.CritterbotEnvironment; 00008 import rlpark.plugin.critterbot.environment.CritterbotSimulator; 00009 import rlpark.plugin.critterbot.environment.CritterbotSimulator.SimulatorCommand; 00010 import rlpark.plugin.rltoys.envio.observations.Legend; 00011 import zephyr.plugin.core.api.synchronization.Chrono; 00012 00013 public class CritterbotWithLatencyExample { 00014 final static public long Latency = 100; 00015 00016 public static void main(String[] args) { 00017 SimulatorCommand command = CritterbotSimulator.startSimulator(); 00018 CritterbotEnvironment environment = new CritterbotSimulator(command); 00019 Legend legend = environment.legend(); 00020 Chrono chrono = new Chrono(); 00021 while (!environment.isClosed()) { 00022 chrono.start(); 00023 double[] obs = environment.waitNewObs(); 00024 CritterbotAction action; 00025 if (obs[legend.indexOf(CritterbotLabels.IRDistance + "0")] > 128) 00026 action = new XYThetaAction(20, -20, 20); 00027 else 00028 action = new VoltageSpaceAction(20, -20, 20); 00029 environment.sendAction(action); 00030 long remainingTime = Latency - chrono.getCurrentMillis(); 00031 if (remainingTime > 0) 00032 try { 00033 Thread.sleep(remainingTime); 00034 } catch (InterruptedException e) { 00035 e.printStackTrace(); 00036 } 00037 } 00038 } 00039 }