ValueError when build NuPlanScenarioBuilder
I set nuPlan data root and maps root as below when I tried to run nuplan_planner_tutorial:
export NUPLAN_DATA_ROOT="/mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/dataset/nuplan-v1.1/splits/mini" export NUPLAN_MAPS_ROOT="/mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/dataset/maps"
But when building AbstractScenarioBuilder there was a value error:
ValueError Traceback (most recent call last) File ~/anaconda3/envs/nuplan/lib/python3.9/site-packages/hydra/_internal/instantiate/_instantiate2.py:62, in _call_target(target, *args, **kwargs) 60 v._set_parent(None) ---> 62 return target(*args, **kwargs) 63 except Exception as e:
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/planning/scenario_builder/nuplan_db/nuplan_scenario_builder.py:74, in NuPlanScenarioBuilder.init(self, data_root, map_root, sensor_root, db_files, map_version, include_cameras, max_workers, verbose, scenario_mapping, vehicle_parameters) 73 self._sensor_root = sensor_root ---> 74 self._db_files = discover_log_dbs(data_root if db_files is None else db_files) 75 self._map_version = map_version
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/planning/scenario_builder/nuplan_db/nuplan_scenario_filter_utils.py:158, in discover_log_dbs(load_path) 157 else: --> 158 db_filenames = get_db_filenames_from_load_path(load_path) 160 return db_filenames
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/planning/scenario_builder/nuplan_db/nuplan_scenario_filter_utils.py:141, in get_db_filenames_from_load_path(load_path) 140 else: --> 141 raise ValueError(f'Expected db load path to be file, dir or list of files/dirs, but got {load_path}') 143 return db_filenames
ValueError: Expected db load path to be file, dir or list of files/dirs, but got /mnt/f/Projects/ZYLConf/nuplan/dataset/nuplan-v1.1/splits/mini/nuplan-v1.1/splits/mini
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last) Cell In[9], line 6 3 planner = SimplePlanner(horizon_seconds=10.0, sampling_time=0.25, acceleration=[0.0, 0.0]) 5 # Run the simulation loop (real-time visualization not yet supported, see next section for visualization) ----> 6 main_simulation(cfg, planner)
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/planning/script/run_simulation.py:66, in run_simulation(cfg, planners) 63 if isinstance(planners, AbstractPlanner): 64 planners = [planners] ---> 66 runners = build_simulations( 67 cfg=cfg, 68 callbacks=callbacks, 69 worker=common_builder.worker, 70 pre_built_planners=planners, 71 callbacks_worker=callbacks_worker_pool, 72 ) 74 if common_builder.profiler: 75 # Stop simulation construction profiling 76 common_builder.profiler.save_profiler(profiler_name)
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:70, in build_simulations(cfg, worker, callbacks, callbacks_worker, pre_built_planners) 59 raise ValueError(f"Simulation framework only runs with NuPlanScenarioBuilder. Got {cfg.scenario_builder}") 61 scenario_filter = DistributedScenarioFilter( 62 cfg=cfg, 63 worker=worker, (...) 68 distributed_mode=DistributedMode[cfg.distributed_mode], 69 ) ---> 70 scenarios = scenario_filter.get_scenarios() 72 metric_engines_map = {} 73 if cfg.run_metric:
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/common/utils/distributed_scenario_filter.py:84, in DistributedScenarioFilter.get_scenarios(self) 82 if self._num_nodes == 1 or self._distributed_mode == DistributedMode.SINGLE_NODE: 83 logger.info("Building Scenarios in mode %s", DistributedMode.SINGLE_NODE) ---> 84 scenario_builder = build_scenario_builder(cfg=self._cfg) 85 scenario_filter = build_scenario_filter(cfg=self._cfg.scenario_filter) 86 elif self._distributed_mode in (DistributedMode.LOG_FILE_BASED, DistributedMode.SCENARIO_BASED):
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/planning/script/builders/scenario_building_builder.py:19, in build_scenario_builder(cfg) 13 """ 14 Builds scenario builder. 15 :param cfg: DictConfig. Configuration that is used to run the experiment. 16 :return: Instance of scenario builder. 17 """ 18 logger.info('Building AbstractScenarioBuilder...') ---> 19 scenario_builder = instantiate(cfg.scenario_builder) 20 validate_type(scenario_builder, AbstractScenarioBuilder) 21 logger.info('Building AbstractScenarioBuilder...DONE!')
File ~/anaconda3/envs/nuplan/lib/python3.9/site-packages/hydra/_internal/instantiate/_instantiate2.py:180, in instantiate(config, *args, **kwargs) 177 recursive = config.pop(_Keys.RECURSIVE, True) 178 convert = config.pop(_Keys.CONVERT, ConvertMode.NONE) --> 180 return instantiate_node(config, *args, recursive=recursive, convert=convert) 181 else: 182 raise InstantiationException( 183 "Top level config has to be OmegaConf DictConfig, plain dict, or a Structured Config class or instance" 184 )
File ~/anaconda3/envs/nuplan/lib/python3.9/site-packages/hydra/_internal/instantiate/_instantiate2.py:249, in instantiate_node(node, convert, recursive, *args) 245 value = instantiate_node( 246 value, convert=convert, recursive=recursive 247 ) 248 kwargs[key] = _convert_node(value, convert) --> 249 return _call_target(target, *args, **kwargs) 250 else: 251 # If ALL or PARTIAL non structured, instantiate in dict and resolve interpolations eagerly. 252 if convert == ConvertMode.ALL or ( 253 convert == ConvertMode.PARTIAL and node._metadata.object_type is None 254 ):
File ~/anaconda3/envs/nuplan/lib/python3.9/site-packages/hydra/_internal/instantiate/_instantiate2.py:64, in _call_target(target, *args, **kwargs) 62 return target(*args, **kwargs) 63 except Exception as e: ---> 64 raise type(e)( 65 f"Error instantiating '{_convert_target_to_string(target)}' : {e}" 66 ).with_traceback(sys.exc_info()[2])
File ~/anaconda3/envs/nuplan/lib/python3.9/site-packages/hydra/_internal/instantiate/_instantiate2.py:62, in _call_target(target, *args, **kwargs) 59 if OmegaConf.is_config(v): 60 v._set_parent(None) ---> 62 return target(*args, **kwargs) 63 except Exception as e: 64 raise type(e)( 65 f"Error instantiating '{_convert_target_to_string(target)}' : {e}" 66 ).with_traceback(sys.exc_info()[2])
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/planning/scenario_builder/nuplan_db/nuplan_scenario_builder.py:74, in NuPlanScenarioBuilder.init(self, data_root, map_root, sensor_root, db_files, map_version, include_cameras, max_workers, verbose, scenario_mapping, vehicle_parameters) 72 self._map_root = map_root 73 self._sensor_root = sensor_root ---> 74 self._db_files = discover_log_dbs(data_root if db_files is None else db_files) 75 self._map_version = map_version 76 self._include_cameras = include_cameras
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/planning/scenario_builder/nuplan_db/nuplan_scenario_filter_utils.py:158, in discover_log_dbs(load_path) 156 db_filenames = [filename for filenames in nested_db_filenames for filename in filenames] 157 else: --> 158 db_filenames = get_db_filenames_from_load_path(load_path) 160 return db_filenames
File /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/planning/scenario_builder/nuplan_db/nuplan_scenario_filter_utils.py:141, in get_db_filenames_from_load_path(load_path) 137 db_filenames = [ 138 str(path) for path in sorted(Path(load_path).expanduser().iterdir()) if path.suffix == '.db' 139 ] 140 else: --> 141 raise ValueError(f'Expected db load path to be file, dir or list of files/dirs, but got {load_path}') 143 return db_filenames
ValueError: Error instantiating 'nuplan.planning.scenario_builder.nuplan_db.nuplan_scenario_builder.NuPlanScenarioBuilder' : Expected db load path to be file, dir or list of files/dirs, but got /mnt/f/Projects/ZYLConf/nuplan/dataset/nuplan-v1.1/splits/mini/nuplan-v1.1/splits/mini
It seems like the string "nuplan-v1.1/splits/mini" was repeated once, but when I printed data root, there was no repeated part: Using data root: /mnt/f/Projects/ZYLConf/nuplan-devkit/nuplan/dataset/nuplan-v1.1/splits/mini