Skip to content
Snippets Groups Projects
Commit 89eb8bdd authored by sacardoz's avatar sacardoz
Browse files

PDM WORKS

parent 8c9cb0f5
No related branches found
No related tags found
2 merge requests!21Major changes. convert nuplan devkit to handle occlusions for project,!8Shea multiagent rules
%% Cell type:markdown id:34460db1 tags: %% Cell type:markdown id:34460db1 tags:
# Creating a new planner in nuPlan <a name="introduction"></a> # Creating a new planner in nuPlan <a name="introduction"></a>
%% Cell type:markdown id:f0189156 tags: %% Cell type:markdown id:f0189156 tags:
## Setup ## Setup
%% Cell type:code id:373ffd1c tags: %% Cell type:code id:373ffd1c tags:
``` python ``` python
# Useful imports # Useful imports
import os import os
import hydra import hydra
import nest_asyncio import nest_asyncio
from IPython.core.display import display, HTML from IPython.core.display import display, HTML
from bokeh.io import output_notebook from bokeh.io import output_notebook
``` ```
%% Output %% Output
/tmp/ipykernel_235422/4095267831.py:5: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display /tmp/ipykernel_16674/4095267831.py:5: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display
from IPython.core.display import display, HTML from IPython.core.display import display, HTML
%% Cell type:code id:13c00121 tags: %% Cell type:code id:13c00121 tags:
``` python ``` python
nest_asyncio.apply() nest_asyncio.apply()
output_notebook() output_notebook()
display(HTML("<style>.output_result { max-width:100% !important; }</style>")) display(HTML("<style>.output_result { max-width:100% !important; }</style>"))
display(HTML("<style>.container { width:100% !important; }</style>")) display(HTML("<style>.container { width:100% !important; }</style>"))
``` ```
%% Output %% Output
%% Cell type:code id:39408ef5 tags: %% Cell type:code id:39408ef5 tags:
``` python ``` python
%pwd %cd ..
``` ```
%% Output %% Output
'/media/sacardoz/Storage/nuplan-devkit/experiments' /media/sacardoz/Storage/nuplan-devkit
/home/sacardoz/miniconda3/envs/nuplan/lib/python3.9/site-packages/IPython/core/magics/osm.py:417: UserWarning: using dhist requires you to install the `pickleshare` library.
self.shell.db['dhist'] = compress_dhist(dhist)[-100:]
%% Cell type:markdown id:128b0d15 tags: %% Cell type:markdown id:128b0d15 tags:
# Simulating the planner <a name="simulation"></a> # Simulating the planner <a name="simulation"></a>
%% Cell type:markdown id:db337ceb tags: %% Cell type:markdown id:db337ceb tags:
## Prepare the simulation config ## Prepare the simulation config
%% Cell type:code id:11b08c6d tags: %% Cell type:code id:11b08c6d tags:
``` python ``` python
from tutorials.utils.tutorial_utils import construct_simulation_hydra_paths from tutorials.utils.tutorial_utils import construct_simulation_hydra_paths
# Location of paths with all simulation configs # Location of paths with all simulation configs
BASE_CONFIG_PATH = os.path.join(os.getenv('NUPLAN_TUTORIAL_PATH', ''), '../nuplan/planning/script') BASE_CONFIG_PATH = os.path.join(os.getenv('NUPLAN_TUTORIAL_PATH', ''), '../nuplan/planning/script')
simulation_hydra_paths = construct_simulation_hydra_paths(BASE_CONFIG_PATH) simulation_hydra_paths = construct_simulation_hydra_paths(BASE_CONFIG_PATH)
# Create a temporary directory to store the simulation artifacts # Create a temporary directory to store the simulation artifacts
DATASET_PARAMS = [ DATASET_PARAMS = [
'scenario_builder=nuplan_mini', # use nuplan mini database (2.5h of 8 autolabeled logs in Las Vegas) 'scenario_builder=nuplan_mini', # use nuplan mini database (2.5h of 8 autolabeled logs in Las Vegas)
'scenario_filter=one_continuous_log', # simulate only one log 'scenario_filter=one_continuous_log', # simulate only one log
"scenario_filter.log_names=['2021.06.14.16.48.02_veh-12_04057_04438']", "scenario_filter.log_names=['2021.06.14.16.48.02_veh-12_04057_04438']",
'scenario_filter.limit_total_scenarios=1', # use 1 total scenarios 'scenario_filter.limit_total_scenarios=1', # use 1 total scenarios
] ]
ckpt_dir = '/home/sacardoz/checkpoints/urbandriver_checkpoint.ckpt' ckpt_dir = '/home/sacardoz/checkpoints/urbandriver_checkpoint.ckpt'
hybrid_ckpt = '/home/sacardoz/checkpoints/pdm_offset_checkpoint.ckpt' hybrid_ckpt = '/home/sacardoz/checkpoints/pdm_offset_checkpoint.ckpt'
#'/home/sacardoz/checkpoints/urbandriver_checkpoint.ckpt' #'/home/sacardoz/checkpoints/urbandriver_checkpoint.ckpt'
#"/home/sacardoz/tutorial_vector_framework/training_simple_vector_experiment/train_default_simple_vector/2023.11.23.09.55.21/best_model/epoch.ckpt" #"/home/sacardoz/tutorial_vector_framework/training_simple_vector_experiment/train_default_simple_vector/2023.11.23.09.55.21/best_model/epoch.ckpt"
#"/home/sacardoz/training_raster_experiment/train_default_raster/2023.11.23.07.36.36/best_model/epoch.ckpt" #"/home/sacardoz/training_raster_experiment/train_default_raster/2023.11.23.07.36.36/best_model/epoch.ckpt"
# Initialize configuration management system # Initialize configuration management system
hydra.core.global_hydra.GlobalHydra.instance().clear() # reinitialize hydra if already initialized hydra.core.global_hydra.GlobalHydra.instance().clear() # reinitialize hydra if already initialized
hydra.initialize(config_path=simulation_hydra_paths.config_path) hydra.initialize(config_path=simulation_hydra_paths.config_path)
# Compose the configuration # Compose the configuration
cfg = hydra.compose(config_name=simulation_hydra_paths.config_name, overrides=[ cfg = hydra.compose(config_name=simulation_hydra_paths.config_name, overrides=[
'+simulation=closed_loop_multiagent', '+simulation=closed_loop_multiagent',
'model=urban_driver_open_loop_model', 'model=urban_driver_open_loop_model',
'planner=pdm_hybrid_planner', 'planner=pdm_hybrid_planner',
f"planner.pdm_hybrid_planner.checkpoint_path={hybrid_ckpt}" , f"planner.pdm_hybrid_planner.checkpoint_path={hybrid_ckpt}" ,
'observation.model_config=${model}', 'observation.model_config=${model}',
f'observation.checkpoint_path={ckpt_dir}', f'observation.checkpoint_path={ckpt_dir}',
f'observation.planner_type=pdm_closed', f'observation.planner_type=pdm_hybrid',
f'observation.pdm_hybrid_ckpt={hybrid_ckpt}', f'observation.pdm_hybrid_ckpt={hybrid_ckpt}',
f'observation.occlusions=true', f'observation.occlusions=true',
'worker=sequential', 'worker=sequential',
'+occlusion=true', '+occlusion=true',
'+occlusion.manager_type=wedge', #options: [range, shadow, wedge] '+occlusion.manager_type=wedge', #options: [range, shadow, wedge]
"hydra.searchpath=[pkg://tuplan_garage.planning.script.config.common, pkg://tuplan_garage.planning.script.config.simulation, pkg://nuplan.planning.script.config.common, pkg://nuplan.planning.script.experiments]", "hydra.searchpath=[pkg://tuplan_garage.planning.script.config.common, pkg://tuplan_garage.planning.script.config.simulation, pkg://nuplan.planning.script.config.common, pkg://nuplan.planning.script.experiments]",
*DATASET_PARAMS, *DATASET_PARAMS,
]) ])
``` ```
%% Cell type:code id:161cc166 tags: %% Cell type:code id:161cc166 tags:
``` python ``` python
from nuplan.planning.script.run_simulation import build_simulation_runners from nuplan.planning.script.run_simulation import build_simulation_runners
from nuplan.common.actor_state.tracked_objects_types import AGENT_TYPES, STATIC_OBJECT_TYPES, TrackedObjectType from nuplan.common.actor_state.tracked_objects_types import AGENT_TYPES, STATIC_OBJECT_TYPES, TrackedObjectType
# Run the simulation loop (real-time visualization not yet supported, see next section for visualization) # Run the simulation loop (real-time visualization not yet supported, see next section for visualization)
runners, common_builder, cfg = build_simulation_runners(cfg) runners, common_builder, cfg = build_simulation_runners(cfg)
``` ```
%% Output %% Output
Global seed set to 0 Global seed set to 0
INFO:nuplan.planning.script.builders.main_callback_builder:Building MultiMainCallback... INFO:nuplan.planning.script.builders.main_callback_builder:Building MultiMainCallback...
INFO:nuplan.planning.script.builders.main_callback_builder:Building MultiMainCallback: 4...DONE! INFO:nuplan.planning.script.builders.main_callback_builder:Building MultiMainCallback: 4...DONE!
2023-12-23 20:52:26,435 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/worker_pool_builder.py:19} Building WorkerPool... 2023-12-30 01:57:45,114 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/worker_pool_builder.py:19} Building WorkerPool...
2023-12-23 20:52:26,437 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/utils/multithreading/worker_pool.py:101} Worker: Sequential 2023-12-30 01:57:45,115 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/utils/multithreading/worker_pool.py:101} Worker: Sequential
2023-12-23 20:52:26,437 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/utils/multithreading/worker_pool.py:102} Number of nodes: 1 2023-12-30 01:57:45,115 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/utils/multithreading/worker_pool.py:102} Number of nodes: 1
Number of CPUs per node: 1 Number of CPUs per node: 1
Number of GPUs per node: 0 Number of GPUs per node: 0
Number of threads across all nodes: 1 Number of threads across all nodes: 1
2023-12-23 20:52:26,437 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/worker_pool_builder.py:27} Building WorkerPool...DONE! 2023-12-30 01:57:45,115 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/worker_pool_builder.py:27} Building WorkerPool...DONE!
2023-12-23 20:52:26,437 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:32} Building experiment folders... 2023-12-30 01:57:45,115 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:32} Building experiment folders...
2023-12-23 20:52:26,437 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:35} 2023-12-30 01:57:45,115 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:35}
Folder where all results are stored: /media/sacardoz/Storage/nuplan/exp/exp/simulation/closed_loop_multiagent/2023.12.23.20.52.26 Folder where all results are stored: /media/sacardoz/Storage/nuplan/exp/exp/simulation/closed_loop_multiagent/2023.12.30.01.57.44
2023-12-23 20:52:26,438 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:70} Building experiment folders...DONE! 2023-12-30 01:57:45,117 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:70} Building experiment folders...DONE!
2023-12-23 20:52:26,439 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_callback_builder.py:52} Building AbstractCallback... 2023-12-30 01:57:45,117 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_callback_builder.py:52} Building AbstractCallback...
2023-12-23 20:52:26,439 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_callback_builder.py:68} Building AbstractCallback: 0...DONE! 2023-12-30 01:57:45,117 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_callback_builder.py:68} Building AbstractCallback: 0...DONE!
2023-12-23 20:52:26,439 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:49} Building simulations... 2023-12-30 01:57:45,117 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:49} Building simulations...
2023-12-23 20:52:26,439 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:55} Extracting scenarios... 2023-12-30 01:57:45,117 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:55} Extracting scenarios...
2023-12-23 20:52:26,439 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/common/utils/distributed_scenario_filter.py:83} Building Scenarios in mode DistributedMode.SINGLE_NODE 2023-12-30 01:57:45,117 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/common/utils/distributed_scenario_filter.py:83} Building Scenarios in mode DistributedMode.SINGLE_NODE
2023-12-23 20:52:26,439 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/scenario_building_builder.py:18} Building AbstractScenarioBuilder... 2023-12-30 01:57:45,118 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/scenario_building_builder.py:18} Building AbstractScenarioBuilder...
2023-12-23 20:52:26,452 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/scenario_building_builder.py:21} Building AbstractScenarioBuilder...DONE! 2023-12-30 01:57:45,129 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/scenario_building_builder.py:21} Building AbstractScenarioBuilder...DONE!
2023-12-23 20:52:26,452 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/scenario_filter_builder.py:35} Building ScenarioFilter... 2023-12-30 01:57:45,130 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/scenario_filter_builder.py:35} Building ScenarioFilter...
2023-12-23 20:52:26,453 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/scenario_filter_builder.py:44} Building ScenarioFilter...DONE! 2023-12-30 01:57:45,131 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/scenario_filter_builder.py:44} Building ScenarioFilter...DONE!
2023-12-23 20:52:26,470 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:76} Building metric engines... 2023-12-30 01:57:45,149 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:76} Building metric engines...
2023-12-23 20:52:26,498 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:78} Building metric engines...DONE 2023-12-30 01:57:45,181 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:78} Building metric engines...DONE
2023-12-23 20:52:26,498 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:82} Building simulations from 1 scenarios... 2023-12-30 01:57:45,181 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:82} Building simulations from 1 scenarios...
2023-12-23 20:52:26,633 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/model_builder.py:18} Building TorchModuleWrapper... 2023-12-30 01:57:45,315 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/model_builder.py:18} Building TorchModuleWrapper...
2023-12-23 20:52:26,669 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/model_builder.py:21} Building TorchModuleWrapper...DONE! 2023-12-30 01:57:45,353 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/model_builder.py:21} Building TorchModuleWrapper...DONE!
2023-12-23 20:52:27,238 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:142} Building simulations...DONE! 2023-12-30 01:57:45,912 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:142} Building simulations...DONE!
%% Cell type:code id:223284d4 tags: %% Cell type:code id:223284d4 tags:
``` python ``` python
runner = runners[0] runner = runners[0]
``` ```
%% Cell type:code id:907ad940 tags: %% Cell type:code id:907ad940 tags:
``` python ``` python
from nuplan.common.actor_state.agent import Agent from nuplan.common.actor_state.agent import Agent
from nuplan.common.actor_state.oriented_box import OrientedBox from nuplan.common.actor_state.oriented_box import OrientedBox
from nuplan.common.actor_state.scene_object import SceneObjectMetadata from nuplan.common.actor_state.scene_object import SceneObjectMetadata
from nuplan.common.actor_state.state_representation import StateSE2, StateVector2D from nuplan.common.actor_state.state_representation import StateSE2, StateVector2D
inserted_agent = Agent(tracked_object_type=TrackedObjectType.VEHICLE, inserted_agent = Agent(tracked_object_type=TrackedObjectType.VEHICLE,
oriented_box=OrientedBox(StateSE2(664433, 3997400, -3.14 / 2), 5, 2, 2), oriented_box=OrientedBox(StateSE2(664433, 3997400, -3.14 / 2), 5, 2, 2),
velocity=StateVector2D(0, 0), velocity=StateVector2D(0, 0),
metadata=SceneObjectMetadata(1623707858950113, "inserted", -2, "inserted"), metadata=SceneObjectMetadata(1623707858950113, "inserted", -2, "inserted"),
angular_velocity=0.0) angular_velocity=0.0)
inserted_goal = StateSE2(664433, 3997000, -3.14 / 2) inserted_goal = StateSE2(664433, 3997000, -3.14 / 2)
``` ```
%% Cell type:code id:90b79421 tags: %% Cell type:code id:90b79421 tags:
``` python ``` python
runner.simulation.callback.on_simulation_start(runner.simulation.setup) runner.simulation.callback.on_simulation_start(runner.simulation.setup)
# Initialize all simulations # Initialize all simulations
runner._initialize() runner._initialize()
while runner.simulation.is_simulation_running(): while runner.simulation.is_simulation_running():
if runner.simulation._time_controller.get_iteration().index == 10: #if runner.simulation._time_controller.get_iteration().index == 10:
runner.simulation._observations.add_agent_to_scene(inserted_agent, inserted_goal, iteration.time_point) # runner.simulation._observations.add_agent_to_scene(inserted_agent, inserted_goal, iteration.time_point)
# Execute specific callback # Execute specific callback
runner.simulation.callback.on_step_start(runner.simulation.setup, runner.planner) runner.simulation.callback.on_step_start(runner.simulation.setup, runner.planner)
# Perform step # Perform step
planner_input = runner._simulation.get_planner_input() planner_input = runner._simulation.get_planner_input()
# Execute specific call+back # Execute specific call+back
runner._simulation.callback.on_planner_start(runner.simulation.setup, runner.planner) runner._simulation.callback.on_planner_start(runner.simulation.setup, runner.planner)
# Plan path based on all planner's inputs # Plan path based on all planner's inputs
trajectory = runner.planner.compute_trajectory(planner_input) trajectory = runner.planner.compute_trajectory(planner_input)
# Propagate simulation based on planner trajectory # Propagate simulation based on planner trajectory
runner._simulation.callback.on_planner_end(runner.simulation.setup, runner.planner, trajectory) runner._simulation.callback.on_planner_end(runner.simulation.setup, runner.planner, trajectory)
iteration = runner.simulation._time_controller.get_iteration() iteration = runner.simulation._time_controller.get_iteration()
print(iteration) print(iteration)
runner.simulation.propagate(trajectory) runner.simulation.propagate(trajectory)
# Execute specific callback # Execute specific callback
runner.simulation.callback.on_step_end(runner.simulation.setup, runner.planner, runner.simulation.history.last()) runner.simulation.callback.on_step_end(runner.simulation.setup, runner.planner, runner.simulation.history.last())
runner.simulation.callback.on_simulation_end(runner.simulation.setup, runner.planner, runner.simulation.history) runner.simulation.callback.on_simulation_end(runner.simulation.setup, runner.planner, runner.simulation.history)
``` ```
%% Output %% Output
SimulationIteration(time_point=TimePoint(time_us=1623707846350127), index=0) SimulationIteration(time_point=TimePoint(time_us=1623707846350127), index=0)
SimulationIteration(time_point=TimePoint(time_us=1623707846450055), index=1) SimulationIteration(time_point=TimePoint(time_us=1623707846450055), index=1)
SimulationIteration(time_point=TimePoint(time_us=1623707846549980), index=2) SimulationIteration(time_point=TimePoint(time_us=1623707846549980), index=2)
SimulationIteration(time_point=TimePoint(time_us=1623707846649908), index=3) SimulationIteration(time_point=TimePoint(time_us=1623707846649908), index=3)
SimulationIteration(time_point=TimePoint(time_us=1623707846749828), index=4) SimulationIteration(time_point=TimePoint(time_us=1623707846749828), index=4)
SimulationIteration(time_point=TimePoint(time_us=1623707846849751), index=5) SimulationIteration(time_point=TimePoint(time_us=1623707846849751), index=5)
SimulationIteration(time_point=TimePoint(time_us=1623707846949678), index=6) SimulationIteration(time_point=TimePoint(time_us=1623707846949678), index=6)
SimulationIteration(time_point=TimePoint(time_us=1623707847049600), index=7) SimulationIteration(time_point=TimePoint(time_us=1623707847049600), index=7)
SimulationIteration(time_point=TimePoint(time_us=1623707847149533), index=8) SimulationIteration(time_point=TimePoint(time_us=1623707847149533), index=8)
SimulationIteration(time_point=TimePoint(time_us=1623707847249494), index=9) SimulationIteration(time_point=TimePoint(time_us=1623707847249494), index=9)
SimulationIteration(time_point=TimePoint(time_us=1623707847349489), index=10) SimulationIteration(time_point=TimePoint(time_us=1623707847349489), index=10)
SimulationIteration(time_point=TimePoint(time_us=1623707847449511), index=11) SimulationIteration(time_point=TimePoint(time_us=1623707847449511), index=11)
SimulationIteration(time_point=TimePoint(time_us=1623707847549545), index=12) SimulationIteration(time_point=TimePoint(time_us=1623707847549545), index=12)
SimulationIteration(time_point=TimePoint(time_us=1623707847649595), index=13) SimulationIteration(time_point=TimePoint(time_us=1623707847649595), index=13)
SimulationIteration(time_point=TimePoint(time_us=1623707847749661), index=14) SimulationIteration(time_point=TimePoint(time_us=1623707847749661), index=14)
SimulationIteration(time_point=TimePoint(time_us=1623707847849740), index=15) SimulationIteration(time_point=TimePoint(time_us=1623707847849740), index=15)
SimulationIteration(time_point=TimePoint(time_us=1623707847949830), index=16) SimulationIteration(time_point=TimePoint(time_us=1623707847949830), index=16)
SimulationIteration(time_point=TimePoint(time_us=1623707848049917), index=17) SimulationIteration(time_point=TimePoint(time_us=1623707848049917), index=17)
SimulationIteration(time_point=TimePoint(time_us=1623707848149996), index=18) SimulationIteration(time_point=TimePoint(time_us=1623707848149996), index=18)
SimulationIteration(time_point=TimePoint(time_us=1623707848250061), index=19) SimulationIteration(time_point=TimePoint(time_us=1623707848250061), index=19)
SimulationIteration(time_point=TimePoint(time_us=1623707848350125), index=20) SimulationIteration(time_point=TimePoint(time_us=1623707848350125), index=20)
SimulationIteration(time_point=TimePoint(time_us=1623707848450201), index=21) SimulationIteration(time_point=TimePoint(time_us=1623707848450201), index=21)
SimulationIteration(time_point=TimePoint(time_us=1623707848550285), index=22) SimulationIteration(time_point=TimePoint(time_us=1623707848550285), index=22)
SimulationIteration(time_point=TimePoint(time_us=1623707848650366), index=23) SimulationIteration(time_point=TimePoint(time_us=1623707848650366), index=23)
SimulationIteration(time_point=TimePoint(time_us=1623707848750437), index=24) SimulationIteration(time_point=TimePoint(time_us=1623707848750437), index=24)
SimulationIteration(time_point=TimePoint(time_us=1623707848850498), index=25) SimulationIteration(time_point=TimePoint(time_us=1623707848850498), index=25)
SimulationIteration(time_point=TimePoint(time_us=1623707848950550), index=26) SimulationIteration(time_point=TimePoint(time_us=1623707848950550), index=26)
SimulationIteration(time_point=TimePoint(time_us=1623707849050609), index=27) SimulationIteration(time_point=TimePoint(time_us=1623707849050609), index=27)
SimulationIteration(time_point=TimePoint(time_us=1623707849150663), index=28) SimulationIteration(time_point=TimePoint(time_us=1623707849150663), index=28)
SimulationIteration(time_point=TimePoint(time_us=1623707849250694), index=29) SimulationIteration(time_point=TimePoint(time_us=1623707849250694), index=29)
SimulationIteration(time_point=TimePoint(time_us=1623707849350712), index=30) SimulationIteration(time_point=TimePoint(time_us=1623707849350712), index=30)
SimulationIteration(time_point=TimePoint(time_us=1623707849450721), index=31) SimulationIteration(time_point=TimePoint(time_us=1623707849450721), index=31)
SimulationIteration(time_point=TimePoint(time_us=1623707849550719), index=32) SimulationIteration(time_point=TimePoint(time_us=1623707849550719), index=32)
SimulationIteration(time_point=TimePoint(time_us=1623707849650719), index=33) SimulationIteration(time_point=TimePoint(time_us=1623707849650719), index=33)
SimulationIteration(time_point=TimePoint(time_us=1623707849750708), index=34) SimulationIteration(time_point=TimePoint(time_us=1623707849750708), index=34)
SimulationIteration(time_point=TimePoint(time_us=1623707849850693), index=35) SimulationIteration(time_point=TimePoint(time_us=1623707849850693), index=35)
SimulationIteration(time_point=TimePoint(time_us=1623707849950680), index=36) SimulationIteration(time_point=TimePoint(time_us=1623707849950680), index=36)
SimulationIteration(time_point=TimePoint(time_us=1623707850050657), index=37) SimulationIteration(time_point=TimePoint(time_us=1623707850050657), index=37)
SimulationIteration(time_point=TimePoint(time_us=1623707850150617), index=38) SimulationIteration(time_point=TimePoint(time_us=1623707850150617), index=38)
SimulationIteration(time_point=TimePoint(time_us=1623707850250579), index=39) SimulationIteration(time_point=TimePoint(time_us=1623707850250579), index=39)
SimulationIteration(time_point=TimePoint(time_us=1623707850350533), index=40) SimulationIteration(time_point=TimePoint(time_us=1623707850350533), index=40)
SimulationIteration(time_point=TimePoint(time_us=1623707850450476), index=41) SimulationIteration(time_point=TimePoint(time_us=1623707850450476), index=41)
SimulationIteration(time_point=TimePoint(time_us=1623707850550409), index=42) SimulationIteration(time_point=TimePoint(time_us=1623707850550409), index=42)
SimulationIteration(time_point=TimePoint(time_us=1623707850650331), index=43) SimulationIteration(time_point=TimePoint(time_us=1623707850650331), index=43)
SimulationIteration(time_point=TimePoint(time_us=1623707850750249), index=44) SimulationIteration(time_point=TimePoint(time_us=1623707850750249), index=44)
SimulationIteration(time_point=TimePoint(time_us=1623707850850165), index=45) SimulationIteration(time_point=TimePoint(time_us=1623707850850165), index=45)
SimulationIteration(time_point=TimePoint(time_us=1623707850950074), index=46) SimulationIteration(time_point=TimePoint(time_us=1623707850950074), index=46)
SimulationIteration(time_point=TimePoint(time_us=1623707851049984), index=47) SimulationIteration(time_point=TimePoint(time_us=1623707851049984), index=47)
SimulationIteration(time_point=TimePoint(time_us=1623707851149906), index=48) SimulationIteration(time_point=TimePoint(time_us=1623707851149906), index=48)
SimulationIteration(time_point=TimePoint(time_us=1623707851249854), index=49) SimulationIteration(time_point=TimePoint(time_us=1623707851249854), index=49)
SimulationIteration(time_point=TimePoint(time_us=1623707851349817), index=50) SimulationIteration(time_point=TimePoint(time_us=1623707851349817), index=50)
SimulationIteration(time_point=TimePoint(time_us=1623707851449795), index=51) SimulationIteration(time_point=TimePoint(time_us=1623707851449795), index=51)
SimulationIteration(time_point=TimePoint(time_us=1623707851549788), index=52) SimulationIteration(time_point=TimePoint(time_us=1623707851549788), index=52)
SimulationIteration(time_point=TimePoint(time_us=1623707851649785), index=53) SimulationIteration(time_point=TimePoint(time_us=1623707851649785), index=53)
SimulationIteration(time_point=TimePoint(time_us=1623707851749789), index=54) SimulationIteration(time_point=TimePoint(time_us=1623707851749789), index=54)
SimulationIteration(time_point=TimePoint(time_us=1623707851849798), index=55) SimulationIteration(time_point=TimePoint(time_us=1623707851849798), index=55)
SimulationIteration(time_point=TimePoint(time_us=1623707851949814), index=56) SimulationIteration(time_point=TimePoint(time_us=1623707851949814), index=56)
SimulationIteration(time_point=TimePoint(time_us=1623707852049839), index=57) SimulationIteration(time_point=TimePoint(time_us=1623707852049839), index=57)
SimulationIteration(time_point=TimePoint(time_us=1623707852149873), index=58) SimulationIteration(time_point=TimePoint(time_us=1623707852149873), index=58)
SimulationIteration(time_point=TimePoint(time_us=1623707852249912), index=59) SimulationIteration(time_point=TimePoint(time_us=1623707852249912), index=59)
SimulationIteration(time_point=TimePoint(time_us=1623707852349958), index=60) SimulationIteration(time_point=TimePoint(time_us=1623707852349958), index=60)
SimulationIteration(time_point=TimePoint(time_us=1623707852450015), index=61) SimulationIteration(time_point=TimePoint(time_us=1623707852450015), index=61)
SimulationIteration(time_point=TimePoint(time_us=1623707852550074), index=62) SimulationIteration(time_point=TimePoint(time_us=1623707852550074), index=62)
SimulationIteration(time_point=TimePoint(time_us=1623707852650134), index=63) SimulationIteration(time_point=TimePoint(time_us=1623707852650134), index=63)
SimulationIteration(time_point=TimePoint(time_us=1623707852750202), index=64) SimulationIteration(time_point=TimePoint(time_us=1623707852750202), index=64)
SimulationIteration(time_point=TimePoint(time_us=1623707852850274), index=65) SimulationIteration(time_point=TimePoint(time_us=1623707852850274), index=65)
SimulationIteration(time_point=TimePoint(time_us=1623707852950341), index=66) SimulationIteration(time_point=TimePoint(time_us=1623707852950341), index=66)
SimulationIteration(time_point=TimePoint(time_us=1623707853050396), index=67) SimulationIteration(time_point=TimePoint(time_us=1623707853050396), index=67)
SimulationIteration(time_point=TimePoint(time_us=1623707853150437), index=68) SimulationIteration(time_point=TimePoint(time_us=1623707853150437), index=68)
SimulationIteration(time_point=TimePoint(time_us=1623707853250455), index=69) SimulationIteration(time_point=TimePoint(time_us=1623707853250455), index=69)
SimulationIteration(time_point=TimePoint(time_us=1623707853350458), index=70) SimulationIteration(time_point=TimePoint(time_us=1623707853350458), index=70)
SimulationIteration(time_point=TimePoint(time_us=1623707853450447), index=71) SimulationIteration(time_point=TimePoint(time_us=1623707853450447), index=71)
SimulationIteration(time_point=TimePoint(time_us=1623707853550423), index=72) SimulationIteration(time_point=TimePoint(time_us=1623707853550423), index=72)
SimulationIteration(time_point=TimePoint(time_us=1623707853650396), index=73) SimulationIteration(time_point=TimePoint(time_us=1623707853650396), index=73)
SimulationIteration(time_point=TimePoint(time_us=1623707853750371), index=74) SimulationIteration(time_point=TimePoint(time_us=1623707853750371), index=74)
SimulationIteration(time_point=TimePoint(time_us=1623707853850348), index=75) SimulationIteration(time_point=TimePoint(time_us=1623707853850348), index=75)
SimulationIteration(time_point=TimePoint(time_us=1623707853950316), index=76) SimulationIteration(time_point=TimePoint(time_us=1623707853950316), index=76)
SimulationIteration(time_point=TimePoint(time_us=1623707854050282), index=77) SimulationIteration(time_point=TimePoint(time_us=1623707854050282), index=77)
SimulationIteration(time_point=TimePoint(time_us=1623707854150246), index=78) SimulationIteration(time_point=TimePoint(time_us=1623707854150246), index=78)
SimulationIteration(time_point=TimePoint(time_us=1623707854250202), index=79) SimulationIteration(time_point=TimePoint(time_us=1623707854250202), index=79)
SimulationIteration(time_point=TimePoint(time_us=1623707854350166), index=80) SimulationIteration(time_point=TimePoint(time_us=1623707854350166), index=80)
SimulationIteration(time_point=TimePoint(time_us=1623707854450127), index=81) SimulationIteration(time_point=TimePoint(time_us=1623707854450127), index=81)
SimulationIteration(time_point=TimePoint(time_us=1623707854550087), index=82) SimulationIteration(time_point=TimePoint(time_us=1623707854550087), index=82)
SimulationIteration(time_point=TimePoint(time_us=1623707854650049), index=83) SimulationIteration(time_point=TimePoint(time_us=1623707854650049), index=83)
SimulationIteration(time_point=TimePoint(time_us=1623707854750013), index=84) SimulationIteration(time_point=TimePoint(time_us=1623707854750013), index=84)
SimulationIteration(time_point=TimePoint(time_us=1623707854849975), index=85) SimulationIteration(time_point=TimePoint(time_us=1623707854849975), index=85)
SimulationIteration(time_point=TimePoint(time_us=1623707854949934), index=86) SimulationIteration(time_point=TimePoint(time_us=1623707854949934), index=86)
SimulationIteration(time_point=TimePoint(time_us=1623707855049897), index=87) SimulationIteration(time_point=TimePoint(time_us=1623707855049897), index=87)
SimulationIteration(time_point=TimePoint(time_us=1623707855149866), index=88) SimulationIteration(time_point=TimePoint(time_us=1623707855149866), index=88)
SimulationIteration(time_point=TimePoint(time_us=1623707855249835), index=89) SimulationIteration(time_point=TimePoint(time_us=1623707855249835), index=89)
SimulationIteration(time_point=TimePoint(time_us=1623707855349806), index=90) SimulationIteration(time_point=TimePoint(time_us=1623707855349806), index=90)
SimulationIteration(time_point=TimePoint(time_us=1623707855449781), index=91) SimulationIteration(time_point=TimePoint(time_us=1623707855449781), index=91)
SimulationIteration(time_point=TimePoint(time_us=1623707855549767), index=92) SimulationIteration(time_point=TimePoint(time_us=1623707855549767), index=92)
SimulationIteration(time_point=TimePoint(time_us=1623707855649761), index=93) SimulationIteration(time_point=TimePoint(time_us=1623707855649761), index=93)
SimulationIteration(time_point=TimePoint(time_us=1623707855749759), index=94) SimulationIteration(time_point=TimePoint(time_us=1623707855749759), index=94)
SimulationIteration(time_point=TimePoint(time_us=1623707855849764), index=95) SimulationIteration(time_point=TimePoint(time_us=1623707855849764), index=95)
SimulationIteration(time_point=TimePoint(time_us=1623707855949781), index=96) SimulationIteration(time_point=TimePoint(time_us=1623707855949781), index=96)
SimulationIteration(time_point=TimePoint(time_us=1623707856049800), index=97) SimulationIteration(time_point=TimePoint(time_us=1623707856049800), index=97)
SimulationIteration(time_point=TimePoint(time_us=1623707856149811), index=98) SimulationIteration(time_point=TimePoint(time_us=1623707856149811), index=98)
SimulationIteration(time_point=TimePoint(time_us=1623707856249820), index=99) SimulationIteration(time_point=TimePoint(time_us=1623707856249820), index=99)
SimulationIteration(time_point=TimePoint(time_us=1623707856349835), index=100) SimulationIteration(time_point=TimePoint(time_us=1623707856349835), index=100)
SimulationIteration(time_point=TimePoint(time_us=1623707856449843), index=101) SimulationIteration(time_point=TimePoint(time_us=1623707856449843), index=101)
SimulationIteration(time_point=TimePoint(time_us=1623707856549842), index=102) SimulationIteration(time_point=TimePoint(time_us=1623707856549842), index=102)
SimulationIteration(time_point=TimePoint(time_us=1623707856649840), index=103) SimulationIteration(time_point=TimePoint(time_us=1623707856649840), index=103)
SimulationIteration(time_point=TimePoint(time_us=1623707856749839), index=104) SimulationIteration(time_point=TimePoint(time_us=1623707856749839), index=104)
SimulationIteration(time_point=TimePoint(time_us=1623707856849830), index=105) SimulationIteration(time_point=TimePoint(time_us=1623707856849830), index=105)
SimulationIteration(time_point=TimePoint(time_us=1623707856949823), index=106) SimulationIteration(time_point=TimePoint(time_us=1623707856949823), index=106)
SimulationIteration(time_point=TimePoint(time_us=1623707857049822), index=107) SimulationIteration(time_point=TimePoint(time_us=1623707857049822), index=107)
SimulationIteration(time_point=TimePoint(time_us=1623707857149827), index=108) SimulationIteration(time_point=TimePoint(time_us=1623707857149827), index=108)
SimulationIteration(time_point=TimePoint(time_us=1623707857249832), index=109) SimulationIteration(time_point=TimePoint(time_us=1623707857249832), index=109)
SimulationIteration(time_point=TimePoint(time_us=1623707857349847), index=110) SimulationIteration(time_point=TimePoint(time_us=1623707857349847), index=110)
SimulationIteration(time_point=TimePoint(time_us=1623707857449869), index=111) SimulationIteration(time_point=TimePoint(time_us=1623707857449869), index=111)
SimulationIteration(time_point=TimePoint(time_us=1623707857549895), index=112) SimulationIteration(time_point=TimePoint(time_us=1623707857549895), index=112)
SimulationIteration(time_point=TimePoint(time_us=1623707857649926), index=113) SimulationIteration(time_point=TimePoint(time_us=1623707857649926), index=113)
SimulationIteration(time_point=TimePoint(time_us=1623707857749959), index=114) SimulationIteration(time_point=TimePoint(time_us=1623707857749959), index=114)
SimulationIteration(time_point=TimePoint(time_us=1623707857849999), index=115) SimulationIteration(time_point=TimePoint(time_us=1623707857849999), index=115)
SimulationIteration(time_point=TimePoint(time_us=1623707857950037), index=116) SimulationIteration(time_point=TimePoint(time_us=1623707857950037), index=116)
SimulationIteration(time_point=TimePoint(time_us=1623707858050070), index=117) SimulationIteration(time_point=TimePoint(time_us=1623707858050070), index=117)
SimulationIteration(time_point=TimePoint(time_us=1623707858150098), index=118) SimulationIteration(time_point=TimePoint(time_us=1623707858150098), index=118)
SimulationIteration(time_point=TimePoint(time_us=1623707858250120), index=119) SimulationIteration(time_point=TimePoint(time_us=1623707858250120), index=119)
SimulationIteration(time_point=TimePoint(time_us=1623707858350135), index=120) SimulationIteration(time_point=TimePoint(time_us=1623707858350135), index=120)
SimulationIteration(time_point=TimePoint(time_us=1623707858450145), index=121) SimulationIteration(time_point=TimePoint(time_us=1623707858450145), index=121)
SimulationIteration(time_point=TimePoint(time_us=1623707858550149), index=122) SimulationIteration(time_point=TimePoint(time_us=1623707858550149), index=122)
SimulationIteration(time_point=TimePoint(time_us=1623707858650146), index=123) SimulationIteration(time_point=TimePoint(time_us=1623707858650146), index=123)
SimulationIteration(time_point=TimePoint(time_us=1623707858750137), index=124) SimulationIteration(time_point=TimePoint(time_us=1623707858750137), index=124)
SimulationIteration(time_point=TimePoint(time_us=1623707858850126), index=125) SimulationIteration(time_point=TimePoint(time_us=1623707858850126), index=125)
SimulationIteration(time_point=TimePoint(time_us=1623707858950113), index=126) SimulationIteration(time_point=TimePoint(time_us=1623707858950113), index=126)
SimulationIteration(time_point=TimePoint(time_us=1623707859050096), index=127) SimulationIteration(time_point=TimePoint(time_us=1623707859050096), index=127)
SimulationIteration(time_point=TimePoint(time_us=1623707859150076), index=128) SimulationIteration(time_point=TimePoint(time_us=1623707859150076), index=128)
SimulationIteration(time_point=TimePoint(time_us=1623707859250064), index=129) SimulationIteration(time_point=TimePoint(time_us=1623707859250064), index=129)
SimulationIteration(time_point=TimePoint(time_us=1623707859350064), index=130) SimulationIteration(time_point=TimePoint(time_us=1623707859350064), index=130)
SimulationIteration(time_point=TimePoint(time_us=1623707859450064), index=131) SimulationIteration(time_point=TimePoint(time_us=1623707859450064), index=131)
SimulationIteration(time_point=TimePoint(time_us=1623707859550063), index=132) SimulationIteration(time_point=TimePoint(time_us=1623707859550063), index=132)
SimulationIteration(time_point=TimePoint(time_us=1623707859650055), index=133) SimulationIteration(time_point=TimePoint(time_us=1623707859650055), index=133)
SimulationIteration(time_point=TimePoint(time_us=1623707859750047), index=134) SimulationIteration(time_point=TimePoint(time_us=1623707859750047), index=134)
SimulationIteration(time_point=TimePoint(time_us=1623707859850041), index=135) SimulationIteration(time_point=TimePoint(time_us=1623707859850041), index=135)
SimulationIteration(time_point=TimePoint(time_us=1623707859950028), index=136) SimulationIteration(time_point=TimePoint(time_us=1623707859950028), index=136)
SimulationIteration(time_point=TimePoint(time_us=1623707860050018), index=137) SimulationIteration(time_point=TimePoint(time_us=1623707860050018), index=137)
SimulationIteration(time_point=TimePoint(time_us=1623707860150002), index=138) SimulationIteration(time_point=TimePoint(time_us=1623707860150002), index=138)
SimulationIteration(time_point=TimePoint(time_us=1623707860249979), index=139) SimulationIteration(time_point=TimePoint(time_us=1623707860249979), index=139)
SimulationIteration(time_point=TimePoint(time_us=1623707860349963), index=140) SimulationIteration(time_point=TimePoint(time_us=1623707860349963), index=140)
SimulationIteration(time_point=TimePoint(time_us=1623707860449960), index=141) SimulationIteration(time_point=TimePoint(time_us=1623707860449960), index=141)
SimulationIteration(time_point=TimePoint(time_us=1623707860549964), index=142) SimulationIteration(time_point=TimePoint(time_us=1623707860549964), index=142)
SimulationIteration(time_point=TimePoint(time_us=1623707860649965), index=143) SimulationIteration(time_point=TimePoint(time_us=1623707860649965), index=143)
SimulationIteration(time_point=TimePoint(time_us=1623707860749961), index=144) SimulationIteration(time_point=TimePoint(time_us=1623707860749961), index=144)
SimulationIteration(time_point=TimePoint(time_us=1623707860849946), index=145) SimulationIteration(time_point=TimePoint(time_us=1623707860849946), index=145)
SimulationIteration(time_point=TimePoint(time_us=1623707860949927), index=146) SimulationIteration(time_point=TimePoint(time_us=1623707860949927), index=146)
SimulationIteration(time_point=TimePoint(time_us=1623707861049906), index=147) SimulationIteration(time_point=TimePoint(time_us=1623707861049906), index=147)
SimulationIteration(time_point=TimePoint(time_us=1623707861149865), index=148) SimulationIteration(time_point=TimePoint(time_us=1623707861149865), index=148)
%% Cell type:code id:e6c22f5f tags: %% Cell type:code id:ee4f6784 tags:
``` python ``` python
from tutorials.utils.tutorial_utils import visualize_history from tutorials.utils.tutorial_utils import visualize_history
visualize_history(runner.simulation._history, runner.scenario, bokeh_port=5009) visualize_history(runner.simulation._history, runner.scenario, bokeh_port=5003)
``` ```
%% Output %% Output
INFO:bokeh.server.server:Starting Bokeh server version 2.4.3 (running on Tornado 6.3.3) INFO:bokeh.server.server:Starting Bokeh server version 2.4.3 (running on Tornado 6.3.3)
WARNING:bokeh.server.util:Host wildcard '*' will allow connections originating from multiple (or possibly all) hostnames or IPs. Use non-wildcard values to restrict access explicitly WARNING:bokeh.server.util:Host wildcard '*' will allow connections originating from multiple (or possibly all) hostnames or IPs. Use non-wildcard values to restrict access explicitly
INFO:bokeh.server.tornado:User authentication hooks NOT provided (default user enabled) INFO:bokeh.server.tornado:User authentication hooks NOT provided (default user enabled)
2023-12-23 20:59:59,909 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from 'run_sim_closed_loop/training_raster_experiment/train_default_raster/2023.11.14.22.55.23/hparams.yaml'. Is this a 'parquet' file?: Could not open Parquet input source 'run_sim_closed_loop/training_raster_experiment/train_default_raster/2023.11.14.22.55.23/hparams.yaml': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file. 2023-12-30 02:47:05,264 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet file size is 0 bytes
2023-12-23 20:59:59,910 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file. 2023-12-30 02:47:05,265 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-23 20:59:59,910 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file. 2023-12-30 02:47:05,266 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from 'tutorials/media/nuplan_flow.svg'. Is this a 'parquet' file?: Could not open Parquet input source 'tutorials/media/nuplan_flow.svg': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-23 20:59:59,911 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from 'pretrained_checkpoints/gc_pgp_checkpoint.ckpt'. Is this a 'parquet' file?: Could not open Parquet input source 'pretrained_checkpoints/gc_pgp_checkpoint.ckpt': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file. 2023-12-30 02:47:05,266 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-23 20:59:59,911 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file. 2023-12-30 02:47:05,266 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-23 20:59:59,911 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file. 2023-12-30 02:47:05,266 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-23 20:59:59,911 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file. 2023-12-30 02:47:05,267 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-23 20:59:59,912 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file. 2023-12-30 02:47:05,267 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-23 20:59:59,914 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/simulation_tile.py:172} Minimum frame time=0.017 s 2023-12-30 02:47:05,267 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,267 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,268 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,268 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from '.github/ISSUE_TEMPLATE/bug_report.md'. Is this a 'parquet' file?: Could not open Parquet input source '.github/ISSUE_TEMPLATE/bug_report.md': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,268 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,269 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,269 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,269 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,278 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from 'nuplan/BUILD'. Is this a 'parquet' file?: Could not open Parquet input source 'nuplan/BUILD': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,279 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from 'nuplan_devkit.egg-info/PKG-INFO'. Is this a 'parquet' file?: Could not open Parquet input source 'nuplan_devkit.egg-info/PKG-INFO': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,279 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from 'tox/requirements_pythonlint.txt'. Is this a 'parquet' file?: Could not open Parquet input source 'tox/requirements_pythonlint.txt': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,280 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,280 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from 'docs/Makefile'. Is this a 'parquet' file?: Could not open Parquet input source 'docs/Makefile': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,281 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,281 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,281 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,282 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,282 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,282 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,282 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,283 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,283 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from 'experiments/bulk_running_experiments.ipynb'. Is this a 'parquet' file?: Could not open Parquet input source 'experiments/bulk_running_experiments.ipynb': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,283 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,288 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from '.git/COMMIT_EDITMSG'. Is this a 'parquet' file?: Could not open Parquet input source '.git/COMMIT_EDITMSG': Parquet file size is 5 bytes, smaller than the minimum file footer (8 bytes)
2023-12-30 02:47:05,288 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,288 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet file size is 0 bytes
2023-12-30 02:47:05,288 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,289 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
2023-12-30 02:47:05,300 INFO {/media/sacardoz/Storage/nuplan-devkit/nuplan/planning/nuboard/base/simulation_tile.py:172} Minimum frame time=0.017 s
Rendering a scenario: 100%|██████████| 1/1 [00:00<00:00, 30.44it/s] Rendering a scenario: 100%|██████████| 1/1 [00:00<00:00, 43.62it/s]
WARNING:bokeh.core.validation.check:W-1000 (MISSING_RENDERERS): Plot has no renderers: Figure(id='1005', ...) WARNING:bokeh.core.validation.check:W-1000 (MISSING_RENDERERS): Plot has no renderers: Figure(id='1005', ...)
INFO:tornado.access:200 GET /autoload.js?bokeh-autoload-element=1003&bokeh-absolute-url=http://localhost:5009&resources=none (::1) 1063.26ms INFO:tornado.access:200 GET /autoload.js?bokeh-autoload-element=1003&bokeh-absolute-url=http://localhost:5003&resources=none (::1) 1044.77ms
INFO:tornado.access:101 GET /ws?id=cd802e51-de22-41c8-bc8e-99ef2dff2bff&origin=da2f890a-eb18-4637-9199-dd0f06169aef&swVersion=4&extensionId=&platform=electron&vscode-resource-base-authority=vscode-resource.vscode-cdn.net&parentOrigin=vscode-file%3A%2F%2Fvscode-app&purpose=notebookRenderer (::1) 0.62ms
INFO:bokeh.server.views.ws:WebSocket connection opened INFO:bokeh.server.views.ws:WebSocket connection opened
INFO:tornado.access:101 GET /ws?id=1473284a-b32b-43ae-9821-e330d67bdb31&origin=da2f890a-eb18-4637-9199-dd0f06169aef&swVersion=4&extensionId=&platform=electron&vscode-resource-base-authority=vscode-resource.vscode-cdn.net&parentOrigin=vscode-file%3A%2F%2Fvscode-app&purpose=notebookRenderer (::1) 0.82ms
INFO:bokeh.server.views.ws:ServerConnection created INFO:bokeh.server.views.ws:ServerConnection created
2023-12-23 21:00:00,955 INFO {/home/sacardoz/miniconda3/envs/nuplan/lib/python3.9/site-packages/tornado/web.py:2344} 200 GET /autoload.js?bokeh-autoload-element=1003&bokeh-absolute-url=http://localhost:5009&resources=none (::1) 1063.26ms 2023-12-30 02:47:06,295 INFO {/home/sacardoz/miniconda3/envs/nuplan/lib/python3.9/site-packages/tornado/web.py:2344} 200 GET /autoload.js?bokeh-autoload-element=1003&bokeh-absolute-url=http://localhost:5003&resources=none (::1) 1044.77ms
2023-12-23 21:00:00,986 INFO {/media/sacardoz/Storage/nuplan-devkit/tutorials/utils/tutorial_utils.py:267} Done rendering! 2023-12-30 02:47:06,344 INFO {/media/sacardoz/Storage/nuplan-devkit/tutorials/utils/tutorial_utils.py:267} Done rendering!
2023-12-23 21:00:00,987 INFO {/home/sacardoz/miniconda3/envs/nuplan/lib/python3.9/site-packages/tornado/web.py:2344} 101 GET /ws?id=cd802e51-de22-41c8-bc8e-99ef2dff2bff&origin=da2f890a-eb18-4637-9199-dd0f06169aef&swVersion=4&extensionId=&platform=electron&vscode-resource-base-authority=vscode-resource.vscode-cdn.net&parentOrigin=vscode-file%3A%2F%2Fvscode-app&purpose=notebookRenderer (::1) 0.62ms 2023-12-30 02:47:06,351 INFO {/home/sacardoz/miniconda3/envs/nuplan/lib/python3.9/site-packages/tornado/web.py:2344} 101 GET /ws?id=1473284a-b32b-43ae-9821-e330d67bdb31&origin=da2f890a-eb18-4637-9199-dd0f06169aef&swVersion=4&extensionId=&platform=electron&vscode-resource-base-authority=vscode-resource.vscode-cdn.net&parentOrigin=vscode-file%3A%2F%2Fvscode-app&purpose=notebookRenderer (::1) 0.82ms
......
...@@ -6,3 +6,29 @@ checkpoint_path: ??? # Path to trained model checkpoint ...@@ -6,3 +6,29 @@ checkpoint_path: ??? # Path to trained model checkpoint
occlusions: false # Boolean to determine whether occlusions should be enabled occlusions: false # Boolean to determine whether occlusions should be enabled
planner_type: "ml" # String to determine planner type (one of "ml", "idm", "pdm_closed", "pdm_hybrid") planner_type: "ml" # String to determine planner type (one of "ml", "idm", "pdm_closed", "pdm_hybrid")
pdm_hybrid_ckpt: null # Path to trained PDM hybrid model checkpoint pdm_hybrid_ckpt: null # Path to trained PDM hybrid model checkpoint
tracker:
_target_: nuplan.planning.simulation.controller.tracker.lqr.LQRTracker
_convert_: 'all'
# LQR tuning
q_longitudinal: [10.0] # velocity tracking cost gain
r_longitudinal: [1.0] # acceleration tracking cost gain
q_lateral: [1.0, 10.0, 0.0] # [lateral_error, heading_error, steering_angle] tracking cost gains
r_lateral: [1.0] # steering_rate tracking cost gain
discretization_time: 0.1 # [s] The time interval used for discretizing the continuous time dynamics.
tracking_horizon: 10 # The number of time steps (at discretization_time interval) ahead we consider for LQR.
# Parameters for velocity and curvature estimation.
jerk_penalty: 1e-4 # Penalty for jerk in velocity profile estimation.
curvature_rate_penalty: 1e-2 # Penalty for curvature rate in curvature profile estimation.
# Stopping logic
stopping_proportional_gain: 0.5 # Proportional controller tuning for stopping controller
stopping_velocity: 0.2 # [m/s] Velocity threshold for stopping
motion_model:
_target_: nuplan.planning.simulation.controller.motion_model.kinematic_bicycle.KinematicBicycleModel
_convert_: 'all'
vehicle: ${scenario_builder.vehicle_parameters}
...@@ -11,10 +11,14 @@ from nuplan.common.actor_state.state_representation import StateSE2, StateVector ...@@ -11,10 +11,14 @@ from nuplan.common.actor_state.state_representation import StateSE2, StateVector
from nuplan.common.actor_state.tracked_objects import TrackedObject, TrackedObjects from nuplan.common.actor_state.tracked_objects import TrackedObject, TrackedObjects
from nuplan.common.actor_state.tracked_objects_types import TrackedObjectType from nuplan.common.actor_state.tracked_objects_types import TrackedObjectType
from nuplan.common.actor_state.vehicle_parameters import VehicleParameters from nuplan.common.actor_state.vehicle_parameters import VehicleParameters
from nuplan.common.geometry.transform import translate_longitudinally
from nuplan.common.maps.abstract_map import AbstractMap from nuplan.common.maps.abstract_map import AbstractMap
from nuplan.common.maps.abstract_map_objects import LaneGraphEdgeMapObject, RoadBlockGraphEdgeMapObject from nuplan.common.maps.abstract_map_objects import LaneGraphEdgeMapObject
from nuplan.planning.scenario_builder.abstract_scenario import AbstractScenario from nuplan.planning.scenario_builder.abstract_scenario import AbstractScenario
from nuplan.planning.simulation.controller.motion_model.abstract_motion_model import AbstractMotionModel
from nuplan.planning.simulation.controller.tracker.abstract_tracker import AbstractTracker
from nuplan.planning.simulation.controller.two_stage_controller import TwoStageController
from nuplan.planning.simulation.history.simulation_history_buffer import SimulationHistoryBuffer from nuplan.planning.simulation.history.simulation_history_buffer import SimulationHistoryBuffer
from nuplan.planning.simulation.observation.abstract_observation import AbstractObservation from nuplan.planning.simulation.observation.abstract_observation import AbstractObservation
from nuplan.planning.simulation.observation.observation_type import Observation from nuplan.planning.simulation.observation.observation_type import Observation
...@@ -25,6 +29,7 @@ from nuplan.planning.simulation.planner.idm_planner import IDMPlanner ...@@ -25,6 +29,7 @@ from nuplan.planning.simulation.planner.idm_planner import IDMPlanner
from nuplan.planning.simulation.planner.ml_planner.ml_planner import MLPlanner from nuplan.planning.simulation.planner.ml_planner.ml_planner import MLPlanner
from nuplan.planning.simulation.simulation_time_controller.simulation_iteration import SimulationIteration from nuplan.planning.simulation.simulation_time_controller.simulation_iteration import SimulationIteration
from nuplan.planning.simulation.trajectory.abstract_trajectory import AbstractTrajectory
from nuplan.planning.training.modeling.torch_module_wrapper import TorchModuleWrapper from nuplan.planning.training.modeling.torch_module_wrapper import TorchModuleWrapper
from nuplan.planning.simulation.trajectory.trajectory_sampling import TrajectorySampling from nuplan.planning.simulation.trajectory.trajectory_sampling import TrajectorySampling
...@@ -56,24 +61,30 @@ IDM_AGENT_CONFIG = { ...@@ -56,24 +61,30 @@ IDM_AGENT_CONFIG = {
PDM_CLOSED_AGENT_CONFIG = { PDM_CLOSED_AGENT_CONFIG = {
"trajectory_sampling": TrajectorySampling(num_poses=80, interval_length= 0.1), "trajectory_sampling": TrajectorySampling(num_poses=80, interval_length= 0.1),
"proposal_sampling": TrajectorySampling(num_poses=40, interval_length= 0.1), "proposal_sampling": TrajectorySampling(num_poses=40, interval_length= 0.1),
"idm_policies": BatchIDMPolicy(speed_limit_fraction= [0.2,0.4,0.6,0.8,1.0],
fallback_target_velocity= 15.0,
min_gap_to_lead_agent= 1.0,
headway_time= 1.5,
accel_max= 1.5,
decel_max= 3.0),
"lateral_offsets": [-1.0, 1.0], "lateral_offsets": [-1.0, 1.0],
"map_radius": 50, "map_radius": 50,
} }
PDM_BATCH_IDM_CONFIG = {
"speed_limit_fraction":[0.2,0.4,0.6,0.8,1.0],
"fallback_target_velocity":15.0,
"min_gap_to_lead_agent":1.0,
"headway_time":1.5,
"accel_max":1.5,
"decel_max":3.0
}
PDM_OFFSET_MODEL_CONFIG = {
"trajectory_sampling": TrajectorySampling(num_poses=16, interval_length=0.5),
"history_sampling": TrajectorySampling(num_poses=10, interval_length=0.2),
"planner": None,
"centerline_samples": 120,
"centerline_interval": 1.0,
"hidden_dim": 512
}
PDM_HYBRID_AGENT_CONFIG = { PDM_HYBRID_AGENT_CONFIG = {
"model":PDMOffsetModel(trajectory_sampling=TrajectorySampling(num_poses=16, interval_length=0.5), "correction_horizon": 2.0,
history_sampling=TrajectorySampling(num_poses=10, interval_length=0.2),
planner=None,
centerline_samples=120,
centerline_interval=1.0,
hidden_dim=512),
"correction_horizon":2.0,
} }
...@@ -82,7 +93,7 @@ class MLPlannerAgents(AbstractObservation): ...@@ -82,7 +93,7 @@ class MLPlannerAgents(AbstractObservation):
Simulate agents based on an ML model. Simulate agents based on an ML model.
""" """
def __init__(self, model: TorchModuleWrapper, scenario: AbstractScenario, occlusions: bool, planner_type: str, pdm_hybrid_ckpt: str) -> None: def __init__(self, model: TorchModuleWrapper, scenario: AbstractScenario, occlusions: bool, planner_type: str, pdm_hybrid_ckpt: str, tracker: AbstractTracker, motion_model: AbstractMotionModel) -> None:
""" """
Initializes the MLPlannerAgents class. Initializes the MLPlannerAgents class.
:param model: Model to use for inference. :param model: Model to use for inference.
...@@ -100,6 +111,8 @@ class MLPlannerAgents(AbstractObservation): ...@@ -100,6 +111,8 @@ class MLPlannerAgents(AbstractObservation):
self._inference_frequency: float = 0.2 self._inference_frequency: float = 0.2
self._full_inference_distance: float = 30 self._full_inference_distance: float = 30
self._motion_controller = TwoStageController(scenario, tracker, motion_model)
def reset(self) -> None: def reset(self) -> None:
"""Inherited, see superclass.""" """Inherited, see superclass."""
self.current_iteration = 0 self.current_iteration = 0
...@@ -202,9 +215,21 @@ class MLPlannerAgents(AbstractObservation): ...@@ -202,9 +215,21 @@ class MLPlannerAgents(AbstractObservation):
planner_input = PlannerInput(iteration=iteration, history=history_input, traffic_light_data=traffic_light_data) planner_input = PlannerInput(iteration=iteration, history=history_input, traffic_light_data=traffic_light_data)
trajectory = agent_data['planner'].compute_trajectory(planner_input) trajectory = agent_data['planner'].compute_trajectory(planner_input)
self._trajectory_cache[agent_token] = (next_iteration.time_point.time_s, trajectory) self._trajectory_cache[agent_token] = (next_iteration.time_point.time_s, trajectory)
agent_data['ego_state'] = trajectory.get_state_at_time(next_iteration.time_point) agent_data['ego_state'] = self._get_new_state_from_trajectory(iteration, next_iteration, agent_data['ego_state'], trajectory)
self._ego_state_history[agent_token][next_iteration.time_point] = agent_data['ego_state'] self._ego_state_history[agent_token][next_iteration.time_point] = agent_data['ego_state']
def _get_new_state_from_trajectory(self, current_iteration: SimulationIteration,
next_iteration: SimulationIteration,
ego_state: EgoState,
trajectory: AbstractTrajectory) -> EgoState:
"""
Gets the state of the agent at a given timepoint from a trajectory.
"""
self._motion_controller.reset()
self._motion_controller.update_state(current_iteration, next_iteration, ego_state, trajectory)
return self._motion_controller.get_state()
def _build_ego_state_from_agent(self, agent: Agent, time_point: TimePoint) -> EgoState: def _build_ego_state_from_agent(self, agent: Agent, time_point: TimePoint) -> EgoState:
""" """
...@@ -219,10 +244,11 @@ class MLPlannerAgents(AbstractObservation): ...@@ -219,10 +244,11 @@ class MLPlannerAgents(AbstractObservation):
self._ego_state_history[agent.metadata.track_token] = {} self._ego_state_history[agent.metadata.track_token] = {}
# Most of this is just eyeballed, so there may be a more principled way of setting these values. # Most of this is just eyeballed, so there may be a more principled way of setting these values.
output = EgoState.build_from_center(
center=agent.center, output = EgoState.build_from_rear_axle(
center_velocity_2d=agent.velocity if self.planner_type != "idm" else StateVector2D(agent.velocity.magnitude(), 0), rear_axle_pose=translate_longitudinally(agent.center, agent.box.length * 1 / 5 - agent.box.length / 2),
center_acceleration_2d=StateVector2D(0, 0), rear_axle_velocity_2d=StateVector2D(agent.velocity.magnitude(), 0), #EgoState and Agent uses different velocity representations. It's very weird.
rear_axle_acceleration_2d=StateVector2D(0, 0),
tire_steering_angle=0, tire_steering_angle=0,
time_point=time_point, time_point=time_point,
vehicle_parameters=VehicleParameters( vehicle_parameters=VehicleParameters(
...@@ -244,12 +270,14 @@ class MLPlannerAgents(AbstractObservation): ...@@ -244,12 +270,14 @@ class MLPlannerAgents(AbstractObservation):
""" """
Builds agent state from corresponding ego state. Unlike the inverse this process is well-defined. Builds agent state from corresponding ego state. Unlike the inverse this process is well-defined.
""" """
track_heading = ego_state.car_footprint.oriented_box.center.heading
velocity = ego_state.dynamic_car_state.center_velocity_2d
agent_state = Agent( agent_state = Agent(
metadata=scene_object_metadata, metadata=scene_object_metadata,
tracked_object_type=TrackedObjectType.VEHICLE, tracked_object_type=TrackedObjectType.VEHICLE,
oriented_box=ego_state.car_footprint.oriented_box, oriented_box=ego_state.car_footprint.oriented_box,
velocity=ego_state.dynamic_car_state.center_velocity_2d, velocity=StateVector2D(np.cos(track_heading) * velocity.magnitude(), np.sin(track_heading) * velocity.magnitude())
) )
return agent_state return agent_state
...@@ -317,12 +345,10 @@ class MLPlannerAgents(AbstractObservation): ...@@ -317,12 +345,10 @@ class MLPlannerAgents(AbstractObservation):
""" """
# TODO: Inject IDM agents (and non-ML agents more broadly) # TODO: Inject IDM agents (and non-ML agents more broadly)
self._agents[agent.metadata.track_token] = self._build_agent_record(agent, timepoint_record)
route_plan = self._get_roadblock_path(agent, goal) route_plan = self._get_roadblock_path(agent, goal)
if route_plan: if route_plan:
self._agents[agent.metadata.track_token] = self._build_agent_record(agent, self._scenario.start_time) self._agents[agent.metadata.track_token] = self._build_agent_record(agent, timepoint_record)
# Initialize planner. # Initialize planner.
planner_init = PlannerInitialization( planner_init = PlannerInitialization(
...@@ -340,10 +366,11 @@ class MLPlannerAgents(AbstractObservation): ...@@ -340,10 +366,11 @@ class MLPlannerAgents(AbstractObservation):
elif self.planner_type == "idm": elif self.planner_type == "idm":
planner = IDMPlanner(**IDM_AGENT_CONFIG) planner = IDMPlanner(**IDM_AGENT_CONFIG)
elif self.planner_type == "pdm_closed": elif self.planner_type == "pdm_closed":
planner = PDMClosedPlanner(**PDM_CLOSED_AGENT_CONFIG) planner = PDMClosedPlanner(**PDM_CLOSED_AGENT_CONFIG, idm_policies=BatchIDMPolicy(**PDM_BATCH_IDM_CONFIG))
elif self.planner_type == "pdm_hybrid": elif self.planner_type == "pdm_hybrid":
assert self.pdm_hybrid_ckpt, "Must provide checkpoint path for PDM hybrid planner." assert self.pdm_hybrid_ckpt, "Must provide checkpoint path for PDM hybrid planner."
planner = PDMHybridPlanner(**PDM_CLOSED_AGENT_CONFIG, **PDM_HYBRID_AGENT_CONFIG, checkpoint_path=self.pdm_hybrid_ckpt) planner = PDMHybridPlanner(**PDM_CLOSED_AGENT_CONFIG, idm_policies=BatchIDMPolicy(**PDM_BATCH_IDM_CONFIG), \
**PDM_HYBRID_AGENT_CONFIG, model= PDMOffsetModel(**PDM_OFFSET_MODEL_CONFIG), checkpoint_path=self.pdm_hybrid_ckpt)
else: else:
raise ValueError("Invalid planner type.") raise ValueError("Invalid planner type.")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment