Skip to content
Snippets Groups Projects
Commit b368afc9 authored by Theo Brockmann's avatar Theo Brockmann
Browse files

Update Gym_new.py

parent bc6a0e77
Branches
No related tags found
No related merge requests found
import asyncio import asyncio
import random import random
import json import json
from socket import socket
import websockets import websockets
#from ActionSpace import ActionSpace
import logging import logging
...@@ -13,28 +10,15 @@ class Gym: ...@@ -13,28 +10,15 @@ class Gym:
host = None host = None
port = None port = None
player = None player = None
families = None
types = None
protocols = None
logger = None logger = None
# Create a TCP/IP socket
sock = None
last_recieved_JSON = None
loop = None
maxaction = 5
#websocket = None
def __init__(self, host ='localhost', port =9080, player ="player1"): def __init__(self, host ='localhost', port =9080, player ="player1"):
self.host = host self.host = host
self.port = port self.port = port
self.player = player self.player = player
#self.loop = loop
random.seed() random.seed()
# self.families = self.get_constants('AF_')
# self.types = self.get_constants('SOCK_')
# self.protocols = self.get_constants('IPPROTO_')
self.logger = logging.getLogger('websockets') self.logger = logging.getLogger('websockets')
self.logger.setLevel(logging.INFO) self.logger.setLevel(logging.INFO)
self.logger.addHandler(logging.StreamHandler()) self.logger.addHandler(logging.StreamHandler())
...@@ -45,38 +29,21 @@ class Gym: ...@@ -45,38 +29,21 @@ class Gym:
async def reset(self, delta): async def reset(self, delta):
message = json.dumps([['reset'], delta], sort_keys=True, indent=4) message = json.dumps([['reset'], delta], sort_keys=True, indent=4)
data = [] data = []
#print('send_action:',message)
await self.send_websocket(message, data) await self.send_websocket(message, data)
test = json.loads(data[0]) test = json.loads(data[0])
# print(test)
# print(test[0])
# print(test[1])
reward = test[3] reward = test[3]
observation = test[0:3] observation = test[0:3]
done = test[4] done = test[4]
info = 0 info = 0
# print(data)
# print(data[0][0])
return observation, reward, done, info return observation, reward, done, info
# send action to env returns observation, reward, done, info # send action to env returns observation, reward, done, info
# creates JSON object # creates JSON object
async def step(self, action, delta): async def step(self, action, delta):
global maxaction global maxaction
# Test ob die Action im richtigen Bereich ist!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
test_message = [] test_message = []
if action.find("accelerate")!=-1:#(action>=0) and (action < maxaction): if action.find("accelerate")!=-1:
test_message.append( "accelerate") test_message.append( "accelerate")
#message = json.dumps({'action': action, 'delta': delta}, sort_keys=True, indent=4)
#message = json.dumps([action], sort_keys=True, indent=4)
#message2 = str(action)
#hier data aufteilen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#test = json.loads(data)
#print(test)
#x = data.split(',')
#print(x)
if action.find("left")!= -1: if action.find("left")!= -1:
test_message.append( "steer_left") test_message.append( "steer_left")
if action.find("right")!= -1: if action.find("right")!= -1:
...@@ -90,66 +57,26 @@ class Gym: ...@@ -90,66 +57,26 @@ class Gym:
if action.find("screen_off")!= -1: if action.find("screen_off")!= -1:
test_message.append("screen_off") test_message.append("screen_off")
else:
pass
#print("Action is not a valid Step")
message = json.dumps([test_message,delta], sort_keys=True, indent=4) message = json.dumps([test_message,delta], sort_keys=True, indent=4)
#message = json.dumps([action], sort_keys=True, indent=4)
data = [] data = []
#print('send_action:', message)
await self.send_websocket(message, data) await self.send_websocket(message, data)
#print("awaited send_action")
test = json.loads(data[0]) test = json.loads(data[0])
# print(test)
# print(test[0])
# print(test[1])
reward = test[3] reward = test[3]
observation = test[0:3] observation = test[0:3]
done = test[4] done = test[4]
info = test[5] info = test[5]
# print(data)
# print(data[0][0])
return observation, reward, done, info return observation, reward, done, info
""" Returns a random action of action space
"""
# Gibt jetzt eine Action zurück als Zahlenwert
def get_sample_action(self):
global maxaction
action = random.randrange(0, maxaction)
return action
# socket_echo_client_easy.py
# Wird jetzt nicht mehr benutzt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# async def send_action(self, next_action):
# message = '["' + next_action.name + '"]'
# data = []
# print('send_action:',message)
# await self.send_websocket(message, data)
# print("awaited send_action")
# print(data)
# return data
async def connect_websocket(self): async def connect_websocket(self):
print("creating Websocket ") print("creating Websocket ")
uri = "ws://localhost:9080" uri = "ws://localhost:9080"
self.websocket = await websockets.connect(uri) self.websocket = await websockets.connect(uri)
# async with websockets.connect(uri) as websocket:
# print("Websocket created ")
# self.websocket = websocket
async def send_websocket(self, message, data):
async def send_websocket(self, message, data):
await self.websocket.send(message) await self.websocket.send(message)
# print(f"> {name}")
data.append(await self.websocket.recv()) data.append(await self.websocket.recv())
#print(f"< {data}")
#print(data)
async def close_websocket(self): async def close_websocket(self):
await self.websocket.close() await self.websocket.close()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment