Rebuttal (#15)
* pg+nuplan train * Need map * use gym wrapper * use createGymWrapper * doc * use all scenarios! * update 80000 scenario * train script
This commit is contained in:
20
documentation/Makefile
Normal file
20
documentation/Makefile
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Minimal makefile for Sphinx documentation
|
||||||
|
#
|
||||||
|
|
||||||
|
# You can set these variables from the command line, and also
|
||||||
|
# from the environment for the first two.
|
||||||
|
SPHINXOPTS ?=
|
||||||
|
SPHINXBUILD ?= sphinx-build
|
||||||
|
SOURCEDIR = source
|
||||||
|
BUILDDIR = build
|
||||||
|
|
||||||
|
# Put it first so that "make" without argument is like "make help".
|
||||||
|
help:
|
||||||
|
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||||
|
|
||||||
|
.PHONY: help Makefile
|
||||||
|
|
||||||
|
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||||
|
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||||
|
%: Makefile
|
||||||
|
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||||
9
documentation/README.md
Normal file
9
documentation/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
This folder contains files for the documentation: [https://scenarionet.readthedocs.io/](https://scenarionet.readthedocs.io/).
|
||||||
|
|
||||||
|
To build documents locally, please run the following codes:
|
||||||
|
|
||||||
|
```
|
||||||
|
pip install sphinx sphinx_rtd_theme
|
||||||
|
cd scenarionet/documentation
|
||||||
|
make html
|
||||||
|
```
|
||||||
35
documentation/make.bat
Normal file
35
documentation/make.bat
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
|
||||||
|
pushd %~dp0
|
||||||
|
|
||||||
|
REM Command file for Sphinx documentation
|
||||||
|
|
||||||
|
if "%SPHINXBUILD%" == "" (
|
||||||
|
set SPHINXBUILD=sphinx-build
|
||||||
|
)
|
||||||
|
set SOURCEDIR=source
|
||||||
|
set BUILDDIR=build
|
||||||
|
|
||||||
|
if "%1" == "" goto help
|
||||||
|
|
||||||
|
%SPHINXBUILD% >NUL 2>NUL
|
||||||
|
if errorlevel 9009 (
|
||||||
|
echo.
|
||||||
|
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||||
|
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||||
|
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||||
|
echo.may add the Sphinx directory to PATH.
|
||||||
|
echo.
|
||||||
|
echo.If you don't have Sphinx installed, grab it from
|
||||||
|
echo.http://sphinx-doc.org/
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:help
|
||||||
|
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
||||||
|
|
||||||
|
:end
|
||||||
|
popd
|
||||||
55
documentation/source/conf.py
Normal file
55
documentation/source/conf.py
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# Configuration file for the Sphinx documentation builder.
|
||||||
|
#
|
||||||
|
# This file only contains a selection of the most common options. For a full
|
||||||
|
# list see the documentation:
|
||||||
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||||
|
|
||||||
|
# -- Path setup --------------------------------------------------------------
|
||||||
|
|
||||||
|
# If extensions (or modules to documentation with autodoc) are in another directory,
|
||||||
|
# add these directories to sys.path here. If the directory is relative to the
|
||||||
|
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||||
|
#
|
||||||
|
# import os
|
||||||
|
# import sys
|
||||||
|
# sys.path.insert(0, os.path.abspath('.'))
|
||||||
|
|
||||||
|
|
||||||
|
# -- Project information -----------------------------------------------------
|
||||||
|
|
||||||
|
project = 'ScenarioNet'
|
||||||
|
copyright = 'MetaDriverse'
|
||||||
|
author = 'MetaDriverse'
|
||||||
|
|
||||||
|
# The full version, including alpha/beta/rc tags
|
||||||
|
release = '0.1.1'
|
||||||
|
|
||||||
|
# -- General configuration ---------------------------------------------------
|
||||||
|
|
||||||
|
# Add any Sphinx extension module names here, as strings. They can be
|
||||||
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||||
|
# ones.
|
||||||
|
extensions = [
|
||||||
|
"sphinx.ext.autosectionlabel",
|
||||||
|
"sphinx_rtd_theme"
|
||||||
|
]
|
||||||
|
|
||||||
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
|
templates_path = ['_templates']
|
||||||
|
|
||||||
|
# List of patterns, relative to source directory, that match files and
|
||||||
|
# directories to ignore when looking for source files.
|
||||||
|
# This pattern also affects html_static_path and html_extra_path.
|
||||||
|
exclude_patterns = []
|
||||||
|
|
||||||
|
# -- Options for HTML output -------------------------------------------------
|
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
|
# a list of builtin themes.
|
||||||
|
#
|
||||||
|
html_theme = 'sphinx_rtd_theme'
|
||||||
|
|
||||||
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
|
html_static_path = []
|
||||||
33
documentation/source/index.rst
Normal file
33
documentation/source/index.rst
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
########################
|
||||||
|
ScenarioNet Documentation
|
||||||
|
########################
|
||||||
|
|
||||||
|
|
||||||
|
Welcome to the ScenarioNet documentation!
|
||||||
|
ScenarioNet is an open-sourced platform for large-scale traffic scenario modeling and simulation with the following features:
|
||||||
|
|
||||||
|
* ScenarioNet defines a unified scenario description format containing HD maps and detailed object annotations.
|
||||||
|
* ScenarioNet provides tools to build and manage databases built from various data sources including real-world datasets like Waymo, nuScenes, Lyft L5, and nuPlan datasets and synthetic datasets like the procedural generated ones and safety-critical ones.
|
||||||
|
* Scenarios recorded in this format can be replayed in the digital twins with multiple views, ranging from Bird-Eye-View layout to realistic 3D rendering.
|
||||||
|
|
||||||
|
It can thus support several applications including large-scale scenario generation, AD testing, imitation learning, and reinforcement learning in both single-agent and multi-agent settings. The results imply scaling up the training data brings new research opportunities in machine learning and autonomous driving.
|
||||||
|
|
||||||
|
This documentation brings you the information on installation, usages and more of ScenarioNet!
|
||||||
|
You can also visit the `GitHub repo <https://github.com/metadriverse/scenarionet>`_ and `Webpage <https://metadriverse.github.io/scenarionet/>`_ for code and videos.
|
||||||
|
Please feel free to contact us if you have any suggestions or ideas!
|
||||||
|
|
||||||
|
|
||||||
|
Citation
|
||||||
|
########
|
||||||
|
|
||||||
|
You can read `our white paper <https://arxiv.org/pdf/2306.12241.pdf>`_ describing the details of ScenarioNet! If you use ScenarioNet in your own work, please cite:
|
||||||
|
|
||||||
|
.. code-block:: latex
|
||||||
|
|
||||||
|
@article{li2023scenarionet,
|
||||||
|
title={ScenarioNet: Open-Source Platform for Large-Scale Traffic Scenario Simulation and Modeling},
|
||||||
|
author={Li, Quanyi and Peng, Zhenghao and Feng, Lan and Duan, Chenda and Mo, Wenjie and Zhou, Bolei and others},
|
||||||
|
journal={arXiv preprint arXiv:2306.12241},
|
||||||
|
year={2023}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,16 +1,13 @@
|
|||||||
import pygame
|
import pygame
|
||||||
from metadrive.engine.asset_loader import AssetLoader
|
from metadrive.engine.asset_loader import AssetLoader
|
||||||
from metadrive.envs.real_data_envs.nuscenes_env import ScenarioEnv
|
from metadrive.envs.real_data_envs.nuscenes_env import ScenarioEnv
|
||||||
from metadrive.envs.gym_wrapper import GymEnvWrapper
|
from metadrive.envs.gym_wrapper import createGymWrapper
|
||||||
from scenarionet_training.train_utils.utils import initialize_ray, get_function
|
from scenarionet_training.train_utils.utils import initialize_ray, get_function
|
||||||
from scenarionet_training.scripts.train_nuplan import config
|
from scenarionet_training.scripts.train_nuplan import config
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
initialize_ray(test_mode=False, num_gpus=1)
|
initialize_ray(test_mode=False, num_gpus=1)
|
||||||
env = GymEnvWrapper(
|
env = createGymWrapper(ScenarioEnv)({
|
||||||
dict(
|
|
||||||
inner_class=ScenarioEnv,
|
|
||||||
inner_config={
|
|
||||||
# "data_directory": AssetLoader.file_path("nuscenes", return_raw_style=False),
|
# "data_directory": AssetLoader.file_path("nuscenes", return_raw_style=False),
|
||||||
"data_directory": "D:\\scenarionet_testset\\nuplan_test\\nuplan_test_w_raw",
|
"data_directory": "D:\\scenarionet_testset\\nuplan_test\\nuplan_test_w_raw",
|
||||||
"use_render": True,
|
"use_render": True,
|
||||||
@@ -44,7 +41,7 @@ if __name__ == "__main__":
|
|||||||
),
|
),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
||||||
# env.reset()
|
# env.reset()
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
from metadrive.envs.scenario_env import ScenarioEnv
|
from metadrive.envs.scenario_env import ScenarioEnv
|
||||||
from metadrive.envs.gym_wrapper import GymEnvWrapper
|
from metadrive.envs.gym_wrapper import createGymWrapper
|
||||||
|
|
||||||
from scenarionet import SCENARIONET_REPO_PATH, SCENARIONET_DATASET_PATH
|
from scenarionet import SCENARIONET_REPO_PATH, SCENARIONET_DATASET_PATH
|
||||||
from scenarionet_training.train_utils.multi_worker_PPO import MultiWorkerPPO
|
from scenarionet_training.train_utils.multi_worker_PPO import MultiWorkerPPO
|
||||||
@@ -14,8 +14,8 @@ if __name__ == '__main__':
|
|||||||
stop = int(100_000_000)
|
stop = int(100_000_000)
|
||||||
|
|
||||||
config = dict(
|
config = dict(
|
||||||
env=GymEnvWrapper,
|
env=createGymWrapper(ScenarioEnv),
|
||||||
env_config=dict(inner_class=ScenarioEnv, inner_config=dict(
|
env_config=dict(
|
||||||
# scenario
|
# scenario
|
||||||
start_scenario_index=0,
|
start_scenario_index=0,
|
||||||
num_scenarios=32,
|
num_scenarios=32,
|
||||||
@@ -34,7 +34,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
# training
|
# training
|
||||||
horizon=None,
|
horizon=None,
|
||||||
)),
|
),
|
||||||
|
|
||||||
# # ===== Evaluation =====
|
# # ===== Evaluation =====
|
||||||
evaluation_interval=2,
|
evaluation_interval=2,
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import os.path
|
import os.path
|
||||||
from metadrive.envs.gym_wrapper import GymEnvWrapper
|
from metadrive.envs.gym_wrapper import createGymWrapper
|
||||||
from metadrive.envs.scenario_env import ScenarioEnv
|
from metadrive.envs.scenario_env import ScenarioEnv
|
||||||
from scenarionet import SCENARIONET_REPO_PATH, SCENARIONET_DATASET_PATH
|
from scenarionet import SCENARIONET_REPO_PATH, SCENARIONET_DATASET_PATH
|
||||||
from scenarionet_training.train_utils.multi_worker_PPO import MultiWorkerPPO
|
from scenarionet_training.train_utils.multi_worker_PPO import MultiWorkerPPO
|
||||||
from scenarionet_training.train_utils.utils import train, get_train_parser, get_exp_name
|
from scenarionet_training.train_utils.utils import train, get_train_parser, get_exp_name
|
||||||
|
|
||||||
config = dict(
|
config = dict(
|
||||||
env=GymEnvWrapper,
|
env=createGymWrapper(ScenarioEnv),
|
||||||
env_config=dict(inner_class=ScenarioEnv, inner_config=dict(
|
env_config=dict(
|
||||||
# scenario
|
# scenario
|
||||||
start_scenario_index=0,
|
start_scenario_index=0,
|
||||||
num_scenarios=40000,
|
num_scenarios=40000,
|
||||||
@@ -16,7 +16,7 @@ config = dict(
|
|||||||
|
|
||||||
# curriculum training
|
# curriculum training
|
||||||
curriculum_level=100,
|
curriculum_level=100,
|
||||||
target_success_rate=0.8, # or 0.7
|
target_success_rate=0.7,
|
||||||
# episodes_to_evaluate_curriculum=400, # default=num_scenarios/curriculum_level
|
# episodes_to_evaluate_curriculum=400, # default=num_scenarios/curriculum_level
|
||||||
|
|
||||||
# traffic & light
|
# traffic & light
|
||||||
@@ -42,7 +42,7 @@ config = dict(
|
|||||||
|
|
||||||
vehicle_config=dict(side_detector=dict(num_lasers=0))
|
vehicle_config=dict(side_detector=dict(num_lasers=0))
|
||||||
|
|
||||||
)),
|
),
|
||||||
|
|
||||||
# ===== Evaluation =====
|
# ===== Evaluation =====
|
||||||
evaluation_interval=15,
|
evaluation_interval=15,
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import os.path
|
import os.path
|
||||||
from ray.tune import grid_search
|
from ray.tune import grid_search
|
||||||
from metadrive.envs.scenario_env import ScenarioEnv
|
from metadrive.envs.scenario_env import ScenarioEnv
|
||||||
from metadrive.envs.gym_wrapper import GymEnvWrapper
|
from metadrive.envs.gym_wrapper import createGymWrapper
|
||||||
from scenarionet import SCENARIONET_REPO_PATH, SCENARIONET_DATASET_PATH
|
from scenarionet import SCENARIONET_REPO_PATH, SCENARIONET_DATASET_PATH
|
||||||
from scenarionet_training.train_utils.multi_worker_PPO import MultiWorkerPPO
|
from scenarionet_training.train_utils.multi_worker_PPO import MultiWorkerPPO
|
||||||
from scenarionet_training.train_utils.utils import train, get_train_parser, get_exp_name
|
from scenarionet_training.train_utils.utils import train, get_train_parser, get_exp_name
|
||||||
|
|
||||||
config = dict(
|
config = dict(
|
||||||
env=GymEnvWrapper,
|
env=createGymWrapper(ScenarioEnv),
|
||||||
env_config=dict(inner_class=ScenarioEnv, inner_config=dict(
|
env_config=dict(
|
||||||
# scenario
|
# scenario
|
||||||
start_scenario_index=0,
|
start_scenario_index=0,
|
||||||
num_scenarios=40000,
|
num_scenarios=40000,
|
||||||
@@ -21,7 +21,7 @@ config = dict(
|
|||||||
# episodes_to_evaluate_curriculum=400, # default=num_scenarios/curriculum_level
|
# episodes_to_evaluate_curriculum=400, # default=num_scenarios/curriculum_level
|
||||||
|
|
||||||
# traffic & light
|
# traffic & light
|
||||||
reactive_traffic=False,
|
reactive_traffic=True,
|
||||||
no_static_vehicles=True,
|
no_static_vehicles=True,
|
||||||
no_light=True,
|
no_light=True,
|
||||||
static_traffic_object=True,
|
static_traffic_object=True,
|
||||||
@@ -41,7 +41,7 @@ config = dict(
|
|||||||
|
|
||||||
vehicle_config=dict(side_detector=dict(num_lasers=0))
|
vehicle_config=dict(side_detector=dict(num_lasers=0))
|
||||||
|
|
||||||
)),
|
),
|
||||||
|
|
||||||
# ===== Evaluation =====
|
# ===== Evaluation =====
|
||||||
evaluation_interval=15,
|
evaluation_interval=15,
|
||||||
|
|||||||
99
scenarionet_training/scripts/train_pg_nuplan.py
Normal file
99
scenarionet_training/scripts/train_pg_nuplan.py
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
import os.path
|
||||||
|
from ray import tune
|
||||||
|
from metadrive.envs.gym_wrapper import createGymWrapper
|
||||||
|
from metadrive.envs.scenario_env import ScenarioEnv
|
||||||
|
from scenarionet import SCENARIONET_REPO_PATH, SCENARIONET_DATASET_PATH
|
||||||
|
from scenarionet_training.train_utils.multi_worker_PPO import MultiWorkerPPO
|
||||||
|
from scenarionet_training.train_utils.utils import train, get_train_parser, get_exp_name
|
||||||
|
|
||||||
|
config = dict(
|
||||||
|
env=createGymWrapper(ScenarioEnv),
|
||||||
|
env_config=dict(
|
||||||
|
# scenario
|
||||||
|
start_scenario_index=20000,
|
||||||
|
num_scenarios=40000, # 0-40000 nuplan, 40000-80000 pg
|
||||||
|
data_directory=os.path.join(SCENARIONET_DATASET_PATH, "pg_nuplan_train"),
|
||||||
|
sequential_seed=True,
|
||||||
|
no_map=True,
|
||||||
|
# store_map=False,
|
||||||
|
# store_data=False,
|
||||||
|
|
||||||
|
# curriculum training
|
||||||
|
curriculum_level=100,
|
||||||
|
target_success_rate=0.7,
|
||||||
|
# episodes_to_evaluate_curriculum=400, # default=num_scenarios/curriculum_level
|
||||||
|
|
||||||
|
# traffic & light
|
||||||
|
reactive_traffic=True,
|
||||||
|
no_static_vehicles=True,
|
||||||
|
no_light=True,
|
||||||
|
static_traffic_object=True,
|
||||||
|
|
||||||
|
# training scheme
|
||||||
|
horizon=None,
|
||||||
|
driving_reward=9,
|
||||||
|
steering_range_penalty=1.0,
|
||||||
|
heading_penalty=1,
|
||||||
|
lateral_penalty=1.0,
|
||||||
|
no_negative_reward=True,
|
||||||
|
on_lane_line_penalty=0,
|
||||||
|
crash_vehicle_penalty=1,
|
||||||
|
crash_human_penalty=1,
|
||||||
|
crash_object_penalty=0.5,
|
||||||
|
# out_of_road_penalty=2,
|
||||||
|
max_lateral_dist=2,
|
||||||
|
# crash_vehicle_done=True,
|
||||||
|
|
||||||
|
vehicle_config=dict(side_detector=dict(num_lasers=0))
|
||||||
|
|
||||||
|
),
|
||||||
|
|
||||||
|
# ===== Evaluation =====
|
||||||
|
evaluation_interval=15,
|
||||||
|
evaluation_num_episodes=1000,
|
||||||
|
evaluation_config=dict(env_config=dict(start_scenario_index=0,
|
||||||
|
num_scenarios=1000,
|
||||||
|
sequential_seed=True,
|
||||||
|
curriculum_level=1, # turn off
|
||||||
|
data_directory=os.path.join(SCENARIONET_DATASET_PATH, "nuplan_test"))),
|
||||||
|
evaluation_num_workers=10,
|
||||||
|
metrics_smoothing_episodes=10,
|
||||||
|
|
||||||
|
# ===== Training =====
|
||||||
|
model=dict(fcnet_hiddens=[512, 256, 128]),
|
||||||
|
horizon=600,
|
||||||
|
num_sgd_iter=20,
|
||||||
|
lr=1e-4,
|
||||||
|
rollout_fragment_length=500,
|
||||||
|
sgd_minibatch_size=200,
|
||||||
|
train_batch_size=50000,
|
||||||
|
num_gpus=0.5,
|
||||||
|
num_cpus_per_worker=0.3,
|
||||||
|
num_cpus_for_driver=1,
|
||||||
|
num_workers=20,
|
||||||
|
framework="tf"
|
||||||
|
)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# PG data is generated with seeds 10,000 to 60,000
|
||||||
|
args = get_train_parser().parse_args()
|
||||||
|
exp_name = get_exp_name(args)
|
||||||
|
stop = int(100_000_000)
|
||||||
|
config["num_gpus"] = 0.5 if args.num_gpus != 0 else 0
|
||||||
|
|
||||||
|
train(
|
||||||
|
MultiWorkerPPO,
|
||||||
|
exp_name=exp_name,
|
||||||
|
save_dir=os.path.join(SCENARIONET_REPO_PATH, "experiment"),
|
||||||
|
keep_checkpoints_num=5,
|
||||||
|
stop=stop,
|
||||||
|
config=config,
|
||||||
|
num_gpus=args.num_gpus,
|
||||||
|
# num_seeds=args.num_seeds,
|
||||||
|
num_seeds=4,
|
||||||
|
test_mode=args.test,
|
||||||
|
# local_mode=True,
|
||||||
|
# TODO remove this when we release our code
|
||||||
|
# wandb_key_file="~/wandb_api_key_file.txt",
|
||||||
|
wandb_project="scenarionet",
|
||||||
|
)
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
import os.path
|
import os.path
|
||||||
from metadrive.envs.gym_wrapper import GymEnvWrapper
|
from metadrive.envs.gym_wrapper import createGymWrapper
|
||||||
from metadrive.envs.scenario_env import ScenarioEnv
|
from metadrive.envs.scenario_env import ScenarioEnv
|
||||||
from scenarionet import SCENARIONET_REPO_PATH, SCENARIONET_DATASET_PATH
|
from scenarionet import SCENARIONET_REPO_PATH, SCENARIONET_DATASET_PATH
|
||||||
from scenarionet_training.train_utils.multi_worker_PPO import MultiWorkerPPO
|
from scenarionet_training.train_utils.multi_worker_PPO import MultiWorkerPPO
|
||||||
from scenarionet_training.train_utils.utils import train, get_train_parser, get_exp_name
|
from scenarionet_training.train_utils.utils import train, get_train_parser, get_exp_name
|
||||||
|
|
||||||
config = dict(
|
config = dict(
|
||||||
env=GymEnvWrapper,
|
env=createGymWrapper(ScenarioEnv),
|
||||||
env_config=dict(inner_class=ScenarioEnv, inner_config=dict(
|
env_config=dict(
|
||||||
# scenario
|
# scenario
|
||||||
start_scenario_index=0,
|
start_scenario_index=0,
|
||||||
num_scenarios=40000,
|
num_scenarios=40000,
|
||||||
@@ -41,7 +41,7 @@ config = dict(
|
|||||||
|
|
||||||
vehicle_config=dict(side_detector=dict(num_lasers=0))
|
vehicle_config=dict(side_detector=dict(num_lasers=0))
|
||||||
|
|
||||||
)),
|
),
|
||||||
|
|
||||||
# ===== Evaluation =====
|
# ===== Evaluation =====
|
||||||
evaluation_interval=15,
|
evaluation_interval=15,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import numpy as np
|
|||||||
import tqdm
|
import tqdm
|
||||||
from metadrive.constants import TerminationState
|
from metadrive.constants import TerminationState
|
||||||
from metadrive.envs.scenario_env import ScenarioEnv
|
from metadrive.envs.scenario_env import ScenarioEnv
|
||||||
from metadrive.envs.gym_wrapper import GymEnvWrapper
|
from metadrive.envs.gym_wrapper import createGymWrapper
|
||||||
from ray import tune
|
from ray import tune
|
||||||
from ray.tune import CLIReporter
|
from ray.tune import CLIReporter
|
||||||
|
|
||||||
@@ -292,7 +292,7 @@ def eval_ckpt(config,
|
|||||||
episodes_to_evaluate_curriculum=num_scenarios,
|
episodes_to_evaluate_curriculum=num_scenarios,
|
||||||
data_directory=scenario_data_path,
|
data_directory=scenario_data_path,
|
||||||
use_render=render))
|
use_render=render))
|
||||||
env = GymEnvWrapper(dict(inner_class=ScenarioEnv, inner_config=env_config))
|
env = createGymWrapper(ScenarioEnv)(env_config)
|
||||||
|
|
||||||
super_data = defaultdict(list)
|
super_data = defaultdict(list)
|
||||||
EPISODE_NUM = env.config["num_scenarios"]
|
EPISODE_NUM = env.config["num_scenarios"]
|
||||||
|
|||||||
Reference in New Issue
Block a user