diff --git a/nuplan/planning/script/builders/occlusion_manager_builder.py b/nuplan/planning/script/builders/occlusion_manager_builder.py index d496b49c267afca7cacef8ae86dc38c3058aba96..2b75cc59d7d4c7b922ced2a140268924e04f6d21 100644 --- a/nuplan/planning/script/builders/occlusion_manager_builder.py +++ b/nuplan/planning/script/builders/occlusion_manager_builder.py @@ -2,7 +2,7 @@ from omegaconf import DictConfig from nuplan.planning.scenario_builder.abstract_scenario import AbstractScenario -from nuplan.planning.simulation.occlusion.occlusion_manager import AbstractOcclusionManager +from nuplan.planning.simulation.occlusion.abstract_occlusion_manager import AbstractOcclusionManager from nuplan.planning.simulation.occlusion.range_occlusion_manager import RangeOcclusionManager def build_occlusion_manager(occlusion_cfg: DictConfig, scenario: AbstractScenario) -> AbstractOcclusionManager: diff --git a/nuplan/planning/script/builders/simulation_builder.py b/nuplan/planning/script/builders/simulation_builder.py index 105fa67a52c5593aa80629edbc64f8bb9c649756..52abd74a11c3fc7fc3104946adc9b33a3da52f44 100644 --- a/nuplan/planning/script/builders/simulation_builder.py +++ b/nuplan/planning/script/builders/simulation_builder.py @@ -17,7 +17,7 @@ from nuplan.planning.simulation.callback.metric_callback import MetricCallback from nuplan.planning.simulation.callback.multi_callback import MultiCallback from nuplan.planning.simulation.controller.abstract_controller import AbstractEgoController from nuplan.planning.simulation.observation.abstract_observation import AbstractObservation -from nuplan.planning.simulation.occlusion.occlusion_manager import AbstractOcclusionManager +from nuplan.planning.simulation.occlusion.abstract_occlusion_manager import AbstractOcclusionManager from nuplan.planning.simulation.planner.abstract_planner import AbstractPlanner from nuplan.planning.simulation.runner.simulations_runner import SimulationRunner from nuplan.planning.simulation.simulation import Simulation diff --git a/nuplan/planning/simulation/occlusion/occlusion_manager.py b/nuplan/planning/simulation/occlusion/abstract_occlusion_manager.py similarity index 66% rename from nuplan/planning/simulation/occlusion/occlusion_manager.py rename to nuplan/planning/simulation/occlusion/abstract_occlusion_manager.py index 32ebb332b8c82755806e167fac50963346391ca3..965afceee47186786be0091a7703ebb0919a51ff 100644 --- a/nuplan/planning/simulation/occlusion/occlusion_manager.py +++ b/nuplan/planning/simulation/occlusion/abstract_occlusion_manager.py @@ -11,24 +11,38 @@ from nuplan.planning.simulation.observation.observation_type import DetectionsTr class AbstractOcclusionManager(metaclass=ABCMeta): + """ + Interface for a generic occlusion manager. + """ + def __init__( self, scenario: AbstractScenario ): - self._masks = {} + self._visible_agent_cache = {} self.scenario = scenario def reset(self) -> None: - self._masks = {} + """ + Resets occlusion manager cache. + """ + self._visible_agent_cache = {} def occlude_input(self, input_buffer: SimulationHistoryBuffer) -> SimulationHistoryBuffer: + """ + Occludes SimulationHistoryBuffer input. Loops through each timestep defined by time_us, + checks to see if timestep is already contained in _visible_agent_cache and computes + occlusions if not, and occludes timestep using cached results. Repacks output in + SimulationHistoryBuffer. + """ + ego_state_buffer = input_buffer.ego_state_buffer observations_buffer = input_buffer.observation_buffer sample_interval = input_buffer.sample_interval for ego_state, observations in zip(ego_state_buffer, observations_buffer): - if ego_state.time_us not in self._masks: - self._masks[ego_state.time_us] = self._compute_mask(ego_state, observations) + if ego_state.time_us not in self._visible_agent_cache: + self._visible_agent_cache[ego_state.time_us] = self._compute_mask(ego_state, observations) output_buffer = SimulationHistoryBuffer(ego_state_buffer, \ deque([self._mask_input(ego_state.time_us, observations) for ego_state, observations in zip(ego_state_buffer, observations_buffer)]), \ @@ -41,14 +55,16 @@ class AbstractOcclusionManager(metaclass=ABCMeta): pass def _mask_input(self, time_us: int, observations: DetectionsTracks) -> DetectionsTracks: - assert time_us in self._masks, "Attempted to mask non-cached timestep!" + """ + Occludes observations at timestep time_us based on cached occlusions. + """ + + assert time_us in self._visible_agent_cache, "Attempted to mask non-cached timestep!" assert isinstance(observations, DetectionsTracks), "Occlusions only support DetectionsTracks." - mask = self._masks[time_us] + mask = self._visible_agent_cache[time_us] tracks = observations.tracked_objects.tracked_objects visible_tracks = [track for track in tracks if track.metadata.track_token in mask] return DetectionsTracks(tracked_objects=TrackedObjects(visible_tracks)) - - diff --git a/nuplan/planning/simulation/occlusion/range_occlusion_manager.py b/nuplan/planning/simulation/occlusion/range_occlusion_manager.py index 9f1f8cf131ca0d63cf5707ffc42558e6c5a74d96..99a09fcee12aa19619f03073f22fa6af69a50e71 100644 --- a/nuplan/planning/simulation/occlusion/range_occlusion_manager.py +++ b/nuplan/planning/simulation/occlusion/range_occlusion_manager.py @@ -1,13 +1,29 @@ from nuplan.common.actor_state.ego_state import EgoState -from nuplan.planning.simulation.observation.observation_type import DetectionsTracks, Observation -from nuplan.planning.simulation.occlusion.occlusion_manager import AbstractOcclusionManager +from nuplan.planning.scenario_builder.abstract_scenario import AbstractScenario +from nuplan.planning.simulation.observation.observation_type import DetectionsTracks +from nuplan.planning.simulation.occlusion.abstract_occlusion_manager import AbstractOcclusionManager class RangeOcclusionManager(AbstractOcclusionManager): + """ + Range occlusion manager. Occludes all objects outside of a given + range of the ego. + """ + + def __init__( + self, + scenario: AbstractScenario, + range_threshold: float = 25 + ): + super().__init__(scenario) + self.range_threshold = range_threshold + def _compute_mask(self, ego_state: EgoState, observations: DetectionsTracks) -> set: not_occluded = set() for track in observations.tracked_objects.tracked_objects: - if (ego_state.center.x - track.center.x) ** 2 + (ego_state.center.y - track.center.y) ** 2 <= 500: + if ((ego_state.center.x - track.center.x) ** 2 + \ + (ego_state.center.y - track.center.y) ** 2) ** 0.5 <= self.range_threshold: not_occluded.add(track.metadata.track_token) - return not_occluded \ No newline at end of file + return not_occluded + \ No newline at end of file diff --git a/nuplan/planning/simulation/simulation_setup.py b/nuplan/planning/simulation/simulation_setup.py index 944d06dd4951a6c51031fff6d8a4ad9c7a2810e4..03b3d39eefef9ce0131d6719efb46f909d2f416d 100644 --- a/nuplan/planning/simulation/simulation_setup.py +++ b/nuplan/planning/simulation/simulation_setup.py @@ -3,7 +3,7 @@ from dataclasses import dataclass from nuplan.planning.scenario_builder.abstract_scenario import AbstractScenario from nuplan.planning.simulation.controller.abstract_controller import AbstractEgoController from nuplan.planning.simulation.observation.abstract_observation import AbstractObservation -from nuplan.planning.simulation.occlusion.occlusion_manager import AbstractOcclusionManager +from nuplan.planning.simulation.occlusion.abstract_occlusion_manager import AbstractOcclusionManager from nuplan.planning.simulation.planner.abstract_planner import AbstractPlanner from nuplan.planning.simulation.simulation_time_controller.abstract_simulation_time_controller import ( AbstractSimulationTimeController, diff --git a/test_notebook.ipynb b/test_notebook.ipynb index c13fd6b7135b9d32bf7365d681cf74af2b737cf0..022d06cf2e9a705d37d33b71a0159052853c349b 100644 --- a/test_notebook.ipynb +++ b/test_notebook.ipynb @@ -26,7 +26,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_11668/4095267831.py:5: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display\n", + "/tmp/ipykernel_4691/4095267831.py:5: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display\n", " from IPython.core.display import display, HTML\n" ] } @@ -190,32 +190,32 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-11-24 15:55:34,469 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/worker_pool_builder.py:19} Building WorkerPool...\n", - "2023-11-24 15:55:34,470 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/utils/multithreading/worker_pool.py:101} Worker: Sequential\n", - "2023-11-24 15:55:34,470 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/utils/multithreading/worker_pool.py:102} Number of nodes: 1\n", + "2023-11-28 10:52:47,443 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/worker_pool_builder.py:19} Building WorkerPool...\n", + "2023-11-28 10:52:47,444 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/utils/multithreading/worker_pool.py:101} Worker: Sequential\n", + "2023-11-28 10:52:47,444 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/utils/multithreading/worker_pool.py:102} Number of nodes: 1\n", "Number of CPUs per node: 1\n", "Number of GPUs per node: 0\n", "Number of threads across all nodes: 1\n", - "2023-11-24 15:55:34,470 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/worker_pool_builder.py:27} Building WorkerPool...DONE!\n", - "2023-11-24 15:55:34,470 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:32} Building experiment folders...\n", - "2023-11-24 15:55:34,470 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:35} \n", + "2023-11-28 10:52:47,444 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/worker_pool_builder.py:27} Building WorkerPool...DONE!\n", + "2023-11-28 10:52:47,444 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:32} Building experiment folders...\n", + "2023-11-28 10:52:47,445 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:35} \n", "\n", - "\tFolder where all results are stored: /home/sacardoz/nuplan/exp/exp/simulation/closed_loop_reactive_agents/2023.11.24.15.55.34\n", + "\tFolder where all results are stored: /home/sacardoz/nuplan/exp/exp/simulation/closed_loop_reactive_agents/2023.11.28.10.52.46\n", "\n", - "2023-11-24 15:55:34,472 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:70} Building experiment folders...DONE!\n", - "2023-11-24 15:55:34,472 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_callback_builder.py:52} Building AbstractCallback...\n", - "2023-11-24 15:55:34,472 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_callback_builder.py:68} Building AbstractCallback: 0...DONE!\n", - "2023-11-24 15:55:34,472 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:49} Building simulations...\n", - "2023-11-24 15:55:34,472 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:55} Extracting scenarios...\n", - "2023-11-24 15:55:34,473 INFO {/home/sacardoz/nuplan-devkit/nuplan/common/utils/distributed_scenario_filter.py:83} Building Scenarios in mode DistributedMode.SINGLE_NODE\n", - "2023-11-24 15:55:34,473 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/scenario_building_builder.py:18} Building AbstractScenarioBuilder...\n", - "2023-11-24 15:55:34,484 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/scenario_building_builder.py:21} Building AbstractScenarioBuilder...DONE!\n", - "2023-11-24 15:55:34,484 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/scenario_filter_builder.py:35} Building ScenarioFilter...\n", - "2023-11-24 15:55:34,485 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/scenario_filter_builder.py:44} Building ScenarioFilter...DONE!\n", - "2023-11-24 15:55:34,503 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:76} Building metric engines...\n", - "2023-11-24 15:55:34,527 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:78} Building metric engines...DONE\n", - "2023-11-24 15:55:34,527 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:82} Building simulations from 1 scenarios...\n", - "2023-11-24 15:55:35,102 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:142} Building simulations...DONE!\n" + "2023-11-28 10:52:47,446 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/folder_builder.py:70} Building experiment folders...DONE!\n", + "2023-11-28 10:52:47,446 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_callback_builder.py:52} Building AbstractCallback...\n", + "2023-11-28 10:52:47,446 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_callback_builder.py:68} Building AbstractCallback: 0...DONE!\n", + "2023-11-28 10:52:47,446 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:49} Building simulations...\n", + "2023-11-28 10:52:47,447 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:55} Extracting scenarios...\n", + "2023-11-28 10:52:47,447 INFO {/home/sacardoz/nuplan-devkit/nuplan/common/utils/distributed_scenario_filter.py:83} Building Scenarios in mode DistributedMode.SINGLE_NODE\n", + "2023-11-28 10:52:47,447 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/scenario_building_builder.py:18} Building AbstractScenarioBuilder...\n", + "2023-11-28 10:52:47,460 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/scenario_building_builder.py:21} Building AbstractScenarioBuilder...DONE!\n", + "2023-11-28 10:52:47,460 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/scenario_filter_builder.py:35} Building ScenarioFilter...\n", + "2023-11-28 10:52:47,462 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/scenario_filter_builder.py:44} Building ScenarioFilter...DONE!\n", + "2023-11-28 10:52:47,506 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:76} Building metric engines...\n", + "2023-11-28 10:52:47,534 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:78} Building metric engines...DONE\n", + "2023-11-28 10:52:47,535 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:82} Building simulations from 1 scenarios...\n", + "2023-11-28 10:52:48,385 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/script/builders/simulation_builder.py:142} Building simulations...DONE!\n" ] } ], @@ -285,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "e6c22f5f", "metadata": {}, "outputs": [ @@ -320,7 +320,7 @@ }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { - "server_id": "8c2d162af4db4c04b446e01209c9a53a" + "server_id": "53399aadd95b44a497b381fa7f8c6958" } }, "output_type": "display_data" @@ -329,71 +329,79 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-11-24 15:56:35,057 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,057 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,058 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,058 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,059 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,059 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,059 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,059 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet file size is 0 bytes\n", - "2023-11-24 15:56:35,060 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,060 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,060 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,060 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,061 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,061 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,061 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,061 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,062 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,070 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,071 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from '.git/HEAD'. Is this a 'parquet' file?: Could not open Parquet input source '.git/HEAD': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.\n", - "2023-11-24 15:56:35,072 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,072 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,072 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,073 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,073 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,073 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,074 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,075 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} 'planner_name'\n", - "2023-11-24 15:56:35,075 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,075 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,076 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet file size is 0 bytes\n", - "2023-11-24 15:56:35,076 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,077 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,077 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,077 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,078 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,079 INFO {/home/sacardoz/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.\n", - "2023-11-24 15:56:35,089 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/simulation_tile.py:172} Minimum frame time=0.017 s\n" + "2023-11-28 10:53:54,443 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,444 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,446 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,447 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,447 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,447 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,448 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,448 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet file size is 0 bytes\n", + "2023-11-28 10:53:54,448 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,449 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,450 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,450 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,450 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,451 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,453 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,453 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,454 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,454 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,454 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,462 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,467 INFO {/home/sacardoz/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 magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.\n", + "2023-11-28 10:53:54,468 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,468 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,469 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,469 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,470 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,470 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,471 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,473 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} 'planner_name'\n", + "2023-11-28 10:53:54,474 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Error creating dataset. Could not read schema from 'henry_experiments/pretrained_checkpoints/gc_pgp_checkpoint.ckpt'. Is this a 'parquet' file?: Could not open Parquet input source 'henry_experiments/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.\n", + "2023-11-28 10:53:54,475 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,475 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,475 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/experiment_file_data.py:140} Could not open Parquet input source '<Buffer>': Parquet file size is 0 bytes\n", + "2023-11-28 10:53:54,476 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,476 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,476 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,477 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,477 INFO {/home/sacardoz/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.\n", + "2023-11-28 10:53:54,489 INFO {/home/sacardoz/nuplan-devkit/nuplan/planning/nuboard/base/simulation_tile.py:172} Minimum frame time=0.017 s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Rendering a scenario: 100%|██████████| 1/1 [00:00<00:00, 5.00it/s]\n", + "Rendering a scenario: 100%|██████████| 1/1 [00:00<00:00, 44.32it/s]\n", "WARNING:bokeh.core.validation.check:W-1000 (MISSING_RENDERERS): Plot has no renderers: Figure(id='1005', ...)\n", - "INFO:tornado.access:200 GET /autoload.js?bokeh-autoload-element=1003&bokeh-absolute-url=http://localhost:8888&resources=none (::1) 1055.84ms\n", "INFO:bokeh.server.views.ws:WebSocket connection opened\n", "INFO:bokeh.server.views.ws:ServerConnection created\n", - "INFO:tornado.access:101 GET /ws?id=583b91c1-44e7-4030-9ddc-acb743fb59ea&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.75ms\n" + "INFO:tornado.access:200 GET /autoload.js?bokeh-autoload-element=1003&bokeh-absolute-url=http://localhost:8888&resources=none (::1) 1240.23ms\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "2023-11-24 15:56:36,101 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:8888&resources=none (::1) 1055.84ms\n", - "2023-11-24 15:56:36,116 INFO {/home/sacardoz/nuplan-devkit/tutorials/utils/tutorial_utils.py:266} Done rendering!\n", - "2023-11-24 15:56:36,278 INFO {/home/sacardoz/miniconda3/envs/nuplan/lib/python3.9/site-packages/tornado/web.py:2344} 101 GET /ws?id=583b91c1-44e7-4030-9ddc-acb743fb59ea&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.75ms\n" + "2023-11-28 10:53:55,651 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:8888&resources=none (::1) 1240.23ms\n", + "2023-11-28 10:53:55,661 INFO {/home/sacardoz/nuplan-devkit/tutorials/utils/tutorial_utils.py:267} Done rendering!\n", + "2023-11-28 10:53:55,662 INFO {/home/sacardoz/miniconda3/envs/nuplan/lib/python3.9/site-packages/tornado/web.py:2344} 101 GET /ws?id=bc2a9004-8c61-4fce-94eb-6c0fad2158fa&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\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:tornado.access:101 GET /ws?id=bc2a9004-8c61-4fce-94eb-6c0fad2158fa&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\n" ] } ], "source": [ "from tutorials.utils.tutorial_utils import visualize_history\n", "if runner.simulation._occlusion_manager:\n", - " runner.simulation._history.occlusion_masks = runner.simulation._occlusion_manager._masks\n", + " runner.simulation._history.occlusion_masks = runner.simulation._occlusion_manager._visible_agent_cache\n", "visualize_history(runner.simulation._history, runner.scenario, bokeh_port=8888)" ] }