Skip to content

Commit 419dcbe

Browse files
committed
Updated folder structure; version update to 0.2
1 parent 32b2e77 commit 419dcbe

File tree

6 files changed

+94
-146
lines changed

6 files changed

+94
-146
lines changed

alks_scenarios/cutin_scenario_generator.py

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ def __init__(self, result_dir: str | Path) -> None:
3535
dx0_min = 0
3636
dx0_max = 60
3737
# Varying values
38-
vy_step = 2.0
39-
dx0_step = 10
38+
vy_step = 3.0
39+
dx0_step = 20
4040
self._vy_values = np.arange(vy_min + vy_step, vy_max + vy_step, vy_step)
4141
self._dx0_values = np.arange(dx0_min, dx0_max + dx0_step, dx0_step)
4242

@@ -81,19 +81,7 @@ def _create_scenarios_of_plot_no(
8181
plot_no_result_dir = self._result_dir / f"plot_{plot_no:02d}"
8282
plot_no_result_dir.mkdir(exist_ok=True)
8383

84-
# Scenarios
85-
scenario_result_dir = plot_no_result_dir / "scenarios"
86-
scenario_result_dir.mkdir(exist_ok=True)
87-
88-
# Images
89-
scenario_image_dir = plot_no_result_dir / "images"
90-
if create_image:
91-
scenario_image_dir.mkdir(exist_ok=True)
92-
93-
# Gifs
94-
scenario_gif_dir = plot_no_result_dir / "gifs"
95-
if create_gif:
96-
scenario_gif_dir.mkdir(exist_ok=True)
84+
# Each scenario will get its own subfolder under the plot directory
9785

9886
vo0_kmh = ve0_kmh - dv0_kmh
9987
ve0 = ve0_kmh / 3.6
@@ -110,9 +98,7 @@ def _create_scenarios_of_plot_no(
11098
vy,
11199
ve0,
112100
vo0,
113-
scenario_result_dir,
114-
scenario_gif_dir,
115-
scenario_image_dir,
101+
plot_no_result_dir,
116102
create_gif=create_gif,
117103
create_image=create_image,
118104
create_openx=create_openx,
@@ -126,9 +112,7 @@ def _create_single_scenario(
126112
vy: float,
127113
ve0: float,
128114
vo0: float,
129-
scenario_result_dir: Path,
130-
scenario_gif_dir: Path,
131-
scenario_image_dir: Path,
115+
plot_no_result_dir: Path,
132116
create_gif: bool = False,
133117
create_image: bool = False,
134118
create_openx: bool = False,
@@ -197,36 +181,46 @@ def _create_single_scenario(
197181
check_feasibility=False,
198182
)
199183

200-
scenario_config_dir = scenario_result_dir / "configs"
184+
scenario_dir = plot_no_result_dir / scenario_name
185+
scenario_dir.mkdir(exist_ok=True)
186+
187+
scenario_config_dir = scenario_dir / "configs"
201188
scenario_config_dir.mkdir(exist_ok=True)
202189
scenario.save(scenario_config_dir)
203190

204191
if create_openx:
205-
scenario_result_dir_openx = scenario_result_dir / "openx"
206-
scenario_result_dir_openx.mkdir(exist_ok=True)
207-
scenario.save(scenario_result_dir_openx, mode="openx")
192+
scenario_openx_dir = scenario_dir / "openx"
193+
scenario_openx_dir.mkdir(exist_ok=True)
194+
scenario.save(scenario_openx_dir, mode="openx")
195+
if create_image or create_gif:
196+
scenario_image_dir = scenario_dir / "images"
197+
scenario_image_dir.mkdir(exist_ok=True)
208198
if create_image:
209199
scenario.render(scenario_image_dir, dpi=600)
210200
if create_gif:
211-
scenario.render_gif(scenario_gif_dir, dpi=600)
201+
scenario.render_gif(scenario_image_dir, dpi=600)
212202

213203

214204
def unpack_and_run(args_list: list) -> None:
215205
scenario_generator = CutInScenarioGenerator(args_list[0])
216206
scenario_generator.create_all_scenarios(
217-
only_plot_no=args_list[1], create_image=True, create_openx=True
207+
only_plot_no=args_list[1], create_image=args_list[2], create_openx=args_list[3], create_gif=args_list[4]
218208
)
219209

220210

221211
def generate_all_scenarios() -> None:
222212
result_dir = Path(__file__).parent / ".." / "results" / "annex3" / "cutin"
223213
result_dir.mkdir(exist_ok=True, parents=True)
214+
215+
create_image = True
216+
create_openx = True
217+
create_gif = False
224218

225-
n_plots_in_regulation = 1
219+
n_plots_in_regulation = 14 # Number of plots defined in the regulation
226220

227221
n_workers = n_plots_in_regulation
228222

229-
all_args_lists = [[result_dir, i + 1] for i in range(n_plots_in_regulation)]
223+
all_args_lists = [[result_dir, i + 1, create_image, create_openx, create_gif] for i in range(n_plots_in_regulation)]
230224

231225
if n_workers == 1:
232226
for arg_list in all_args_lists:

alks_scenarios/cutout_scenario_generator.py

Lines changed: 37 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from tqdm import tqdm
99

1010
from simple_scenario import Scenario, EgoConfiguration, Vehicle
11-
from simple_scenario.road import Road, StraightSegment
11+
from simple_scenario.road import SyntheticRoad, StraightSegment
1212

1313

1414
class CutOutScenarioGenerator:
@@ -134,19 +134,7 @@ def _create_scenarios_of_plot_no(
134134
plot_no_result_dir = self._result_dir / f"plot_{plot_no:02d}"
135135
plot_no_result_dir.mkdir(exist_ok=True)
136136

137-
# Scenarios
138-
scenario_result_dir = plot_no_result_dir / "scenarios"
139-
scenario_result_dir.mkdir(exist_ok=True)
140-
141-
# Images
142-
scenario_image_dir = plot_no_result_dir / "images"
143-
if create_image:
144-
scenario_image_dir.mkdir(exist_ok=True)
145-
146-
# Gifs
147-
scenario_gif_dir = plot_no_result_dir / "gifs"
148-
if create_gif:
149-
scenario_gif_dir.mkdir(exist_ok=True)
137+
# Each scenario will get its own subfolder under the plot directory
150138

151139
ve0 = ve0_kmh / 3.6
152140

@@ -160,9 +148,7 @@ def _create_scenarios_of_plot_no(
160148
vy=vy,
161149
ve0=ve0,
162150
plot_no=plot_no,
163-
scenario_result_dir=scenario_result_dir,
164-
scenario_gif_dir=scenario_gif_dir,
165-
scenario_image_dir=scenario_image_dir,
151+
plot_no_result_dir=plot_no_result_dir,
166152
create_gif=create_gif,
167153
create_image=create_image,
168154
create_openx=create_openx,
@@ -180,9 +166,7 @@ def _create_single_scenario( # noqa: PLR0912
180166
scenario_name: str | None = None,
181167
check_collision_feasibility: bool = True,
182168
plot_no: str | None = None,
183-
scenario_result_dir: str | Path | None = None,
184-
scenario_gif_dir: str | Path | None = None,
185-
scenario_image_dir: str | Path | None = None,
169+
plot_no_result_dir: str | Path | None = None,
186170
create_gif: bool = False,
187171
create_image: bool = False,
188172
create_openx: bool = False,
@@ -218,7 +202,7 @@ def _create_single_scenario( # noqa: PLR0912
218202
vy = self._lane_width / object_vehicle_lc_duration
219203
scenario_duration = np.ceil(object_vehicle_lc_duration) + 10
220204

221-
dummy_vehicle = Vehicle(0, 0, 0, 0, 0)
205+
dummy_vehicle = Vehicle(0)
222206
# Object vehicle
223207
dx0 = ve0 * self._thw0
224208
if dx0_ego_lead is not None:
@@ -230,10 +214,10 @@ def _create_single_scenario( # noqa: PLR0912
230214
vo0 = ve0
231215
object_vehicle = Vehicle(
232216
0,
233-
self._object_lanelet_id,
234-
object_vehicle_s0,
235-
object_vehicle_t0,
236-
vo0,
217+
start_lanelet_id=self._object_lanelet_id,
218+
start_s=object_vehicle_s0,
219+
start_t=object_vehicle_t0,
220+
v0=vo0,
237221
lc_direction=-1,
238222
lc_type="vy",
239223
lc_vy=vy,
@@ -242,20 +226,22 @@ def _create_single_scenario( # noqa: PLR0912
242226
# f vehicle (slow vehicle)
243227
f_vehicle_s0 = object_vehicle_s0 + dummy_vehicle.length + dx0_f
244228
f_vehicle_t0 = object_vehicle_t0
245-
f_vehicle = Vehicle(1, self._f_lanelet_id, f_vehicle_s0, f_vehicle_t0, vf0)
229+
f_vehicle = Vehicle(1, start_lanelet_id=self._f_lanelet_id, start_s=f_vehicle_s0, start_t=f_vehicle_t0, v0=vf0)
246230

247231
# Calculate road length
248232
ego_dist = ve0 * scenario_duration
249-
road_length = max(ego_dist, self._min_road_length) + self._ego_s0 + 100
233+
road_length = max(ego_dist, self._min_road_length) + self._ego_s0 + 110 # TODO: check length of object trajectory as well
250234
goal_position = max(
251235
self._ego_s0 + 0.75 * ego_dist,
252236
f_vehicle_s0 + vf0 * scenario_duration + dummy_vehicle.length,
253237
)
254-
road = Road(
238+
ego_configuration = EgoConfiguration(
239+
self._ego_lanelet_id, self._ego_s0, self._ego_t0, ve0, target_s=goal_position, target_t=0, target_lanelet_id=self._ego_lanelet_id
240+
)
241+
road = SyntheticRoad(
255242
self._n_lanes,
256243
self._lane_width,
257244
segments=[StraightSegment(road_length)],
258-
goal_position=goal_position,
259245
speed_limit=60,
260246
)
261247

@@ -278,38 +264,49 @@ def _create_single_scenario( # noqa: PLR0912
278264
if not scenario_is_feasible:
279265
return None
280266

281-
if scenario_result_dir is not None:
282-
scenario_config_dir = scenario_result_dir / "configs"
267+
if plot_no_result_dir is not None:
268+
scenario_dir = Path(plot_no_result_dir) / scenario_name
269+
scenario_dir.mkdir(exist_ok=True)
270+
271+
scenario_config_dir = scenario_dir / "configs"
283272
scenario_config_dir.mkdir(exist_ok=True)
284273
scenario.save(scenario_config_dir)
274+
285275
if create_openx:
286-
scenario_result_dir_openx = scenario_result_dir / "openx"
287-
scenario_result_dir_openx.mkdir(exist_ok=True)
288-
scenario.save(scenario_result_dir_openx, mode="openx")
289-
if scenario_image_dir is not None and create_image:
290-
scenario.render(scenario_image_dir, dpi=600)
291-
if scenario_gif_dir is not None and create_gif:
292-
scenario.render_gif(scenario_gif_dir, dpi=600)
276+
scenario_openx_dir = scenario_dir / "openx"
277+
scenario_openx_dir.mkdir(exist_ok=True)
278+
scenario.save(scenario_openx_dir, mode="openx")
279+
if create_image or create_gif:
280+
scenario_image_dir = scenario_dir / "images"
281+
scenario_image_dir.mkdir(exist_ok=True)
282+
if create_image:
283+
scenario.render(scenario_image_dir, dpi=600)
284+
if create_gif:
285+
scenario.render_gif(scenario_image_dir, dpi=600)
293286

294287
return scenario
295288

296289

297290
def unpack_and_run(args_list: list) -> None:
298291
scenario_generator = CutOutScenarioGenerator(args_list[0])
299292
scenario_generator.create_all_scenarios(
300-
only_plot_no=args_list[1], create_image=True, create_openx=True
293+
only_plot_no=args_list[1], create_image=args_list[2], create_openx=args_list[3], create_gif=args_list[4]
301294
)
302295

303296

304297
def generate_all_scenarios() -> None:
305298
result_dir = Path(__file__).parent / ".." / "results" / "annex3" / "cutout"
306299
result_dir.mkdir(exist_ok=True, parents=True)
307300

301+
create_image = True
302+
create_openx = True
303+
create_gif = False
304+
308305
n_plots_in_regulation = 6
309306

310307
n_workers = n_plots_in_regulation
311308

312-
all_args_lists = [[result_dir, i + 1] for i in range(n_plots_in_regulation)]
309+
all_args_lists = [[result_dir, i + 1, create_image, create_openx, create_gif] for i in range(n_plots_in_regulation)]
313310

314311
if n_workers == 1:
315312
for arg_list in all_args_lists:

alks_scenarios/deceleration_scenario_generator.py

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from tqdm import tqdm
1111

1212
from simple_scenario import Scenario, EgoConfiguration, Vehicle
13-
from simple_scenario.road import Road, StraightSegment
13+
from simple_scenario.road import SyntheticRoad, StraightSegment
1414

1515

1616
class DecelerationScenarioGenerator:
@@ -49,20 +49,7 @@ def create_all_scenarios(
4949
create_image: bool = False,
5050
create_gif: bool = False,
5151
) -> None:
52-
# Create folders
53-
# Scenarios
54-
scenario_result_dir = self._result_dir / "scenarios"
55-
scenario_result_dir.mkdir(exist_ok=True)
56-
57-
# Images
58-
scenario_image_dir = self._result_dir / "images"
59-
if create_image:
60-
scenario_image_dir.mkdir(exist_ok=True)
61-
62-
# Gifs
63-
scenario_gif_dir = self._result_dir / "gifs"
64-
if create_gif:
65-
scenario_gif_dir.mkdir(exist_ok=True)
52+
# Each scenario will get its own subfolder under the result directory
6653

6754
n_scenarios = len(self._gx_values) * len(self._ve0_kmh_values)
6855

@@ -72,21 +59,16 @@ def create_all_scenarios(
7259
self._create_single_scenario(
7360
gx,
7461
ve0_kmh,
75-
scenario_result_dir,
76-
scenario_gif_dir,
77-
scenario_image_dir,
7862
create_openx=create_openx,
7963
create_image=create_image,
64+
create_gif=create_gif,
8065
)
8166
progress_bar.update(1)
8267

8368
def _create_single_scenario(
8469
self,
8570
gx: float,
8671
ve0_kmh: float,
87-
scenario_result_dir: Path,
88-
scenario_gif_dir: Path,
89-
scenario_image_dir: Path,
9072
create_openx: bool = False,
9173
create_gif: bool = False,
9274
create_image: bool = False,
@@ -104,15 +86,15 @@ def _create_single_scenario(
10486
)
10587

10688
# Object vehicle
107-
object_vehicle_length = Vehicle(0, 0, 0, 0, 0).length
89+
object_vehicle_length = Vehicle(0).length
10890
dx = ve0 * self._thw0
10991
object_s0 = (
11092
self._ego_s0 + dx + ego_configuration.length / 2 + object_vehicle_length / 2
11193
)
11294
object_a0 = -gx * self._g
11395

11496
object_vehicle = Vehicle(
115-
0, self._object_lanelet_id, object_s0, self._ego_t0, vo0, object_a0
97+
0, start_lanelet_id=self._object_lanelet_id, start_s=object_s0, start_t=self._ego_t0, v0=vo0, a0=object_a0
11698
)
11799

118100
# Calculate road length
@@ -127,11 +109,13 @@ def _create_single_scenario(
127109

128110
road_length = max(ego_dist, self._min_road_length) + self._ego_s0 + 100
129111
goal_position = self._ego_s0 + 0.75 * ego_dist
130-
road = Road(
112+
ego_configuration = EgoConfiguration(
113+
self._ego_lanelet_id, self._ego_s0, self._ego_t0, ve0, target_s=goal_position, target_t=0, target_lanelet_id=self._ego_lanelet_id
114+
)
115+
road = SyntheticRoad(
131116
self._n_lanes,
132117
self._lane_width,
133118
segments=[StraightSegment(road_length)],
134-
goal_position=goal_position,
135119
speed_limit=60,
136120
)
137121

@@ -144,26 +128,32 @@ def _create_single_scenario(
144128
check_feasibility=False,
145129
)
146130

147-
scenario_config_dir = scenario_result_dir / "configs"
131+
scenario_dir = self._result_dir / scenario_name
132+
scenario_dir.mkdir(exist_ok=True)
133+
134+
scenario_config_dir = scenario_dir / "configs"
148135
scenario_config_dir.mkdir(exist_ok=True)
149136
scenario.save(scenario_config_dir)
150137

151138
if create_openx:
152-
scenario_result_dir_openx = scenario_result_dir / "openx"
153-
scenario_result_dir_openx.mkdir(exist_ok=True)
154-
scenario.save(scenario_result_dir_openx, mode="openx")
139+
scenario_openx_dir = scenario_dir / "openx"
140+
scenario_openx_dir.mkdir(exist_ok=True)
141+
scenario.save(scenario_openx_dir, mode="openx")
142+
if create_image or create_gif:
143+
scenario_image_dir = scenario_dir / "images"
144+
scenario_image_dir.mkdir(exist_ok=True)
155145
if create_image:
156146
scenario.render(scenario_image_dir, dpi=600)
157147
if create_gif:
158-
scenario.render_gif(scenario_gif_dir, dpi=600)
148+
scenario.render_gif(scenario_image_dir, dpi=600)
159149

160150

161151
def generate_all_scenarios() -> None:
162152
result_dir = Path(__file__).parent / ".." / "results" / "annex3" / "deceleration"
163153
result_dir.mkdir(exist_ok=True, parents=True)
164154

165155
scenario_generator = DecelerationScenarioGenerator(result_dir)
166-
scenario_generator.create_all_scenarios(create_openx=True, create_image=True)
156+
scenario_generator.create_all_scenarios(create_openx=True, create_image=True, create_gif=False)
167157

168158

169159
if __name__ == "__main__":

0 commit comments

Comments
 (0)