update get nuplan parameters

This commit is contained in:
QuanyiLi
2023-05-06 21:58:48 +01:00
parent 3963c88e41
commit 85156570b4
2 changed files with 43 additions and 24 deletions

View File

@@ -3,6 +3,7 @@ import os
import tempfile
from dataclasses import dataclass
from os.path import join
from typing import Union
import numpy as np
from metadrive.scenario import ScenarioDescription as SD
@@ -39,10 +40,46 @@ except ImportError as e:
EGO = "ego"
def get_nuplan_scenarios(dataset_parameters, nuplan_package_path=NUPLAN_PACKAGE_PATH):
def get_nuplan_scenarios(data_root, map_root, logs: Union[list, None], builder="nuplan_mini"):
"""
Return a list of nuplan scenarios according to dataset_parameters
Getting scenarios. You could use your parameters to get a bunch of scenarios
:param data_root: path contains .db files, like /nuplan-v1.1/splits/mini
:param map_root: path to map
:param logs: a list of logs, like ['2021.07.16.20.45.29_veh-35_01095_01486']. If none, load all files in data_root
:param builder: builder file, we use the default nuplan builder file
:return:
"""
nuplan_package_path = NUPLAN_PACKAGE_PATH
logs = logs or [file for file in os.listdir(data_root)]
log_string = ""
for log in logs:
log_string += log
log_string += ","
log_string = log_string[:-1]
dataset_parameters = [
# builder setting
"scenario_builder={}".format(builder),
"scenario_builder.scenario_mapping.subsample_ratio_override=0.5", # 10 hz
"scenario_builder.data_root={}".format(data_root),
"scenario_builder.map_root={}".format(map_root),
# filter
"scenario_filter=all_scenarios", # simulate only one log
"scenario_filter.remove_invalid_goals=true",
"scenario_filter.shuffle=true",
"scenario_filter.log_names=[{}]".format(log_string),
# "scenario_filter.scenario_types={}".format(all_scenario_types),
# "scenario_filter.scenario_tokens=[]",
# "scenario_filter.map_names=[]",
# "scenario_filter.num_scenarios_per_type=1",
# "scenario_filter.limit_total_scenarios=1000",
# "scenario_filter.expand_scenarios=true",
# "scenario_filter.limit_scenarios_per_type=10", # use 10 scenarios per scenario type
"scenario_filter.timestamp_threshold_s=20", # minial scenario duration (s)
]
base_config_path = os.path.join(nuplan_package_path, "planning", "script")
simulation_hydra_paths = construct_simulation_hydra_paths(base_config_path)
@@ -452,23 +489,3 @@ example_scenario_types = "[behind_pedestrian_on_pickup_dropoff, \
starting_unprotected_cross_turn, \
starting_protected_noncross_turn, \
on_pickup_dropoff]"
example_dataset_params = [
# builder setting
"scenario_builder=nuplan_mini",
"scenario_builder.scenario_mapping.subsample_ratio_override=0.5", # 10 hz
# filter
"scenario_filter=all_scenarios", # simulate only one log
"scenario_filter.remove_invalid_goals=true",
"scenario_filter.shuffle=true",
"scenario_filter.log_names=['2021.07.16.20.45.29_veh-35_01095_01486']",
# "scenario_filter.scenario_types={}".format(all_scenario_types),
# "scenario_filter.scenario_tokens=[]",
# "scenario_filter.map_names=[]",
# "scenario_filter.num_scenarios_per_type=1",
# "scenario_filter.limit_total_scenarios=1000",
# "scenario_filter.expand_scenarios=true",
# "scenario_filter.limit_scenarios_per_type=10", # use 10 scenarios per scenario type
"scenario_filter.timestamp_threshold_s=20", # minial scenario duration (s)
]

View File

@@ -5,7 +5,7 @@ MetaDrive.
import os
from scenarionet import SCENARIONET_DATASET_PATH
from scenarionet.converter.nuplan.utils import get_nuplan_scenarios, convert_nuplan_scenario, example_dataset_params
from scenarionet.converter.nuplan.utils import get_nuplan_scenarios, convert_nuplan_scenario
from scenarionet.converter.utils import write_to_directory
if __name__ == "__main__":
@@ -14,7 +14,9 @@ if __name__ == "__main__":
output_path = os.path.join(SCENARIONET_DATASET_PATH, dataset_name)
version = 'v1.1'
scenarios = get_nuplan_scenarios(example_dataset_params)
data_root = os.path.join(os.getenv("NUPLAN_DATA_ROOT"), "nuplan-v1.1/splits/mini")
map_root = os.getenv("NUPLAN_MAPS_ROOT")
scenarios = get_nuplan_scenarios(data_root, map_root, logs=["2021.07.16.20.45.29_veh-35_01095_01486"])
write_to_directory(convert_func=convert_nuplan_scenario,
scenarios=scenarios,