show import error

This commit is contained in:
QuanyiLi
2023-05-06 19:04:22 +01:00
parent b49e50aa23
commit 117c1aa987
5 changed files with 24 additions and 68 deletions

View File

@@ -8,10 +8,10 @@ logger = logging.getLogger(__name__)
try:
from nuplan.common.actor_state.tracked_objects_types import TrackedObjectType
from nuplan.common.maps.maps_datatypes import TrafficLightStatusType
except ImportError:
logger.warning("Can not import nuplan-devkit")
NuPlanEgoType = TrackedObjectType.EGO
except ImportError as e:
logger.warning("Can not import nuplan-devkit: {}".format(e))
def get_traffic_obj_type(nuplan_type):

View File

@@ -31,10 +31,11 @@ try:
from nuplan.planning.script.builders.scenario_filter_builder import build_scenario_filter
from nuplan.planning.script.utils import set_up_common_builder
import nuplan
except ImportError:
logger.warning("Can not import nuplan-devkit")
NUPLAN_PACKAGE_PATH = os.path.dirname(nuplan.__file__)
except ImportError as e:
raise ImportError("Can not import nuplan-devkit: {}".format(e))
EGO = "ego"
@@ -429,4 +430,4 @@ def convert_nuplan_scenario(scenario: NuPlanScenario):
# map
result[SD.MAP_FEATURES] = extract_map_features(scenario.map_api, scenario_center)
return result
return result, scenario.scenario_name

View File

@@ -17,8 +17,8 @@ try:
from nuscenes.map_expansion.arcline_path_utils import discretize_lane
from nuscenes.map_expansion.map_api import NuScenesMap
from pyquaternion import Quaternion
except ImportError:
logger.warning("Can not import nuscenes-devkit")
except ImportError as e:
logger.warning("Can not import nuscenes-devkit: {}".format(e))
EGO = "ego"

View File

@@ -2,64 +2,10 @@
This script aims to convert nuplan scenarios to ScenarioDescription, so that we can load any nuplan scenarios into
MetaDrive.
"""
import copy
from scenarionet import SCENARIONET_DATASET_PATH
import os
import pickle
import shutil
import tqdm
from metadrive.scenario.scenario_description import ScenarioDescription
from scenarionet.converter.nuplan.utils import get_nuplan_scenarios, convert_nuplan_scenario
from scenarionet.converter.utils import dict_recursive_remove_array_and_set
def convert_nuplan(dataset_params, output_path, worker_index=None, force_overwrite=False):
save_path = copy.deepcopy(output_path)
output_path = output_path + "_tmp"
# meta recorder and data summary
if os.path.exists(output_path):
shutil.rmtree(output_path)
os.makedirs(output_path, exist_ok=False)
# make real save dir
delay_remove = None
if os.path.exists(save_path):
if force_overwrite:
delay_remove = save_path
else:
raise ValueError("Directory already exists! Abort")
metadata_recorder = {}
total_scenarios = 0
desc = ""
summary_file = "dataset_summary.pkl"
if worker_index is not None:
desc += "Worker {} ".format(worker_index)
summary_file = "dataset_summary_worker{}.pkl".format(worker_index)
# Init.
scenarios = get_nuplan_scenarios(dataset_params)
for scenario in tqdm.tqdm(scenarios):
sd_scenario = convert_nuplan_scenario(scenario)
sd_scenario = sd_scenario.to_dict()
ScenarioDescription.sanity_check(sd_scenario, check_self_type=True)
export_file_name = "sd_{}_{}.pkl".format("nuplan", scenario.scenario_name)
p = os.path.join(output_path, export_file_name)
with open(p, "wb") as f:
pickle.dump(sd_scenario, f)
metadata_recorder[export_file_name] = copy.deepcopy(sd_scenario[ScenarioDescription.METADATA])
# rename and save
if delay_remove is not None:
shutil.rmtree(delay_remove)
os.rename(output_path, save_path)
summary_file = os.path.join(save_path, summary_file)
with open(summary_file, "wb") as file:
pickle.dump(dict_recursive_remove_array_and_set(metadata_recorder), file)
print("Summary is saved at: {}".format(summary_file))
if delay_remove is not None:
assert delay_remove == save_path, delay_remove + " vs. " + save_path
from scenarionet.converter.utils import write_to_directory
if __name__ == "__main__":
# 14 types
@@ -98,7 +44,15 @@ if __name__ == "__main__":
# "scenario_filter.limit_scenarios_per_type=10", # use 10 scenarios per scenario type
"scenario_filter.timestamp_threshold_s=20", # minial scenario duration (s)
]
output_path = AssetLoader.file_path("nuplan", return_raw_style=False)
worker_index = None
force_overwrite = True
convert_nuplan(output_path, dataset_params, worker_index=worker_index, force_overwrite=force_overwrite)
output_path = os.path.join(SCENARIONET_DATASET_PATH, "nuplan")
version = 'v1.2'
scenarios = get_nuplan_scenarios(dataset_params)
write_to_directory(convert_func=convert_nuplan_scenario,
scenarios=scenarios,
output_path=output_path,
dataset_version=version,
dataset_name="nuscenes",
force_overwrite=force_overwrite,
)

View File

@@ -23,6 +23,7 @@ except ImportError:
try:
from waymo_open_dataset.protos import scenario_pb2
except ImportError:
# TODO, redo all waymo import error!
try:
from metadrive.utils.waymo.protos import scenario_pb2 # Local files that only in PZH's computer.
except ImportError: