diff --git a/flatland/envs/agent_utils.py b/flatland/envs/agent_utils.py index 1f1bc1db065057a5ced1c917c5a24e2decebf2fa..05f81e43be3f33bfdfc81911d6cf6272bfba2d7e 100644 --- a/flatland/envs/agent_utils.py +++ b/flatland/envs/agent_utils.py @@ -1,6 +1,7 @@ from attr import attrs, attrib from itertools import starmap +import numpy as np # from flatland.envs.rail_env import RailEnv @@ -36,7 +37,18 @@ class EnvAgentStatic(object): return list(starmap(EnvAgentStatic, zip(positions, directions, targets))) def to_list(self): - return [self.position, self.direction, self.target] + + # I can't find an expression which works on both tuples, lists and ndarrays + # which converts them all to a list of native python ints. + lPos = self.position + if type(lPos) is np.ndarray: + lPos = lPos.tolist() + + lTarget = self.target + if type(lTarget) is np.ndarray: + lTarget = lTarget.tolist() + + return [lPos, int(self.direction), lTarget] @attrs diff --git a/flatland/envs/rail_env.py b/flatland/envs/rail_env.py index 33bf7bc358694f62068dab8b9c341047ea051a1f..749e5e01aa94e8ddb59d33d5787e3bd55d05f9eb 100644 --- a/flatland/envs/rail_env.py +++ b/flatland/envs/rail_env.py @@ -329,6 +329,11 @@ class RailEnv(Environment): grid_data = self.rail.grid.tolist() agent_static_data = [agent.to_list() for agent in self.agents_static] agent_data = [agent.to_list() for agent in self.agents] + + msgpack.packb(grid_data) + msgpack.packb(agent_data) + msgpack.packb(agent_static_data) + msg_data = { "grid": grid_data, "agents_static": agent_static_data,