Skip to content

Commit a3a4d3e

Browse files
committed
METS-R New Interface Progress
1 parent 8fb5c28 commit a3a4d3e

3 files changed

Lines changed: 42 additions & 18 deletions

File tree

src/scenic/simulators/metsr/client.py

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -93,29 +93,45 @@ def tick(self):
9393

9494
self.current_tick = res["TICK"]
9595

96-
def generate_trip(self, vehID, origin, destination):
97-
msg = {
98-
"TYPE": "CTRL_generateTrip",
99-
"vehID": vehID,
100-
"origin": origin,
101-
"destination": destination,
102-
}
96+
def generate_trip(self, vehID, origin=-1, destination=-1):
97+
msg = {"TYPE": "CTRL_generateTrip", "DATA": []}
98+
if not isinstance(vehID, list):
99+
vehID = [vehID]
100+
if not isinstance(origin, list):
101+
origin = [origin] * len(vehID)
102+
if not isinstance(destination, list):
103+
destination = [destination] * len(vehID)
104+
105+
assert (
106+
len(vehID) == len(origin) == len(destination)
107+
), "Length of vehID, origin, and destination must be the same"
108+
for vehID, origin, destination in zip(vehID, origin, destination):
109+
msg["DATA"].append(
110+
{"vehID": vehID, "vehType": True, "orig": origin, "dest": destination}
111+
)
103112

104113
res = self.send_receive_msg(msg, ignore_heartbeats=True)
105114

106115
assert res["TYPE"] == "CTRL_generateTrip", res["TYPE"]
107116
assert res["CODE"] == "OK", res["CODE"]
117+
return res
108118

109-
def query_vehicle(self, vehID, private_veh=False, transform_coords=False):
110-
msg = {
111-
"TYPE": "QUERY_vehicle",
112-
"ID": vehID,
113-
"PRV": private_veh,
114-
"TRAN": transform_coords,
115-
}
119+
def query_vehicle(self, id=None, private_veh=False, transform_coords=False):
120+
msg = {"TYPE": "QUERY_vehicle"}
121+
if id is not None:
122+
msg["DATA"] = []
123+
if not isinstance(id, list):
124+
id = [id]
125+
if not isinstance(private_veh, list):
126+
private_veh = [private_veh] * len(id)
127+
if not isinstance(transform_coords, list):
128+
transform_coords = [transform_coords] * len(id)
129+
for veh_id, prv, tran in zip(id, private_veh, transform_coords):
130+
msg["DATA"].append(
131+
{"vehID": veh_id, "vehType": prv, "transformCoord": tran}
132+
)
116133

117134
res = self.send_receive_msg(msg, ignore_heartbeats=True)
118-
119135
assert res["TYPE"] == "ANS_vehicle", res["TYPE"]
120136
return res
121137

src/scenic/simulators/metsr/model.scenic

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ simulator METSRSimulator(
1414
map_name="Data.properties.CARLA",
1515
timestep=globalParameters.timestep,
1616
sim_timestep=globalParameters.simTimestep,
17+
verbose=True
1718
)
1819

1920
_DAY_MOD = 24*60*60

src/scenic/simulators/metsr/simulator.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99

1010
class METSRSimulator(Simulator):
11-
def __init__(self, host, port, map_name, timestep, sim_timestep):
11+
def __init__(self, host, port, map_name, timestep, sim_timestep, verbose=False):
1212
super().__init__()
13-
self.client = METSRClient(host=host, port=port)
13+
self.client = METSRClient(host=host, port=port, verbose=verbose)
1414

1515
self.map_name = map_name
1616
self.timestep = timestep
@@ -71,14 +71,21 @@ def step(self):
7171
for _ in range(self.sim_ticks_per):
7272
self.client.tick()
7373

74+
def updateObjects(self):
75+
obj_veh_ids = [self.getPrivateVehId(obj) for obj in self.objects]
76+
raw_veh_data = self.client.query_vehicle(obj_veh_ids, True, True)
77+
self.obj_data_cache = {obj: raw_veh_data[i] for i, obj in enumerate(self.objects)}
78+
super().updateObjects()
79+
self.obj_data_cache = None
80+
7481
def getProperties(self, obj, properties):
7582
call_kwargs = {
7683
"vehID": self.getPrivateVehId(obj),
7784
"private_veh": True,
7885
"transform_coords": True,
7986
}
8087

81-
raw_data = self.client.query_vehicle(**call_kwargs)
88+
raw_data = self.obj_data_cache[obj]
8289

8390
position = Vector(raw_data["x"], raw_data["y"], 0)
8491
speed = raw_data["speed"]

0 commit comments

Comments
 (0)