From 30ebb5e7c57cfe2c4f7bb32648350945044a2000 Mon Sep 17 00:00:00 2001 From: visak kumar Date: Tue, 19 Oct 2021 07:49:41 -0700 Subject: [PATCH 1/7] feat: add agent centric files --- dgp/__init__.py | 11 + dgp/agents/__init__.py | 14 + dgp/agents/agent_2d.py | 105 ++ dgp/agents/agent_3d.py | 147 +++ dgp/agents/base_agent.py | 51 + dgp/constants.py | 21 +- dgp/datasets/agent_dataset.py | 1157 +++++++++++++++++ dgp/datasets/base_dataset.py | 12 +- dgp/datasets/prediction_dataset.py | 467 +++++++ dgp/features/__init__.py | 11 + dgp/features/feature_ontology.py | 136 ++ dgp/proto/agent.proto | 155 +++ dgp/proto/dataset.proto | 47 +- dgp/proto/features.proto | 32 + dgp/scripts/backfill_agents.py | 256 ++++ dgp/utils/protobuf.py | 60 +- dgp/utils/structures/bounding_box_3d.py | 48 +- .../dgp/test_scene/agents_pcc_mini_v1.json | 32 + 18 files changed, 2734 insertions(+), 28 deletions(-) create mode 100644 dgp/agents/__init__.py create mode 100644 dgp/agents/agent_2d.py create mode 100644 dgp/agents/agent_3d.py create mode 100644 dgp/agents/base_agent.py create mode 100644 dgp/datasets/agent_dataset.py create mode 100644 dgp/datasets/prediction_dataset.py create mode 100644 dgp/features/__init__.py create mode 100644 dgp/features/feature_ontology.py create mode 100644 dgp/proto/agent.proto create mode 100644 dgp/proto/features.proto create mode 100644 dgp/scripts/backfill_agents.py create mode 100644 tests/data/dgp/test_scene/agents_pcc_mini_v1.json diff --git a/dgp/__init__.py b/dgp/__init__.py index 33e5eb51..e6001364 100644 --- a/dgp/__init__.py +++ b/dgp/__init__.py @@ -13,6 +13,12 @@ TRI_RAW_FOLDER_PREFIX = "raw/" TRI_DGP_JSON_PREFIX = "dataset_v" +TRI_DGP_S3_BUCKET = "tri-ml-datasets" +TRI_DGP_FOLDER_PREFIX = "dgp/" +TRI_RAW_FOLDER_PREFIX = "raw/" +TRI_DGP_S3_BUCKET_URL = "s3://{}/{}".format(TRI_DGP_S3_BUCKET, TRI_DGP_FOLDER_PREFIX) +TRI_RAW_S3_BUCKET_URL = "s3://{}/{}".format(TRI_DGP_S3_BUCKET, TRI_RAW_FOLDER_PREFIX) + # DGP Directory structure constants RGB_FOLDER = 'rgb' POINT_CLOUD_FOLDER = 'point_cloud' @@ -25,6 +31,8 @@ INSTANCE_SEGMENTATION_3D_FOLDER = 'instance_segmentation_3d' DEPTH_FOLDER = 'depth' EXTRA_DATA_FOLDER = "extra_data" +FEATURE_ONTOLOGY_FOLDER = "feature_ontology" +AGENT_FOLDER = "agent" # Scene Directory structure constants AUTOLABEL_FOLDER = 'autolabels' @@ -34,5 +42,8 @@ # DGP file naming conventions TRI_DGP_SCENE_DATASET_JSON_NAME = "scene_dataset_v{version}.json" +TRI_DGP_AGENT_TRACKS_JSON_NAME = "agent_tracks_{track_hash}.json" TRI_DGP_SCENE_JSON_NAME = "scene_{scene_hash}.json" ANNOTATION_FILE_NAME = '{image_content_hash}_{annotation_content_hash}.json' +TRI_DGP_AGENTS_JSON_NAME = "agents_{agent_hash}.json" +TRI_DGP_AGENTS_SLICES_JSON_NAME = "agents_slices_{slice_hash}.json" diff --git a/dgp/agents/__init__.py b/dgp/agents/__init__.py new file mode 100644 index 00000000..63e74521 --- /dev/null +++ b/dgp/agents/__init__.py @@ -0,0 +1,14 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. + +from dgp.agents.agent_2d import AgentSnapshot2DList # isort:skip +from dgp.agents.agent_3d import AgentSnapshot3DList # isort:skip + +# Agents objects for each agent type +AGENT_REGISTRY = {"agent_2d": AgentSnapshot2DList, "agent_3d": AgentSnapshot3DList} + +# Annotation groups for each annotation type: 2d/3d +AGENT_TYPE_TO_ANNOTATION_GROUP = {"agent_2d": "2d", "agent_3d": "3d"} + +AGENT_TYPE_TO_ANNOTATION_TYPE = {"agent_2d": "bounding_box_2d", "agent_3d": "bounding_box_3d"} + +ANNOTATION_TYPE_TO_AGENT_TYPE = {"bounding_box_2d": "agent_2d", "bounding_box_3d": "agent_3d"} diff --git a/dgp/agents/agent_2d.py b/dgp/agents/agent_2d.py new file mode 100644 index 00000000..9020a733 --- /dev/null +++ b/dgp/agents/agent_2d.py @@ -0,0 +1,105 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. + +import numpy as np + +from dgp.agents.base_agent import AgentSnapshotList +from dgp.annotations.ontology import BoundingBoxOntology +from dgp.constants import FEATURE_TYPE_ID_TO_KEY +from dgp.utils.structures.bounding_box_2d import BoundingBox2D + + +class AgentSnapshot2DList(AgentSnapshotList): + """Container for 2D agent list . + + Parameters + ---------- + ontology: BoundingBoxOntology + Ontology for 2D bounding box tasks. + + boxlist: list[BoundingBox2D] + List of BoundingBox2D objects. See `utils/structures/bounding_box_2d` + for more details. + """ + def __init__(self, ontology, boxlist): + super().__init__(ontology) + assert isinstance(self._ontology, BoundingBoxOntology), "Trying to load AgentSnapshotList with wrong type of " \ + "ontology!" + + for box in boxlist: + assert isinstance( + box, BoundingBox2D + ), f"Can only instantiate an agent snapshot list from a list of BoundingBox3D, not {type(box)}" + self.boxlist = boxlist + + @classmethod + def load(cls, agent_snapshots_pb2, ontology, feature_ontology_table): + """Loads agent snapshot list from proto into a canonical format for consumption in __getitem__ function in + BaseDataset. + Format/data structure for agent types will vary based on task. + + Parameters + ---------- + agent_snapshots_pb2: dgp.proto.agent.AgentsSlice.agent_snapshots or dgp.proto.agent.AgentTrack.agent_snapshots + A proto message holding list of agent snapshot. + + ontology: Ontology + Ontology for given agent. + + feature_ontology_table: dict, default: None + A dictionary mapping feature type key(s) to Ontology(s), i.e.: + { + "agent_2d": AgentFeatureOntology[], + "agent_3d": AgentFeatureOntology[] + } + + Returns + ------- + AgentSnapshot2DList + Agent Snapshot list object instantiated from proto object. + """ + boxlist = [] + for agent_snapshot_2d in agent_snapshots_pb2: + feature_type = agent_snapshot_2d.agent_snapshot_2D.feature_type + feature_ontology = feature_ontology_table[FEATURE_TYPE_ID_TO_KEY[feature_type]] + boxlist.append( + BoundingBox2D( + box=np.float32([ + agent_snapshot_2d.agent_snapshot_2D.box.x, agent_snapshot_2d.agent_snapshot_2D.box.y, + agent_snapshot_2d.agent_snapshot_2D.box.w, agent_snapshot_2d.agent_snapshot_2D.box.h + ]), + class_id=ontology.class_id_to_contiguous_id[agent_snapshot_2d.agent_snapshots_2D.class_id], + instance_id=agent_snapshot_2d.agent_snapshot_2D.instance_id, + color=ontology.colormap[agent_snapshot_2d.agent_snapshot_2D.class_id], + attributes=dict([(feature_ontology.id_to_name[feature_id], feature) + for feature_id, feature in enumerate(agent_snapshot_2d.agent_snapshot_2D.features)] + ), + ) + ) + + return cls(ontology, boxlist) + + def __len__(self): + return len(self.boxlist) + + def __getitem__(self, index): + """Return a single 3D bounding box""" + return self.boxlist[index] + + def render(self): + """TODO: Batch rendering function for bounding boxes.""" + + @property + def class_ids(self): + """Return class ID for each box, with ontology applied: + 0 is background, class IDs mapped to a contiguous set. + """ + return np.int64([box.class_id for box in self.boxlist]) + + @property + def attributes(self): + """Return a list of dictionaries of attribute name to value.""" + return [box.attributes for box in self.boxlist] + + @property + def instance_ids(self): + return np.int64([box.instance_id for box in self.boxlist]) diff --git a/dgp/agents/agent_3d.py b/dgp/agents/agent_3d.py new file mode 100644 index 00000000..f62e6120 --- /dev/null +++ b/dgp/agents/agent_3d.py @@ -0,0 +1,147 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. + +import numpy as np + +from dgp.agents.base_agent import AgentSnapshotList +from dgp.annotations.ontology import BoundingBoxOntology +from dgp.constants import FEATURE_TYPE_ID_TO_KEY +from dgp.utils.camera import Camera +from dgp.utils.pose import Pose +from dgp.utils.structures.bounding_box_3d import BoundingBox3D + + +class AgentSnapshot3DList(AgentSnapshotList): + """Container for 3D agent list . + + Parameters + ---------- + ontology: BoundingBoxOntology + Ontology for 3D bounding box tasks. + + boxlist: list[BoundingBox3D] + List of BoundingBox3D objects. See `utils/structures/bounding_box_3d` + for more details. + """ + def __init__(self, ontology, boxlist): + super().__init__(ontology) + assert isinstance(self._ontology, BoundingBoxOntology), "Trying to load AgentSnapshotList with wrong type of " \ + "ontology!" + + for box in boxlist: + assert isinstance( + box, BoundingBox3D + ), f"Can only instantiate an agent snapshot list from a list of BoundingBox3D, not {type(box)}" + self.boxlist = boxlist + + @classmethod + def load(cls, agent_snapshots_pb2, ontology, feature_ontology_table): + """Loads agent snapshot list from proto into a canonical format for consumption in __getitem__ function in + BaseDataset. + Format/data structure for agent types will vary based on task. + + Parameters + ---------- + agent_snapshots_pb2: dgp.proto.agent.AgentsSlice.agent_snapshots or dgp.proto.agent.AgentTrack.agent_snapshots + A proto message holding list of agent snapshot. + + ontology: Ontology + Ontology for given agent. + + feature_ontology_table: dict, default: None + A dictionary mapping feature type key(s) to Ontology(s), i.e.: + { + "agent_2d": AgentFeatureOntology[], + "agent_3d": AgentFeatureOntology[] + } + + Returns + ------- + AgentSnapshot3DList + Agent Snapshot list object instantiated from proto object. + """ + boxlist = [] + for agent_snapshot_3d in agent_snapshots_pb2: + feature_type = agent_snapshot_3d.agent_snapshot_3D.feature_type + feature_ontology = feature_ontology_table[FEATURE_TYPE_ID_TO_KEY[feature_type]] + boxlist.append( + BoundingBox3D( + pose=Pose.load(agent_snapshot_3d.agent_snapshot_3D.box.pose), + sizes=np.float32([ + agent_snapshot_3d.agent_snapshot_3D.box.width, agent_snapshot_3d.agent_snapshot_3D.box.length, + agent_snapshot_3d.agent_snapshot_3D.box.height + ]), + class_id=ontology.class_id_to_contiguous_id[agent_snapshot_3d.agent_snapshot_3D.class_id], + instance_id=agent_snapshot_3d.agent_snapshot_3D.instance_id, + sample_idx=agent_snapshot_3d.slice_id.index, + color=ontology.colormap[agent_snapshot_3d.agent_snapshot_3D.class_id], + attributes=dict([(feature_ontology.id_to_name[feature_id], feature) + for feature_id, feature in enumerate(agent_snapshot_3d.agent_snapshot_3D.features)] + ), + ) + ) + + return cls(ontology, boxlist) + + def __len__(self): + return len(self.boxlist) + + def __getitem__(self, index): + """Return a single 3D bounding box""" + return self.boxlist[index] + + def render(self, image, camera, line_thickness=2, font_scale=0.5): + """Render the 3D boxes in this agents on the image in place + + Parameters + ---------- + image: np.uint8 array + Image (H, W, C) to render the bounding box onto. We assume the input image is in *RGB* format + + camera: dgp.utils.camera.Camera + Camera used to render the bounding box. + + line_thickness: int, default: 2 + Thickness of bounding box lines. + + font_scale: float, default: 0.5 + Font scale used in text labels. + """ + if ( + not isinstance(image, np.ndarray) or image.dtype != np.uint8 or len(image.shape) != 3 or image.shape[2] != 3 + ): + raise ValueError('`image` needs to be a 3-channel uint8 numpy array') + if not isinstance(camera, Camera): + raise TypeError('`camera` should be of type Camera') + for box in self.boxlist: + box.render( + image, + camera, + line_thickness=line_thickness, + class_name=self._ontology.contiguous_id_to_name[box.class_id], + font_scale=font_scale + ) + + @property + def poses(self): + """Get poses for bounding boxes in agent list.""" + return [box.pose for box in self.boxlist] + + @property + def sizes(self): + return np.float32([box.sizes for box in self.boxlist]) + + @property + def class_ids(self): + """Return class ID for each box, with ontology applied: + 0 is background, class IDs mapped to a contiguous set. + """ + return np.int64([box.class_id for box in self.boxlist]) + + @property + def attributes(self): + """Return a list of dictionaries of attribute name to value.""" + return [box.attributes for box in self.boxlist] + + @property + def instance_ids(self): + return np.int64([box.instance_id for box in self.boxlist]) diff --git a/dgp/agents/base_agent.py b/dgp/agents/base_agent.py new file mode 100644 index 00000000..fb15f8eb --- /dev/null +++ b/dgp/agents/base_agent.py @@ -0,0 +1,51 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. + +from abc import ABC, abstractmethod + +from dgp.annotations.ontology import Ontology + + +class AgentSnapshotList(ABC): + """Base agent snapshot list type. All other agent snapshot lists should inherit from this type and implement + abstractmethod. + + Parameters + ---------- + ontology: Ontology, default:None + Ontology object for the annotation key. + + """ + def __init__(self, ontology=None): + if ontology is not None: + assert isinstance(ontology, Ontology), "Invalid ontology!" + self._ontology = ontology + + @property + def ontology(self): + return self._ontology + + @classmethod + def load(cls, agent_snapshots_pb2, ontology, feature_ontology_table): + """Loads agent snapshot list from prot into a canonical format for consumption in __getitem__ function in + BaseDataset. + Format/data structure for annotations will vary based on task. + + Parameters + ---------- + agent_snapshots_pb2: agent proto object + A proto message holding agent information. + + ontology: Ontology + Ontology for given agent. + + feature_ontology_table: dict, default: None + A dictionary mapping feature type key(s) to Ontology(s), i.e.: + { + "agent_2d": AgentFeatureOntology[], + "agent_3d": AgentFeatureOntology[] + } + """ + + @abstractmethod + def render(self): + """Return a rendering of the agent snapshot list. Expected format is a PIL.Image or np.array""" diff --git a/dgp/constants.py b/dgp/constants.py index 5405ccb6..9d4ccfbd 100644 --- a/dgp/constants.py +++ b/dgp/constants.py @@ -4,7 +4,7 @@ """ from collections import OrderedDict -from dgp.proto import annotations_pb2, dataset_pb2 +from dgp.proto import annotations_pb2, dataset_pb2, features_pb2 # String identifiers for dataset splits DATASET_SPLIT_NAME_TO_KEY = OrderedDict({k.lower(): v for k, v in dataset_pb2.DatasetSplit.items()}) @@ -15,3 +15,22 @@ ANNOTATION_TYPE_ID_TO_KEY = OrderedDict({v: k for k, v in ANNOTATION_KEY_TO_TYPE_ID.items()}) # String identifiers for annotation types ALL_ANNOTATION_TYPES = tuple(ANNOTATION_KEY_TO_TYPE_ID.keys()) + +# Provide supported annotations for each type of datum +SUPPORTED_ANNOTATIONS_IN_DATUM = OrderedDict({ + 'image': [ + 'bounding_box_2d', 'bounding_box_3d', 'semantic_segmentation_2d', 'instance_segmentation_2d', 'depth', + 'surface_normals_2d', 'motion_vectors_2d', 'key_point_2d', 'key_line_2d', 'agent_behavior' + ], + 'point_cloud': [ + 'bounding_box_3d', 'semantic_segmentation_3d', 'instance_segmentation_3d', 'surface_normals_3d', + 'motion_vectors_3d', 'agent_behavior' + ] +}) + +# Provide mapping from feature types to proto IDs, (i.e. 'agent_3d': features_pb2.AGENT_3D, +# 'ego_intention': features_pb2.EGO_INTENTION). +FEATURE_KEY_TO_TYPE_ID = OrderedDict({k.lower(): v for k, v in features_pb2.FeatureType.items()}) +FEATURE_TYPE_ID_TO_KEY = OrderedDict({v: k for k, v in FEATURE_KEY_TO_TYPE_ID.items()}) +# String identifiers for feature types +ALL_FEATURE_TYPES = tuple(FEATURE_KEY_TO_TYPE_ID.keys()) diff --git a/dgp/datasets/agent_dataset.py b/dgp/datasets/agent_dataset.py new file mode 100644 index 00000000..f67d9f7a --- /dev/null +++ b/dgp/datasets/agent_dataset.py @@ -0,0 +1,1157 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. + +import hashlib +import itertools +import logging +#import math +import os +import random +import time +from collections import OrderedDict, defaultdict +from functools import lru_cache, partial +from multiprocessing import Pool, cpu_count + +import numpy as np +from diskcache import Cache + +#from ouroboros import OUROBOROS_CACHE_DIR +from dgp import DGP_CACHE_DIR, FEATURE_ONTOLOGY_FOLDER, ONTOLOGY_FOLDER +from dgp.agents import (AGENT_REGISTRY, AGENT_TYPE_TO_ANNOTATION_TYPE, ANNOTATION_TYPE_TO_AGENT_TYPE) +from dgp.annotations import ONTOLOGY_REGISTRY +from dgp.constants import (ALL_FEATURE_TYPES, ANNOTATION_TYPE_ID_TO_KEY, FEATURE_TYPE_ID_TO_KEY) +from dgp.datasets.synchronized_dataset import SynchronizedSceneDataset +from dgp.features import FEATURE_ONTOLOGY_REGISTRY +from dgp.proto import dataset_pb2 +from dgp.proto.agent_pb2 import AgentGroup as AgentGroupPb2 +from dgp.proto.agent_pb2 import AgentsSlices as AgentsSlicesPb2 +from dgp.proto.agent_pb2 import AgentTracks as AgentTracksPb2 +from dgp.proto.dataset_pb2 import Agents as AgentsPb2 +from dgp.utils.protobuf import open_pbobject + + +class BaseAgentDataset: + """A base class representing a Agent Dataset. Provides utilities for parsing and slicing + DGP format agent datasets. + + Parameters + ---------- + Agent_dataset_metadata: DatasetMetadata + Dataset metadata object that encapsulates dataset-level agents metadata for + both operating modes (scene or JSON). + + agent_groups: list[AgentContainer] + List of AgentContainer objects to be included in the dataset. + + split: str, default: None + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + If the split is None, the split type is not known and the dataset can + be used for unsupervised / self-supervised learning. + """ + def __init__( + self, + Agent_dataset_metadata, + agent_groups, + split=None, + ): + logging.info(f'Instantiating dataset with {len(agent_groups)} scenes.') + # Dataset metadata + self.Agent_dataset_metadata = Agent_dataset_metadata + + self.split = split + + # Scenes management + self.agent_groups = agent_groups + + # Dataset item index + # This is the main index into the pytorch Dataset, where the index is + # used to retrieve the item in the dataset via __getitem__. + self.dataset_item_index = self._build_item_index() + + @staticmethod + def _load_agents_data(agent_group, ontology_table, feature_ontology_table): + """Call loading method from agent_group to load agent slice data and agent track data. + + Parameters + ---------- + agent_group: AgentContainer + Group of agents from a scene. + + ontology_table: dict[str->dgp.annotations.Ontology] + A dictionary mapping annotation type key(s) to Ontology(s) + + feature_ontology_table: dict, default: None + A dictionary mapping feature type key(s) to Ontology(s). + + Returns + ------- + agent_group: AgentContainer + An AgentContainer objects with agents loaded. + """ + agent_group.load_agent_data(ontology_table, feature_ontology_table) + return agent_group + + @staticmethod + def _extract_agent_groups_from_agent_dataset_json( + agent_dataset_json, + requested_agent_type, + split='train', + use_diskcache=True, + ): + """Extract agent container objects from the agent dataset JSON + for the appropriate split. + + Parameters + ---------- + agent_dataset_json: str + Path of the dataset.json + + requested_agent_type: str, default: 'train' + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + split: str, default: 'train' + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + use_diskcache: bool, default: True + If True, cache ScenePb2 object using diskcache. If False, save the object in memory. + NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of scenes in this + scene dataset. + + Returns + ------- + scene_containers: list + List of SceneContainer objects. + """ + # Identify splits + assert split in ("train", "val", "test", "train_overfit") + split_enum = { + "train": dataset_pb2.TRAIN, + "val": dataset_pb2.VAL, + "test": dataset_pb2.TEST, + "train_overfit": dataset_pb2.TRAIN_OVERFIT + }[split] + + # Load the dataset and dataset root + if not agent_dataset_json.startswith("s3://"): + assert os.path.exists(agent_dataset_json), 'Path {} does not exist'.format(agent_dataset_json) + logging.info("Loading dataset from {}, split={}".format(agent_dataset_json, split)) + + agent_dataset_root = os.path.dirname(agent_dataset_json) + agent_dataset = open_pbobject(agent_dataset_json, AgentsPb2) + + logging.info("Generating agents for split={}".format(split)) + st = time.time() + agent_jsons = [ + os.path.join(agent_dataset_root, _f) for _f in list(agent_dataset.agents_splits[split_enum].filenames) + ] + + # Load all agent containers in parallel. Each agent container shall be 1-1 correspondence to a scene. + with Pool(cpu_count()) as proc: + agent_containers = list( + proc.map( + partial( + AgentDataset._get_agent_container, + requested_agent_type=requested_agent_type, + use_diskcache=use_diskcache + ), agent_jsons + ) + ) + + logging.info("Scene generation completed in {:.2f}s".format(time.time() - st)) + return agent_containers + + @staticmethod + def _get_agent_container( + agent_json, + requested_agent_type, + use_diskcache=True, + ): + """Extract scene objects and calibration from the scene dataset JSON + for the appropriate split. + + Parameters + ---------- + agent_json: str + Path of the agent_scene.json + + requested_agent_type: str, default: 'train' + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + use_diskcache: bool, default: True + If True, cache ScenePb2 object using diskcache. If False, save the object in memory. + NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of scenes in this + scene dataset. + + Returns + ------- + scene_containers: list + List of SceneContainer objects. + """ + agent_dir = os.path.dirname(agent_json) + + logging.debug(f"Loading agents from {agent_json}") + agent_container = AgentContainer( + agent_json, requested_agent_type, directory=agent_dir, use_diskcache=use_diskcache + ) + return agent_container + + def _build_item_index(self): + """Builds an index of dataset items that refer to the scene index, + sample index and selected datum names. __getitem__ indexes into this look up table. + + Returns + ------- + item_index: list + List of dataset items that contain index into + (scene_idx, sample_idx_in_scene, (datum_name_1, datum_name_2, ...)). + """ + raise NotImplementedError + + def __len__(self): + """Return the length of the dataset.""" + raise NotImplementedError + + def __getitem__(self, index): + """Get the dataset item at index.""" + raise NotImplementedError + + def __hash__(self): + """Hashes the dataset instance that is consistent across Python instances.""" + logging.debug('Hashing dataset with dataset directory, split and datum-index') + return int( + hashlib.md5( + self.Agent_dataset_metadata.directory.encode() + str(self.dataset_item_index).encode() + + str(self.split).encode() + ).hexdigest(), 16 + ) + + +class AgentContainer: + """Object-oriented container for holding agent information from a scene. + """ + RANDOM_STR = ''.join([str(random.randint(0, 9)) for _ in range(5)]) + cache_dir = os.path.join(DGP_CACHE_DIR, f'dgp_diskcache_{RANDOM_STR}') + AGENT_GROUP_CACHE = Cache(cache_dir) + + def __init__(self, agent_file_path, requested_agent_type, directory=None, use_diskcache=True): + """Initialize a scene with a agent group object and optionally provide the + directory containing the agent.json to gather additional information + for directory-based dataset loading mode. + + Parameters + ---------- + agent_file_path: str + Path to the agent object containing agent tracks and agent slices. + + requested_agent_type: str, default: 'train' + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + directory: str, default: None + Optional directory containing scene_.json. + + use_diskcache: bool, default: True + If True, cache AgentGroupPb2 object using diskcache. If False, save the object in memory. + NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of scenes. + """ + self.agent_file_path = agent_file_path + self.directory = directory + self.use_diskcache = use_diskcache + self.requested_agent_type = requested_agent_type + self._agent_group = None + self.sample_id_to_agent_snapshots = {} + self.instance_id_to_agent_snapshots = {} + logging.debug(f"Loading agent-based dataset from {self.directory}") + + @property + def agent_group(self): + """ Returns agent group. + - If self.use_diskcache is True: returns the cached `_agent_group` if available, otherwise load the + agent group and cache it. + - If self.use_diskcache is False: returns `_agent_group` in memory if the instance has attribute + `_agent_group`, otherwise load the agent group and save it in memory. + NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of agent groups. + """ + # TODO: Profile disk loading to decide if use_diskcache option is necessary. + if self.use_diskcache: + if self.agent_file_path in AgentContainer.AGENT_GROUP_CACHE: + _agent_group = AgentContainer.AGENT_GROUP_CACHE.get(self.agent_file_path) + if _agent_group is not None: + return _agent_group + _agent_group = open_pbobject(self.agent_file_path, AgentGroupPb2) + AgentContainer.AGENT_GROUP_CACHE.add(self.agent_file_path, _agent_group) + return _agent_group + else: + if self._agent_group is None: + self._agent_group = open_pbobject(self.agent_file_path, AgentGroupPb2) + return self._agent_group + + def __repr__(self): + return "AgentContainer[{}][agents: {}]".format(self.directory, len(self.instance_id_to_agent_snapshots)) + + @property + def ontology_files(self): + """Returns the ontology files for the agent group. + + Returns + ------- + ontology_files: dict + Maps annotation_key -> filename. + + For example: + filename = agent.ontology_files['bounding_box_2d'] + """ + # Load ontology files. + ontology_files = { + ANNOTATION_TYPE_ID_TO_KEY[ann_id]: os.path.join(self.directory, ONTOLOGY_FOLDER, "{}.json".format(f)) + for ann_id, f in self.agent_group.agent_ontologies.items() + } + + return ontology_files + + @property + def feature_ontology_files(self): + """Returns the feature ontology files for a agent group. + + Returns + ------- + ontology_files: dict + Maps annotation_key -> filename. + + For example: + filename = agent.feature_ontology_files['agent_3d'] + """ + # Load ontology files. + feature_ontology_files = { + FEATURE_TYPE_ID_TO_KEY[feature_id]: + os.path.join(self.directory, FEATURE_ONTOLOGY_FOLDER, "{}.json".format(f)) + for feature_id, f in self.agent_group.feature_ontologies.items() + } + return feature_ontology_files + + @property + @lru_cache(maxsize=None) + def metadata_index(self): + """Helper for building metadata index. + + TODO: Need to verify that the hashes are unique, and these lru-cached + properties are consistent across disk-cached reads. + """ + logging.debug(f'Building metadata index for agent group {self.agent_file_path}') + agent_group = self.agent_group + return { + 'log_id': agent_group.log, + 'agent_group_name': agent_group.name, + 'agent_group_description': agent_group.description + } + + def agent_slice(self, sample_id): + """Return AgentSnapshotList in a frame.""" + return self.sample_id_to_agent_snapshots[sample_id] + + def agent_track(self, instance_id): + """Return AgentSnapshotList in a track.""" + return self.instance_id_to_agent_snapshots[instance_id] + + def load_agent_data(self, ontology_table, feature_ontology_table): + """Load agent slice data and agent track data. + + Parameters + ---------- + ontology_table: dict[str->dgp.annotations.Ontology] + Ontology object *per annotation type*. + The original ontology table. + { + "bounding_box_2d": BoundingBoxOntology[], + "autolabel_model_1/bounding_box_2d": BoundingBoxOntology[], + "semantic_segmentation_2d": SemanticSegmentationOntology[] + "bounding_box_3d": BoundingBoxOntology[], + } + + feature_ontology_table: dict[str->dgp.features.FeatureOntology] + Ontology object *per feature type*. + The original feature ontology table. + { + "agent_2d": AgentFeatureOntology, + "agent_3d": AgentFeatureOntology, + "ego_intention": AgentFeatureOntology + } + + """ + + agent_slices_path = self.agent_group.agents_slices_file + agent_tracks_path = self.agent_group.agent_tracks_file + + if agent_slices_path is None or agent_tracks_path is None: + logging.debug('Skipping agent_group {} due to missing agents'.format(self.agent_group)) + return [] + + agents_slices_file = os.path.join(self.directory, agent_slices_path) + agent_tracks_file = os.path.join(self.directory, agent_tracks_path) + + agents_slices_pb2 = open_pbobject(agents_slices_file, AgentsSlicesPb2) + agent_tracks_pb2 = open_pbobject(agent_tracks_file, AgentTracksPb2) + + agent_ontology = ontology_table[AGENT_TYPE_TO_ANNOTATION_TYPE[self.requested_agent_type]] + for agent_slice in agents_slices_pb2.agents_slices: + agents_list = AGENT_REGISTRY[self.requested_agent_type + ].load(agent_slice.agent_snapshots, agent_ontology, feature_ontology_table) + self.sample_id_to_agent_snapshots[agent_slice.slice_id.index] = agents_list + + for track in agent_tracks_pb2.agent_tracks: + self.instance_id_to_agent_snapshots[track.instance_id] = AGENT_REGISTRY[ + self.requested_agent_type].load(track.agent_snapshots, agent_ontology, feature_ontology_table) + + +class AgentDataset(BaseAgentDataset): + """Dataset for agent-centric prediction or planning use cases, works just like normal SynchronizedSceneDataset, + but guaranteeing trajectory of main agent is present in any fetched sample. + + Parameters + ---------- + scene_dataset_json: str + Full path to the scene dataset json holding collections of paths to scene json. + + agents_dataset_json: str + Full path to the agent dataset json holding collections of paths to scene json. + + split: str, default: 'train' + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + datum_names: list, default: None + Select list of datum names for synchronization (see self.select_datums(datum_names)). + + requested_agent_type: tuple, default: None + Tuple of agent type, i.e. ('agent_2d', 'agent_3d'). Only one type of agent can be requested. + + requested_main_agent_classes: tuple, default: 'car' + Tuple of main agent types, i.e. ('car', 'pedestrian'). + The string should be the same as dataset_metadata.ontology_table. + + forward_context: int, default: 0 + Forward context in frames [T+1, ..., T+forward] + + backward_context: int, default: 0 + Backward context in frames [T-backward, ..., T-1] + + min_main_agent_forward: int, default: 0 + Minimum forward samples for main agent. The main-agent will be guaranteed to appear + minimum samples in forward context; i.e., the main-agent will appear in number of + [min_main_agent_forward, forward_context] samples in forward direction. + + min_main_agent_backward: int, default: 0 + Minimum backward samples for main agent. The main-agent will be guaranteed to appear + minimum samples in backward context; i.e., the main-agent will appear in number of + [min_main_agent_backward, backward_context] samples in backward direction. + + generate_depth_from_datum: str, default: None + Datum name of the point cloud. If is not None, then the depth map will be generated for the camera using + the desired point cloud. + + batch_per_agent: bool, default: False + Include whole trajectory of an agent in each batch fetch, this is designed to be used for inference. + If True, backward_context = forward_context = 0 implicitly. + + """ + def __init__( + self, + scene_dataset_json, + agents_dataset_json, + split='train', + datum_names=None, + requested_agent_type='agent_3d', + requested_main_agent_classes=('car', ), + requested_feature_types=None, + requested_autolabels=None, + forward_context=0, + backward_context=0, + min_main_agent_forward=0, + min_main_agent_backward=0, + generate_depth_from_datum=None, + batch_per_agent=False + ): + + # Make sure requested agent type keys match protos + if requested_agent_type is not None: + assert requested_agent_type in AGENT_REGISTRY, "Invalid agent type requested!" + self.requested_agent_type = requested_agent_type + else: + self.requested_agent_type = () + + # Make sure requested feature type keys match protos + if requested_feature_types is not None: + assert all( + requested_feature_type in ALL_FEATURE_TYPES for requested_feature_type in requested_feature_types + ), "Invalid feature type requested!" + self.requested_feature_types = requested_feature_types + else: + self.requested_feature_types = () + + self.batch_per_agent = batch_per_agent + self.generate_depth_from_datum = generate_depth_from_datum + datum_names = sorted(set(datum_names)) if datum_names else set([]) + self.selected_datums = [_d.lower() for _d in datum_names] + if len(self.selected_datums) != 0: + self.synchronized_dataset = SynchronizedSceneDataset( + scene_dataset_json, + split=split, + backward_context=backward_context, + requested_autolabels=requested_autolabels, + forward_context=forward_context, + datum_names=self.selected_datums + ) + + assert min_main_agent_backward <= backward_context and \ + min_main_agent_forward <= forward_context, 'Provide valid minimum context for main agent.' + if batch_per_agent: # fetch frame-by-frame for agent + backward_context = forward_context = 0 + + self.forward_context = forward_context + self.backward_context = backward_context + self.min_main_agent_forward = min_main_agent_forward if min_main_agent_forward else forward_context + self.min_main_agent_backward = min_main_agent_backward if min_main_agent_forward else backward_context + + # Extract all agents from agent dataset JSON for the appropriate split + agent_groups = AgentDataset._extract_agent_groups_from_agent_dataset_json( + agents_dataset_json, requested_agent_type, split=split + ) + + agent_metadata = AgentMetadata.from_agent_containers( + agent_groups, requested_agent_type, requested_feature_types + ) + name_to_id = agent_metadata.ontology_table[AGENT_TYPE_TO_ANNOTATION_TYPE[requested_agent_type]].name_to_id + self.requested_main_agent_classes = tuple([name_to_id[atype] + 1 for atype in requested_main_agent_classes]) + + # load agents data into agent container + with Pool(cpu_count()) as proc: + agent_groups = list( + proc.map( + partial( + self._load_agents_data, + ontology_table=agent_metadata.ontology_table, + feature_ontology_table=agent_metadata.feature_ontology_table + ), agent_groups + ) + ) + + # Record each agent's life time + if batch_per_agent: + self._build_agent_index() + + super().__init__(agent_metadata, agent_groups=agent_groups) + + def _build_agent_index(self): + """Build an index of agents grouped by instance id. This index is used to index dataset by agent track. + + Returns + ------- + agent_item_index: list + List of dataset items that contain index into. + (main_agent_id, scene_idx, sample_idx_in_scene_start, sample_idx_in_scene_end, [datum_name ...]). + """ + self.dataset_agent_index = defaultdict(list) + for index in range(len(self.dataset_item_index)): + scene_idx, sample_idx_in_scene, main_agent_id, datum_names = self.dataset_item_index[index] + # Find the range of agents' trajectories + main_agent_id_and_scene_idx = f'{str(scene_idx)}_{str(main_agent_id)}' + if main_agent_id_and_scene_idx not in self.dataset_agent_index: + self.dataset_agent_index[main_agent_id_and_scene_idx] = [-1, -1, float('inf'), -1, []] + self.dataset_agent_index[main_agent_id_and_scene_idx] = [ + main_agent_id, + scene_idx, + min(sample_idx_in_scene, self.dataset_agent_index[main_agent_id_and_scene_idx][2]), + # birth sample index + max(sample_idx_in_scene, self.dataset_agent_index[main_agent_id_and_scene_idx][3]), + # death sample item index + datum_names + ] + self.dataset_agent_index = [v for k, v in self.dataset_agent_index.items()] + + def _build_item_index(self): + """Builds an index of dataset items that refer to the scene index, agent index, + sample index and datum_within_scene index. This refers to a particular dataset + split. __getitem__ indexes into this look up table. + + Synchronizes at the sample-level and only adds sample indices if context frames are available. + This is enforced by adding sample indices that fall in (bacwkard_context, N-forward_context) range. + + Returns + ------- + item_index: list + List of dataset items that contain index into + (scene_idx, sample_idx_in_scene, (main_agent_idx, main_agent_id), [datum_name ...]). + """ + logging.info(f'Building index for {self.__class__.__name__}, this will take a while.') + st = time.time() + # Fetch the item index per scene based on the selected datums. + with Pool(cpu_count()) as proc: + item_index = proc.starmap( + self._item_index_for_scene, [(scene_idx, ) for scene_idx in range(len(self.agent_groups))] + ) + logging.info(f'Index built in {time.time() - st:.2f}s.') + assert len(item_index) > 0, 'Failed to index items in the dataset.' + # Chain the index across all scenes. + item_index = list(itertools.chain.from_iterable(item_index)) + # Filter out indices that failed to load. + item_index = [item for item in item_index if item is not None] + item_lengths = [len(item_tup) for item_tup in item_index] + assert all([l == item_lengths[0] for l in item_lengths] + ), ('All sample items are not of the same length, datum names might be missing.') + return item_index + + def _item_index_for_scene(self, scene_idx): + + # build item index + agent_group = self.agent_groups[scene_idx] + num_samples = len(agent_group.sample_id_to_agent_snapshots) + instance_id_to_trajectory = defaultdict(list) + instance_id_to_segment_idx = defaultdict(int) + + for sample_id, agents_slice in agent_group.sample_id_to_agent_snapshots.items(): + for agent_snapshot in agents_slice: + # Filter undesired agent types and attributes. + if agent_snapshot.class_id not in self.requested_main_agent_classes: + continue + # Make sure the track is sample-continuous + instance_index_prefix = \ + f'{str(scene_idx)}_{str(agent_snapshot.instance_id)}' + segment_idx_start = instance_id_to_segment_idx[instance_index_prefix] \ + if instance_index_prefix in instance_id_to_segment_idx else 0 + for segment_idx in range(segment_idx_start, num_samples): + instance_index_id = f'{instance_index_prefix}_{segment_idx}' + if instance_index_id in instance_id_to_trajectory and \ + instance_id_to_trajectory[instance_index_id][-1][1] + 1 != sample_id: + continue + instance_id_to_trajectory[instance_index_id].append( + (scene_idx, sample_id, agent_snapshot.instance_id, self.selected_datums) + ) + instance_id_to_segment_idx[instance_index_prefix] = segment_idx + break + + # Fiter unavailable items according to forward_context/backward_context for each agent. + item_index = [] + trajectory_min_length = self.min_main_agent_backward + self.min_main_agent_forward + 1 + for id_ in instance_id_to_trajectory: + + trajectory_length = len(instance_id_to_trajectory[id_]) + # Make sure track length is sufficient + if trajectory_length >= trajectory_min_length: + first_sample_idx = instance_id_to_trajectory[id_][0][1] + final_sample_idx = instance_id_to_trajectory[id_][-1][1] + # Crop out valid samples as items + beg = self.min_main_agent_backward \ + if self.min_main_agent_backward + first_sample_idx > self.backward_context \ + else self.backward_context + end = trajectory_length - ( + self.min_main_agent_forward + if self.min_main_agent_forward + final_sample_idx < num_samples else self.forward_context + ) + if end > beg: + item_index.append(instance_id_to_trajectory[id_][beg:end]) + return list(itertools.chain.from_iterable(item_index)) + + def __len__(self): + """Return the length of the dataset.""" + return len(self.dataset_agent_index) if self.batch_per_agent else len(self.dataset_item_index) + + def __getitem__(self, index): + """Get the dataset item at index. + + Parameters + ---------- + index: int + Index of item to get. + + Returns + ------- + data: list of list of OrderedDict + + "timestamp": int + Timestamp of the image in microseconds. + + "datum_name": str + Sensor name from which the data was collected + + "rgb": PIL.Image (mode=RGB) + Image in RGB format. + + "intrinsics": np.ndarray + Camera intrinsics. + + "extrinsics": Pose + Camera extrinsics with respect to the world frame. + + "pose": Pose + Pose of sensor with respect to the world/global frame + + "main_agent_idx": int + Index of main agent in agent list (bounding_box_2d/bounding_box_3d). + + Returns a list of OrderedDict(s). + Outer list corresponds to temporal ordering of samples. Each element is + a OrderedDict(s) corresponding to synchronized datums and agents. + """ + # return list() + assert self.dataset_item_index is not None, ('Index is not built, select datums before getting elements.') + + if self.batch_per_agent: + # Get dataset agent index + main_agent_id, scene_idx, sample_idx_in_scene_start, sample_idx_in_scene_end, datum_names = \ + self.dataset_agent_index[index] + else: + # Get dataset item index + scene_idx, sample_idx_in_scene, main_agent_id, datum_names = self.dataset_item_index[index] + sample_idx_in_scene_start = sample_idx_in_scene - self.backward_context + sample_idx_in_scene_end = sample_idx_in_scene + self.forward_context + + # All sensor data (including pose, point clouds and 3D annotations are + # defined with respect to the sensor's reference frame captured at that + # corresponding timestamp. In order to move to a locally consistent + # reference frame, you will need to use the "pose" that specifies the + # ego-pose of the sensor with respect to the local (L) frame (pose_LS). + + context_window = [] + # Iterate through context samples + for qsample_idx_in_scene in range(sample_idx_in_scene_start, sample_idx_in_scene_end + 1): + # Main agent index may be different along the samples. + datums = [] + if len(datum_names) > 0: + for datum_name in datum_names: + datum_data = self.synchronized_dataset.get_datum_data(scene_idx, qsample_idx_in_scene, datum_name) + datums.append(datum_data) + agents_in_sample = self.agent_groups[scene_idx].agent_slice(qsample_idx_in_scene) + instance_matched = [agent.instance_id == main_agent_id for agent in agents_in_sample] + main_agent_idx_in_agents_slice = instance_matched.index(True) if any(instance_matched) else None + synchronized_sample = OrderedDict({ + 'datums': datums, + 'agents': agents_in_sample, + 'main_agent_id': main_agent_id, + 'main_agent_idx': main_agent_idx_in_agents_slice + }) + context_window.append(synchronized_sample) + return context_window + + +class AgentDatasetLite(BaseAgentDataset): + """Dataset for agent-centric prediction or planning use cases. It provide two mode of accessing agent, by track + and by frame. If 'batch_per_agent' is set true, then the data iterate per track, note, the length of the track + could vary. Otherwise, the data iterate per frame and each sample contains all agents in the fram. + + Parameters + ---------- + scene_dataset_json: str + Full path to the scene dataset json holding collections of paths to scene json. + + agents_dataset_json: str + Full path to the agent dataset json holding collections of paths to scene json. + + split: str, default: 'train' + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + datum_names: list, default: None + Select list of datum names for synchronization (see self.select_datums(datum_names)). + + requested_agent_type: tuple, default: None + Tuple of agent type, i.e. ('agent_2d', 'agent_3d'). Only one type of agent can be requested. + + requested_main_agent_classes: tuple, default: 'car' + Tuple of main agent types, i.e. ('car', 'pedestrian'). + The string should be the same as dataset_metadata.ontology_table. + + forward_context: int, default: 0 + Forward context in frames [T+1, ..., T+forward] + + backward_context: int, default: 0 + Backward context in frames [T-backward, ..., T-1] + + batch_per_agent: bool, default: False + Include whole trajectory of an agent in each batch fetch. + If True, backward_context = forward_context = 0 implicitly. + + """ + def __init__( + self, + scene_dataset_json, + agents_dataset_json, + split='train', + datum_names=None, + requested_agent_type='agent_3d', + requested_main_agent_classes=('car', ), + requested_feature_types=None, + requested_autolabels=None, + forward_context=0, + backward_context=0, + batch_per_agent=False + ): + + # Make sure requested agent type keys match protos + if requested_agent_type is not None: + assert requested_agent_type in AGENT_REGISTRY, "Invalid agent type requested!" + self.requested_agent_type = requested_agent_type + else: + self.requested_agent_type = () + + # Make sure requested feature type keys match protos + if requested_feature_types is not None: + assert all( + requested_feature_type in ALL_FEATURE_TYPES for requested_feature_type in requested_feature_types + ), "Invalid feature type requested!" + self.requested_feature_types = requested_feature_types + else: + self.requested_feature_types = () + + self.batch_per_agent = batch_per_agent + datum_names = sorted(set(datum_names)) if datum_names else set([]) + self.selected_datums = [_d.lower() for _d in datum_names] + if len(self.selected_datums) != 0: + self.synchronized_dataset = SynchronizedSceneDataset( + scene_dataset_json, + split=split, + backward_context=backward_context, + requested_autolabels=requested_autolabels, + forward_context=forward_context, + datum_names=self.selected_datums + ) + + if batch_per_agent: # fetch frame-by-frame for agent + backward_context = forward_context = 0 + + self.forward_context = forward_context + self.backward_context = backward_context + + # Extract all agents from agent dataset JSON for the appropriate split + agent_groups = AgentDataset._extract_agent_groups_from_agent_dataset_json( + agents_dataset_json, requested_agent_type, split=split + ) + + agent_metadata = AgentMetadata.from_agent_containers( + agent_groups, requested_agent_type, requested_feature_types + ) + name_to_id = agent_metadata.ontology_table[AGENT_TYPE_TO_ANNOTATION_TYPE[requested_agent_type]].name_to_id + self.requested_main_agent_classes = tuple([name_to_id[atype] + 1 for atype in requested_main_agent_classes]) + + # load agents data into agent container + with Pool(cpu_count()) as proc: + agent_groups = list( + proc.map( + partial( + self._load_agents_data, + ontology_table=agent_metadata.ontology_table, + feature_ontology_table=agent_metadata.feature_ontology_table + ), agent_groups + ) + ) + + super().__init__(agent_metadata, agent_groups=agent_groups) + + def _build_item_index(self): + """Builds an index of dataset items that refer to the scene index, agent index, + sample index and datum_within_scene index. This refers to a particular dataset + split. __getitem__ indexes into this look up table. + + Synchronizes at the sample-level and only adds sample indices if context frames are available. + This is enforced by adding sample indices that fall in (bacwkard_context, N-forward_context) range. + + Returns + ------- + item_index: list + List of dataset items that contain index into + (scene_idx, sample_idx_in_scene, (main_agent_idx, main_agent_id), [datum_name ...]). + """ + logging.info(f'Building index for {self.__class__.__name__}, this will take a while.') + st = time.time() + # Fetch the item index per scene based on the selected datums. + if self.batch_per_agent: + with Pool(cpu_count()) as proc: + item_index = proc.starmap( + partial(self._agent_index_for_scene, selected_datums=self.selected_datums), + [(scene_idx, agent_group) for scene_idx, agent_group in enumerate(self.agent_groups)] + ) + else: + with Pool(cpu_count()) as proc: + item_index = proc.starmap( + partial( + self._item_index_for_scene, + backward_context=self.backward_context, + forward_context=self.forward_context, + selected_datums=self.selected_datums + ), [(scene_idx, agent_group) for scene_idx, agent_group in enumerate(self.agent_groups)] + ) + logging.info(f'Index built in {time.time() - st:.2f}s.') + assert len(item_index) > 0, 'Failed to index items in the dataset.' + # Chain the index across all scenes. + item_index = list(itertools.chain.from_iterable(item_index)) + # Filter out indices that failed to load. + item_index = [item for item in item_index if item is not None] + item_lengths = [len(item_tup) for item_tup in item_index] + assert all([l == item_lengths[0] for l in item_lengths] + ), ('All sample items are not of the same length, datum names might be missing.') + return item_index + + @staticmethod + def _item_index_for_scene(scene_idx, agent_group, backward_context, forward_context, selected_datums): + # Define a safe sample range given desired context + sample_range = np.arange(backward_context, len(agent_group.sample_id_to_agent_snapshots) - forward_context) + scene_item_index = [(scene_idx, sample_idx, selected_datums) for sample_idx in sample_range] + + return scene_item_index + + @staticmethod + def _agent_index_for_scene(scene_idx, agent_group, selected_datums): + scene_item_index = [ + (scene_idx, instance_id, selected_datums) for instance_id in agent_group.instance_id_to_agent_snapshots + ] + + return scene_item_index + + def __len__(self): + """Return the length of the dataset.""" + return len(self.dataset_item_index) + + def __getitem__(self, index): + """Get the dataset item at index. + + Parameters + ---------- + index: int + Index of item to get. + + Returns + ------- + datums: list of OrderedDict + + "timestamp": int + Timestamp of the image in microseconds. + + "datum_name": str + Sensor name from which the data was collected + + "rgb": PIL.Image (mode=RGB) + Image in RGB format. + + "intrinsics": np.ndarray + Camera intrinsics. + + "extrinsics": Pose + Camera extrinsics with respect to the world frame. + + "pose": Pose + Pose of sensor with respect to the world/global frame + + Agents: AgentSnapshotList + A list of agent snapshots. + + Returns a list of OrderedDict(s). + Outer list corresponds to temporal ordering of samples. Each element is + a OrderedDict(s) corresponding to synchronized datums and agents. + """ + # return list() + assert self.dataset_item_index is not None, ('Index is not built, select datums before getting elements.') + + context_window = [] + if self.batch_per_agent: + # Get dataset agent index + scene_idx, instance_id, datum_names = self.dataset_item_index[index] + track = self.agent_groups[scene_idx].agent_track(instance_id) + ontology = track.ontology + type_of_track = type(track) + for agent_snapshot in track: + qsample_idx_in_scene = agent_snapshot.sample_idx + datums = [] + if len(datum_names) > 0: + for datum_name in datum_names: + datum_data = self.synchronized_dataset.get_datum_data( + scene_idx, qsample_idx_in_scene, datum_name + ) + datums.append(datum_data) + synchronized_sample = OrderedDict({ + 'datums': datums, + 'agents': type_of_track(ontology, [agent_snapshot]), + }) + context_window.append(synchronized_sample) + else: + # Get dataset item index + scene_idx, sample_idx_in_scene, datum_names = self.dataset_item_index[index] + sample_idx_in_scene_start = sample_idx_in_scene - self.backward_context + sample_idx_in_scene_end = sample_idx_in_scene + self.forward_context + + # Iterate through context samples + for qsample_idx_in_scene in range(sample_idx_in_scene_start, sample_idx_in_scene_end + 1): + # Main agent index may be different along the samples. + datums = [] + if len(datum_names) > 0: + for datum_name in datum_names: + datum_data = self.synchronized_dataset.get_datum_data( + scene_idx, qsample_idx_in_scene, datum_name + ) + datums.append(datum_data) + agents_in_sample = self.agent_groups[scene_idx].agent_slice(qsample_idx_in_scene) + synchronized_sample = OrderedDict({ + 'datums': datums, + 'agents': agents_in_sample, + }) + context_window.append(synchronized_sample) + return context_window + + +class AgentMetadata: + """A Wrapper agents metadata class to support two entrypoints for agents dataset + (reading from agents.json). + + Parameters + ---------- + agent_groups: list[AgentContainer] + List of AgentContainer objects to be included in the dataset. + + directory: str + Directory of agent_dataset. + + feature_ontology_table: dict, default: None + A dictionary mapping feature type key(s) to Ontology(s), i.e.: + { + "agent_2d": AgentFeatureOntology[], + "agent_3d": AgentFeatureOntology[] + } + ontology_table: dict, default: None + A dictionary mapping annotation key(s) to Ontology(s), i.e.: + { + "bounding_box_2d": BoundingBoxOntology[], + "autolabel_model_1/bounding_box_2d": BoundingBoxOntology[], + "semantic_segmentation_2d": SemanticSegmentationOntology[] + } + """ + def __init__(self, agent_groups, directory, feature_ontology_table=None, ontology_table=None): + assert directory is not None, 'Dataset directory is required, and cannot be None.' + self.agent_groups = agent_groups + self.directory = directory + self.feature_ontology_table = feature_ontology_table + self.ontology_table = ontology_table + + @classmethod + def from_agent_containers(cls, agent_containers, requested_agent_types=None, requested_feature_types=None): + """Load DatasetMetadata from Scene Dataset JSON. + + Parameters + ---------- + agent_containers: list of AgentContainer + List of AgentContainer objects. + + requested_agent_types: List(str) + List of agent types, such as ['agent_3d', 'agent_2d'] + + requested_feature_types: List(str) + List of feature types, such as ['parked_car', 'ego_intention'] + + """ + assert len(agent_containers), 'SceneContainers is empty.' + requested_agent_types = [] if requested_agent_types is None else requested_agent_types + + if not requested_agent_types or not requested_feature_types: + # Return empty ontology table + return cls( + agent_containers, + directory=os.path.dirname(agent_containers[0].directory), + feature_ontology_table={}, + ontology_table={} + ) + feature_ontology_table = {} + dataset_ontology_table = {} + logging.info('Building ontology table.') + st = time.time() + + # Determine scenes with unique ontologies based on the ontology file basename. + unique_scenes = { + os.path.basename(f): agent_container + for agent_container in agent_containers + for _, _, filenames in os.walk(os.path.join(agent_container.directory, FEATURE_ONTOLOGY_FOLDER)) + for f in filenames + } + # Parse through relevant scenes that have unique ontology keys. + for _, agent_container in unique_scenes.items(): + + for feature_ontology_key, ontology_file in agent_container.feature_ontology_files.items(): + + # Look up ontology for specific annotation type + if feature_ontology_key in FEATURE_ONTOLOGY_REGISTRY: + + if feature_ontology_key not in requested_feature_types: + continue + + feature_ontology_spec = FEATURE_ONTOLOGY_REGISTRY[feature_ontology_key] + + # No need to add ontology-less tasks to the ontology table. + if feature_ontology_spec is None: + continue + # If ontology and key have not been added to the table, add it. + if feature_ontology_key not in feature_ontology_table: + feature_ontology_table[feature_ontology_key] = feature_ontology_spec.load(ontology_file) + + # If we've already loaded an ontology for this feature type, make sure other scenes have the same + # ontology + else: + assert feature_ontology_table[feature_ontology_key] == feature_ontology_spec.load( + ontology_file + ), "Inconsistent ontology for key {}.".format(feature_ontology_key) + + # In case an ontology type is not implemented yet + else: + raise Exception(f"Ontology for key {feature_ontology_key} not found in registry!") + + for ontology_key, ontology_file in agent_container.ontology_files.items(): + + # Look up ontology for specific annotation type + if ontology_key in ONTOLOGY_REGISTRY: + + # Skip if we don't require this annotation/autolabel + + if ANNOTATION_TYPE_TO_AGENT_TYPE[ontology_key] not in requested_agent_types: + continue + + ontology_spec = ONTOLOGY_REGISTRY[ontology_key] + + # No need to add ontology-less tasks to the ontology table. + if ontology_spec is None: + continue + + # If ontology and key have not been added to the table, add it. + if ontology_key not in dataset_ontology_table: + dataset_ontology_table[ontology_key] = ontology_spec.load(ontology_file) + + # If we've already loaded an ontology for this annotation type, make sure other scenes have the + # same ontology + else: + assert dataset_ontology_table[ontology_key] == ontology_spec.load( + ontology_file + ), "Inconsistent ontology for key {}.".format(ontology_key) + + # In case an ontology type is not implemented yet + else: + raise Exception(f"Ontology for key {ontology_key} not found in registry!") + + logging.info(f'Ontology table built in {time.time() - st:.2f}s.') + return cls( + agent_containers, + directory=os.path.dirname(agent_containers[0].directory), + feature_ontology_table=feature_ontology_table, + ontology_table=dataset_ontology_table + ) + + @staticmethod + def get_dataset_splits(agents_json): + """Get a list of splits in the agent_json.json. + + Parameters + ---------- + agents_json: str + Full path to the agents json holding agent metadata, agent splits. + + Returns + ------- + agents_splits: list of str + List of agents splits (train | val | test | train_overfit). + + """ + assert agents_json.endswith('.json'), 'Please provide a dataset.json file.' + agents = open_pbobject(agents_json, AgentsPb2) + return [ + dataset_pb2.DatasetSplit.DESCRIPTOR.values_by_number[split_index].name.lower() + for split_index in agents.agents_splits + ] diff --git a/dgp/datasets/base_dataset.py b/dgp/datasets/base_dataset.py index 72e36f90..c823ee95 100644 --- a/dgp/datasets/base_dataset.py +++ b/dgp/datasets/base_dataset.py @@ -162,6 +162,14 @@ def get_sample(self, sample_idx_in_scene): assert sample_idx_in_scene >= 0 and sample_idx_in_scene < len(self.datum_index) return self.samples[self.datum_index.coords["samples"][sample_idx_in_scene].data] + @lru_cache(maxsize=None) + def get_datum_type(self, datum_name): + """Get datum type based on the datum name""" + for datum in self.data: + if datum.id.name.lower() == datum_name: + return datum.datum.WhichOneof('datum_oneof') + return None + @property @lru_cache(maxsize=None) def datum_names(self): @@ -1037,7 +1045,7 @@ def _add_metadata_index_callback(scene_metadata_index): ] = scene_metadata_index with Pool(cpu_count()) as proc: - for scene_idx, _ in enumerate(self.scenes): + for scene_idx, scene in enumerate(self.scenes): #pylint: disable=unused-variable proc.apply_async( BaseDataset.get_scene_metadata, args=(scene_idx), callback=_add_metadata_index_callback ) @@ -1050,7 +1058,7 @@ def _add_metadata_index_callback(scene_metadata_index): # Note: For now, we're only merging/joining on # log-level metadata. We pick the first item in the metadata dataframe # grouped by the log_id. - # assert 'scene_name' in metadata.columns, 'scene_name not in provided metadata' + assert 'scene_name' in dataset_df.columns, 'scene_name not in provided metadata' # Drop log_id before joining tables (since this column is redundant across tables) orig_length = len(dataset_df) diff --git a/dgp/datasets/prediction_dataset.py b/dgp/datasets/prediction_dataset.py new file mode 100644 index 00000000..dadc4645 --- /dev/null +++ b/dgp/datasets/prediction_dataset.py @@ -0,0 +1,467 @@ +# Copyright 2020 Toyota Research Institute. All rights reserved. +import copy +import itertools +import logging +#import math +import os +import time +from collections import defaultdict +from multiprocessing import Pool, cpu_count + +import numpy as np + +from dgp.annotations import ANNOTATION_REGISTRY +from dgp.constants import ANNOTATION_KEY_TO_TYPE_ID +from dgp.datasets.base_dataset import (BaseDataset, DatasetMetadata, SceneContainer) +from dgp.datasets.synchronized_dataset import SynchronizedSceneDataset +from dgp.proto.scene_pb2 import Scene as ScenePb2 +from dgp.utils.protobuf import open_pbobject + + +class ResampledSceneContainer(SceneContainer): + """Object-oriented container for assembling datasets from collections of scenes. + Each scene is resampled from a scene described within a sub-directory with an associated + scene.json file, by a given sampling rate. + """ + def __init__( + self, + scene_path, + directory=None, + autolabeled_scenes=None, + is_datums_synchronized=False, + use_diskcache=True, + sampling_rate=1.0 + ): + """Initialize a scene with a scene object and optionally provide the + directory containing the scene.json to gather additional information + for directory-based dataset loading mode. + + Parameters + ---------- + scene_path: str + Path to the Scene object containing data samples. + + directory: str, default: None + Optional directory containing scene_.json. + + autolabeled_scenes: dict, default: None + Dictionary mapping (defined as:`autolabel_model`/`annotation_key`) to autolabeled SceneContainer. + + is_datums_synchronized: bool, default: False + If True, sample-level synchronization is required i.e. each sample must contain all datums specified in the requested + `datum_names`, and all samples in this scene must contain the same number of datums. + If False, sample-level synchronization is not required i.e. samples are allowed to have different sets of datums. + + use_diskcache: bool, default: True + If True, cache ScenePb2 object using diskcache. If False, save the object in memory. + NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of scenes. + + sampling_rate: float, default: 1.0 + + """ + super().__init__( + scene_path=scene_path, + directory=directory, + autolabeled_scenes=autolabeled_scenes, + is_datums_synchronized=is_datums_synchronized, + use_diskcache=use_diskcache + ) + self.sampling_rate = sampling_rate + + @property + def scene(self): + """ Returns scene. + - If self.use_diskcache is True: returns the cached `_scene` if available, otherwise load the + scene and cache it. + - If self.use_diskcache is False: returns `_scene` in memory if the instance has attribute + `_scene`, otherwise load the scene and save it in memory. + NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of scenes. + """ + if self.use_diskcache: + cached_path = self.scene_path if self.sampling_rate == 1.0 \ + else os.path.join(self.scene_path, f'{self.sampling_rate:.3f}') + if cached_path in SceneContainer.SCENE_CACHE: + _scene = SceneContainer.SCENE_CACHE.get(cached_path) + if _scene is not None: + return _scene + _scene = self.resample_scene(open_pbobject(self.scene_path, ScenePb2)) + SceneContainer.SCENE_CACHE.add(cached_path, _scene) + return _scene + else: + if self._scene is None: + self._scene = self.resample_scene(open_pbobject(self.scene_path, ScenePb2)) + return self._scene + + def resample_scene(self, scene): + """Resample the scene based on given sampling rate. + + Parameters + ---------- + scene: scene_pb2.Scene + scene protobuf data with original sampling rate. + + Returns + ------- + resampled_scene: scene_pb2.Scene + scene protobuf data with giving sampling rate. + """ + resampled_indices = np.linspace(0, len(scene.samples) - 1, int(len(scene.samples) * self.sampling_rate)) + resampled_indices = resampled_indices.astype(np.int32).tolist() + resampled_scene = copy.deepcopy(scene) + resampled_scene.ClearField('samples') + resampled_scene.ClearField('data') + datum_per_sample = len(scene.data) // len(scene.samples) + for r_idx in resampled_indices: + resampled_scene.samples.append(scene.samples[r_idx]) + for d_idx in range(datum_per_sample): + resampled_scene.data.append(scene.data[r_idx * datum_per_sample + d_idx]) + return resampled_scene + + +class PredictionAgentDataset(BaseDataset): + """Dataset for agent-centric prediction use cases, works just like normal SynchronizedSceneDataset, + but guaranteeing trajectory of main agent is present in any fetched sample. + + Parameters + ---------- + scene_dataset_json: str + Full path to the scene dataset json holding collections of paths to scene json. + + split: str, default: 'train' + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + datum_names: list, default: None + Select list of datum names for synchronization (see self.select_datums(datum_names)). + + requested_annotations: tuple, default: None + Tuple of annotation types, i.e. ('bounding_box_2d', 'bounding_box_3d'). Should be equivalent + to directory containing annotation from dataset root. + + requested_main_agent_types: tuple, default: 'car' + Tuple of main agent types, i.e. ('car', 'pedestrian'). + The string should be the same as dataset_metadata.ontology_table. + + requested_main_agent_attributes: tuple[str], default: None + Tuple of main agent attributes, i.e. ('moving', 'stopped'). This is predefined per dataset. + By default (None) will include all attributes. + + requested_autolabels: tuple[str], default: None + Currently not supported. + + forward_context: int, default: 0 + Forward context in frames [T+1, ..., T+forward] + + backward_context: int, default: 0 + Backward context in frames [T-backward, ..., T-1] + + min_main_agent_forward: int, default: 0 + Minimum forward samples for main agent. The main-agent will be guaranteed to appear + minimum samples in forward context; i.e., the main-agent will appear in number of + [min_main_agent_forward, forward_context] samples in forward direction. + + min_main_agent_backward: int, default: 0 + Minimum backward samples for main agent. The main-agent will be guaranteed to appear + minimum samples in backward context; i.e., the main-agent will appear in number of + [min_main_agent_backward, backward_context] samples in backward direction. + + generate_depth_from_datum: str, default: None + Datum name of the point cloud. If is not None, then the depth map will be generated for the camera using + the desired point cloud. + + use_3d_trajectories: bool, default: True + Use 3D trajectories (from bounding_box_3d) as main reference of agents. + This requires camera datum with bounding_box_3d annotations. + + batch_per_agent: bool, default: False + Include whole trajectory of an agent in each batch Fetch, this is designed to be used for inference. + If True, backward_context = forward_context = 0 implicitly. + + fps: float, default: -1 + Frame per second during data fetch. -1 means use original fps. + """ + ATTRIBUTE_NAME = 'behavior' + + def __init__( + self, + dataset_json, + split='train', + datum_names=None, + requested_annotations=('bounding_box_3d', ), + requested_main_agent_types=('car', ), + requested_main_agent_attributes=None, + requested_autolabels=None, + forward_context=0, + backward_context=0, + min_main_agent_forward=0, + min_main_agent_backward=0, + generate_depth_from_datum=None, + use_3d_trajectories=True, + batch_per_agent=False, + fps=-1 + ): + self.generate_depth_from_datum = generate_depth_from_datum + self.use_3d_trajectories = use_3d_trajectories + assert len(datum_names) + self.trajectories_reference = 'lidar' if any(['lidar' in datum_name.lower() \ + for datum_name in datum_names]) else datum_names[0].lower() + self.use_3d_trajectories = use_3d_trajectories or self.trajectories_reference == 'lidar' + self.annotation_reference = 'bounding_box_3d' if self.use_3d_trajectories else 'bounding_box_2d' + assert self.annotation_reference in requested_annotations + assert min_main_agent_backward <= backward_context and \ + min_main_agent_forward <= forward_context, 'Provide valid minimum context for main agent.' + if batch_per_agent: # fetch frame-by-frame for agent + backward_context = forward_context = 0 + SynchronizedSceneDataset.set_context(self, backward=backward_context, forward=forward_context) + self.min_main_agent_forward = min_main_agent_forward if min_main_agent_forward else forward_context + self.min_main_agent_backward = min_main_agent_backward if min_main_agent_forward else backward_context + + # Extract all scenes from the scene dataset JSON for the appropriate split + scenes = BaseDataset._extract_scenes_from_scene_dataset_json( + dataset_json, split=split, requested_autolabels=requested_autolabels, is_datums_synchronized=True + ) + metadata = BaseDataset._extract_metadata_from_scene_dataset_json(dataset_json) + + # Return SynchronizedDataset with scenes built from dataset.json + dataset_metadata = DatasetMetadata.from_scene_containers(scenes, requested_annotations, requested_autolabels) + name_to_id = dataset_metadata.ontology_table[self.annotation_reference].name_to_id + self.requested_main_agent_types = tuple([name_to_id[atype] + 1 for atype in requested_main_agent_types]) + self.requested_main_agent_attributes = requested_main_agent_attributes + + # Resample scenes based on given fps + self.sampling_rate = fps / metadata.frame_per_second if fps != -1 and metadata.frame_per_second else 1.0 + assert self.sampling_rate <= 1, f"Support lower fps only (current is {metadata.frame_per_second:.2f} fps)." + resampled_scenes = [] + for scene in scenes: + resampled_scene = ResampledSceneContainer( + scene_path=scene.scene_path, + directory=scene.directory, + autolabeled_scenes=scene.autolabeled_scenes, + is_datums_synchronized=scene.is_datums_synchronized, + use_diskcache=scene.use_diskcache, + sampling_rate=self.sampling_rate + ) + resampled_scenes.append(resampled_scene) + + super().__init__( + dataset_metadata, + scenes=resampled_scenes, + datum_names=datum_names, + requested_annotations=requested_annotations + ) + + # Record each agent's life time + self.batch_per_agent = batch_per_agent + if batch_per_agent: + self.dataset_agent_index = defaultdict(list) + for index in range(len(self.dataset_item_index)): + scene_idx, sample_idx_in_scene, main_agent_info, datum_names = self.dataset_item_index[index] + _, main_agent_id = main_agent_info + # Find the range of agents' trajectories + if main_agent_id not in self.dataset_agent_index: + self.dataset_agent_index[main_agent_id] = [-1, -1, float('inf'), -1, []] + self.dataset_agent_index[main_agent_id] = [ + main_agent_id, + scene_idx, + min(sample_idx_in_scene, self.dataset_agent_index[main_agent_id][2]), # birth sample index + max(sample_idx_in_scene, self.dataset_agent_index[main_agent_id][3]), # death sample item index + datum_names + ] + self.dataset_agent_index = [v for k, v in self.dataset_agent_index.items()] + + def _build_item_index(self): + """Builds an index of dataset items that refer to the scene index, agent index, + sample index and datum_within_scene index. This refers to a particular dataset + split. __getitem__ indexes into this look up table. + + Synchronizes at the sample-level and only adds sample indices if context frames are available. + This is enforced by adding sample indices that fall in (bacwkard_context, N-forward_context) range. + + Returns + ------- + item_index: list + List of dataset items that contain index into + (scene_idx, sample_idx_in_scene, (main_agent_idx, main_agent_id), [datum_name ...]). + """ + logging.info(f'Building index for {self.__class__.__name__}, this will take a while.') + st = time.time() + # Fetch the item index per scene based on the selected datums. + with Pool(cpu_count()) as proc: + item_index = proc.starmap( + self._item_index_for_scene, [(scene_idx, ) for scene_idx in range(len(self.scenes))] + ) + logging.info(f'Index built in {time.time() - st:.2f}s.') + assert len(item_index) > 0, 'Failed to index items in the dataset.' + # Chain the index across all scenes. + item_index = list(itertools.chain.from_iterable(item_index)) + # Filter out indices that failed to load. + item_index = [item for item in item_index if item is not None] + item_lengths = [len(item_tup) for item_tup in item_index] + assert all([l == item_lengths[0] for l in item_lengths] + ), ('All sample items are not of the same length, datum names might be missing.') + return item_index + + def _item_index_for_scene(self, scene_idx): + scene = self.scenes[scene_idx] + instance_id_to_trajectory = defaultdict(list) + instance_id_to_segment_idx = defaultdict(int) + # Decide main trajectories reference. + # There are 3 cases to decide referenced annotation for trajectories: + # 1. LIDAR only: bounding_box_3d as reference. + # 2. CAMERA only: bounding_box_3d if use_3d_trajectories else bounding_box_2d. + # 3. LIDAR + CAMERA: bounding_box_3d (from LIDAR) as reference. + reference_datums = [datum_name for datum_name in scene.selected_datums \ + if self.trajectories_reference in datum_name] + + # Only add to index if datum-name exists. + if len(reference_datums) == 0: + logging.debug('Skipping scene {} due to missing datums'.format(scene)) + return [] + + # Define a safe sample range given desired context + sample_range = np.arange(0, len(scene.datum_index)) + annotated_samples = scene.annotation_index[scene.datum_index[sample_range]].any(axis=(1, 2)) + for sample_idx_in_scene, is_annotated in zip(sample_range, annotated_samples): + if not is_annotated: + continue + else: + for datum_name in reference_datums: + datum = self.get_datum(scene_idx, sample_idx_in_scene, datum_name) + annotation_key = self.annotation_reference + annotations = self.get_annotations(datum) + annotation_file = os.path.join( + self.scenes[scene_idx].directory, annotations[ANNOTATION_KEY_TO_TYPE_ID[annotation_key]] + ) + bboxes_list = ANNOTATION_REGISTRY[annotation_key].load( + annotation_file, self.dataset_metadata.ontology_table[annotation_key] + ) + for agent_idx, bbox in enumerate(bboxes_list): + # Filter undesired agent types and attributes. + if bbox.class_id not in self.requested_main_agent_types or \ + (self.ATTRIBUTE_NAME in bbox.attributes and \ + self.requested_main_agent_attributes is not None and \ + bbox.attributes[self.ATTRIBUTE_NAME] not in self.requested_main_agent_attributes): + continue + # Make sure the track is sample-continuous + instance_index_prefix = \ + f'{datum.id.name}_{str(scene_idx)}_{str(bbox.instance_id)}' + segment_idx_start = instance_id_to_segment_idx[instance_index_prefix] \ + if instance_index_prefix in instance_id_to_segment_idx else 0 + for segment_idx in range(segment_idx_start, len(self.scenes[scene_idx].samples)): + instance_index_id = f'{instance_index_prefix}_{segment_idx}' + if instance_index_id in instance_id_to_trajectory and \ + instance_id_to_trajectory[instance_index_id][-1][1] + 1 != sample_idx_in_scene: + continue + instance_id_to_trajectory[instance_index_id].append( + (scene_idx, sample_idx_in_scene, (agent_idx, bbox.instance_id), scene.selected_datums) + ) + instance_id_to_segment_idx[instance_index_prefix] = segment_idx + break + # Fiter unavailable items according to forward_context/backward_context for each agent. + item_index = [] + trajectory_min_length = self.min_main_agent_backward + self.min_main_agent_forward + 1 + for id_ in instance_id_to_trajectory: + scene_idx = instance_id_to_trajectory[id_][0][0] + num_samples = len(self.scenes[scene_idx].samples) + trajectory_length = len(instance_id_to_trajectory[id_]) + # Make sure track length is sufficient + if trajectory_length >= trajectory_min_length: + first_sample_idx = instance_id_to_trajectory[id_][0][1] + final_sample_idx = instance_id_to_trajectory[id_][-1][1] + # Crop out valid samples as items + beg = self.min_main_agent_backward \ + if self.min_main_agent_backward + first_sample_idx > self.backward_context \ + else self.backward_context + end = trajectory_length - (self.min_main_agent_forward \ + if self.min_main_agent_forward + final_sample_idx < num_samples \ + else self.forward_context) + if end > beg: + item_index.append(instance_id_to_trajectory[id_][beg:end]) + return list(itertools.chain.from_iterable(item_index)) + + def __len__(self): + """Return the length of the dataset.""" + return len(self.dataset_agent_index) if self.batch_per_agent else len(self.dataset_item_index) + + def __getitem__(self, index): + """Get the dataset item at index. + + Parameters + ---------- + index: int + Index of item to get. + + Returns + ------- + data: list of list of OrderedDict + + "timestamp": int + Timestamp of the image in microseconds. + + "datum_name": str + Sensor name from which the data was collected + + "rgb": PIL.Image (mode=RGB) + Image in RGB format. + + "intrinsics": np.ndarray + Camera intrinsics. + + "extrinsics": Pose + Camera extrinsics with respect to the world frame. + + "pose": Pose + Pose of sensor with respect to the world/global frame + + "main_agent_idx": int + Index of main agent in agent list (bounding_box_2d/bounding_box_3d). + + Returns a list of list of OrderedDict(s). + Outer list corresponds to temporal ordering of samples. Each element is + a list of OrderedDict(s) corresponding to synchronized datums. + + In other words, __getitem__ returns a nested list with the ordering as + follows: (C, D, I), where + C = forward_context + backward_context + 1, + D = len(datum_names) + I = OrderedDict item + """ + assert self.dataset_item_index is not None, ('Index is not built, select datums before getting elements.') + + if self.batch_per_agent: + # Get dataset agent index + main_agent_id, scene_idx, sample_idx_in_scene_start, sample_idx_in_scene_end, datum_names = \ + self.dataset_agent_index[index] + else: + # Get dataset item index + scene_idx, sample_idx_in_scene, main_agent_info, datum_names = self.dataset_item_index[index] + _, main_agent_id = main_agent_info + sample_idx_in_scene_start = sample_idx_in_scene - self.backward_context + sample_idx_in_scene_end = sample_idx_in_scene + self.forward_context + + # All sensor data (including pose, point clouds and 3D annotations are + # defined with respect to the sensor's reference frame captured at that + # corresponding timestamp. In order to move to a locally consistent + # reference frame, you will need to use the "pose" that specifies the + # ego-pose of the sensor with respect to the local (L) frame (pose_LS). + + context_window = [] + reference_annotation_key = self.annotation_reference + # Iterate through context samples + for qsample_idx_in_scene in range(sample_idx_in_scene_start, sample_idx_in_scene_end + 1): + # Main agent index may be different along the samples. + synchronized_sample = [] + for datum_name in datum_names: + datum_data = SynchronizedSceneDataset.get_datum_data(self, scene_idx, qsample_idx_in_scene, datum_name) + + if reference_annotation_key in datum_data: + # Over the main agent's trajectory, set main_agent_idx as None. + # Notice: main agent index may be different along the samples. + instance_matched = [ + bbox.instance_id == main_agent_id for bbox in datum_data[reference_annotation_key] + ] + main_agent_idx_in_sample = instance_matched.index(True) if any(instance_matched) else None + datum_data['main_agent_idx'] = main_agent_idx_in_sample + + synchronized_sample.append(datum_data) + context_window.append(synchronized_sample) + return context_window diff --git a/dgp/features/__init__.py b/dgp/features/__init__.py new file mode 100644 index 00000000..bc08b346 --- /dev/null +++ b/dgp/features/__init__.py @@ -0,0 +1,11 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. + +from dgp.features.feature_ontology import AgentFeatureOntology + +# Ontology handlers for each annotation type +FEATURE_ONTOLOGY_REGISTRY = { + "agent_2d": AgentFeatureOntology, + "agent_3d": AgentFeatureOntology, + "ego_intention": AgentFeatureOntology, + "parked_car": AgentFeatureOntology +} diff --git a/dgp/features/feature_ontology.py b/dgp/features/feature_ontology.py new file mode 100644 index 00000000..3a3fca47 --- /dev/null +++ b/dgp/features/feature_ontology.py @@ -0,0 +1,136 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. + +import os +from collections import OrderedDict + +from dgp.proto.ontology_pb2 import FeatureOntology as FeatureOntologyPb2 +from dgp.proto.ontology_pb2 import FeatureOntologyItem +from dgp.utils.protobuf import (generate_uid_from_pbobject, open_feature_ontology_pbobject, save_pbobject_as_json) + + +class FeatureOntology: + """Feature ontology object. At bare minimum, we expect ontologies to provide: + ID: (int) identifier for feature field name + Name: (str) string identifier for feature field name + + Based on the task, additional fields may be populated. Refer to `dataset.proto` and `ontology.proto` + specifications for more details. Can be constructed from file or from deserialized proto object. + + Parameters + ---------- + feature_ontology_pb2: OntologyPb2 + Deserialized ontology object. + """ + + # Special value and class name reserved for pixels that should be ignored + VOID_ID = 255 + VOID_CLASS = "Void" + + def __init__(self, feature_ontology_pb2): + self._ontology = feature_ontology_pb2 + + if isinstance(self._ontology, FeatureOntologyPb2): + self._name_to_id = OrderedDict( + sorted([(ontology_item.name, ontology_item.id) for ontology_item in self._ontology.items]) + ) + self._id_to_name = OrderedDict( + sorted([(ontology_item.id, ontology_item.name) for ontology_item in self._ontology.items]) + ) + self._id_to_feature_value_type = OrderedDict( + sorted([(ontology_item.id, ontology_item.feature_value_type) for ontology_item in self._ontology.items]) + ) + + else: + raise TypeError("Unexpected type {}, expected FeatureOntologyV2".format(type(self._ontology))) + + self._feature_ids = sorted(self._id_to_name.keys()) + self._feature_names = [self._id_to_name[c_id] for c_id in self._feature_ids] + + @classmethod + def load(cls, ontology_file): + """Construct an ontology from an ontology JSON. + + Parameters + ---------- + ontology_file: str + Path to ontology JSON + """ + if os.path.exists(ontology_file): + feature_ontology_pb2 = open_feature_ontology_pbobject(ontology_file) + else: + raise FileNotFoundError("Could not find {}".format(ontology_file)) + + if feature_ontology_pb2 is not None: + return cls(feature_ontology_pb2) + raise TypeError("Could not open ontology {}".format(ontology_file)) + + def to_proto(self): + """Serialize ontology. Only supports exporting in OntologyV2. + + Returns + ------- + OntologyPb2 + Serialized ontology + """ + return FeatureOntologyPb2( + items=[ + FeatureOntologyItem( + name=name, id=feature_id, feature_value_type=self.id_to_feature_value_type[feature_id] + ) for feature_id, name in self._id_to_name.items() + ] + ) + + def save(self, save_dir): + """Write out ontology items to `.json`. SHA generated from Ontology proto object. + + Parameters + ---------- + save_dir: str + Directory in which to save serialized ontology. + + Returns + ------- + output_ontology_file: str + Path to serialized ontology file. + """ + os.makedirs(save_dir, exist_ok=True) + return save_pbobject_as_json(self.to_proto(), save_path=save_dir) + + @property + def num_classes(self): + return len(self._feature_ids) + + @property + def class_names(self): + return self._feature_names + + @property + def class_ids(self): + return self._feature_ids + + @property + def name_to_id(self): + return self._name_to_id + + @property + def id_to_name(self): + return self._id_to_name + + @property + def id_to_feature_value_type(self): + return self._id_to_feature_value_type + + @property + def hexdigest(self): + """Hash object""" + return generate_uid_from_pbobject(self.to_proto()) + + def __eq__(self, other): + return self.hexdigest == other.hexdigest + + def __repr__(self): + return "{}[{}]".format(self.__class__.__name__, os.path.basename(self.hexdigest)) + + +class AgentFeatureOntology(FeatureOntology): + """Agent feature ontologies derive directly from Ontology""" diff --git a/dgp/proto/agent.proto b/dgp/proto/agent.proto new file mode 100644 index 00000000..c2503947 --- /dev/null +++ b/dgp/proto/agent.proto @@ -0,0 +1,155 @@ +// Copyright 2021 Toyota Research Institute. All rights reserved. +// Definitions for agents within a dataset. +syntax = "proto3"; + +package dgp.proto; + +import "google/protobuf/any.proto"; +import "dgp/proto/annotations.proto"; +import "dgp/proto/identifiers.proto"; +import "google/protobuf/timestamp.proto"; + + +// All agents in a robot session. +message AgentGroup { + // Unique name for the group of agents in a scene + // + // Usually, group name is set as the hash of algorithm or label that generate + // the agents. + // + // For group without without unique names, generate a sha1 hash of + // all the AgentSnapshot keys combined. + string name = 1; + + // Optional, short description of the group (~200 characters) + string description = 2; + + // Log identifier + // Refer to dgp.identifiers.proto for more information. + string log = 3; + + // List of agent slices corresponding to this scene, each slice contains + // agent snapshots from one sample in the scene. + string agents_slices_file = 4; + + // List of agent tracks in this scene. + string agent_tracks_file = 5; + + // Optional metadata + map metadata = 6; + + // Date and timestamp of agent group creation + google.protobuf.Timestamp creation_date = 7; + + // Task-specific feature ontologies + // Ontologies are stored under /ontology/.json + // Maps dgp.proto.FeatureType (Agent_3D, EGO_INTENTION, etc) to the filename + // containing the ontology for the specific FeatureType/Task. + map feature_ontologies = 8; + + // Task-specific agent ontologies + // Agent ontologies are stored under /ontology/.json + // Maps dgp.proto.AnnotationType (bounding_box_3d, etc) to the filename + // containing the ontology for the specific AgentType/Task. + map agent_ontologies = 9; +} + +// AgentSnapshot that takes values from one of agent types. +message AgentSnapshot { + oneof agent_snapshot_oneof { + AgentSnapshot2D agent_snapshot_2D = 1; + AgentSnapshot3D agent_snapshot_3D = 2; + } + // Unique slice identifier (See dgp.idenfiers.proto) + // Copy from sample ID to ensure one-one match between a agent slice and sample + // in a scene. + DatumId slice_id = 3; + + // Unique slice identifier (See dgp.idenfiers.proto) + // Copy from datum ID if the agent snapshot is associate with certain datum. + DatumId raw_sensor_datum_id = 4; +} + +message AgentsSlice { + // Unique slice identifier (See dgp.idenfiers.proto) + // Copy from sample ID to ensure one-one match between a agent slice and sample + // in a scene. + DatumId slice_id = 1; + + // List of agent snapshots encapsulated in the agents slice + repeated AgentSnapshot agent_snapshots = 2; + +} + +message AgentsSlices { + repeated AgentsSlice agents_slices = 1; + + // Sample-specific metadata + map metadata = 2; +} + +message AgentTrack { + // Class identifier (should be in [0, num_classes - 1]) + uint32 class_id = 1; + // Agent identifier + uint32 instance_id = 2; + // List of agent snapshots encapsulated in the track + repeated AgentSnapshot agent_snapshots = 3; + + // Compiled proto is available to both the writer and reader of the dataset. + google.protobuf.Any metadata = 4; +} + +message AgentTracks { + repeated AgentTrack agent_tracks = 1; + + // Sample-specific metadata + map metadata = 2; +} + +message AgentSnapshot2D { + // Class identifier (should be in [0, num_classes - 1]) + // For datasets supporting semantic segmentation and detection, + // num_classes corresponds to the number of segmentation classes. + // For datasets only supporting detection, this is the number of + // thing classes. + uint32 class_id = 1; + + // 2D box + BoundingBox2D box = 2; + + // Other fields useful for downstream metric computation + uint32 area = 3; + bool iscrowd = 4; + + // Agent identifier + uint32 instance_id = 5; + + // list of feature values. This is used to stored `agent` states. The schema + // is defined in feature ontology (i.e.,parked car, pedestrian intent). + repeated string features = 6; + + // The type of feature ontology defined in FeatureType in features.proto + int32 feature_ontology = 7; +} + +message AgentSnapshot3D { + // Class identifier. Should be in range [0, num_classes - 1]. + uint32 class_id = 1; + + // 3D box, the pose of box is in sensor coordinate. + BoundingBox3D box = 2; + + // Instance identifier for this agent. + // This needs to be unique to a scene. + uint32 instance_id = 3; + + // list of feature values. This is used to stored `agent` states. The schema + // is defined in feature ontology (i.e.,parked car, pedestrian intent). + repeated string features = 4; + + // The type of feature ontology defined in FeatureType in features.proto + int32 feature_ontology = 5; + +} + diff --git a/dgp/proto/dataset.proto b/dgp/proto/dataset.proto index c7e8511b..8312eb3f 100644 --- a/dgp/proto/dataset.proto +++ b/dgp/proto/dataset.proto @@ -1,4 +1,4 @@ -// Copyright 2019-2021 Toyota Research Institute. All rights reserved. +// Copyright 2019-2020 Toyota Research Institute. All rights reserved. // Definitions for metadata related to whole datasets and its instances and // splits. @@ -6,12 +6,10 @@ syntax = "proto3"; package dgp.proto; -import "google/protobuf/any.proto"; - -import "dgp/proto/remote.proto"; -import "dgp/proto/scene.proto"; -import "dgp/proto/statistics.proto"; - +import "dgp/proto/remote.proto" +import "dgp/proto/scene.proto" +import "dgp/proto/statistics.proto" +import "google/protobuf/any.proto" // TODO: remove OntologyV1 once all ontology files upgraded to OntologyV2. // Dataset ontology @@ -39,6 +37,8 @@ enum DatasetSplit { TRAIN = 0; VAL = 1; TEST = 2; + + // TODO (allan.raventos): deprecate this once we have a stable version of the DGP tagged TRAIN_OVERFIT = 3; } @@ -117,10 +117,20 @@ message DatasetMetadata { // │   │   └── ... // │   ├── rgb // │   │   └── ... +// │   ├── agent_tracks +// │   │   └── agent_track_.json +// │   │   └── ... +// │   ├── agents_slices +// │   │   └── agent_slice.json +// │   │   └── ... // | └── ... // │   └── scene_.json +// │   └── agent_.json +// │   └── map_.json // └── ... // └── scene_dataset_v1.0.json +// └── agents_v1.0.json +// └── map_elements_v1.0.json // message SceneDataset { // Dataset-specific metadata @@ -132,3 +142,26 @@ message SceneDataset { // Maps map scene_splits = 2; } + +message Agents { + // Dataset-specific metadata + DatasetMetadata metadata = 1; + + // Dataset scenes + // List of SceneAgents recorded for each dataset split (train/val/test) in this dataset. + // Note: This corresponds to a particular task in the dataset. + // Maps + map agents_splits = 2; +} + +// A collection of files +message AgentFiles { + // Relative file paths for the json files serialized from AgentGroup message. + // + // A AgentGroup message is serialized and stored under the following naming convention: + // /agents_.json + // where is the deterministic deterministic SHA1 hash hexdigest of a agentgroup and served + // as the version of the scene, see dgp.utils.protobuf.generate_uid_from_pbobject + // for details. + repeated string filenames = 1; +} diff --git a/dgp/proto/features.proto b/dgp/proto/features.proto new file mode 100644 index 00000000..75fe8a1a --- /dev/null +++ b/dgp/proto/features.proto @@ -0,0 +1,32 @@ +// Copyright 2021 Toyota Research Institute. All rights reserved. +// Definitions for annotation types for images and point clouds + +syntax = "proto3"; + +import "dgp/proto/geometry.proto"; + +package dgp.proto; + +// Generic Feature Type Enumeration. +// Features will be available under the corresponding enum name. +// +// The features data will be available under features field +enum FeatureType { + // Feature type of default 2D agents + AGENT_2D = 0; + + // Feature type of default 3D agents + AGENT_3D = 1; + + // Feature type of ego intent ontology + EGO_INTENTION = 2; + + // feature type of corridor map element + CORRIDOR = 3; + + // Feature type of intersection + INTERSECTION = 4; + + // Feature type of parked car ontology + PARKED_CAR = 5; +} diff --git a/dgp/scripts/backfill_agents.py b/dgp/scripts/backfill_agents.py new file mode 100644 index 00000000..0e9f055b --- /dev/null +++ b/dgp/scripts/backfill_agents.py @@ -0,0 +1,256 @@ +#!/usr/bin/env python +# Copyright 2021 Toyota Research Institute. All rights reserved. +"""Script that backfill agents into original DGP format.""" +import argparse +import logging +import os +from collections import defaultdict +from pathlib import Path + +from dgp import ( + AGENT_FOLDER, FEATURE_ONTOLOGY_FOLDER, TRI_DGP_AGENT_TRACKS_JSON_NAME, TRI_DGP_AGENTS_JSON_NAME, + TRI_DGP_AGENTS_SLICES_JSON_NAME, TRI_DGP_S3_BUCKET_URL, TRI_RAW_S3_BUCKET_URL +) +from dgp.datasets.prediction_dataset import PredictionAgentDataset +from dgp.proto import dataset_pb2, features_pb2 +from dgp.proto.agent_pb2 import (AgentGroup, AgentsSlice, AgentsSlices, AgentTracks) +from dgp.proto.ontology_pb2 import FeatureOntology, FeatureOntologyItem +from dgp.utils.cloud.s3 import s3_copy +from dgp.utils.dataset_conversion import get_date, get_datetime_proto +from dgp.utils.protobuf import (generate_uid_from_pbobject, open_pbobject, save_pbobject_as_json) + +TRIPCCOntology = FeatureOntology(items=[FeatureOntologyItem(name='ParkedVehicleState', id=0, feature_value_type=0)]) + + +class AgentBackfillDemo: + """ + Class to backfill agents information into ioda scene dataset to create a + demo dataset. + """ + def __init__(self, scene_dataset_json): + self.agent_dataset_name = "agents_pcc_mini" + self.version = "1" + self.description = 'agents of pcc mini dataset' + self.EMAIL = 'chao.fang@tri.global' + self.public = False + self.scene_dataset_json = scene_dataset_json + self.scene_dataset = open_pbobject(scene_dataset_json, dataset_pb2.SceneDataset) + self.agents_dataset_pb2 = dataset_pb2.Agents() + self.local_output_path = Path(scene_dataset_json).parent.as_posix() + self.ontologies = {features_pb2.PARKED_CAR: TRIPCCOntology} + self.populate_metadata() + + def populate_metadata(self): + """Populate boilerplate fields agent metadata""" + self.agents_dataset_pb2.metadata.name = self.agent_dataset_name + self.agents_dataset_pb2.metadata.version = self.version + self.agents_dataset_pb2.metadata.creation_date = get_date() + self.agents_dataset_pb2.metadata.creator = self.EMAIL + + self.agents_dataset_pb2.metadata.bucket_path.value = os.path.join( + TRI_DGP_S3_BUCKET_URL, self.agent_dataset_name + ) + self.agents_dataset_pb2.metadata.raw_path.value = os.path.join(TRI_RAW_S3_BUCKET_URL, self.agent_dataset_name) + + self.agents_dataset_pb2.metadata.description = self.description + self.agents_dataset_pb2.metadata.origin = self.agents_dataset_pb2.metadata.PUBLIC if self.public \ + else self.agents_dataset_pb2.metadata.INTERNAL + + def generate(self): + for (split_type, split) in zip([dataset_pb2.TRAIN, dataset_pb2.TEST, dataset_pb2.VAL], + ['train', 'test', 'val']): + if split_type not in self.scene_dataset.scene_splits: + continue + + logging.info('Processing {}'.format(split)) + original_dataset = PredictionAgentDataset( + self.scene_dataset_json, + split=split, + datum_names=('LIDAR', ), + requested_main_agent_types=( + 'Person', + 'Truck', + 'Car', + 'Bus/RV/Caravan', + 'Motorcycle', + 'Wheeled Slow', + 'Train', + 'Towed Object', + 'Bicycle', + 'Trailer', + ), + batch_per_agent=True + ) + self.backfill(original_dataset, split_type) + agent_json_path = self.write_agents() + + return agent_json_path + + def backfill(self, original_dataset, split_type): + """Backfill agent information. + + Parameters + ---------- + original_dataset: PredictionAgentDataset + DGP PredictionAgentDataset object + + split_type: DatasetSplit + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + """ + # Map from scene idx to list agent + scene_agent_map = defaultdict(list) + for agent_idx, agent_track in enumerate(original_dataset.dataset_agent_index): + scene_idx = agent_track[1] + scene_agent_map[scene_idx].append(agent_idx) + for scene_idx, scene in enumerate(original_dataset.scenes): + output_scene_dirname = scene.directory + agent_pb2 = AgentGroup() + agent_pb2.feature_ontologies[features_pb2.PARKED_CAR] = \ + generate_uid_from_pbobject(self.ontologies[features_pb2.PARKED_CAR]) + for k, v in scene.scene.ontologies.items(): + agent_pb2.agent_ontologies[k] = v + agent_tracks_pb2 = AgentTracks() + agents_slices_pb2 = AgentsSlices() + sample_agent_snapshots_dict = defaultdict(AgentsSlice) + for agent_idx in scene_agent_map[scene_idx]: + main_agent_id, scene_idx, sample_idx_in_scene_start, _, _ = \ + original_dataset.dataset_agent_index[agent_idx] + agent_track_original = original_dataset[agent_idx] + agent_track = agent_tracks_pb2.agent_tracks.add() + agent_track.instance_id = main_agent_id + agent_track.class_id = original_dataset.dataset_metadata.ontology_table[ + original_dataset.annotation_reference].contiguous_id_to_class_id[agent_track_original[0][0][ + 'bounding_box_3d'][agent_track_original[0][0]['main_agent_idx']].class_id] + sample_idx = sample_idx_in_scene_start + for agent_snapshot_original in agent_track_original: + try: + box = agent_snapshot_original[0]['bounding_box_3d'][int( + agent_snapshot_original[0]['main_agent_idx'] + )] + except TypeError: # pylint: disable=bare-except + sample_idx = sample_idx + 1 + continue + if sample_idx not in sample_agent_snapshots_dict: + sample_agent_snapshots_dict[sample_idx].slice_id.CopyFrom(scene.samples[sample_idx].id) + sample_agent_snapshots_dict[sample_idx].slice_id.index = sample_idx + agent_snapshot = agent_track.agent_snapshots.add() + agent_snapshot.agent_snapshot_3D.box.CopyFrom(box.to_proto()) + agent_snapshot.slice_id.CopyFrom(scene.samples[sample_idx].id) + agent_snapshot.slice_id.index = sample_idx + agent_snapshot.agent_snapshot_3D.class_id = agent_track.class_id + + agent_snapshot.agent_snapshot_3D.instance_id = main_agent_id + # The feature fields need to backfill from + agent_snapshot.agent_snapshot_3D.features.extend(["dynamic"]) + + # 5 for parked car features + agent_snapshot.agent_snapshot_3D.feature_type = features_pb2.PARKED_CAR + + # Handle agent slices + sample_agent_snapshots_dict[sample_idx].agent_snapshots.extend([agent_snapshot]) + + sample_idx = sample_idx + 1 + + for sample_idx in range(len(scene.samples)): + if sample_idx in sample_agent_snapshots_dict: + agents_slices_pb2.agents_slices.extend([sample_agent_snapshots_dict[sample_idx]]) + else: + agents_slices_pb2.agents_slices.extend([AgentsSlice()]) + + # Save agent_tracks file + os.makedirs(os.path.join(self.local_output_path, output_scene_dirname, AGENT_FOLDER), exist_ok=True) + agent_tracks_filename = os.path.join( + AGENT_FOLDER, + TRI_DGP_AGENT_TRACKS_JSON_NAME.format(track_hash=generate_uid_from_pbobject(agents_slices_pb2)) + ) + save_pbobject_as_json( + agent_tracks_pb2, os.path.join(self.local_output_path, output_scene_dirname, agent_tracks_filename) + ) + agent_pb2.agent_tracks_file = agent_tracks_filename + + # Save agents_slices file + agents_slices_filename = os.path.join( + AGENT_FOLDER, + TRI_DGP_AGENTS_SLICES_JSON_NAME.format(slice_hash=generate_uid_from_pbobject(agent_tracks_pb2)) + ) + save_pbobject_as_json( + agents_slices_pb2, os.path.join(self.local_output_path, output_scene_dirname, agents_slices_filename) + ) + agent_pb2.agents_slices_file = agents_slices_filename + + # Save AgentGroup + agent_pb2.log = scene.scene.log + agent_pb2.name = scene.scene.name + agent_pb2.creation_date.CopyFrom(get_datetime_proto()) + agents_group_filename = os.path.join( + output_scene_dirname, TRI_DGP_AGENTS_JSON_NAME.format(agent_hash=generate_uid_from_pbobject(agent_pb2)) + ) + self.agents_dataset_pb2.agents_splits[split_type].filenames.append(agents_group_filename) + save_pbobject_as_json(agent_pb2, os.path.join(self.local_output_path, agents_group_filename)) + + # Populate ontologies + os.makedirs( + os.path.join(self.local_output_path, output_scene_dirname, FEATURE_ONTOLOGY_FOLDER), exist_ok=True + ) + for feature_type, ontology_id in agent_pb2.feature_ontologies.items(): + ontology_filename = os.path.join( + self.local_output_path, output_scene_dirname, FEATURE_ONTOLOGY_FOLDER, + "{}.json".format(ontology_id) + ) + save_pbobject_as_json(self.ontologies[feature_type], ontology_filename) + + def write_agents(self, upload=False): + """Write the final scene dataset JSON. + Parameters + ---------- + upload: bool, default: False + If true, upload the dataset to the scene pool in s3. + Returns + ------- + scene_dataset_json_path: str + Path of the scene dataset JSON file created. + """ + agent_dataset_json_path = os.path.join( + self.local_output_path, + '{}_v{}.json'.format(self.agents_dataset_pb2.metadata.name, self.agents_dataset_pb2.metadata.version) + ) + save_pbobject_as_json(self.agents_dataset_pb2, agent_dataset_json_path) + + # Printing SceneDataset scene counts per split (post-merging) + logging.info('-' * 80) + logging.info( + 'Output SceneDataset {} has: {} train, {} val, {} test'.format( + agent_dataset_json_path, len(self.agents_dataset_pb2.agents_splits[dataset_pb2.TRAIN].filenames), + len(self.agents_dataset_pb2.agents_splits[dataset_pb2.VAL].filenames), + len(self.agents_dataset_pb2.agents_splits[dataset_pb2.TEST].filenames) + ) + ) + + s3_path = os.path.join( + self.agents_dataset_pb2.metadata.bucket_path.value, os.path.basename(agent_dataset_json_path) + ) + if upload: + s3_copy(agent_dataset_json_path, s3_path) + + else: + logging.info( + 'Upload the DGP-compliant agent dataset JSON to s3 via `aws s3 cp --acl bucket-owner-full-control {} ' + '{}`'.format(agent_dataset_json_path, s3_path) + ) + + return agent_dataset_json_path + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter, add_help=True + ) + parser.add_argument("-i", "--scene-dataset-json", help="Input dataset json", required=True) + parser.add_argument('--verbose', action='store_true') + args, other_args = parser.parse_known_args() + if args.verbose: + logging.basicConfig(level=logging.INFO) + + dataset = AgentBackfillDemo(args.scene_dataset_json) + dataset.generate() diff --git a/dgp/utils/protobuf.py b/dgp/utils/protobuf.py index 93f8ec0f..cb22eacc 100644 --- a/dgp/utils/protobuf.py +++ b/dgp/utils/protobuf.py @@ -1,4 +1,3 @@ -# Copyright 2021 Toyota Research Institute. All rights reserved. import hashlib import json import logging @@ -8,7 +7,9 @@ from google.protobuf.json_format import MessageToDict, Parse from dgp.proto.dataset_pb2 import Ontology as OntologyV1Pb2 +from dgp.proto.ontology_pb2 import FeatureOntology as FeatureOntologyPb2 from dgp.proto.ontology_pb2 import Ontology as OntologyV2Pb2 +from dgp.proto.scene_pb2 import Scene from dgp.utils.cloud.s3 import (convert_uri_to_bucket_path, get_string_from_s3_file) @@ -21,7 +22,7 @@ def open_pbobject(path, pb_class): Parameters ---------- path: str - Local JSON file path. + Local JSON file path or remote scene dataset JSON URI to load. pb_class: pb2 object class Protobuf object we want to load into. @@ -35,7 +36,7 @@ def open_pbobject(path, pb_class): if path.startswith('s3://'): return open_remote_pb_object(path, pb_class) assert os.path.exists(path), f'Path not found: {path}' - with open(path, 'r') as json_file: + with open(path, 'r', encoding='UTF-8') as json_file: pb_object = Parse(json_file.read(), pb_class()) return pb_object @@ -92,7 +93,7 @@ def save_pbobject_as_json(pb_object, save_path): save_path = os.path.join(save_path, generate_uid_from_pbobject(pb_object) + ".json") assert save_path.endswith(".json"), 'File extension for {} needs to be json.'.format(save_path) - with open(save_path, "w") as _f: + with open(save_path, "w", encoding='UTF-8') as _f: json.dump( MessageToDict(pb_object, including_default_value_fields=True, preserving_proto_field_name=True), _f, @@ -132,6 +133,29 @@ def open_ontology_pbobject(ontology_file): logging.info('Failed to load ontology file with V1 spec also, returning None.') +def open_feature_ontology_pbobject(ontology_file): + """Open feature ontology objects. + + Parameters + ---------- + ontology_file: str + JSON ontology file path to load. + + Returns + ------- + ontology: FeatureOntology object + Desired Feature Ontology pb2 object to be opened. Returns + None if neither fails to load. + """ + try: + ontology = open_pbobject(ontology_file, FeatureOntologyPb2) + if ontology is not None: + logging.info('Successfully loaded FeatureOntology spec.') + return ontology + except Exception: + logging.info('Failed to load ontology file.') + + def generate_uid_from_pbobject(pb_object): """Given a pb object, return the deterministic SHA1 hash hexdigest. Used for creating unique IDs. @@ -155,3 +179,31 @@ def generate_uid_from_pbobject(pb_object): uid = hashlib.sha1(out.getvalue().encode('utf-8')).hexdigest() out.close() return uid + + +def get_latest_scene(s3_scene_jsons): + '''From a list of 'scene.json' and/or 'scene_.json' paths in s3, + return a Scene object for the one with the latest timestamp. + Parameters + ---------- + s3_scene_jsons: List[str] + List of 'scene.json' or 'scene_.json' paths in s3 + Returns + ------- + latest_scene: dgp.proto.scene_pb2.Scene + Scene pb object with the latest creation timestamp. + scene_json_path: str + S3 Path to the latest scene JSON. + Notes + ----- + This function can be called on the output: + out, _ = s3_recursive_list(os.path.join(scene_s3_dir, 'scene') + which is grabbing all 'scene*' files from the Scene directory + ''' + # Fetch all 'scene*.json' files and load Scenes + scenes = [open_remote_pb_object(scene_json, Scene) for scene_json in s3_scene_jsons] + + # Find Scene with latest creation timestamp + creation_ts = [_s.creation_date.ToMicroseconds() for _s in scenes] + index = creation_ts.index(max(creation_ts)) + return scenes[index], s3_scene_jsons[index] diff --git a/dgp/utils/structures/bounding_box_3d.py b/dgp/utils/structures/bounding_box_3d.py index 7d54d80e..49e0793e 100644 --- a/dgp/utils/structures/bounding_box_3d.py +++ b/dgp/utils/structures/bounding_box_3d.py @@ -1,4 +1,3 @@ -# Copyright 2021 Toyota Research Institute. All rights reserved. import hashlib import cv2 @@ -16,7 +15,7 @@ class BoundingBox3D: Parameters ---------- - pose: dgp.utils.pose.Pose, (default: Pose()) + pose: ouroboros.dgp.utils.pose.Pose, (default: Pose()) Pose of the center of the 3D cuboid. sizes: np.float32, (default: np.float32([0,0,0])) @@ -30,7 +29,7 @@ class BoundingBox3D: location and class. color: tuple, default: (0, 0, 0) - RGB tuple for bounding box color + RGB tuple for bounding box color. attributes: dict, default: None Dictionary of attributes associated with bounding box. If None provided, @@ -40,10 +39,16 @@ class BoundingBox3D: Number of LIDAR points associated with this bounding box. occlusion: int, default: 0 - Occlusion state (KITTI3D style) + Occlusion state (KITTI3D style). truncation: float, default: 0 - Fraction of truncation of object (KITTI3D style) + Fraction of truncation of object (KITTI3D style). + + feature_ontology_type: dgp.proto.features.FeatureType + Type of feature of attributions. + + sample_idx: int + index of sample in scene """ def __init__( self, @@ -55,7 +60,9 @@ def __init__( attributes=None, num_points=0, occlusion=0, - truncation=0.0 + truncation=0.0, + feature_ontology_type=None, + sample_idx=None ): assert isinstance(pose, Pose) assert isinstance(sizes, np.ndarray) @@ -74,6 +81,10 @@ def __init__( self._occlusion = occlusion self._truncation = truncation + self._feature_ontology_type = feature_ontology_type + + self._sample_idx = sample_idx + @property def pose(self): return self._pose @@ -112,6 +123,14 @@ def instance_id(self): def attributes(self): return self._attributes + @property + def feature_ontology_type(self): + return self._feature_ontology_type + + @property + def sample_idx(self): + return self._sample_idx + @property def vectorize(self): """Get a np.ndarray of with 10 dimensions representing the 3D bounding box @@ -120,7 +139,7 @@ def vectorize(self): ------- box_3d: np.float32 array Box with coordinates (pose.quat.qw, pose.quat.qx, pose.quat.qy, pose.quat.qz, - pose.tvec.x, pose.tvec.y, pose.tvec.z, width, length, height) + pose.tvec.x, pose.tvec.y, pose.tvec.z, width, length, height). """ return np.float32([ self.pose.quat.elements[0], @@ -186,12 +205,12 @@ def __rmul__(self, other): Parameters ---------- other: Pose - See `utils.pose.py` + See `utils.pose.py`. Returns ---------- result: BoundingBox3D - Bounding box with transformed pose + Bounding box with transformed pose. """ if isinstance(other, Pose): return BoundingBox3D( @@ -230,7 +249,7 @@ def render(self, image, camera, line_thickness=2, class_name=None, font_scale=0. class_name: str, default: None Class name of the bounding box. - TODO: make this a property of `self`? + TODO (allan.raventos): make this a property of `self`? font_scale: float, default: 0.5 Font scale used in text labels. @@ -238,7 +257,7 @@ def render(self, image, camera, line_thickness=2, class_name=None, font_scale=0. Returns ---------- image: np.uint8 array - Rendered image (H, W, 3) + Rendered image (H, W, 3). """ if ( not isinstance(image, np.ndarray) or image.dtype != np.uint8 or len(image.shape) != 3 or image.shape[2] != 3 @@ -252,7 +271,7 @@ def render(self, image, camera, line_thickness=2, class_name=None, font_scale=0. if (self.corners[:, 2] <= 0).any(): return image - # TODO: find a nice way to use class colors from ontology colormap, + # TODO (allan.raventos): find a nice way to use class colors from ontology colormap, # while preserving ability to debug object orientation easily COLORS = [RED, GREEN, BLUE] @@ -294,7 +313,7 @@ def to_proto(self): Returns ------- BoundingBox3D.pb2 - As defined in `proto/annotations.proto` + As defined in `proto/annotations.proto`. """ return annotations_pb2.BoundingBox3D( pose=self._pose.to_proto(), @@ -302,5 +321,6 @@ def to_proto(self): length=self._sizes[1], height=self._sizes[2], occlusion=self._occlusion, - truncation=self._truncation + truncation=self._truncation, + sample_idx=self._sample_idx ) diff --git a/tests/data/dgp/test_scene/agents_pcc_mini_v1.json b/tests/data/dgp/test_scene/agents_pcc_mini_v1.json new file mode 100644 index 00000000..c0ba5d67 --- /dev/null +++ b/tests/data/dgp/test_scene/agents_pcc_mini_v1.json @@ -0,0 +1,32 @@ +{ + "agents_splits": { + "0": { + "filenames": [ + "tests/data/dgp/test_scene/scene_01/agents_5feabc42f5d25b85ae812e086a2811332a904d86.json", + "tests/data/dgp/test_scene/scene_02/agents_b9dbdaca6d6785f1ead25d06aee6042dae500567.json" + ] + }, + "1": { + "filenames": [ + "tests/data/dgp/test_scene/scene_01/agents_f4087ed95eecd2f54d4dca1c7b9fb816fcf89756.json", + "tests/data/dgp/test_scene/scene_02/agents_197a8d328c89cb99f276847709425a8e86967350.json" + ] + } + }, + "metadata": { + "available_annotation_types": [], + "bucket_path": { + "value": "s3://tri-ml-datasets/dgp/agents_pcc_mini" + }, + "creation_date": "2021-10-20", + "creator": "chao.fang@tri.global", + "description": "agents of pcc mini dataset", + "frame_per_second": 0.0, + "name": "agents_pcc_mini", + "origin": "INTERNAL", + "raw_path": { + "value": "s3://tri-ml-datasets/raw/agents_pcc_mini" + }, + "version": "1" + } +} From 7d1ac8463aca148af6f75d7df9989e5ce2b2c3f5 Mon Sep 17 00:00:00 2001 From: visak kumar Date: Wed, 20 Oct 2021 15:54:00 -0700 Subject: [PATCH 2/7] schema: agent proto files --- dgp/proto/agent.proto | 11 ++- dgp/proto/annotations.proto | 7 +- dgp/proto/artifacts.proto | 1 - dgp/proto/dataset.proto | 12 +-- dgp/proto/dataset_pb2.py | 144 +++++++++++++++++++++++++++++++++++- dgp/proto/features.proto | 8 ++ dgp/proto/ontology.proto | 23 +++++- dgp/proto/ontology_pb2.py | 97 +++++++++++++++++++++++- 8 files changed, 284 insertions(+), 19 deletions(-) diff --git a/dgp/proto/agent.proto b/dgp/proto/agent.proto index c2503947..41fe3b8a 100644 --- a/dgp/proto/agent.proto +++ b/dgp/proto/agent.proto @@ -118,7 +118,7 @@ message AgentSnapshot2D { // 2D box BoundingBox2D box = 2; - // Other fields useful for downstream metric computation + // Other fields useful for downstream metric computation. uint32 area = 3; bool iscrowd = 4; @@ -129,8 +129,8 @@ message AgentSnapshot2D { // is defined in feature ontology (i.e.,parked car, pedestrian intent). repeated string features = 6; - // The type of feature ontology defined in FeatureType in features.proto - int32 feature_ontology = 7; + // The type of feature ontology defined in FeatureType in features.proto. + int32 feature_type = 7; } message AgentSnapshot3D { @@ -148,8 +148,7 @@ message AgentSnapshot3D { // is defined in feature ontology (i.e.,parked car, pedestrian intent). repeated string features = 4; - // The type of feature ontology defined in FeatureType in features.proto - int32 feature_ontology = 5; - + // The type of feature ontology defined in FeatureType in features.proto. + int32 feature_type = 5; } diff --git a/dgp/proto/annotations.proto b/dgp/proto/annotations.proto index 6d5ec227..a8687a9d 100644 --- a/dgp/proto/annotations.proto +++ b/dgp/proto/annotations.proto @@ -1,4 +1,4 @@ -// Copyright 2019-2021 Toyota Research Institute. All rights reserved. +// Copyright 2019 Toyota Research Institute. All rights reserved. // Definitions for annotation types for images and point clouds syntax = "proto3"; @@ -101,7 +101,7 @@ message BoundingBox2DAnnotation { // An associative map stores arbitrary attributes, where the key is attribute name // and the value is attribute value. Both key_type and value_type are string. - // This can be used to stored `agent_behavior` states (i.e., parked car, pedestrian intent). + // This is used to stored `agent_behavior` states (i.e., parked car, pedestrian intent). map attributes = 6; } @@ -128,6 +128,9 @@ message BoundingBox3D { // From 0 (non-truncated) to 1 (truncated), where // truncated refers to the object leaving image boundaries double truncation = 6; + + // Frame index in the scene + int32 sample_idx = 7; } // 3D bounding box annotation. diff --git a/dgp/proto/artifacts.proto b/dgp/proto/artifacts.proto index 419bb24b..cc3aab62 100644 --- a/dgp/proto/artifacts.proto +++ b/dgp/proto/artifacts.proto @@ -1,4 +1,3 @@ -// Copyright 2019 Toyota Research Institute. All rights reserved. // Definitions for metadata related to whole datasets and its instances and // splits. diff --git a/dgp/proto/dataset.proto b/dgp/proto/dataset.proto index 8312eb3f..ebf56895 100644 --- a/dgp/proto/dataset.proto +++ b/dgp/proto/dataset.proto @@ -6,10 +6,12 @@ syntax = "proto3"; package dgp.proto; -import "dgp/proto/remote.proto" -import "dgp/proto/scene.proto" -import "dgp/proto/statistics.proto" -import "google/protobuf/any.proto" +import "google/protobuf/any.proto"; + +import "dgp/proto/remote.proto"; +import "dgp/proto/scene.proto"; +import "dgp/proto/statistics.proto"; + // TODO: remove OntologyV1 once all ontology files upgraded to OntologyV2. // Dataset ontology @@ -164,4 +166,4 @@ message AgentFiles { // as the version of the scene, see dgp.utils.protobuf.generate_uid_from_pbobject // for details. repeated string filenames = 1; -} +} \ No newline at end of file diff --git a/dgp/proto/dataset_pb2.py b/dgp/proto/dataset_pb2.py index 914de74e..0030db3b 100644 --- a/dgp/proto/dataset_pb2.py +++ b/dgp/proto/dataset_pb2.py @@ -24,7 +24,7 @@ syntax='proto3', serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x17\x64gp/proto/dataset.proto\x12\tdgp.proto\x1a\x19google/protobuf/any.proto\x1a\x16\x64gp/proto/remote.proto\x1a\x15\x64gp/proto/scene.proto\x1a\x1a\x64gp/proto/statistics.proto\"\xec\x05\n\x08Ontology\x12\x35\n\nname_to_id\x18\x01 \x03(\x0b\x32!.dgp.proto.Ontology.NameToIdEntry\x12\x35\n\nid_to_name\x18\x02 \x03(\x0b\x32!.dgp.proto.Ontology.IdToNameEntry\x12\x33\n\x08\x63olormap\x18\x03 \x03(\x0b\x32!.dgp.proto.Ontology.ColormapEntry\x12\x31\n\x07isthing\x18\x04 \x03(\x0b\x32 .dgp.proto.Ontology.IsthingEntry\x12=\n\rsupercategory\x18\x05 \x03(\x0b\x32&.dgp.proto.Ontology.SupercategoryEntry\x12\x42\n\x10segmentation_ids\x18\x06 \x03(\x0b\x32(.dgp.proto.Ontology.SegmentationIdsEntry\x12\x11\n\tignore_id\x18\x07 \x01(\x03\x1a/\n\rNameToIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a/\n\rIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a(\n\x05\x43olor\x12\t\n\x01r\x18\x01 \x01(\x05\x12\t\n\x01g\x18\x02 \x01(\x05\x12\t\n\x01\x62\x18\x03 \x01(\x05\x1aJ\n\rColormapEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.dgp.proto.Ontology.Color:\x02\x38\x01\x1a.\n\x0cIsthingEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x34\n\x12SupercategoryEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x36\n\x14SegmentationIdsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\"\xbf\x03\n\x0f\x44\x61tasetMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x15\n\rcreation_date\x18\x03 \x01(\t\x12\x0f\n\x07\x63reator\x18\x04 \x01(\t\x12*\n\x0b\x62ucket_path\x18\x05 \x01(\x0b\x32\x15.dgp.proto.RemotePath\x12\'\n\x08raw_path\x18\x06 \x01(\x0b\x32\x15.dgp.proto.RemotePath\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t\x12\x38\n\x06origin\x18\x08 \x01(\x0e\x32(.dgp.proto.DatasetMetadata.DatasetOrigin\x12\"\n\x1a\x61vailable_annotation_types\x18\t \x03(\x05\x12\x30\n\nstatistics\x18\n \x01(\x0b\x32\x1c.dgp.proto.DatasetStatistics\x12\x18\n\x10\x66rame_per_second\x18\x0b \x01(\x02\x12&\n\x08metadata\x18\x0c \x01(\x0b\x32\x14.google.protobuf.Any\")\n\rDatasetOrigin\x12\n\n\x06PUBLIC\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\"\xc7\x01\n\x0cSceneDataset\x12,\n\x08metadata\x18\x01 \x01(\x0b\x32\x1a.dgp.proto.DatasetMetadata\x12>\n\x0cscene_splits\x18\x02 \x03(\x0b\x32(.dgp.proto.SceneDataset.SceneSplitsEntry\x1aI\n\x10SceneSplitsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.dgp.proto.SceneFiles:\x02\x38\x01*?\n\x0c\x44\x61tasetSplit\x12\t\n\x05TRAIN\x10\x00\x12\x07\n\x03VAL\x10\x01\x12\x08\n\x04TEST\x10\x02\x12\x11\n\rTRAIN_OVERFIT\x10\x03\x62\x06proto3' + serialized_pb=b'\n\x17\x64gp/proto/dataset.proto\x12\tdgp.proto\x1a\x19google/protobuf/any.proto\x1a\x16\x64gp/proto/remote.proto\x1a\x15\x64gp/proto/scene.proto\x1a\x1a\x64gp/proto/statistics.proto\"\xec\x05\n\x08Ontology\x12\x35\n\nname_to_id\x18\x01 \x03(\x0b\x32!.dgp.proto.Ontology.NameToIdEntry\x12\x35\n\nid_to_name\x18\x02 \x03(\x0b\x32!.dgp.proto.Ontology.IdToNameEntry\x12\x33\n\x08\x63olormap\x18\x03 \x03(\x0b\x32!.dgp.proto.Ontology.ColormapEntry\x12\x31\n\x07isthing\x18\x04 \x03(\x0b\x32 .dgp.proto.Ontology.IsthingEntry\x12=\n\rsupercategory\x18\x05 \x03(\x0b\x32&.dgp.proto.Ontology.SupercategoryEntry\x12\x42\n\x10segmentation_ids\x18\x06 \x03(\x0b\x32(.dgp.proto.Ontology.SegmentationIdsEntry\x12\x11\n\tignore_id\x18\x07 \x01(\x03\x1a/\n\rNameToIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a/\n\rIdToNameEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a(\n\x05\x43olor\x12\t\n\x01r\x18\x01 \x01(\x05\x12\t\n\x01g\x18\x02 \x01(\x05\x12\t\n\x01\x62\x18\x03 \x01(\x05\x1aJ\n\rColormapEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.dgp.proto.Ontology.Color:\x02\x38\x01\x1a.\n\x0cIsthingEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x34\n\x12SupercategoryEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x36\n\x14SegmentationIdsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\"\xbf\x03\n\x0f\x44\x61tasetMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x15\n\rcreation_date\x18\x03 \x01(\t\x12\x0f\n\x07\x63reator\x18\x04 \x01(\t\x12*\n\x0b\x62ucket_path\x18\x05 \x01(\x0b\x32\x15.dgp.proto.RemotePath\x12\'\n\x08raw_path\x18\x06 \x01(\x0b\x32\x15.dgp.proto.RemotePath\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t\x12\x38\n\x06origin\x18\x08 \x01(\x0e\x32(.dgp.proto.DatasetMetadata.DatasetOrigin\x12\"\n\x1a\x61vailable_annotation_types\x18\t \x03(\x05\x12\x30\n\nstatistics\x18\n \x01(\x0b\x32\x1c.dgp.proto.DatasetStatistics\x12\x18\n\x10\x66rame_per_second\x18\x0b \x01(\x02\x12&\n\x08metadata\x18\x0c \x01(\x0b\x32\x14.google.protobuf.Any\")\n\rDatasetOrigin\x12\n\n\x06PUBLIC\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\"\xc7\x01\n\x0cSceneDataset\x12,\n\x08metadata\x18\x01 \x01(\x0b\x32\x1a.dgp.proto.DatasetMetadata\x12>\n\x0cscene_splits\x18\x02 \x03(\x0b\x32(.dgp.proto.SceneDataset.SceneSplitsEntry\x1aI\n\x10SceneSplitsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.dgp.proto.SceneFiles:\x02\x38\x01\"\xbe\x01\n\x06\x41gents\x12,\n\x08metadata\x18\x01 \x01(\x0b\x32\x1a.dgp.proto.DatasetMetadata\x12:\n\ragents_splits\x18\x02 \x03(\x0b\x32#.dgp.proto.Agents.AgentsSplitsEntry\x1aJ\n\x11\x41gentsSplitsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.dgp.proto.AgentFiles:\x02\x38\x01\"\x1f\n\nAgentFiles\x12\x11\n\tfilenames\x18\x01 \x03(\t*?\n\x0c\x44\x61tasetSplit\x12\t\n\x05TRAIN\x10\x00\x12\x07\n\x03VAL\x10\x01\x12\x08\n\x04TEST\x10\x02\x12\x11\n\rTRAIN_OVERFIT\x10\x03\x62\x06proto3' , dependencies=[google_dot_protobuf_dot_any__pb2.DESCRIPTOR,dgp_dot_proto_dot_remote__pb2.DESCRIPTOR,dgp_dot_proto_dot_scene__pb2.DESCRIPTOR,dgp_dot_proto_dot_statistics__pb2.DESCRIPTOR,]) @@ -58,8 +58,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=1543, - serialized_end=1606, + serialized_start=1769, + serialized_end=1832, ) _sym_db.RegisterEnumDescriptor(_DATASETSPLIT) @@ -629,6 +629,115 @@ serialized_end=1541, ) + +_AGENTS_AGENTSSPLITSENTRY = _descriptor.Descriptor( + name='AgentsSplitsEntry', + full_name='dgp.proto.Agents.AgentsSplitsEntry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='key', full_name='dgp.proto.Agents.AgentsSplitsEntry.key', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value', full_name='dgp.proto.Agents.AgentsSplitsEntry.value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=b'8\001', + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1660, + serialized_end=1734, +) + +_AGENTS = _descriptor.Descriptor( + name='Agents', + full_name='dgp.proto.Agents', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='metadata', full_name='dgp.proto.Agents.metadata', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='agents_splits', full_name='dgp.proto.Agents.agents_splits', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_AGENTS_AGENTSSPLITSENTRY, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1544, + serialized_end=1734, +) + + +_AGENTFILES = _descriptor.Descriptor( + name='AgentFiles', + full_name='dgp.proto.AgentFiles', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='filenames', full_name='dgp.proto.AgentFiles.filenames', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1736, + serialized_end=1767, +) + _ONTOLOGY_NAMETOIDENTRY.containing_type = _ONTOLOGY _ONTOLOGY_IDTONAMEENTRY.containing_type = _ONTOLOGY _ONTOLOGY_COLOR.containing_type = _ONTOLOGY @@ -653,9 +762,15 @@ _SCENEDATASET_SCENESPLITSENTRY.containing_type = _SCENEDATASET _SCENEDATASET.fields_by_name['metadata'].message_type = _DATASETMETADATA _SCENEDATASET.fields_by_name['scene_splits'].message_type = _SCENEDATASET_SCENESPLITSENTRY +_AGENTS_AGENTSSPLITSENTRY.fields_by_name['value'].message_type = _AGENTFILES +_AGENTS_AGENTSSPLITSENTRY.containing_type = _AGENTS +_AGENTS.fields_by_name['metadata'].message_type = _DATASETMETADATA +_AGENTS.fields_by_name['agents_splits'].message_type = _AGENTS_AGENTSSPLITSENTRY DESCRIPTOR.message_types_by_name['Ontology'] = _ONTOLOGY DESCRIPTOR.message_types_by_name['DatasetMetadata'] = _DATASETMETADATA DESCRIPTOR.message_types_by_name['SceneDataset'] = _SCENEDATASET +DESCRIPTOR.message_types_by_name['Agents'] = _AGENTS +DESCRIPTOR.message_types_by_name['AgentFiles'] = _AGENTFILES DESCRIPTOR.enum_types_by_name['DatasetSplit'] = _DATASETSPLIT _sym_db.RegisterFileDescriptor(DESCRIPTOR) @@ -744,6 +859,28 @@ _sym_db.RegisterMessage(SceneDataset) _sym_db.RegisterMessage(SceneDataset.SceneSplitsEntry) +Agents = _reflection.GeneratedProtocolMessageType('Agents', (_message.Message,), { + + 'AgentsSplitsEntry' : _reflection.GeneratedProtocolMessageType('AgentsSplitsEntry', (_message.Message,), { + 'DESCRIPTOR' : _AGENTS_AGENTSSPLITSENTRY, + '__module__' : 'dgp.proto.dataset_pb2' + # @@protoc_insertion_point(class_scope:dgp.proto.Agents.AgentsSplitsEntry) + }) + , + 'DESCRIPTOR' : _AGENTS, + '__module__' : 'dgp.proto.dataset_pb2' + # @@protoc_insertion_point(class_scope:dgp.proto.Agents) + }) +_sym_db.RegisterMessage(Agents) +_sym_db.RegisterMessage(Agents.AgentsSplitsEntry) + +AgentFiles = _reflection.GeneratedProtocolMessageType('AgentFiles', (_message.Message,), { + 'DESCRIPTOR' : _AGENTFILES, + '__module__' : 'dgp.proto.dataset_pb2' + # @@protoc_insertion_point(class_scope:dgp.proto.AgentFiles) + }) +_sym_db.RegisterMessage(AgentFiles) + _ONTOLOGY_NAMETOIDENTRY._options = None _ONTOLOGY_IDTONAMEENTRY._options = None @@ -752,4 +889,5 @@ _ONTOLOGY_SUPERCATEGORYENTRY._options = None _ONTOLOGY_SEGMENTATIONIDSENTRY._options = None _SCENEDATASET_SCENESPLITSENTRY._options = None +_AGENTS_AGENTSSPLITSENTRY._options = None # @@protoc_insertion_point(module_scope) diff --git a/dgp/proto/features.proto b/dgp/proto/features.proto index 75fe8a1a..d1fb7745 100644 --- a/dgp/proto/features.proto +++ b/dgp/proto/features.proto @@ -30,3 +30,11 @@ enum FeatureType { // Feature type of parked car ontology PARKED_CAR = 5; } + +// The feature value type specified in ouroboros.dgp.ontology.FeatureOntologyItem. +enum FeatureValueType { + // Feature value type of numeric values + NUMERIC = 0; + // Feature value type of file + FILE = 1; +} \ No newline at end of file diff --git a/dgp/proto/ontology.proto b/dgp/proto/ontology.proto index c66bed35..c38c098c 100644 --- a/dgp/proto/ontology.proto +++ b/dgp/proto/ontology.proto @@ -1,7 +1,7 @@ // Definitions for OntologyItem and Ontology. // OntologyItem and Ontology are defined in an Object Oriented way for the ease of downstream // consumption. Ontology is simply a collection of multiple OntologyItems that contain all -// all property fields that represent a category/concept. +// property fields that represent a category/concept. syntax = "proto3"; @@ -43,3 +43,24 @@ message Ontology { // List of OntologyItems. repeated OntologyItem items = 1; } + +// An Feature Ontology represents a set of unique feature fields that expresses their properties. +// An FeatureOntologyItem defines a single, unique element within in an FeatureOntology. +message FeatureOntologyItem { + // OntologyItem name. For e.g., 'Speed', 'Link_to_rasterized_image', 'parking_attribute', etc. + string name = 1; + + // FeatureOntologyItem id. + // Note: Downstream consumption code ought to assert if every FeatureOntologyItem.id is + // unique in an Ontology. + uint32 id = 2; + + // Specify the feature value type in dgp.proto.features. + int32 feature_value_type = 3; +} + +// Feature ontology for dgp.proto.agent. +message FeatureOntology { + // List of FeatureOntologyItems. + repeated FeatureOntologyItem items = 1; +} diff --git a/dgp/proto/ontology_pb2.py b/dgp/proto/ontology_pb2.py index 204e26bc..c50ca2b1 100644 --- a/dgp/proto/ontology_pb2.py +++ b/dgp/proto/ontology_pb2.py @@ -19,7 +19,7 @@ syntax='proto3', serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x18\x64gp/proto/ontology.proto\x12\x0c\x64gp.proto.v2\"\xab\x01\n\x0cOntologyItem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\r\x12/\n\x05\x63olor\x18\x03 \x01(\x0b\x32 .dgp.proto.v2.OntologyItem.Color\x12\x0f\n\x07isthing\x18\x04 \x01(\x08\x12\x15\n\rsupercategory\x18\x05 \x01(\t\x1a(\n\x05\x43olor\x12\t\n\x01r\x18\x01 \x01(\r\x12\t\n\x01g\x18\x02 \x01(\r\x12\t\n\x01\x62\x18\x03 \x01(\r\"5\n\x08Ontology\x12)\n\x05items\x18\x01 \x03(\x0b\x32\x1a.dgp.proto.v2.OntologyItemb\x06proto3' + serialized_pb=b'\n\x18\x64gp/proto/ontology.proto\x12\x0c\x64gp.proto.v2\"\xab\x01\n\x0cOntologyItem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\r\x12/\n\x05\x63olor\x18\x03 \x01(\x0b\x32 .dgp.proto.v2.OntologyItem.Color\x12\x0f\n\x07isthing\x18\x04 \x01(\x08\x12\x15\n\rsupercategory\x18\x05 \x01(\t\x1a(\n\x05\x43olor\x12\t\n\x01r\x18\x01 \x01(\r\x12\t\n\x01g\x18\x02 \x01(\r\x12\t\n\x01\x62\x18\x03 \x01(\r\"5\n\x08Ontology\x12)\n\x05items\x18\x01 \x03(\x0b\x32\x1a.dgp.proto.v2.OntologyItem\"K\n\x13\x46\x65\x61tureOntologyItem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\r\x12\x1a\n\x12\x66\x65\x61ture_value_type\x18\x03 \x01(\x05\"C\n\x0f\x46\x65\x61tureOntology\x12\x30\n\x05items\x18\x01 \x03(\x0b\x32!.dgp.proto.v2.FeatureOntologyItemb\x06proto3' ) @@ -161,11 +161,92 @@ serialized_end=269, ) + +_FEATUREONTOLOGYITEM = _descriptor.Descriptor( + name='FeatureOntologyItem', + full_name='dgp.proto.v2.FeatureOntologyItem', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='dgp.proto.v2.FeatureOntologyItem.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='id', full_name='dgp.proto.v2.FeatureOntologyItem.id', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='feature_value_type', full_name='dgp.proto.v2.FeatureOntologyItem.feature_value_type', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=271, + serialized_end=346, +) + + +_FEATUREONTOLOGY = _descriptor.Descriptor( + name='FeatureOntology', + full_name='dgp.proto.v2.FeatureOntology', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='items', full_name='dgp.proto.v2.FeatureOntology.items', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=348, + serialized_end=415, +) + _ONTOLOGYITEM_COLOR.containing_type = _ONTOLOGYITEM _ONTOLOGYITEM.fields_by_name['color'].message_type = _ONTOLOGYITEM_COLOR _ONTOLOGY.fields_by_name['items'].message_type = _ONTOLOGYITEM +_FEATUREONTOLOGY.fields_by_name['items'].message_type = _FEATUREONTOLOGYITEM DESCRIPTOR.message_types_by_name['OntologyItem'] = _ONTOLOGYITEM DESCRIPTOR.message_types_by_name['Ontology'] = _ONTOLOGY +DESCRIPTOR.message_types_by_name['FeatureOntologyItem'] = _FEATUREONTOLOGYITEM +DESCRIPTOR.message_types_by_name['FeatureOntology'] = _FEATUREONTOLOGY _sym_db.RegisterFileDescriptor(DESCRIPTOR) OntologyItem = _reflection.GeneratedProtocolMessageType('OntologyItem', (_message.Message,), { @@ -190,5 +271,19 @@ }) _sym_db.RegisterMessage(Ontology) +FeatureOntologyItem = _reflection.GeneratedProtocolMessageType('FeatureOntologyItem', (_message.Message,), { + 'DESCRIPTOR' : _FEATUREONTOLOGYITEM, + '__module__' : 'dgp.proto.ontology_pb2' + # @@protoc_insertion_point(class_scope:dgp.proto.v2.FeatureOntologyItem) + }) +_sym_db.RegisterMessage(FeatureOntologyItem) + +FeatureOntology = _reflection.GeneratedProtocolMessageType('FeatureOntology', (_message.Message,), { + 'DESCRIPTOR' : _FEATUREONTOLOGY, + '__module__' : 'dgp.proto.ontology_pb2' + # @@protoc_insertion_point(class_scope:dgp.proto.v2.FeatureOntology) + }) +_sym_db.RegisterMessage(FeatureOntology) + # @@protoc_insertion_point(module_scope) From 66e19ed972b8b7ae201ac1ecb82dd0fb9975c398 Mon Sep 17 00:00:00 2001 From: visak kumar Date: Fri, 22 Oct 2021 12:19:54 -0700 Subject: [PATCH 3/7] feat: agent related JSON files --- .../dgp/test_scene/agents_pcc_mini_v1.json | 8 +- ...c7118fa4133df27796123854c72619679ec5c.json | 11169 ++++++++++++++++ ...20c991bac35c33d03c0780892c0ce5ad2cb4c.json | 10617 +++++++++++++++ ...abc42f5d25b85ae812e086a2811332a904d86.json | 16 + ...87ed95eecd2f54d4dca1c7b9fb816fcf89756.json | 16 + ...09fd03b2d9f74b7871c86d7c40cbaac85cc66.json | 9 + ...45f5b13e2fbe37b8875bbcb4cc1b4c578e15d.json | 1526 +++ ...f15764ab750a8f2d1b0cafd080714886d2a16.json | 1478 ++ ...a8d328c89cb99f276847709425a8e86967350.json | 16 + ...bdaca6d6785f1ead25d06aee6042dae500567.json | 16 + ...09fd03b2d9f74b7871c86d7c40cbaac85cc66.json | 9 + 11 files changed, 24876 insertions(+), 4 deletions(-) create mode 100644 tests/data/dgp/test_scene/scene_01/agent/agent_tracks_74cc7118fa4133df27796123854c72619679ec5c.json create mode 100644 tests/data/dgp/test_scene/scene_01/agent/agents_slices_bdc20c991bac35c33d03c0780892c0ce5ad2cb4c.json create mode 100644 tests/data/dgp/test_scene/scene_01/agents_5feabc42f5d25b85ae812e086a2811332a904d86.json create mode 100644 tests/data/dgp/test_scene/scene_01/agents_f4087ed95eecd2f54d4dca1c7b9fb816fcf89756.json create mode 100644 tests/data/dgp/test_scene/scene_01/feature_ontology/5db09fd03b2d9f74b7871c86d7c40cbaac85cc66.json create mode 100644 tests/data/dgp/test_scene/scene_02/agent/agent_tracks_ad845f5b13e2fbe37b8875bbcb4cc1b4c578e15d.json create mode 100644 tests/data/dgp/test_scene/scene_02/agent/agents_slices_f01f15764ab750a8f2d1b0cafd080714886d2a16.json create mode 100644 tests/data/dgp/test_scene/scene_02/agents_197a8d328c89cb99f276847709425a8e86967350.json create mode 100644 tests/data/dgp/test_scene/scene_02/agents_b9dbdaca6d6785f1ead25d06aee6042dae500567.json create mode 100644 tests/data/dgp/test_scene/scene_02/feature_ontology/5db09fd03b2d9f74b7871c86d7c40cbaac85cc66.json diff --git a/tests/data/dgp/test_scene/agents_pcc_mini_v1.json b/tests/data/dgp/test_scene/agents_pcc_mini_v1.json index c0ba5d67..b5a15fda 100644 --- a/tests/data/dgp/test_scene/agents_pcc_mini_v1.json +++ b/tests/data/dgp/test_scene/agents_pcc_mini_v1.json @@ -2,14 +2,14 @@ "agents_splits": { "0": { "filenames": [ - "tests/data/dgp/test_scene/scene_01/agents_5feabc42f5d25b85ae812e086a2811332a904d86.json", - "tests/data/dgp/test_scene/scene_02/agents_b9dbdaca6d6785f1ead25d06aee6042dae500567.json" + "scene_01/agents_5feabc42f5d25b85ae812e086a2811332a904d86.json", + "scene_02/agents_b9dbdaca6d6785f1ead25d06aee6042dae500567.json" ] }, "1": { "filenames": [ - "tests/data/dgp/test_scene/scene_01/agents_f4087ed95eecd2f54d4dca1c7b9fb816fcf89756.json", - "tests/data/dgp/test_scene/scene_02/agents_197a8d328c89cb99f276847709425a8e86967350.json" + "scene_01/agents_f4087ed95eecd2f54d4dca1c7b9fb816fcf89756.json", + "scene_02/agents_197a8d328c89cb99f276847709425a8e86967350.json" ] } }, diff --git a/tests/data/dgp/test_scene/scene_01/agent/agent_tracks_74cc7118fa4133df27796123854c72619679ec5c.json b/tests/data/dgp/test_scene/scene_01/agent/agent_tracks_74cc7118fa4133df27796123854c72619679ec5c.json new file mode 100644 index 00000000..cca899ca --- /dev/null +++ b/tests/data/dgp/test_scene/scene_01/agent/agent_tracks_74cc7118fa4133df27796123854c72619679ec5c.json @@ -0,0 +1,11169 @@ +{ + "agent_tracks": [ + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7730000019073486, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": -1.8706600666046143, + "y": -6.635149002075195, + "z": 0.608169436454773 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0199999809265137 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 987620307 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7730000019073486, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": -1.8706663846969604, + "y": -6.635148048400879, + "z": 0.6081750392913818 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0199999809265137 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 987620307 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7730000019073486, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": -1.8706696033477783, + "y": -6.6351470947265625, + "z": 0.6081783771514893 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0199999809265137 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 987620307 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 987620307 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.069999933242798, + "length": 5.48199987411499, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": 8.407821655273438, + "y": -3.2484750747680664, + "z": 0.8601715564727783 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3934200682 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.069999933242798, + "length": 5.48199987411499, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": 8.407818794250488, + "y": -3.2484829425811768, + "z": 0.8601639270782471 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3934200682 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.069999933242798, + "length": 5.48199987411499, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": 8.407816886901855, + "y": -3.2484869956970215, + "z": 0.8601659536361694 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3934200682 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3934200682 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.3969999551773071, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": -6.213614463806152, + "y": 0.10450641810894012, + "z": 0.6087425351142883 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.055000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3303441164 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3969999551773071, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": -6.213614463806152, + "y": 0.10451158881187439, + "z": 0.6087489724159241 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.055000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3303441164 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3969999551773071, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": -6.2136149406433105, + "y": 0.10451427847146988, + "z": 0.6087489128112793 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.055000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3303441164 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3303441164 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7339999675750732, + "length": 4.552999973297119, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": -8.617191314697266, + "y": -3.334801197052002, + "z": 0.7072942852973938 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.181999921798706 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 926775473 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7339999675750732, + "length": 4.552999973297119, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": -8.617195129394531, + "y": -3.33479380607605, + "z": 0.7073053121566772 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.181999921798706 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 926775473 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7339999675750732, + "length": 4.552999973297119, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": -8.617196083068848, + "y": -3.334789991378784, + "z": 0.7073069214820862 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.181999921798706 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 926775473 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 926775473 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6269999742507935, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7021673917770386, + "qx": 0.004464269150048494, + "qy": -0.00763721764087677, + "qz": 0.7119569182395935 + }, + "translation": { + "x": -30.928632736206055, + "y": 42.4351806640625, + "z": 0.6675047874450684 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3429999351501465 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4263263740 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6269999742507935, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7021677494049072, + "qx": 0.00446444982662797, + "qy": -0.007636628113687038, + "qz": 0.7119566202163696 + }, + "translation": { + "x": -30.9285945892334, + "y": 42.43520736694336, + "z": 0.6675134897232056 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3429999351501465 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4263263740 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6269999742507935, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7021678686141968, + "qx": 0.004464267287403345, + "qy": -0.007636466063559055, + "qz": 0.7119564414024353 + }, + "translation": { + "x": -30.92857551574707, + "y": 42.43522262573242, + "z": 0.667492151260376 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3429999351501465 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4263263740 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 4263263740 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8029999732971191, + "length": 4.767000198364258, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.53645706176758, + "y": -32.45402145385742, + "z": 0.6377805471420288 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2218577133 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8029999732971191, + "length": 4.767000198364258, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.5364875793457, + "y": -32.453983306884766, + "z": 0.637848973274231 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2218577133 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8029999732971191, + "length": 4.767000198364258, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.536502838134766, + "y": -32.45396041870117, + "z": 0.6378636360168457 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2218577133 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2218577133 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6490000486373901, + "length": 4.868000030517578, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.84242248535156, + "y": -35.475154876708984, + "z": 0.4716234505176544 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3095114869 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6490000486373901, + "length": 4.868000030517578, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.84245300292969, + "y": -35.47511291503906, + "z": 0.4716939628124237 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3095114869 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6490000486373901, + "length": 4.868000030517578, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.842472076416016, + "y": -35.47509002685547, + "z": 0.47171008586883545 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3095114869 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3095114869 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8250000476837158, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.54422378540039, + "y": -38.72170639038086, + "z": 0.6612967252731323 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2039999961853027 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2355452925 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8250000476837158, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.54425811767578, + "y": -38.72166442871094, + "z": 0.6613687872886658 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2039999961853027 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2355452925 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8250000476837158, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.544273376464844, + "y": -38.72164535522461, + "z": 0.6613864898681641 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2039999961853027 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2355452925 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2355452925 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7079999446868896, + "length": 4.754000186920166, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.27395248413086, + "y": -41.99919128417969, + "z": 0.5672731995582581 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1001235426 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7079999446868896, + "length": 4.754000186920166, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.273990631103516, + "y": -41.99915313720703, + "z": 0.5673468708992004 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1001235426 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7079999446868896, + "length": 4.754000186920166, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.274009704589844, + "y": -41.99913024902344, + "z": 0.5673661828041077 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1001235426 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1001235426 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7269999980926514, + "length": 4.715000152587891, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -45.926414489746094, + "y": -47.71685791015625, + "z": 0.41537508368492126 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 36237167 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7269999980926514, + "length": 4.715000152587891, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -45.92646026611328, + "y": -47.71681594848633, + "z": 0.41545283794403076 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 36237167 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7269999980926514, + "length": 4.715000152587891, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -45.92647933959961, + "y": -47.716796875, + "z": 0.41547492146492004 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 36237167 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 36237167 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6510000228881836, + "length": 4.7179999351501465, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.71343231201172, + "y": -44.79200744628906, + "z": 0.3894452750682831 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2073239145 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6510000228881836, + "length": 4.7179999351501465, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.713470458984375, + "y": -44.791969299316406, + "z": 0.389521062374115 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2073239145 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6510000228881836, + "length": 4.7179999351501465, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.71349334716797, + "y": -44.79194641113281, + "z": 0.38954174518585205 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2073239145 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2073239145 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5729999542236328, + "length": 4.573999881744385, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -45.8116340637207, + "y": -50.69437789916992, + "z": 0.47783946990966797 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4024251048 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5729999542236328, + "length": 4.573999881744385, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -45.81167984008789, + "y": -50.694339752197266, + "z": 0.4779188334941864 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4024251048 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5729999542236328, + "length": 4.573999881744385, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -45.811702728271484, + "y": -50.69431686401367, + "z": 0.4779423773288727 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4024251048 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 4024251048 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8420000076293945, + "length": 4.633999824523926, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -45.57073211669922, + "y": -56.9431266784668, + "z": 0.7708086967468262 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1788680519 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8420000076293945, + "length": 4.633999824523926, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -45.57078552246094, + "y": -56.94308853149414, + "z": 0.7708914279937744 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1788680519 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8420000076293945, + "length": 4.633999824523926, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -45.5708122253418, + "y": -56.94306564331055, + "z": 0.7709180116653442 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1788680519 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1788680519 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8220000267028809, + "length": 4.692999839782715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -45.761104583740234, + "y": -53.69636535644531, + "z": 0.3995816707611084 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1953886780 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8220000267028809, + "length": 4.692999839782715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -45.76115036010742, + "y": -53.696327209472656, + "z": 0.39966273307800293 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1953886780 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8220000267028809, + "length": 4.692999839782715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -45.76117706298828, + "y": -53.69630432128906, + "z": 0.3996877074241638 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1953886780 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1953886780 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8609999418258667, + "length": 4.611999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -46.476646423339844, + "y": -59.569053649902344, + "z": 0.6008055806159973 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1095694435 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8609999418258667, + "length": 4.611999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -46.47669982910156, + "y": -59.56901168823242, + "z": 0.6008908748626709 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1095694435 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8609999418258667, + "length": 4.611999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -46.47672653198242, + "y": -59.568992614746094, + "z": 0.6009186506271362 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1095694435 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1095694435 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.843999981880188, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6896350979804993, + "qx": 0.004330301657319069, + "qy": -0.007713967002928257, + "qz": 0.7241030335426331 + }, + "translation": { + "x": -36.0592155456543, + "y": 43.350833892822266, + "z": 0.7698059678077698 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.203000068664551 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1020506225 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.843999981880188, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6896353960037231, + "qx": 0.004330492578446865, + "qy": -0.007713380269706249, + "qz": 0.7241027355194092 + }, + "translation": { + "x": -36.05917739868164, + "y": 43.35086441040039, + "z": 0.7698197364807129 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.203000068664551 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1020506225 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.843999981880188, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6896355748176575, + "qx": 0.004330312833189964, + "qy": -0.007713215425610542, + "qz": 0.7241025567054749 + }, + "translation": { + "x": -36.05915832519531, + "y": 43.35087966918945, + "z": 0.7697978615760803 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.203000068664551 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1020506225 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1020506225 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.180999994277954, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7195594310760498, + "qx": 0.0071954987943172455, + "qy": -0.01016011368483305, + "qz": 0.6943193078041077 + }, + "translation": { + "x": -38.671409606933594, + "y": 43.01796340942383, + "z": 1.0367296934127808 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2359942993 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.180999994277954, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7195597290992737, + "qx": 0.007195663638412952, + "qy": -0.010159521363675594, + "qz": 0.694318950176239 + }, + "translation": { + "x": -38.67137145996094, + "y": 43.018001556396484, + "z": 1.036746621131897 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2359942993 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.180999994277954, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.719559907913208, + "qx": 0.007195476442575455, + "qy": -0.010159363970160484, + "qz": 0.6943187713623047 + }, + "translation": { + "x": -38.671348571777344, + "y": 43.01801681518555, + "z": 1.0367248058319092 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2359942993 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2359942993 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.197999954223633, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752795577049255, + "qx": 0.004698280710726976, + "qy": 0.0023739247117191553, + "qz": -0.7375431060791016 + }, + "translation": { + "x": -41.23878479003906, + "y": 43.222679138183594, + "z": 1.104034423828125 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1451267456 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.197999954223633, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752792000770569, + "qx": 0.004697681404650211, + "qy": 0.0023740765172988176, + "qz": -0.7375434041023254 + }, + "translation": { + "x": -41.23874282836914, + "y": 43.22271728515625, + "z": 1.1040539741516113 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1451267456 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.197999954223633, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752790808677673, + "qx": 0.004697528202086687, + "qy": 0.0023738862946629524, + "qz": -0.7375435829162598 + }, + "translation": { + "x": -41.23872375488281, + "y": 43.22273635864258, + "z": 1.1040319204330444 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1451267456 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1451267456 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.3589999675750732, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.737488865852356, + "qx": 0.007320994045585394, + "qy": -0.010101432912051678, + "qz": 0.6752440333366394 + }, + "translation": { + "x": -53.401790618896484, + "y": 43.202880859375, + "z": 1.2695870399475098 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4210554413 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3589999675750732, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7374891638755798, + "qx": 0.00732114352285862, + "qy": -0.01010083593428135, + "qz": 0.6752437353134155 + }, + "translation": { + "x": -53.40175247192383, + "y": 43.20293045043945, + "z": 1.2696199417114258 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4210554413 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3589999675750732, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7374893426895142, + "qx": 0.007320952136069536, + "qy": -0.010100684128701687, + "qz": 0.6752435564994812 + }, + "translation": { + "x": -53.4017333984375, + "y": 43.20295333862305, + "z": 1.2695975303649902 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4210554413 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 4210554413 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.183000087738037, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6943533420562744, + "qx": 0.004888311959803104, + "qy": 0.0021086866036057472, + "qz": -0.7196145057678223 + }, + "translation": { + "x": -37.98640441894531, + "y": 29.4995174407959, + "z": 0.5058778524398804 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 101581897 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.183000087738037, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6943530440330505, + "qx": 0.004887716844677925, + "qy": 0.0021088537760078907, + "qz": -0.7196148633956909 + }, + "translation": { + "x": -37.98637771606445, + "y": 29.49955177307129, + "z": 0.5059018731117249 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 101581897 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.183000087738037, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6943528652191162, + "qx": 0.004887558985501528, + "qy": 0.0021086677443236113, + "qz": -0.7196149826049805 + }, + "translation": { + "x": -37.986366271972656, + "y": 29.499568939208984, + "z": 0.5058866143226624 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 101581897 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 101581897 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.4259999990463257, + "length": 4.275000095367432, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.000303005101159215, + "qx": -0.009521124884486198, + "qy": 0.008577383123338223, + "qz": -0.9999178647994995 + }, + "translation": { + "x": -48.413028717041016, + "y": 21.5078182220459, + "z": 0.5013184547424316 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.8220000267028809 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 10955774 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + } + ], + "class_id": 2, + "instance_id": 10955774 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.621000051498413, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.19311314821243286, + "qx": 0.021621493622660637, + "qy": 0.004674523137509823, + "qz": -0.9809271097183228 + }, + "translation": { + "x": -8.339457511901855, + "y": 44.33381271362305, + "z": 1.2348241806030273 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.871000051498413 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 328286980 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.621000051498413, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.19311358034610748, + "qx": 0.021621014922857285, + "qy": 0.004674121737480164, + "qz": -0.980927050113678 + }, + "translation": { + "x": -8.339417457580566, + "y": 44.33382034301758, + "z": 1.234807014465332 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.871000051498413 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 328286980 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.621000051498413, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.1931138038635254, + "qx": 0.02162107639014721, + "qy": 0.0046738809905946255, + "qz": -0.9809269905090332 + }, + "translation": { + "x": -8.339396476745605, + "y": 44.333824157714844, + "z": 1.2347854375839233 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.871000051498413 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 328286980 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 328286980 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.21013247966766357, + "qx": 0.009056132286787033, + "qy": 0.006965686101466417, + "qz": -0.9776061773300171 + }, + "translation": { + "x": -8.04305648803711, + "y": 47.305301666259766, + "z": 1.260066270828247 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1672550325 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2101329118013382, + "qx": 0.009055662900209427, + "qy": 0.006965281441807747, + "qz": -0.9776060581207275 + }, + "translation": { + "x": -8.043013572692871, + "y": 47.3053092956543, + "z": 1.2600470781326294 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1672550325 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2101331353187561, + "qx": 0.0090557299554348, + "qy": 0.0069650448858737946, + "qz": -0.9776059985160828 + }, + "translation": { + "x": -8.04299259185791, + "y": 47.30531311035156, + "z": 1.260024070739746 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1672550325 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1672550325 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5149999856948853, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02705433964729309, + "qx": 0.04360898584127426, + "qy": 0.004349982365965843, + "qz": -0.9986728429794312 + }, + "translation": { + "x": 13.932554244995117, + "y": 21.622121810913086, + "z": 0.48463064432144165 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1070001125335693 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162860985 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5149999856948853, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02705477736890316, + "qx": 0.04360844939947128, + "qy": 0.004349656403064728, + "qz": -0.9986728429794312 + }, + "translation": { + "x": 13.932573318481445, + "y": 21.622108459472656, + "z": 0.4846024513244629 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1070001125335693 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162860985 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5149999856948853, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02705499716103077, + "qx": 0.043608471751213074, + "qy": 0.004349404014647007, + "qz": -0.9986728429794312 + }, + "translation": { + "x": 13.932583808898926, + "y": 21.622100830078125, + "z": 0.4845925569534302 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1070001125335693 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162860985 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3162860985 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.158999919891357, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.21013247966766357, + "qx": 0.009056132286787033, + "qy": 0.006965686101466417, + "qz": -0.9776061773300171 + }, + "translation": { + "x": -7.237268924713135, + "y": 49.917991638183594, + "z": 1.2033696174621582 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2464875149 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.158999919891357, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2101329118013382, + "qx": 0.009055662900209427, + "qy": 0.006965281441807747, + "qz": -0.9776060581207275 + }, + "translation": { + "x": -7.237224102020264, + "y": 49.91799545288086, + "z": 1.2033480405807495 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2464875149 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.158999919891357, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2101331353187561, + "qx": 0.0090557299554348, + "qy": 0.0069650448858737946, + "qz": -0.9776059985160828 + }, + "translation": { + "x": -7.23720121383667, + "y": 49.917999267578125, + "z": 1.2033238410949707 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2464875149 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2464875149 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.418000221252441, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.007937053218483925, + "qx": 0.03422616049647331, + "qy": 0.005653207190334797, + "qz": -0.9993665814399719 + }, + "translation": { + "x": 29.376705169677734, + "y": 21.348379135131836, + "z": 0.4954066574573517 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0490000247955322 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2675183418 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.418000221252441, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.007936611771583557, + "qx": 0.03422561660408974, + "qy": 0.005652904510498047, + "qz": -0.9993666410446167 + }, + "translation": { + "x": 29.376724243164062, + "y": 21.348352432250977, + "z": 0.4953617453575134 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0490000247955322 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2675183418 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.418000221252441, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.00793638825416565, + "qx": 0.03422562777996063, + "qy": 0.005652653519064188, + "qz": -0.9993666410446167 + }, + "translation": { + "x": 29.376733779907227, + "y": 21.348337173461914, + "z": 0.49535244703292847 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0490000247955322 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2675183418 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2675183418 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.472000002861023, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01785454899072647, + "qx": 0.001396479201503098, + "qy": 0.0054566515609622, + "qz": -0.9998247027397156 + }, + "translation": { + "x": 48.72993087768555, + "y": 20.29928970336914, + "z": 0.836018443107605 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9119999408721924 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1245564312 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.472000002861023, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.017854999750852585, + "qx": 0.0013959403149783611, + "qy": 0.0054563493467867374, + "qz": -0.9998247027397156 + }, + "translation": { + "x": 48.729949951171875, + "y": 20.299245834350586, + "z": 0.8359529972076416 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9119999408721924 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1245564312 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.472000002861023, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01785523071885109, + "qx": 0.0013959603384137154, + "qy": 0.005456106271594763, + "qz": -0.9998247027397156 + }, + "translation": { + "x": 48.72996139526367, + "y": 20.299222946166992, + "z": 0.8359447121620178 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9119999408721924 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1245564312 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1245564312 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.4570000171661377, + "length": 4.229000091552734, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9943520426750183, + "qx": 0.0088399862870574, + "qy": 0.022358033806085587, + "qz": 0.10337304323911667 + }, + "translation": { + "x": 28.868818283081055, + "y": 33.00381088256836, + "z": 0.8680678606033325 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9470000267028809 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2978048694 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4570000171661377, + "length": 4.229000091552734, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9943521022796631, + "qx": 0.008839761838316917, + "qy": 0.02235860377550125, + "qz": 0.10337258130311966 + }, + "translation": { + "x": 28.86884880065918, + "y": 33.0037841796875, + "z": 0.8680166602134705 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9470000267028809 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2978048694 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4570000171661377, + "length": 4.229000091552734, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9943521022796631, + "qx": 0.00883952435106039, + "qy": 0.022358613088726997, + "qz": 0.10337235033512115 + }, + "translation": { + "x": 28.868864059448242, + "y": 33.0037727355957, + "z": 0.8680016994476318 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9470000267028809 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2978048694 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2978048694 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.531000018119812, + "length": 4.27400016784668, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855899810791016, + "qx": 0.005071449093520641, + "qy": -0.021295547485351562, + "qz": 0.16772957146167755 + }, + "translation": { + "x": 28.936485290527344, + "y": 38.450157165527344, + "z": 0.8587344884872437 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.8930000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1558880067 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.531000018119812, + "length": 4.27400016784668, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855900406837463, + "qx": 0.005071243736892939, + "qy": -0.021294962614774704, + "qz": 0.16772912442684174 + }, + "translation": { + "x": 28.936519622802734, + "y": 38.450130462646484, + "z": 0.8586800694465637 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.8930000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1558880067 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.531000018119812, + "length": 4.27400016784668, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855901002883911, + "qx": 0.005070996470749378, + "qy": -0.021294936537742615, + "qz": 0.16772890090942383 + }, + "translation": { + "x": 28.93653678894043, + "y": 38.45011520385742, + "z": 0.8586624264717102 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.8930000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1558880067 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1558880067 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.3960000276565552, + "length": 4.416999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855899810791016, + "qx": 0.005071449093520641, + "qy": -0.021295547485351562, + "qz": 0.16772957146167755 + }, + "translation": { + "x": 29.115835189819336, + "y": 41.580074310302734, + "z": 0.8301730751991272 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9450000524520874 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 702855053 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3960000276565552, + "length": 4.416999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855900406837463, + "qx": 0.005071243736892939, + "qy": -0.021294962614774704, + "qz": 0.16772912442684174 + }, + "translation": { + "x": 29.11587142944336, + "y": 41.580047607421875, + "z": 0.8301166296005249 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9450000524520874 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 702855053 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3960000276565552, + "length": 4.416999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855901002883911, + "qx": 0.005070996470749378, + "qy": -0.021294936537742615, + "qz": 0.16772890090942383 + }, + "translation": { + "x": 29.115890502929688, + "y": 41.58003616333008, + "z": 0.830097496509552 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9450000524520874 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 702855053 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 702855053 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.209000110626221, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855899810791016, + "qx": 0.005071449093520641, + "qy": -0.021295547485351562, + "qz": 0.16772957146167755 + }, + "translation": { + "x": 28.958158493041992, + "y": 44.246421813964844, + "z": 0.9312121272087097 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.937999963760376 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1036907190 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.209000110626221, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855900406837463, + "qx": 0.005071243736892939, + "qy": -0.021294962614774704, + "qz": 0.16772912442684174 + }, + "translation": { + "x": 28.95819854736328, + "y": 44.246395111083984, + "z": 0.9311543107032776 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.937999963760376 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1036907190 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.209000110626221, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855901002883911, + "qx": 0.005070996470749378, + "qy": -0.021294936537742615, + "qz": 0.16772890090942383 + }, + "translation": { + "x": 28.958219528198242, + "y": 44.24638366699219, + "z": 0.9311338663101196 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.937999963760376 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1036907190 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1036907190 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7450000047683716, + "length": 4.4070000648498535, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.018043437972664833, + "qx": 0.017621563747525215, + "qy": 0.005166321061551571, + "qz": -0.999668538570404 + }, + "translation": { + "x": 55.94990539550781, + "y": 20.002843856811523, + "z": 1.0755139589309692 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.061000108718872 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2990471596 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7450000047683716, + "length": 4.4070000648498535, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01804388500750065, + "qx": 0.017621025443077087, + "qy": 0.005166011396795511, + "qz": -0.999668538570404 + }, + "translation": { + "x": 55.94992446899414, + "y": 20.00279426574707, + "z": 1.075440764427185 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.061000108718872 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2990471596 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7450000047683716, + "length": 4.4070000648498535, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.018044112250208855, + "qx": 0.01762104593217373, + "qy": 0.005165764596313238, + "qz": -0.999668538570404 + }, + "translation": { + "x": 55.94993209838867, + "y": 20.00276756286621, + "z": 1.0754328966140747 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.061000108718872 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2990471596 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2990471596 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.4670000076293945, + "length": 4.8379998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9916064739227295, + "qx": 0.00048278638860210776, + "qy": -0.0012338928645476699, + "qz": 0.129285991191864 + }, + "translation": { + "x": 29.4586124420166, + "y": 27.529224395751953, + "z": 0.6597550511360168 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.878000020980835 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 848568023 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4670000076293945, + "length": 4.8379998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9916065335273743, + "qx": 0.0004825670039281249, + "qy": -0.0012333132326602936, + "qz": 0.1292855441570282 + }, + "translation": { + "x": 29.458635330200195, + "y": 27.529197692871094, + "z": 0.6597064137458801 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.878000020980835 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 848568023 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4670000076293945, + "length": 4.8379998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9916065335273743, + "qx": 0.0004823238414246589, + "qy": -0.0012332963524386287, + "qz": 0.1292853206396103 + }, + "translation": { + "x": 29.458648681640625, + "y": 27.52918243408203, + "z": 0.6596941351890564 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.878000020980835 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 848568023 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 848568023 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01795100048184395, + "qx": 0.009631011635065079, + "qy": 0.005309483967721462, + "qz": -0.9997783899307251 + }, + "translation": { + "x": 67.24614715576172, + "y": 19.70297622680664, + "z": 1.013710618019104 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2467117866 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.017951449379324913, + "qx": 0.009630472399294376, + "qy": 0.005309178028255701, + "qz": -0.9997783899307251 + }, + "translation": { + "x": 67.24616241455078, + "y": 19.70291519165039, + "z": 1.0136252641677856 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2467117866 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01795167848467827, + "qx": 0.009630492888391018, + "qy": 0.005308933090418577, + "qz": -0.9997783899307251 + }, + "translation": { + "x": 67.24617004394531, + "y": 19.702884674072266, + "z": 1.0136178731918335 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2467117866 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2467117866 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998999238014221, + "qx": 0.012190382927656174, + "qy": 0.005281380843371153, + "qz": -0.004866037052124739 + }, + "translation": { + "x": 20.961828231811523, + "y": -3.8864314556121826, + "z": 0.8150691986083984 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9079999923706055 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2959176039 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998999238014221, + "qx": 0.012190090492367744, + "qy": 0.0052819205448031425, + "qz": -0.004866494331508875 + }, + "translation": { + "x": 20.961824417114258, + "y": -3.8864505290985107, + "z": 0.8150482177734375 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9079999923706055 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2959176039 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998999238014221, + "qx": 0.012189848348498344, + "qy": 0.00528190191835165, + "qz": -0.004866727162152529 + }, + "translation": { + "x": 20.961822509765625, + "y": -3.886460304260254, + "z": 0.8150508999824524 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9079999923706055 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2959176039 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2959176039 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5490000247955322, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016381369205191731, + "qy": 0.005468863062560558, + "qz": -0.013534367084503174 + }, + "translation": { + "x": 26.56963348388672, + "y": -7.529963970184326, + "z": 0.4740484058856964 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0339999198913574 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3310447420 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5490000247955322, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016378400614485145, + "qy": 0.0054694050922989845, + "qz": -0.013534817844629288 + }, + "translation": { + "x": 26.569625854492188, + "y": -7.529988765716553, + "z": 0.4740234315395355 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0339999198913574 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3310447420 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5490000247955322, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016375984996557236, + "qy": 0.0054693869315087795, + "qz": -0.013535051606595516 + }, + "translation": { + "x": 26.569622039794922, + "y": -7.530001163482666, + "z": 0.4740280508995056 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0339999198913574 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3310447420 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3310447420 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.909000039100647, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": 10.409364700317383, + "y": -0.006526528391987085, + "z": 1.0275216102600098 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3145108322 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.909000039100647, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": 10.409364700317383, + "y": -0.006536040920764208, + "z": 1.0275099277496338 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3145108322 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.909000039100647, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": 10.409364700317383, + "y": -0.0065408628433942795, + "z": 1.027510404586792 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3145108322 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3145108322 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.406999945640564, + "length": 4.335000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6997441053390503, + "qx": 0.0015428307233378291, + "qy": -0.02369304932653904, + "qz": 0.7139989137649536 + }, + "translation": { + "x": -2.6056439876556396, + "y": -25.989395141601562, + "z": 1.0022097826004028 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.127000093460083 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 119018899 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406999945640564, + "length": 4.335000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6997348666191101, + "qx": 0.0027635267470031977, + "qy": -0.025412455201148987, + "qz": 0.713945209980011 + }, + "translation": { + "x": -2.6191487312316895, + "y": -25.460407257080078, + "z": 0.9942360520362854 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.127000093460083 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 119018899 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406999945640564, + "length": 4.335000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6997233629226685, + "qx": 0.003984305541962385, + "qy": -0.027132773771882057, + "qz": 0.7138873338699341 + }, + "translation": { + "x": -2.6326420307159424, + "y": -24.93141746520996, + "z": 0.9862568378448486 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.127000093460083 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 119018899 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 119018899 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.847000002861023, + "length": 4.826000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564595133066177, + "qy": -0.0022146105766296387, + "qz": 0.003534578485414386 + }, + "translation": { + "x": -18.575298309326172, + "y": -3.2158422470092773, + "z": 1.0728892087936401 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3559999465942383 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3491272702 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.847000002861023, + "length": 4.826000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564304560422897, + "qy": -0.002214066917076707, + "qz": 0.003534125629812479 + }, + "translation": { + "x": -18.573078155517578, + "y": -3.2155685424804688, + "z": 1.0729252099990845 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3559999465942383 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3491272702 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.847000002861023, + "length": 4.826000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564060553908348, + "qy": -0.0022140825167298317, + "qz": 0.003533894196152687 + }, + "translation": { + "x": -18.5703125, + "y": -3.216139554977417, + "z": 1.072928547859192 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3559999465942383 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3491272702 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3491272702 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.819000005722046, + "length": 3.7939999103546143, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564595133066177, + "qy": -0.0022146105766296387, + "qz": 0.003534578485414386 + }, + "translation": { + "x": -25.770668029785156, + "y": -3.5501418113708496, + "z": 0.945705235004425 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1570000648498535 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 747976608 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.819000005722046, + "length": 3.7939999103546143, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564304560422897, + "qy": -0.002214066917076707, + "qz": 0.003534125629812479 + }, + "translation": { + "x": -25.77066993713379, + "y": -3.550118923187256, + "z": 0.9457351565361023 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1570000648498535 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 747976608 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.819000005722046, + "length": 3.7939999103546143, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564060553908348, + "qy": -0.0022140825167298317, + "qz": 0.003533894196152687 + }, + "translation": { + "x": -25.770671844482422, + "y": -3.550107002258301, + "z": 0.9457363486289978 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1570000648498535 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 747976608 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 747976608 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.5960001945495605, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564595133066177, + "qy": -0.0022146105766296387, + "qz": 0.003534578485414386 + }, + "translation": { + "x": -14.831372261047363, + "y": 0.11060604453086853, + "z": 0.9652564525604248 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2841633901 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.5960001945495605, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564304560422897, + "qy": -0.002214066917076707, + "qz": 0.003534125629812479 + }, + "translation": { + "x": -14.831372261047363, + "y": 0.11061916500329971, + "z": 0.9652722477912903 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2841633901 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.5960001945495605, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564060553908348, + "qy": -0.0022140825167298317, + "qz": 0.003533894196152687 + }, + "translation": { + "x": -14.831372261047363, + "y": 0.11062602698802948, + "z": 0.9652720093727112 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2841633901 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2841633901 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.625999927520752, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999473690986633, + "qx": 0.008583595044910908, + "qy": -0.002139786956831813, + "qz": -0.005191695410758257 + }, + "translation": { + "x": -30.47496223449707, + "y": 0.049759719520807266, + "z": 1.0288846492767334 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1079715147 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.625999927520752, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.999948263168335, + "qx": 0.008582940325140953, + "qy": -0.0021406859159469604, + "qz": -0.005024383310228586 + }, + "translation": { + "x": -30.06063461303711, + "y": 0.04464789107441902, + "z": 1.0306392908096313 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1079715147 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.625999927520752, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999490976333618, + "qx": 0.008582337759435177, + "qy": -0.002142143901437521, + "qz": -0.004856788087636232 + }, + "translation": { + "x": -29.646854400634766, + "y": 0.040359560400247574, + "z": 1.032372236251831 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1079715147 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1079715147 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.99399995803833, + "length": 5.488999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998708963394165, + "qx": 0.005245571490377188, + "qy": 0.006288690958172083, + "qz": -0.013823890127241611 + }, + "translation": { + "x": 30.632139205932617, + "y": -4.090729236602783, + "z": 1.029844880104065 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.315999984741211 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 992655451 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.99399995803833, + "length": 5.488999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998708963394165, + "qx": 0.005245274864137173, + "qy": 0.00628923112526536, + "qz": -0.01382434368133545 + }, + "translation": { + "x": 30.632137298583984, + "y": -4.090756893157959, + "z": 1.0298134088516235 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.315999984741211 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 992655451 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.99399995803833, + "length": 5.488999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998708963394165, + "qx": 0.005245033651590347, + "qy": 0.00628921203315258, + "qz": -0.013824577443301678 + }, + "translation": { + "x": 30.63213539123535, + "y": -4.090771198272705, + "z": 1.0298165082931519 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.315999984741211 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 992655451 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 992655451 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.414999961853027, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998721480369568, + "qx": 0.005244653206318617, + "qy": 0.0062876371666789055, + "qz": -0.013735786080360413 + }, + "translation": { + "x": 39.323272705078125, + "y": -4.546152114868164, + "z": 0.8569769859313965 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0220000743865967 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 268570078 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.414999961853027, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998721480369568, + "qx": 0.005244356580078602, + "qy": 0.0062881773337721825, + "qz": -0.01373623963445425 + }, + "translation": { + "x": 39.32326889038086, + "y": -4.546187877655029, + "z": 0.8569362759590149 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0220000743865967 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 268570078 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.414999961853027, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998721480369568, + "qx": 0.005244115367531776, + "qy": 0.006288158241659403, + "qz": -0.013736473396420479 + }, + "translation": { + "x": 39.323265075683594, + "y": -4.546205997467041, + "z": 0.8569398522377014 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0220000743865967 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 268570078 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 268570078 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5429999828338623, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 45.78541564941406, + "y": -4.808921813964844, + "z": 0.856701672077179 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4231537816 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5429999828338623, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 45.78540802001953, + "y": -4.808963298797607, + "z": 0.8566541075706482 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4231537816 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5429999828338623, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 45.78540802001953, + "y": -4.808984279632568, + "z": 0.8566579818725586 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4231537816 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 4231537816 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.9859999418258667, + "length": 4.866000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 52.299320220947266, + "y": -5.028102874755859, + "z": 0.8433977961540222 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162731714 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.9859999418258667, + "length": 4.866000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 52.299312591552734, + "y": -5.0281500816345215, + "z": 0.843343198299408 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162731714 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.9859999418258667, + "length": 4.866000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 52.299312591552734, + "y": -5.02817440032959, + "z": 0.8433473706245422 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162731714 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3162731714 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 61.37385177612305, + "y": -5.477186679840088, + "z": 0.7953330278396606 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2222379123 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 61.37439727783203, + "y": -5.478079319000244, + "z": 0.7952568531036377 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2222379123 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 61.37522888183594, + "y": -5.477560520172119, + "z": 0.795274555683136 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2222379123 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2222379123 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 71.81658935546875, + "y": -5.717584609985352, + "z": 1.3349149227142334 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3177185776 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 71.89700317382812, + "y": -5.720041275024414, + "z": 1.3351496458053589 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3177185776 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 71.97686004638672, + "y": -5.721630096435547, + "z": 1.3354768753051758 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3177185776 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3177185776 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.406000018119812, + "length": 4.6479997634887695, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.0054945205338299274, + "qx": 0.014207448810338974, + "qy": 0.014993629418313503, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -38.01308822631836, + "y": 11.19865608215332, + "z": 0.8150584697723389 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.066999912261963 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4001353500 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406000018119812, + "length": 4.6479997634887695, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -39.56132888793945, + "y": 11.194963455200195, + "z": 0.8082664012908936 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.066999912261963 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4001353500 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406000018119812, + "length": 4.6479997634887695, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005493839271366596, + "qx": 0.014206923544406891, + "qy": 0.014993088319897652, + "qz": -0.9997715950012207 + }, + "translation": { + "x": -41.10957336425781, + "y": 11.191255569458008, + "z": 0.8014332056045532 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.066999912261963 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4001353500 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 4001353500 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.0054945205338299274, + "qx": 0.014207448810338974, + "qy": 0.014993629418313503, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -45.599422454833984, + "y": 15.117976188659668, + "z": 0.7831058502197266 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1626581097 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -47.18912124633789, + "y": 15.099135398864746, + "z": 0.7758787870407104 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1626581097 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005493839271366596, + "qx": 0.014206923544406891, + "qy": 0.014993088319897652, + "qz": -0.9997715950012207 + }, + "translation": { + "x": -48.78021240234375, + "y": 15.080567359924316, + "z": 0.7686014771461487 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1626581097 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1626581097 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.5969998836517334, + "length": 5.738999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01195757370442152, + "qx": 0.014168201014399529, + "qy": 0.014821297489106655, + "qz": -0.9997182488441467 + }, + "translation": { + "x": -67.58230590820312, + "y": 14.986930847167969, + "z": 1.2559014558792114 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.4489998817443848 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3617468232 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.5969998836517334, + "length": 5.738999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010213453322649002, + "qx": 0.014171781949698925, + "qy": 0.014838425442576408, + "qz": -0.9997373223304749 + }, + "translation": { + "x": -69.01954650878906, + "y": 14.98891544342041, + "z": 1.2497212886810303 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.4489998817443848 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3617468232 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.5969998836517334, + "length": 5.738999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.008468437008559704, + "qx": 0.01417587697505951, + "qy": 0.014855572953820229, + "qz": -0.9997532963752747 + }, + "translation": { + "x": -70.45789337158203, + "y": 14.992546081542969, + "z": 1.2434909343719482 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.4489998817443848 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3617468232 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3617468232 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.0054945205338299274, + "qx": 0.014207448810338974, + "qy": 0.014993629418313503, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -74.35547637939453, + "y": 11.18224811553955, + "z": 0.8320189714431763 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3164887200 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -75.84442138671875, + "y": 11.171950340270996, + "z": 0.825411856174469 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3164887200 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005493839271366596, + "qx": 0.014206923544406891, + "qy": 0.014993088319897652, + "qz": -0.9997715950012207 + }, + "translation": { + "x": -77.3342056274414, + "y": 11.1610746383667, + "z": 0.8187097907066345 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3164887200 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3164887200 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.0054945205338299274, + "qx": 0.014207448810338974, + "qy": 0.014993629418313503, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -125.45911407470703, + "y": 11.49560260772705, + "z": 0.8211444616317749 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2994241561 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -126.9056625366211, + "y": 11.480806350708008, + "z": 0.8147002458572388 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2994241561 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005493839271366596, + "qx": 0.014206923544406891, + "qy": 0.014993088319897652, + "qz": -0.9997715950012207 + }, + "translation": { + "x": -128.35250854492188, + "y": 11.464573860168457, + "z": 0.8080918788909912 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2994241561 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2994241561 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 3.187999963760376, + "length": 8.08899974822998, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -2.420726013951935e-05, + "qx": 0.01419550459831953, + "qy": 0.014939626678824425, + "qz": -0.9997876286506653 + }, + "translation": { + "x": -161.8920440673828, + "y": 15.6991605758667, + "z": 1.3141313791275024 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2249005525 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.187999963760376, + "length": 8.08899974822998, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.0002141483419109136, + "qx": 0.014194547198712826, + "qy": 0.014937466010451317, + "qz": -0.9997876286506653 + }, + "translation": { + "x": -162.917236328125, + "y": 15.695611000061035, + "z": 1.3227592706680298 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2249005525 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.187999963760376, + "length": 8.08899974822998, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.00040393450763076544, + "qx": 0.014194146730005741, + "qy": 0.014935355633497238, + "qz": -0.9997876286506653 + }, + "translation": { + "x": -163.94187927246094, + "y": 15.691154479980469, + "z": 1.3311957120895386 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2249005525 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2249005525 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8179999589920044, + "length": 4.640999794006348, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01257608737796545, + "qx": 0.026405639946460724, + "qy": 0.008295203559100628, + "qz": -0.9995377659797668 + }, + "translation": { + "x": -20.92115592956543, + "y": 11.183512687683105, + "z": 0.9294824600219727 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2362024192 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8179999589920044, + "length": 4.640999794006348, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.011704386211931705, + "qx": 0.026412852108478546, + "qy": 0.008314303122460842, + "qz": -0.9995480179786682 + }, + "translation": { + "x": -22.46918487548828, + "y": 11.208455085754395, + "z": 0.9341655969619751 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2362024192 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8179999589920044, + "length": 4.640999794006348, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010832135565578938, + "qx": 0.026420606300234795, + "qy": 0.008333465084433556, + "qz": -0.9995574951171875 + }, + "translation": { + "x": -24.01721954345703, + "y": 11.233389854431152, + "z": 0.9388267397880554 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2362024192 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2362024192 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6649999618530273, + "length": 4.39300012588501, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.5558233261108398, + "qx": 0.01593649759888649, + "qy": -0.008074785582721233, + "qz": -0.8311084508895874 + }, + "translation": { + "x": -22.367019653320312, + "y": 25.19280242919922, + "z": 0.9473452568054199 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9880000352859497 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3250882079 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6649999618530273, + "length": 4.39300012588501, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.5558229684829712, + "qx": 0.015935877338051796, + "qy": -0.008074731566011906, + "qz": -0.8311087489128113 + }, + "translation": { + "x": -22.36699676513672, + "y": 25.192821502685547, + "z": 0.9473546743392944 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9880000352859497 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3250882079 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6649999618530273, + "length": 4.39300012588501, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.5558227300643921, + "qx": 0.015935750678181648, + "qy": -0.008074944838881493, + "qz": -0.8311088681221008 + }, + "translation": { + "x": -22.366985321044922, + "y": 25.19283103942871, + "z": 0.9473419785499573 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9880000352859497 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3250882079 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3250882079 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7239999771118164, + "length": 5.624000072479248, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010838230140507221, + "qx": 0.01865166611969471, + "qy": 0.00523355370387435, + "qz": -0.9997535943984985 + }, + "translation": { + "x": 3.9418351650238037, + "y": 14.412873268127441, + "z": 0.8714511394500732 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2249999046325684 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2463053674 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7239999771118164, + "length": 5.624000072479248, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010838676244020462, + "qx": 0.018651124089956284, + "qy": 0.005233247764408588, + "qz": -0.9997535943984985 + }, + "translation": { + "x": 2.662454605102539, + "y": 14.433924674987793, + "z": 0.8962152600288391 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2249999046325684 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2463053674 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7239999771118164, + "length": 5.624000072479248, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010838903486728668, + "qx": 0.018651142716407776, + "qy": 0.005233000498265028, + "qz": -0.9997535943984985 + }, + "translation": { + "x": 1.3822306394577026, + "y": 14.454431533813477, + "z": 0.9209727048873901 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2249999046325684 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2463053674 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2463053674 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5169999599456787, + "length": 4.585000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01257608737796545, + "qx": 0.026405639946460724, + "qy": 0.008295203559100628, + "qz": -0.9995377659797668 + }, + "translation": { + "x": 7.13390588760376, + "y": 18.833009719848633, + "z": 0.6551408767700195 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2443944299 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5169999599456787, + "length": 4.585000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.011704386211931705, + "qx": 0.026412852108478546, + "qy": 0.008314303122460842, + "qz": -0.9995480179786682 + }, + "translation": { + "x": 5.711543560028076, + "y": 18.833599090576172, + "z": 0.6699221730232239 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2443944299 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5169999599456787, + "length": 4.585000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010832135565578938, + "qx": 0.026420606300234795, + "qy": 0.008333465084433556, + "qz": -0.9995574951171875 + }, + "translation": { + "x": 4.287503242492676, + "y": 18.83311653137207, + "z": 0.6836879253387451 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2443944299 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2443944299 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.120999813079834, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02123277075588703, + "qx": 0.018242156133055687, + "qy": 0.008272736333310604, + "qz": -0.9995738863945007 + }, + "translation": { + "x": 28.055641174316406, + "y": 13.723761558532715, + "z": 1.0210009813308716 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1420477341 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.120999813079834, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.021226031705737114, + "qx": 0.017374126240611076, + "qy": 0.0082908496260643, + "qz": -0.9995893239974976 + }, + "translation": { + "x": 26.815780639648438, + "y": 13.774690628051758, + "z": 1.0124191045761108 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1420477341 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.120999813079834, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.021219052374362946, + "qx": 0.016506321728229523, + "qy": 0.00830902811139822, + "qz": -0.9996040463447571 + }, + "translation": { + "x": 25.574527740478516, + "y": 13.825922966003418, + "z": 1.0038694143295288 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1420477341 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1420477341 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8819999694824219, + "length": 5.263000011444092, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.011575972661376, + "qx": 0.011232109740376472, + "qy": 0.00849138293415308, + "qz": -0.999833881855011 + }, + "translation": { + "x": 48.07858657836914, + "y": 13.194551467895508, + "z": 1.058403730392456 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1559998989105225 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1426550613 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8819999694824219, + "length": 5.263000011444092, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.012448763474822044, + "qx": 0.011223973706364632, + "qy": 0.008484914898872375, + "qz": -0.9998235106468201 + }, + "translation": { + "x": 46.86628341674805, + "y": 13.225262641906738, + "z": 1.0485742092132568 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1559998989105225 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1426550613 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8819999694824219, + "length": 5.263000011444092, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.013321644626557827, + "qx": 0.01121638622134924, + "qy": 0.0084784971550107, + "qz": -0.9998124241828918 + }, + "translation": { + "x": 45.652587890625, + "y": 13.25628662109375, + "z": 1.0387992858886719 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1559998989105225 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1426550613 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1426550613 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.252000093460083, + "length": 6.006999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.015065917745232582, + "qx": 0.011201667599380016, + "qy": 0.008466684259474277, + "qz": -0.9997879266738892 + }, + "translation": { + "x": 51.652183532714844, + "y": 16.695968627929688, + "z": 1.3990967273712158 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.5160000324249268 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2481576130 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.252000093460083, + "length": 6.006999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.015066367574036121, + "qx": 0.011201129294931889, + "qy": 0.008466379716992378, + "qz": -0.9997879266738892 + }, + "translation": { + "x": 50.68640899658203, + "y": 16.72408103942871, + "z": 1.395294427871704 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.5160000324249268 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2481576130 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.252000093460083, + "length": 6.006999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.015066596679389477, + "qx": 0.01120114978402853, + "qy": 0.00846613384783268, + "qz": -0.9997879266738892 + }, + "translation": { + "x": 49.71979522705078, + "y": 16.751670837402344, + "z": 1.3915390968322754 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.5160000324249268 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2481576130 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2481576130 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 3.640000104904175, + "length": 22.937000274658203, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.021276455372571945, + "qx": 0.001740759122185409, + "qy": -0.0036477064713835716, + "qz": -0.9997654557228088 + }, + "translation": { + "x": 107.65674591064453, + "y": 18.07183265686035, + "z": 2.166459321975708 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.4560000896453857 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 781211998 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.640000104904175, + "length": 22.937000274658203, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02127690240740776, + "qx": 0.0017402170924469829, + "qy": -0.0036480107810348272, + "qz": -0.9997654557228088 + }, + "translation": { + "x": 107.50566101074219, + "y": 18.07809829711914, + "z": 2.1657798290252686 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.4560000896453857 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 781211998 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.640000104904175, + "length": 22.937000274658203, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.021277133375406265, + "qx": 0.001740235835313797, + "qy": -0.003648253856226802, + "qz": -0.9997654557228088 + }, + "translation": { + "x": 107.35456848144531, + "y": 18.084407806396484, + "z": 2.1652233600616455 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.4560000896453857 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 781211998 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 3, + "instance_id": 781211998 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 3.9769999980926514, + "length": 11.10099983215332, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9989888072013855, + "qx": 0.00846774596720934, + "qy": -0.002560093766078353, + "qz": 0.044081032276153564 + }, + "translation": { + "x": -182.27044677734375, + "y": -7.771602153778076, + "z": 1.7347902059555054 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.803999900817871 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1380939260 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.9769999980926514, + "length": 11.10099983215332, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9989948868751526, + "qx": 0.008467831648886204, + "qy": -0.0025583647657185793, + "qz": 0.04394209757447243 + }, + "translation": { + "x": -182.2374267578125, + "y": -7.7689642906188965, + "z": 1.735180377960205 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.803999900817871 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1380939260 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.9769999980926514, + "length": 11.10099983215332, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9990010261535645, + "qx": 0.008467942476272583, + "qy": -0.0025571961887180805, + "qz": 0.04380333423614502 + }, + "translation": { + "x": -182.2043914794922, + "y": -7.7664055824279785, + "z": 1.735365867614746 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.803999900817871 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1380939260 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 3, + "instance_id": 1380939260 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.27648457884788513, + "qx": 0.004469389095902443, + "qy": 0.007634222973138094, + "qz": -0.9609776139259338 + }, + "translation": { + "x": -57.564693450927734, + "y": -56.077659606933594, + "z": 0.5692194700241089 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 38389432 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764841318130493, + "qx": 0.004468786064535379, + "qy": 0.007634091190993786, + "qz": -0.9609777927398682 + }, + "translation": { + "x": -57.56474304199219, + "y": -56.07761001586914, + "z": 0.5693147778511047 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 38389432 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764839231967926, + "qx": 0.0044687348417937756, + "qy": 0.007633852772414684, + "qz": -0.9609778523445129 + }, + "translation": { + "x": -57.56476974487305, + "y": -56.07758331298828, + "z": 0.5693405866622925 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 38389432 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 38389432 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7200000286102295, + "length": 4.577000141143799, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.27648457884788513, + "qx": 0.004469389095902443, + "qy": 0.007634222973138094, + "qz": -0.9609776139259338 + }, + "translation": { + "x": -57.85559844970703, + "y": -59.38932418823242, + "z": 0.35213926434516907 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0759999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1701922374 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7200000286102295, + "length": 4.577000141143799, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764841318130493, + "qx": 0.004468786064535379, + "qy": 0.007634091190993786, + "qz": -0.9609777927398682 + }, + "translation": { + "x": -57.85565185546875, + "y": -59.38927459716797, + "z": 0.35223686695098877 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0759999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1701922374 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7200000286102295, + "length": 4.577000141143799, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764839231967926, + "qx": 0.0044687348417937756, + "qy": 0.007633852772414684, + "qz": -0.9609778523445129 + }, + "translation": { + "x": -57.855682373046875, + "y": -59.38924789428711, + "z": 0.35226425528526306 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0759999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1701922374 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1701922374 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7619999647140503, + "length": 4.556000232696533, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9997044801712036, + "qx": 0.008619632571935654, + "qy": -0.001989656826481223, + "qz": -0.02264239266514778 + }, + "translation": { + "x": 66.725830078125, + "y": 4.261465072631836, + "z": 1.3937667608261108 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2159555239 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7619999647140503, + "length": 4.556000232696533, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9997044801712036, + "qx": 0.00861932709813118, + "qy": -0.001989120850339532, + "qz": -0.022642845287919044 + }, + "translation": { + "x": 66.72583770751953, + "y": 4.261404991149902, + "z": 1.393691062927246 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2159555239 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7619999647140503, + "length": 4.556000232696533, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9997044801712036, + "qx": 0.008619084022939205, + "qy": -0.0019891427364200354, + "qz": -0.0226430781185627 + }, + "translation": { + "x": 66.72583770751953, + "y": 4.261374473571777, + "z": 1.393691062927246 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2159555239 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2159555239 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.798999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 100.35958099365234, + "y": -10.243717193603516, + "z": 1.4770301580429077 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3221070520 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.798999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 100.57363891601562, + "y": -10.249628067016602, + "z": 1.4777613878250122 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3221070520 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.798999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 100.78824615478516, + "y": -10.256333351135254, + "z": 1.4785927534103394 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3221070520 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3221070520 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.4830000400543213, + "length": 4.294000148773193, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.001368306577205658, + "qx": 0.010235670022666454, + "qy": 0.008580499328672886, + "qz": -0.9999098777770996 + }, + "translation": { + "x": -48.416744232177734, + "y": 21.514122009277344, + "z": 0.4754062592983246 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.875 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2725026509 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4830000400543213, + "length": 4.294000148773193, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.001367855933494866, + "qx": 0.010235127061605453, + "qy": 0.008580203168094158, + "qz": -0.9999098777770996 + }, + "translation": { + "x": -48.416725158691406, + "y": 21.5141658782959, + "z": 0.47544628381729126 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.875 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2725026509 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4830000400543213, + "length": 4.294000148773193, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.001367626478895545, + "qx": 0.010235142894089222, + "qy": 0.008579958230257034, + "qz": -0.9999098777770996 + }, + "translation": { + "x": -48.416717529296875, + "y": 21.51418685913086, + "z": 0.47543466091156006 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.875 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2725026509 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2725026509 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.75600004196167, + "length": 4.619999885559082, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7109454870223999, + "qx": 0.011548690497875214, + "qy": 0.01749182678759098, + "qz": -0.702934741973877 + }, + "translation": { + "x": -5.6692399978637695, + "y": -136.30567932128906, + "z": 1.7686764001846313 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1019999980926514 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4266191278 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.75600004196167, + "length": 4.619999885559082, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7109451293945312, + "qx": 0.01154810655862093, + "qy": 0.017492005601525307, + "qz": -0.7029350399971008 + }, + "translation": { + "x": -5.661161422729492, + "y": -137.06007385253906, + "z": 1.755862832069397 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1019999980926514 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4266191278 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.75600004196167, + "length": 4.619999885559082, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7109449505805969, + "qx": 0.011547948233783245, + "qy": 0.017491821199655533, + "qz": -0.7029352188110352 + }, + "translation": { + "x": -5.6524786949157715, + "y": -137.81529235839844, + "z": 1.7430189847946167 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1019999980926514 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4266191278 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 4266191278 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7380000352859497, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -20.358076095581055, + "y": -50.44113540649414, + "z": 0.32935112714767456 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2952303680 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7380000352859497, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -20.358121871948242, + "y": -50.44111633300781, + "z": 0.32940250635147095 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2952303680 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7380000352859497, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -20.358144760131836, + "y": -50.44110870361328, + "z": 0.329426646232605 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2952303680 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2952303680 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -20.281038284301758, + "y": -47.202606201171875, + "z": 0.39421936869621277 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4226593624 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -20.28108024597168, + "y": -47.20258712768555, + "z": 0.39426878094673157 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4226593624 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -20.281103134155273, + "y": -47.202579498291016, + "z": 0.39429137110710144 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4226593624 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 4226593624 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.8200000524520874, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -20.336933135986328, + "y": -53.62807846069336, + "z": 0.3108033835887909 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3737572489 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8200000524520874, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -20.33698081970215, + "y": -53.6280632019043, + "z": 0.3108566105365753 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3737572489 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8200000524520874, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -20.337005615234375, + "y": -53.6280517578125, + "z": 0.3108823001384735 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3737572489 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3737572489 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.0829999446868896, + "length": 5.548999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -20.235841751098633, + "y": -56.546714782714844, + "z": 0.3922204077243805 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2700115367 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0829999446868896, + "length": 5.548999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -20.23589324951172, + "y": -56.54669952392578, + "z": 0.39227524399757385 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2700115367 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0829999446868896, + "length": 5.548999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -20.235919952392578, + "y": -56.546688079833984, + "z": 0.39230236411094666 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2700115367 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2700115367 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.461999893188477, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058195471763611, + "qx": 0.0045034862123429775, + "qy": -0.007614158093929291, + "qz": 0.7083364725112915 + }, + "translation": { + "x": -5.448022842407227, + "y": 79.15742492675781, + "z": 1.7135485410690308 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 135457706 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.461999893188477, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.705819845199585, + "qx": 0.004503664094954729, + "qy": -0.0076135676354169846, + "qz": 0.7083361744880676 + }, + "translation": { + "x": -5.447950839996338, + "y": 79.15742492675781, + "z": 1.7135080099105835 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 135457706 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.461999893188477, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058200240135193, + "qx": 0.00450348062440753, + "qy": -0.007613406516611576, + "qz": 0.7083359956741333 + }, + "translation": { + "x": -5.447914123535156, + "y": 79.15743255615234, + "z": 1.7134695053100586 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 135457706 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 135457706 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.555999994277954, + "length": 5.735000133514404, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999729990959167, + "qx": 0.0015542650362476707, + "qy": 0.005332839675247669, + "qz": -0.004809586331248283 + }, + "translation": { + "x": 13.894196510314941, + "y": -7.184008598327637, + "z": 0.9316787719726562 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.36899995803833 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1329488856 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.555999994277954, + "length": 5.735000133514404, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999729990959167, + "qx": 0.001553972833789885, + "qy": 0.005333384033292532, + "qz": -0.004810037557035685 + }, + "translation": { + "x": 13.894190788269043, + "y": -7.18402099609375, + "z": 0.9316674470901489 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.36899995803833 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1329488856 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.555999994277954, + "length": 5.735000133514404, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999729990959167, + "qx": 0.0015537311555817723, + "qy": 0.0053333682008087635, + "qz": -0.004810271319001913 + }, + "translation": { + "x": 13.894186973571777, + "y": -7.184027671813965, + "z": 0.9316715598106384 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.36899995803833 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1329488856 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1329488856 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5449999570846558, + "length": 5.49399995803833, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02030095085501671, + "qx": 0.011155745945870876, + "qy": 0.008429440669715405, + "qz": -0.9996961355209351 + }, + "translation": { + "x": 50.35491943359375, + "y": 9.96828842163086, + "z": 1.035032868385315 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3450000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3783211353 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5449999570846558, + "length": 5.49399995803833, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.020301399752497673, + "qx": 0.011155208572745323, + "qy": 0.008429132401943207, + "qz": -0.9996961355209351 + }, + "translation": { + "x": 49.10829544067383, + "y": 10.011096000671387, + "z": 1.0332615375518799 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3450000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3783211353 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5449999570846558, + "length": 5.49399995803833, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02030162885785103, + "qx": 0.01115522999316454, + "qy": 0.008428887464106083, + "qz": -0.9996961355209351 + }, + "translation": { + "x": 47.862213134765625, + "y": 10.053091049194336, + "z": 1.0315361022949219 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3450000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3783211353 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3783211353 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6799999475479126, + "length": 4.616000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": -1.1615052223205566, + "y": -3.1758768558502197, + "z": 0.6855854988098145 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2750000953674316 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2891454341 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6799999475479126, + "length": 4.616000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": -1.1615082025527954, + "y": -3.1758763790130615, + "z": 0.6855882406234741 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2750000953674316 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2891454341 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6799999475479126, + "length": 4.616000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": -1.1615098714828491, + "y": -3.1758759021759033, + "z": 0.6855899691581726 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2750000953674316 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2891454341 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2891454341 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.4170000553131104, + "length": 5.271999835968018, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": 5.988205432891846, + "y": -6.3297953605651855, + "z": 0.9267855882644653 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2009999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1837707302 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.4170000553131104, + "length": 5.271999835968018, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": 5.988199710845947, + "y": -6.329801082611084, + "z": 0.9267823696136475 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2009999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1837707302 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.4170000553131104, + "length": 5.271999835968018, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": 5.98819637298584, + "y": -6.329803943634033, + "z": 0.9267858266830444 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2009999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1837707302 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1837707302 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7580000162124634, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016381369205191731, + "qy": 0.005468863062560558, + "qz": -0.013534367084503174 + }, + "translation": { + "x": 33.07285690307617, + "y": -7.8138508796691895, + "z": 0.486592561006546 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0420000553131104 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1326176443 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7580000162124634, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016378400614485145, + "qy": 0.0054694050922989845, + "qz": -0.013534817844629288 + }, + "translation": { + "x": 33.07284927368164, + "y": -7.8138813972473145, + "z": 0.4865606427192688 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0420000553131104 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1326176443 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7580000162124634, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016375984996557236, + "qy": 0.0054693869315087795, + "qz": -0.013535051606595516 + }, + "translation": { + "x": 33.072845458984375, + "y": -7.813896656036377, + "z": 0.48656561970710754 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0420000553131104 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1326176443 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1326176443 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5740000009536743, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254159450531006, + "qx": 0.004715349525213242, + "qy": -0.0074848029762506485, + "qz": 0.6882538795471191 + }, + "translation": { + "x": -14.782675743103027, + "y": 64.44328308105469, + "z": 1.6795048713684082 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2398204818 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5740000009536743, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254163026809692, + "qx": 0.00471551064401865, + "qy": -0.007484207395464182, + "qz": 0.6882535815238953 + }, + "translation": { + "x": -14.78261661529541, + "y": 64.44329833984375, + "z": 1.6794830560684204 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2398204818 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5740000009536743, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254164218902588, + "qx": 0.004715322516858578, + "qy": -0.007484051864594221, + "qz": 0.6882534027099609 + }, + "translation": { + "x": -14.782587051391602, + "y": 64.44330596923828, + "z": 1.679451584815979 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2398204818 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2398204818 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6440000534057617, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254159450531006, + "qx": 0.004715349525213242, + "qy": -0.0074848029762506485, + "qz": 0.6882538795471191 + }, + "translation": { + "x": -15.427385330200195, + "y": 52.370426177978516, + "z": 1.6957130432128906 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2561427869 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6440000534057617, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254163026809692, + "qx": 0.00471551064401865, + "qy": -0.007484207395464182, + "qz": 0.6882535815238953 + }, + "translation": { + "x": -15.427336692810059, + "y": 52.37044143676758, + "z": 1.6956990957260132 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2561427869 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6440000534057617, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254164218902588, + "qx": 0.004715322516858578, + "qy": -0.007484051864594221, + "qz": 0.6882534027099609 + }, + "translation": { + "x": -15.427312850952148, + "y": 52.37044906616211, + "z": 1.6956733465194702 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2561427869 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2561427869 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.0969998836517334, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.737488865852356, + "qx": 0.007320994045585394, + "qy": -0.010101432912051678, + "qz": 0.6752440333366394 + }, + "translation": { + "x": -45.098472595214844, + "y": 43.15536117553711, + "z": 1.1310235261917114 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2468979459 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0969998836517334, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7374891638755798, + "qx": 0.00732114352285862, + "qy": -0.01010083593428135, + "qz": 0.6752437353134155 + }, + "translation": { + "x": -45.09843063354492, + "y": 43.155399322509766, + "z": 1.1310473680496216 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2468979459 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0969998836517334, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7374893426895142, + "qx": 0.007320952136069536, + "qy": -0.010100684128701687, + "qz": 0.6752435564994812 + }, + "translation": { + "x": -45.098411560058594, + "y": 43.15542221069336, + "z": 1.1310251951217651 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2468979459 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2468979459 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.174999952316284, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752795577049255, + "qx": 0.004698280710726976, + "qy": 0.0023739247117191553, + "qz": -0.7375431060791016 + }, + "translation": { + "x": -47.81953811645508, + "y": 42.97793197631836, + "z": 1.175101637840271 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2286959183 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.174999952316284, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752792000770569, + "qx": 0.004697681404650211, + "qy": 0.0023740765172988176, + "qz": -0.7375434041023254 + }, + "translation": { + "x": -47.81949996948242, + "y": 42.97797393798828, + "z": 1.17512845993042 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2286959183 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.174999952316284, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752790808677673, + "qx": 0.004697528202086687, + "qy": 0.0023738862946629524, + "qz": -0.7375435829162598 + }, + "translation": { + "x": -47.819480895996094, + "y": 42.977996826171875, + "z": 1.175106406211853 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2286959183 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2286959183 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9202321171760559, + "qx": 0.014650632627308369, + "qy": 0.0071531496942043304, + "qz": -0.39103326201438904 + }, + "translation": { + "x": 101.29336547851562, + "y": 26.113798141479492, + "z": 1.3724087476730347 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 673396575 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9202319383621216, + "qx": 0.014650153927505016, + "qy": 0.007153531536459923, + "qz": -0.39103367924690247 + }, + "translation": { + "x": 101.29338836669922, + "y": 26.113706588745117, + "z": 1.3722825050354004 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 673396575 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9202318787574768, + "qx": 0.014649936929345131, + "qy": 0.007153420243412256, + "qz": -0.3910338878631592 + }, + "translation": { + "x": 101.29339599609375, + "y": 26.11366081237793, + "z": 1.3722729682922363 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 673396575 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 673396575 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.451000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058195471763611, + "qx": 0.0045034862123429775, + "qy": -0.007614158093929291, + "qz": 0.7083364725112915 + }, + "translation": { + "x": -0.34804847836494446, + "y": 79.36744689941406, + "z": 1.2893620729446411 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1365080015 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.451000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.705819845199585, + "qx": 0.004503664094954729, + "qy": -0.0076135676354169846, + "qz": 0.7083361744880676 + }, + "translation": { + "x": -0.3479767143726349, + "y": 79.36744689941406, + "z": 1.2893157005310059 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1365080015 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.451000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058200240135193, + "qx": 0.00450348062440753, + "qy": -0.007613406516611576, + "qz": 0.7083359956741333 + }, + "translation": { + "x": -0.3479400873184204, + "y": 79.36744689941406, + "z": 1.2892773151397705 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1365080015 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1365080015 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5759999752044678, + "length": 4.486999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058195471763611, + "qx": 0.0045034862123429775, + "qy": -0.007614158093929291, + "qz": 0.7083364725112915 + }, + "translation": { + "x": -8.667952537536621, + "y": 79.39171600341797, + "z": 1.627485752105713 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1187369618 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5759999752044678, + "length": 4.486999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.705819845199585, + "qx": 0.004503664094954729, + "qy": -0.0076135676354169846, + "qz": 0.7083361744880676 + }, + "translation": { + "x": -8.667880058288574, + "y": 79.3917236328125, + "z": 1.6274484395980835 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1187369618 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5759999752044678, + "length": 4.486999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058200240135193, + "qx": 0.00450348062440753, + "qy": -0.007613406516611576, + "qz": 0.7083359956741333 + }, + "translation": { + "x": -8.66784381866455, + "y": 79.39173126220703, + "z": 1.627409815788269 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1187369618 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1187369618 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.510000228881836, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333227872848511, + "qx": 0.014485771767795086, + "qy": 0.007049803156405687, + "qz": -0.3586767613887787 + }, + "translation": { + "x": 104.7303237915039, + "y": 30.521188735961914, + "z": 1.4629979133605957 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1179469999 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.510000228881836, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333226084709167, + "qx": 0.014485307037830353, + "qy": 0.007050201762467623, + "qz": -0.3586772084236145 + }, + "translation": { + "x": 104.73035430908203, + "y": 30.521095275878906, + "z": 1.4628652334213257 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1179469999 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.510000228881836, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.933322548866272, + "qx": 0.014485086314380169, + "qy": 0.007050097920000553, + "qz": -0.3586774170398712 + }, + "translation": { + "x": 104.7303695678711, + "y": 30.521045684814453, + "z": 1.4628536701202393 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1179469999 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1179469999 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.480000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333227872848511, + "qx": 0.014485771767795086, + "qy": 0.007049803156405687, + "qz": -0.3586767613887787 + }, + "translation": { + "x": 106.84355163574219, + "y": 32.87120056152344, + "z": 1.5125259160995483 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3656592464 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.480000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333226084709167, + "qx": 0.014485307037830353, + "qy": 0.007050201762467623, + "qz": -0.3586772084236145 + }, + "translation": { + "x": 106.84358215332031, + "y": 32.8711051940918, + "z": 1.5123896598815918 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3656592464 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.480000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.933322548866272, + "qx": 0.014485086314380169, + "qy": 0.007050097920000553, + "qz": -0.3586774170398712 + }, + "translation": { + "x": 106.84359741210938, + "y": 32.871055603027344, + "z": 1.5123769044876099 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3656592464 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3656592464 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.5, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333227872848511, + "qx": 0.014485771767795086, + "qy": 0.007049803156405687, + "qz": -0.3586767613887787 + }, + "translation": { + "x": 108.81022644042969, + "y": 34.745548248291016, + "z": 1.553257703781128 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.009999990463257 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1348824365 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.5, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333226084709167, + "qx": 0.014485307037830353, + "qy": 0.007050201762467623, + "qz": -0.3586772084236145 + }, + "translation": { + "x": 108.81025695800781, + "y": 34.745452880859375, + "z": 1.553118109703064 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.009999990463257 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1348824365 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.5, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.933322548866272, + "qx": 0.014485086314380169, + "qy": 0.007050097920000553, + "qz": -0.3586774170398712 + }, + "translation": { + "x": 108.81027221679688, + "y": 34.745399475097656, + "z": 1.5531045198440552 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.009999990463257 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1348824365 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1348824365 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5420000553131104, + "length": 0.4909999966621399, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.714547872543335, + "qx": 0.0076536694541573524, + "qy": 0.0044360049068927765, + "qz": -0.6995306015014648 + }, + "translation": { + "x": 97.63323974609375, + "y": 21.123104095458984, + "z": 1.1198192834854126 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 0.546999990940094 + }, + "class_id": 0, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3195657140 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5420000553131104, + "length": 0.4909999966621399, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6326812505722046, + "qx": 0.007114709354937077, + "qy": 0.005256454460322857, + "qz": -0.774361789226532 + }, + "translation": { + "x": 97.64877319335938, + "y": 21.059091567993164, + "z": 1.1186715364456177 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 0.546999990940094 + }, + "class_id": 0, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3195657140 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + } + ], + "class_id": 0, + "instance_id": 3195657140 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.6699999570846558, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128903269767761, + "qx": 0.004579648375511169, + "qy": -0.007568594068288803, + "qz": 0.7012197375297546 + }, + "translation": { + "x": -11.772218704223633, + "y": -30.919179916381836, + "z": 0.40655604004859924 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1600076501 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6699999570846558, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128906846046448, + "qx": 0.004579820204526186, + "qy": -0.007568001747131348, + "qz": 0.701219379901886 + }, + "translation": { + "x": -11.772246360778809, + "y": -30.919170379638672, + "z": 0.4065866470336914 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1600076501 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6699999570846558, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128908038139343, + "qx": 0.0045796348713338375, + "qy": -0.007567842490971088, + "qz": 0.7012192606925964 + }, + "translation": { + "x": -11.772260665893555, + "y": -30.919164657592773, + "z": 0.40660154819488525 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1600076501 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1600076501 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128903269767761, + "qx": 0.004579648375511169, + "qy": -0.007568594068288803, + "qz": 0.7012197375297546 + }, + "translation": { + "x": -11.77536678314209, + "y": -43.66936111450195, + "z": 0.08190152049064636 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3693165868 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128906846046448, + "qx": 0.004579820204526186, + "qy": -0.007568001747131348, + "qz": 0.701219379901886 + }, + "translation": { + "x": -11.775406837463379, + "y": -43.669349670410156, + "z": 0.08193957060575485 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3693165868 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128908038139343, + "qx": 0.0045796348713338375, + "qy": -0.007567842490971088, + "qz": 0.7012192606925964 + }, + "translation": { + "x": -11.77542781829834, + "y": -43.66934585571289, + "z": 0.08196067065000534 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3693165868 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3693165868 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.27648457884788513, + "qx": 0.004469389095902443, + "qy": 0.007634222973138094, + "qz": -0.9609776139259338 + }, + "translation": { + "x": -75.16053771972656, + "y": -44.006935119628906, + "z": 0.3492593765258789 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3620744540 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764841318130493, + "qx": 0.004468786064535379, + "qy": 0.007634091190993786, + "qz": -0.9609777927398682 + }, + "translation": { + "x": -75.16057586669922, + "y": -44.006866455078125, + "z": 0.3493669331073761 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3620744540 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764839231967926, + "qx": 0.0044687348417937756, + "qy": 0.007633852772414684, + "qz": -0.9609778523445129 + }, + "translation": { + "x": -75.16059875488281, + "y": -44.006832122802734, + "z": 0.3493863642215729 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3620744540 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 3620744540 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.27648457884788513, + "qx": 0.004469389095902443, + "qy": 0.007634222973138094, + "qz": -0.9609776139259338 + }, + "translation": { + "x": -75.32412719726562, + "y": -41.469078063964844, + "z": 0.39206063747406006 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2569709928 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764841318130493, + "qx": 0.004468786064535379, + "qy": 0.007634091190993786, + "qz": -0.9609777927398682 + }, + "translation": { + "x": -75.32416534423828, + "y": -41.46901321411133, + "z": 0.3921668529510498 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2569709928 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764839231967926, + "qx": 0.0044687348417937756, + "qy": 0.007633852772414684, + "qz": -0.9609778523445129 + }, + "translation": { + "x": -75.32418060302734, + "y": -41.46897506713867, + "z": 0.3921850621700287 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2569709928 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 2569709928 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.940999984741211, + "length": 5.190000057220459, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058195471763611, + "qx": 0.0045034862123429775, + "qy": -0.007614158093929291, + "qz": 0.7083364725112915 + }, + "translation": { + "x": -8.399495124816895, + "y": 66.85371398925781, + "z": 1.80873441696167 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.382999897003174 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1704132362 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940999984741211, + "length": 5.190000057220459, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.705819845199585, + "qx": 0.004503664094954729, + "qy": -0.0076135676354169846, + "qz": 0.7083361744880676 + }, + "translation": { + "x": -8.399434089660645, + "y": 66.85372161865234, + "z": 1.8087042570114136 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.382999897003174 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1704132362 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940999984741211, + "length": 5.190000057220459, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058200240135193, + "qx": 0.00450348062440753, + "qy": -0.007613406516611576, + "qz": 0.7083359956741333 + }, + "translation": { + "x": -8.39940357208252, + "y": 66.85372161865234, + "z": 1.8086717128753662 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.382999897003174 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1704132362 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1704132362 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -100.49188232421875, + "y": 11.051573753356934, + "z": 0.7156857252120972 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1101125771 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.004912052769213915, + "qx": 0.014205684885382652, + "qy": 0.014987416565418243, + "qz": -0.999774694442749 + }, + "translation": { + "x": -102.02786254882812, + "y": 11.054716110229492, + "z": 0.7090213894844055 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1101125771 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1101125771 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.968000054359436, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.0020525199361145496, + "qx": 0.01419046800583601, + "qy": 0.014919369481503963, + "qz": -0.9997859001159668 + }, + "translation": { + "x": -203.82940673828125, + "y": 8.274051666259766, + "z": 0.4157063066959381 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1428694652 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.968000054359436, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.004961493890732527, + "qx": 0.014183935709297657, + "qy": 0.01489038672298193, + "qz": -0.9997761845588684 + }, + "translation": { + "x": -204.92942810058594, + "y": 8.271906852722168, + "z": 0.41085314750671387 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1428694652 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "class_id": 2, + "instance_id": 1428694652 + } + ], + "metadata": {} +} \ No newline at end of file diff --git a/tests/data/dgp/test_scene/scene_01/agent/agents_slices_bdc20c991bac35c33d03c0780892c0ce5ad2cb4c.json b/tests/data/dgp/test_scene/scene_01/agent/agents_slices_bdc20c991bac35c33d03c0780892c0ce5ad2cb4c.json new file mode 100644 index 00000000..c06fd156 --- /dev/null +++ b/tests/data/dgp/test_scene/scene_01/agent/agents_slices_bdc20c991bac35c33d03c0780892c0ce5ad2cb4c.json @@ -0,0 +1,10617 @@ +{ + "agents_slices": [ + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7730000019073486, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": -1.8706600666046143, + "y": -6.635149002075195, + "z": 0.608169436454773 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0199999809265137 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 987620307 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.069999933242798, + "length": 5.48199987411499, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": 8.407821655273438, + "y": -3.2484750747680664, + "z": 0.8601715564727783 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3934200682 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3969999551773071, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": -6.213614463806152, + "y": 0.10450641810894012, + "z": 0.6087425351142883 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.055000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3303441164 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7339999675750732, + "length": 4.552999973297119, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": -8.617191314697266, + "y": -3.334801197052002, + "z": 0.7072942852973938 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.181999921798706 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 926775473 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6269999742507935, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7021673917770386, + "qx": 0.004464269150048494, + "qy": -0.00763721764087677, + "qz": 0.7119569182395935 + }, + "translation": { + "x": -30.928632736206055, + "y": 42.4351806640625, + "z": 0.6675047874450684 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3429999351501465 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4263263740 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8029999732971191, + "length": 4.767000198364258, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.53645706176758, + "y": -32.45402145385742, + "z": 0.6377805471420288 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2218577133 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6490000486373901, + "length": 4.868000030517578, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.84242248535156, + "y": -35.475154876708984, + "z": 0.4716234505176544 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3095114869 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8250000476837158, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.54422378540039, + "y": -38.72170639038086, + "z": 0.6612967252731323 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2039999961853027 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2355452925 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7079999446868896, + "length": 4.754000186920166, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.27395248413086, + "y": -41.99919128417969, + "z": 0.5672731995582581 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1001235426 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7269999980926514, + "length": 4.715000152587891, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -45.926414489746094, + "y": -47.71685791015625, + "z": 0.41537508368492126 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 36237167 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6510000228881836, + "length": 4.7179999351501465, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -45.71343231201172, + "y": -44.79200744628906, + "z": 0.3894452750682831 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2073239145 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5729999542236328, + "length": 4.573999881744385, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -45.8116340637207, + "y": -50.69437789916992, + "z": 0.47783946990966797 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4024251048 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8420000076293945, + "length": 4.633999824523926, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -45.57073211669922, + "y": -56.9431266784668, + "z": 0.7708086967468262 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1788680519 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8220000267028809, + "length": 4.692999839782715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -45.761104583740234, + "y": -53.69636535644531, + "z": 0.3995816707611084 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1953886780 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8609999418258667, + "length": 4.611999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.968228280544281, + "qx": 0.008846244774758816, + "qy": 2.7410680559114553e-05, + "qz": -0.24991144239902496 + }, + "translation": { + "x": -46.476646423339844, + "y": -59.569053649902344, + "z": 0.6008055806159973 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1095694435 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.843999981880188, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6896350979804993, + "qx": 0.004330301657319069, + "qy": -0.007713967002928257, + "qz": 0.7241030335426331 + }, + "translation": { + "x": -36.0592155456543, + "y": 43.350833892822266, + "z": 0.7698059678077698 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.203000068664551 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1020506225 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.180999994277954, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7195594310760498, + "qx": 0.0071954987943172455, + "qy": -0.01016011368483305, + "qz": 0.6943193078041077 + }, + "translation": { + "x": -38.671409606933594, + "y": 43.01796340942383, + "z": 1.0367296934127808 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2359942993 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.197999954223633, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752795577049255, + "qx": 0.004698280710726976, + "qy": 0.0023739247117191553, + "qz": -0.7375431060791016 + }, + "translation": { + "x": -41.23878479003906, + "y": 43.222679138183594, + "z": 1.104034423828125 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1451267456 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3589999675750732, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.737488865852356, + "qx": 0.007320994045585394, + "qy": -0.010101432912051678, + "qz": 0.6752440333366394 + }, + "translation": { + "x": -53.401790618896484, + "y": 43.202880859375, + "z": 1.2695870399475098 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4210554413 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.183000087738037, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6943533420562744, + "qx": 0.004888311959803104, + "qy": 0.0021086866036057472, + "qz": -0.7196145057678223 + }, + "translation": { + "x": -37.98640441894531, + "y": 29.4995174407959, + "z": 0.5058778524398804 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 101581897 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4259999990463257, + "length": 4.275000095367432, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.000303005101159215, + "qx": -0.009521124884486198, + "qy": 0.008577383123338223, + "qz": -0.9999178647994995 + }, + "translation": { + "x": -48.413028717041016, + "y": 21.5078182220459, + "z": 0.5013184547424316 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.8220000267028809 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 10955774 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.621000051498413, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.19311314821243286, + "qx": 0.021621493622660637, + "qy": 0.004674523137509823, + "qz": -0.9809271097183228 + }, + "translation": { + "x": -8.339457511901855, + "y": 44.33381271362305, + "z": 1.2348241806030273 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.871000051498413 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 328286980 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.21013247966766357, + "qx": 0.009056132286787033, + "qy": 0.006965686101466417, + "qz": -0.9776061773300171 + }, + "translation": { + "x": -8.04305648803711, + "y": 47.305301666259766, + "z": 1.260066270828247 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1672550325 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5149999856948853, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02705433964729309, + "qx": 0.04360898584127426, + "qy": 0.004349982365965843, + "qz": -0.9986728429794312 + }, + "translation": { + "x": 13.932554244995117, + "y": 21.622121810913086, + "z": 0.48463064432144165 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1070001125335693 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162860985 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.158999919891357, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.21013247966766357, + "qx": 0.009056132286787033, + "qy": 0.006965686101466417, + "qz": -0.9776061773300171 + }, + "translation": { + "x": -7.237268924713135, + "y": 49.917991638183594, + "z": 1.2033696174621582 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2464875149 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.418000221252441, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.007937053218483925, + "qx": 0.03422616049647331, + "qy": 0.005653207190334797, + "qz": -0.9993665814399719 + }, + "translation": { + "x": 29.376705169677734, + "y": 21.348379135131836, + "z": 0.4954066574573517 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0490000247955322 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2675183418 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.472000002861023, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01785454899072647, + "qx": 0.001396479201503098, + "qy": 0.0054566515609622, + "qz": -0.9998247027397156 + }, + "translation": { + "x": 48.72993087768555, + "y": 20.29928970336914, + "z": 0.836018443107605 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9119999408721924 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1245564312 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4570000171661377, + "length": 4.229000091552734, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9943520426750183, + "qx": 0.0088399862870574, + "qy": 0.022358033806085587, + "qz": 0.10337304323911667 + }, + "translation": { + "x": 28.868818283081055, + "y": 33.00381088256836, + "z": 0.8680678606033325 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9470000267028809 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2978048694 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.531000018119812, + "length": 4.27400016784668, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855899810791016, + "qx": 0.005071449093520641, + "qy": -0.021295547485351562, + "qz": 0.16772957146167755 + }, + "translation": { + "x": 28.936485290527344, + "y": 38.450157165527344, + "z": 0.8587344884872437 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.8930000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1558880067 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3960000276565552, + "length": 4.416999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855899810791016, + "qx": 0.005071449093520641, + "qy": -0.021295547485351562, + "qz": 0.16772957146167755 + }, + "translation": { + "x": 29.115835189819336, + "y": 41.580074310302734, + "z": 0.8301730751991272 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9450000524520874 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 702855053 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.209000110626221, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855899810791016, + "qx": 0.005071449093520641, + "qy": -0.021295547485351562, + "qz": 0.16772957146167755 + }, + "translation": { + "x": 28.958158493041992, + "y": 44.246421813964844, + "z": 0.9312121272087097 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.937999963760376 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1036907190 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7450000047683716, + "length": 4.4070000648498535, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.018043437972664833, + "qx": 0.017621563747525215, + "qy": 0.005166321061551571, + "qz": -0.999668538570404 + }, + "translation": { + "x": 55.94990539550781, + "y": 20.002843856811523, + "z": 1.0755139589309692 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.061000108718872 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2990471596 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4670000076293945, + "length": 4.8379998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9916064739227295, + "qx": 0.00048278638860210776, + "qy": -0.0012338928645476699, + "qz": 0.129285991191864 + }, + "translation": { + "x": 29.4586124420166, + "y": 27.529224395751953, + "z": 0.6597550511360168 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.878000020980835 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 848568023 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01795100048184395, + "qx": 0.009631011635065079, + "qy": 0.005309483967721462, + "qz": -0.9997783899307251 + }, + "translation": { + "x": 67.24614715576172, + "y": 19.70297622680664, + "z": 1.013710618019104 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2467117866 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998999238014221, + "qx": 0.012190382927656174, + "qy": 0.005281380843371153, + "qz": -0.004866037052124739 + }, + "translation": { + "x": 20.961828231811523, + "y": -3.8864314556121826, + "z": 0.8150691986083984 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9079999923706055 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2959176039 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5490000247955322, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016381369205191731, + "qy": 0.005468863062560558, + "qz": -0.013534367084503174 + }, + "translation": { + "x": 26.56963348388672, + "y": -7.529963970184326, + "z": 0.4740484058856964 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0339999198913574 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3310447420 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.909000039100647, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": 10.409364700317383, + "y": -0.006526528391987085, + "z": 1.0275216102600098 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3145108322 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406999945640564, + "length": 4.335000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6997441053390503, + "qx": 0.0015428307233378291, + "qy": -0.02369304932653904, + "qz": 0.7139989137649536 + }, + "translation": { + "x": -2.6056439876556396, + "y": -25.989395141601562, + "z": 1.0022097826004028 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.127000093460083 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 119018899 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.847000002861023, + "length": 4.826000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564595133066177, + "qy": -0.0022146105766296387, + "qz": 0.003534578485414386 + }, + "translation": { + "x": -18.575298309326172, + "y": -3.2158422470092773, + "z": 1.0728892087936401 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3559999465942383 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3491272702 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.819000005722046, + "length": 3.7939999103546143, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564595133066177, + "qy": -0.0022146105766296387, + "qz": 0.003534578485414386 + }, + "translation": { + "x": -25.770668029785156, + "y": -3.5501418113708496, + "z": 0.945705235004425 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1570000648498535 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 747976608 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.5960001945495605, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564595133066177, + "qy": -0.0022146105766296387, + "qz": 0.003534578485414386 + }, + "translation": { + "x": -14.831372261047363, + "y": 0.11060604453086853, + "z": 0.9652564525604248 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2841633901 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.625999927520752, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999473690986633, + "qx": 0.008583595044910908, + "qy": -0.002139786956831813, + "qz": -0.005191695410758257 + }, + "translation": { + "x": -30.47496223449707, + "y": 0.049759719520807266, + "z": 1.0288846492767334 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1079715147 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.99399995803833, + "length": 5.488999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998708963394165, + "qx": 0.005245571490377188, + "qy": 0.006288690958172083, + "qz": -0.013823890127241611 + }, + "translation": { + "x": 30.632139205932617, + "y": -4.090729236602783, + "z": 1.029844880104065 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.315999984741211 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 992655451 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.414999961853027, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998721480369568, + "qx": 0.005244653206318617, + "qy": 0.0062876371666789055, + "qz": -0.013735786080360413 + }, + "translation": { + "x": 39.323272705078125, + "y": -4.546152114868164, + "z": 0.8569769859313965 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0220000743865967 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 268570078 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5429999828338623, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 45.78541564941406, + "y": -4.808921813964844, + "z": 0.856701672077179 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4231537816 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.9859999418258667, + "length": 4.866000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 52.299320220947266, + "y": -5.028102874755859, + "z": 0.8433977961540222 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162731714 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 61.37385177612305, + "y": -5.477186679840088, + "z": 0.7953330278396606 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2222379123 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 71.81658935546875, + "y": -5.717584609985352, + "z": 1.3349149227142334 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3177185776 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406000018119812, + "length": 4.6479997634887695, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.0054945205338299274, + "qx": 0.014207448810338974, + "qy": 0.014993629418313503, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -38.01308822631836, + "y": 11.19865608215332, + "z": 0.8150584697723389 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.066999912261963 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4001353500 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.0054945205338299274, + "qx": 0.014207448810338974, + "qy": 0.014993629418313503, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -45.599422454833984, + "y": 15.117976188659668, + "z": 0.7831058502197266 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1626581097 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.5969998836517334, + "length": 5.738999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01195757370442152, + "qx": 0.014168201014399529, + "qy": 0.014821297489106655, + "qz": -0.9997182488441467 + }, + "translation": { + "x": -67.58230590820312, + "y": 14.986930847167969, + "z": 1.2559014558792114 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.4489998817443848 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3617468232 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.0054945205338299274, + "qx": 0.014207448810338974, + "qy": 0.014993629418313503, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -74.35547637939453, + "y": 11.18224811553955, + "z": 0.8320189714431763 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3164887200 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.0054945205338299274, + "qx": 0.014207448810338974, + "qy": 0.014993629418313503, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -125.45911407470703, + "y": 11.49560260772705, + "z": 0.8211444616317749 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2994241561 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.187999963760376, + "length": 8.08899974822998, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -2.420726013951935e-05, + "qx": 0.01419550459831953, + "qy": 0.014939626678824425, + "qz": -0.9997876286506653 + }, + "translation": { + "x": -161.8920440673828, + "y": 15.6991605758667, + "z": 1.3141313791275024 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2249005525 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8179999589920044, + "length": 4.640999794006348, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01257608737796545, + "qx": 0.026405639946460724, + "qy": 0.008295203559100628, + "qz": -0.9995377659797668 + }, + "translation": { + "x": -20.92115592956543, + "y": 11.183512687683105, + "z": 0.9294824600219727 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2362024192 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6649999618530273, + "length": 4.39300012588501, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.5558233261108398, + "qx": 0.01593649759888649, + "qy": -0.008074785582721233, + "qz": -0.8311084508895874 + }, + "translation": { + "x": -22.367019653320312, + "y": 25.19280242919922, + "z": 0.9473452568054199 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9880000352859497 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3250882079 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7239999771118164, + "length": 5.624000072479248, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010838230140507221, + "qx": 0.01865166611969471, + "qy": 0.00523355370387435, + "qz": -0.9997535943984985 + }, + "translation": { + "x": 3.9418351650238037, + "y": 14.412873268127441, + "z": 0.8714511394500732 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2249999046325684 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2463053674 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5169999599456787, + "length": 4.585000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01257608737796545, + "qx": 0.026405639946460724, + "qy": 0.008295203559100628, + "qz": -0.9995377659797668 + }, + "translation": { + "x": 7.13390588760376, + "y": 18.833009719848633, + "z": 0.6551408767700195 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2443944299 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.120999813079834, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02123277075588703, + "qx": 0.018242156133055687, + "qy": 0.008272736333310604, + "qz": -0.9995738863945007 + }, + "translation": { + "x": 28.055641174316406, + "y": 13.723761558532715, + "z": 1.0210009813308716 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1420477341 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8819999694824219, + "length": 5.263000011444092, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.011575972661376, + "qx": 0.011232109740376472, + "qy": 0.00849138293415308, + "qz": -0.999833881855011 + }, + "translation": { + "x": 48.07858657836914, + "y": 13.194551467895508, + "z": 1.058403730392456 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1559998989105225 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1426550613 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.252000093460083, + "length": 6.006999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.015065917745232582, + "qx": 0.011201667599380016, + "qy": 0.008466684259474277, + "qz": -0.9997879266738892 + }, + "translation": { + "x": 51.652183532714844, + "y": 16.695968627929688, + "z": 1.3990967273712158 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.5160000324249268 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2481576130 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.640000104904175, + "length": 22.937000274658203, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.021276455372571945, + "qx": 0.001740759122185409, + "qy": -0.0036477064713835716, + "qz": -0.9997654557228088 + }, + "translation": { + "x": 107.65674591064453, + "y": 18.07183265686035, + "z": 2.166459321975708 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.4560000896453857 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 781211998 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.9769999980926514, + "length": 11.10099983215332, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9989888072013855, + "qx": 0.00846774596720934, + "qy": -0.002560093766078353, + "qz": 0.044081032276153564 + }, + "translation": { + "x": -182.27044677734375, + "y": -7.771602153778076, + "z": 1.7347902059555054 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.803999900817871 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1380939260 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.27648457884788513, + "qx": 0.004469389095902443, + "qy": 0.007634222973138094, + "qz": -0.9609776139259338 + }, + "translation": { + "x": -57.564693450927734, + "y": -56.077659606933594, + "z": 0.5692194700241089 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 38389432 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7200000286102295, + "length": 4.577000141143799, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.27648457884788513, + "qx": 0.004469389095902443, + "qy": 0.007634222973138094, + "qz": -0.9609776139259338 + }, + "translation": { + "x": -57.85559844970703, + "y": -59.38932418823242, + "z": 0.35213926434516907 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0759999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1701922374 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7619999647140503, + "length": 4.556000232696533, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9997044801712036, + "qx": 0.008619632571935654, + "qy": -0.001989656826481223, + "qz": -0.02264239266514778 + }, + "translation": { + "x": 66.725830078125, + "y": 4.261465072631836, + "z": 1.3937667608261108 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2159555239 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.798999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998640418052673, + "qx": 0.008601941168308258, + "qy": -0.002064800588414073, + "qz": -0.013917574658989906 + }, + "translation": { + "x": 100.35958099365234, + "y": -10.243717193603516, + "z": 1.4770301580429077 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3221070520 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4830000400543213, + "length": 4.294000148773193, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.001368306577205658, + "qx": 0.010235670022666454, + "qy": 0.008580499328672886, + "qz": -0.9999098777770996 + }, + "translation": { + "x": -48.416744232177734, + "y": 21.514122009277344, + "z": 0.4754062592983246 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.875 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2725026509 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.75600004196167, + "length": 4.619999885559082, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7109454870223999, + "qx": 0.011548690497875214, + "qy": 0.01749182678759098, + "qz": -0.702934741973877 + }, + "translation": { + "x": -5.6692399978637695, + "y": -136.30567932128906, + "z": 1.7686764001846313 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1019999980926514 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4266191278 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7380000352859497, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -20.358076095581055, + "y": -50.44113540649414, + "z": 0.32935112714767456 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2952303680 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -20.281038284301758, + "y": -47.202606201171875, + "z": 0.39421936869621277 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4226593624 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8200000524520874, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -20.336933135986328, + "y": -53.62807846069336, + "z": 0.3108033835887909 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3737572489 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0829999446868896, + "length": 5.548999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724423885345459, + "qx": 0.0088453758507967, + "qy": -0.00012698174396064132, + "qz": -0.23297546803951263 + }, + "translation": { + "x": -20.235841751098633, + "y": -56.546714782714844, + "z": 0.3922204077243805 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2700115367 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.461999893188477, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058195471763611, + "qx": 0.0045034862123429775, + "qy": -0.007614158093929291, + "qz": 0.7083364725112915 + }, + "translation": { + "x": -5.448022842407227, + "y": 79.15742492675781, + "z": 1.7135485410690308 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 135457706 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.555999994277954, + "length": 5.735000133514404, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999729990959167, + "qx": 0.0015542650362476707, + "qy": 0.005332839675247669, + "qz": -0.004809586331248283 + }, + "translation": { + "x": 13.894196510314941, + "y": -7.184008598327637, + "z": 0.9316787719726562 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.36899995803833 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1329488856 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5449999570846558, + "length": 5.49399995803833, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02030095085501671, + "qx": 0.011155745945870876, + "qy": 0.008429440669715405, + "qz": -0.9996961355209351 + }, + "translation": { + "x": 50.35491943359375, + "y": 9.96828842163086, + "z": 1.035032868385315 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3450000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3783211353 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6799999475479126, + "length": 4.616000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": -1.1615052223205566, + "y": -3.1758768558502197, + "z": 0.6855854988098145 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2750000953674316 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2891454341 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.4170000553131104, + "length": 5.271999835968018, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.99995356798172, + "qx": 0.008563973940908909, + "qy": -0.0022170133888721466, + "qz": 0.0038151273038238287 + }, + "translation": { + "x": 5.988205432891846, + "y": -6.3297953605651855, + "z": 0.9267855882644653 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2009999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1837707302 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7580000162124634, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016381369205191731, + "qy": 0.005468863062560558, + "qz": -0.013534367084503174 + }, + "translation": { + "x": 33.07285690307617, + "y": -7.8138508796691895, + "z": 0.486592561006546 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0420000553131104 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1326176443 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5740000009536743, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254159450531006, + "qx": 0.004715349525213242, + "qy": -0.0074848029762506485, + "qz": 0.6882538795471191 + }, + "translation": { + "x": -14.782675743103027, + "y": 64.44328308105469, + "z": 1.6795048713684082 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2398204818 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6440000534057617, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254159450531006, + "qx": 0.004715349525213242, + "qy": -0.0074848029762506485, + "qz": 0.6882538795471191 + }, + "translation": { + "x": -15.427385330200195, + "y": 52.370426177978516, + "z": 1.6957130432128906 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2561427869 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0969998836517334, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.737488865852356, + "qx": 0.007320994045585394, + "qy": -0.010101432912051678, + "qz": 0.6752440333366394 + }, + "translation": { + "x": -45.098472595214844, + "y": 43.15536117553711, + "z": 1.1310235261917114 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2468979459 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.174999952316284, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752795577049255, + "qx": 0.004698280710726976, + "qy": 0.0023739247117191553, + "qz": -0.7375431060791016 + }, + "translation": { + "x": -47.81953811645508, + "y": 42.97793197631836, + "z": 1.175101637840271 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2286959183 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9202321171760559, + "qx": 0.014650632627308369, + "qy": 0.0071531496942043304, + "qz": -0.39103326201438904 + }, + "translation": { + "x": 101.29336547851562, + "y": 26.113798141479492, + "z": 1.3724087476730347 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 673396575 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.451000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058195471763611, + "qx": 0.0045034862123429775, + "qy": -0.007614158093929291, + "qz": 0.7083364725112915 + }, + "translation": { + "x": -0.34804847836494446, + "y": 79.36744689941406, + "z": 1.2893620729446411 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1365080015 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5759999752044678, + "length": 4.486999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058195471763611, + "qx": 0.0045034862123429775, + "qy": -0.007614158093929291, + "qz": 0.7083364725112915 + }, + "translation": { + "x": -8.667952537536621, + "y": 79.39171600341797, + "z": 1.627485752105713 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1187369618 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.510000228881836, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333227872848511, + "qx": 0.014485771767795086, + "qy": 0.007049803156405687, + "qz": -0.3586767613887787 + }, + "translation": { + "x": 104.7303237915039, + "y": 30.521188735961914, + "z": 1.4629979133605957 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1179469999 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.480000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333227872848511, + "qx": 0.014485771767795086, + "qy": 0.007049803156405687, + "qz": -0.3586767613887787 + }, + "translation": { + "x": 106.84355163574219, + "y": 32.87120056152344, + "z": 1.5125259160995483 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3656592464 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.5, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333227872848511, + "qx": 0.014485771767795086, + "qy": 0.007049803156405687, + "qz": -0.3586767613887787 + }, + "translation": { + "x": 108.81022644042969, + "y": 34.745548248291016, + "z": 1.553257703781128 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.009999990463257 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1348824365 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5420000553131104, + "length": 0.4909999966621399, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.714547872543335, + "qx": 0.0076536694541573524, + "qy": 0.0044360049068927765, + "qz": -0.6995306015014648 + }, + "translation": { + "x": 97.63323974609375, + "y": 21.123104095458984, + "z": 1.1198192834854126 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 0.546999990940094 + }, + "class_id": 0, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3195657140 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6699999570846558, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128903269767761, + "qx": 0.004579648375511169, + "qy": -0.007568594068288803, + "qz": 0.7012197375297546 + }, + "translation": { + "x": -11.772218704223633, + "y": -30.919179916381836, + "z": 0.40655604004859924 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1600076501 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128903269767761, + "qx": 0.004579648375511169, + "qy": -0.007568594068288803, + "qz": 0.7012197375297546 + }, + "translation": { + "x": -11.77536678314209, + "y": -43.66936111450195, + "z": 0.08190152049064636 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3693165868 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.27648457884788513, + "qx": 0.004469389095902443, + "qy": 0.007634222973138094, + "qz": -0.9609776139259338 + }, + "translation": { + "x": -75.16053771972656, + "y": -44.006935119628906, + "z": 0.3492593765258789 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3620744540 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.27648457884788513, + "qx": 0.004469389095902443, + "qy": 0.007634222973138094, + "qz": -0.9609776139259338 + }, + "translation": { + "x": -75.32412719726562, + "y": -41.469078063964844, + "z": 0.39206063747406006 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2569709928 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940999984741211, + "length": 5.190000057220459, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058195471763611, + "qx": 0.0045034862123429775, + "qy": -0.007614158093929291, + "qz": 0.7083364725112915 + }, + "translation": { + "x": -8.399495124816895, + "y": 66.85371398925781, + "z": 1.80873441696167 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.382999897003174 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1704132362 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + } + ], + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:58.203752Z" + } + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7730000019073486, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": -1.8706663846969604, + "y": -6.635148048400879, + "z": 0.6081750392913818 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0199999809265137 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 987620307 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.069999933242798, + "length": 5.48199987411499, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": 8.407818794250488, + "y": -3.2484829425811768, + "z": 0.8601639270782471 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3934200682 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3969999551773071, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": -6.213614463806152, + "y": 0.10451158881187439, + "z": 0.6087489724159241 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.055000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3303441164 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7339999675750732, + "length": 4.552999973297119, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": -8.617195129394531, + "y": -3.33479380607605, + "z": 0.7073053121566772 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.181999921798706 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 926775473 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6269999742507935, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7021677494049072, + "qx": 0.00446444982662797, + "qy": -0.007636628113687038, + "qz": 0.7119566202163696 + }, + "translation": { + "x": -30.9285945892334, + "y": 42.43520736694336, + "z": 0.6675134897232056 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3429999351501465 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4263263740 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8029999732971191, + "length": 4.767000198364258, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.5364875793457, + "y": -32.453983306884766, + "z": 0.637848973274231 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2218577133 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6490000486373901, + "length": 4.868000030517578, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.84245300292969, + "y": -35.47511291503906, + "z": 0.4716939628124237 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3095114869 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8250000476837158, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.54425811767578, + "y": -38.72166442871094, + "z": 0.6613687872886658 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2039999961853027 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2355452925 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7079999446868896, + "length": 4.754000186920166, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.273990631103516, + "y": -41.99915313720703, + "z": 0.5673468708992004 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1001235426 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7269999980926514, + "length": 4.715000152587891, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -45.92646026611328, + "y": -47.71681594848633, + "z": 0.41545283794403076 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 36237167 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6510000228881836, + "length": 4.7179999351501465, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -45.713470458984375, + "y": -44.791969299316406, + "z": 0.389521062374115 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2073239145 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5729999542236328, + "length": 4.573999881744385, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -45.81167984008789, + "y": -50.694339752197266, + "z": 0.4779188334941864 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4024251048 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8420000076293945, + "length": 4.633999824523926, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -45.57078552246094, + "y": -56.94308853149414, + "z": 0.7708914279937744 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1788680519 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8220000267028809, + "length": 4.692999839782715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -45.76115036010742, + "y": -53.696327209472656, + "z": 0.39966273307800293 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1953886780 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8609999418258667, + "length": 4.611999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281613349915, + "qx": 0.008845825679600239, + "qy": 2.7863035938935354e-05, + "qz": -0.24991187453269958 + }, + "translation": { + "x": -46.47669982910156, + "y": -59.56901168823242, + "z": 0.6008908748626709 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1095694435 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.843999981880188, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6896353960037231, + "qx": 0.004330492578446865, + "qy": -0.007713380269706249, + "qz": 0.7241027355194092 + }, + "translation": { + "x": -36.05917739868164, + "y": 43.35086441040039, + "z": 0.7698197364807129 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.203000068664551 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1020506225 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.180999994277954, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7195597290992737, + "qx": 0.007195663638412952, + "qy": -0.010159521363675594, + "qz": 0.694318950176239 + }, + "translation": { + "x": -38.67137145996094, + "y": 43.018001556396484, + "z": 1.036746621131897 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2359942993 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.197999954223633, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752792000770569, + "qx": 0.004697681404650211, + "qy": 0.0023740765172988176, + "qz": -0.7375434041023254 + }, + "translation": { + "x": -41.23874282836914, + "y": 43.22271728515625, + "z": 1.1040539741516113 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1451267456 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3589999675750732, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7374891638755798, + "qx": 0.00732114352285862, + "qy": -0.01010083593428135, + "qz": 0.6752437353134155 + }, + "translation": { + "x": -53.40175247192383, + "y": 43.20293045043945, + "z": 1.2696199417114258 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4210554413 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.183000087738037, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6943530440330505, + "qx": 0.004887716844677925, + "qy": 0.0021088537760078907, + "qz": -0.7196148633956909 + }, + "translation": { + "x": -37.98637771606445, + "y": 29.49955177307129, + "z": 0.5059018731117249 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 101581897 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.621000051498413, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.19311358034610748, + "qx": 0.021621014922857285, + "qy": 0.004674121737480164, + "qz": -0.980927050113678 + }, + "translation": { + "x": -8.339417457580566, + "y": 44.33382034301758, + "z": 1.234807014465332 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.871000051498413 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 328286980 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2101329118013382, + "qx": 0.009055662900209427, + "qy": 0.006965281441807747, + "qz": -0.9776060581207275 + }, + "translation": { + "x": -8.043013572692871, + "y": 47.3053092956543, + "z": 1.2600470781326294 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1672550325 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5149999856948853, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02705477736890316, + "qx": 0.04360844939947128, + "qy": 0.004349656403064728, + "qz": -0.9986728429794312 + }, + "translation": { + "x": 13.932573318481445, + "y": 21.622108459472656, + "z": 0.4846024513244629 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1070001125335693 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162860985 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.158999919891357, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2101329118013382, + "qx": 0.009055662900209427, + "qy": 0.006965281441807747, + "qz": -0.9776060581207275 + }, + "translation": { + "x": -7.237224102020264, + "y": 49.91799545288086, + "z": 1.2033480405807495 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2464875149 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.418000221252441, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.007936611771583557, + "qx": 0.03422561660408974, + "qy": 0.005652904510498047, + "qz": -0.9993666410446167 + }, + "translation": { + "x": 29.376724243164062, + "y": 21.348352432250977, + "z": 0.4953617453575134 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0490000247955322 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2675183418 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.472000002861023, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.017854999750852585, + "qx": 0.0013959403149783611, + "qy": 0.0054563493467867374, + "qz": -0.9998247027397156 + }, + "translation": { + "x": 48.729949951171875, + "y": 20.299245834350586, + "z": 0.8359529972076416 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9119999408721924 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1245564312 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4570000171661377, + "length": 4.229000091552734, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9943521022796631, + "qx": 0.008839761838316917, + "qy": 0.02235860377550125, + "qz": 0.10337258130311966 + }, + "translation": { + "x": 28.86884880065918, + "y": 33.0037841796875, + "z": 0.8680166602134705 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9470000267028809 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2978048694 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.531000018119812, + "length": 4.27400016784668, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855900406837463, + "qx": 0.005071243736892939, + "qy": -0.021294962614774704, + "qz": 0.16772912442684174 + }, + "translation": { + "x": 28.936519622802734, + "y": 38.450130462646484, + "z": 0.8586800694465637 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.8930000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1558880067 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3960000276565552, + "length": 4.416999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855900406837463, + "qx": 0.005071243736892939, + "qy": -0.021294962614774704, + "qz": 0.16772912442684174 + }, + "translation": { + "x": 29.11587142944336, + "y": 41.580047607421875, + "z": 0.8301166296005249 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9450000524520874 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 702855053 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.209000110626221, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855900406837463, + "qx": 0.005071243736892939, + "qy": -0.021294962614774704, + "qz": 0.16772912442684174 + }, + "translation": { + "x": 28.95819854736328, + "y": 44.246395111083984, + "z": 0.9311543107032776 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.937999963760376 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1036907190 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7450000047683716, + "length": 4.4070000648498535, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01804388500750065, + "qx": 0.017621025443077087, + "qy": 0.005166011396795511, + "qz": -0.999668538570404 + }, + "translation": { + "x": 55.94992446899414, + "y": 20.00279426574707, + "z": 1.075440764427185 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.061000108718872 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2990471596 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4670000076293945, + "length": 4.8379998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9916065335273743, + "qx": 0.0004825670039281249, + "qy": -0.0012333132326602936, + "qz": 0.1292855441570282 + }, + "translation": { + "x": 29.458635330200195, + "y": 27.529197692871094, + "z": 0.6597064137458801 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.878000020980835 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 848568023 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.017951449379324913, + "qx": 0.009630472399294376, + "qy": 0.005309178028255701, + "qz": -0.9997783899307251 + }, + "translation": { + "x": 67.24616241455078, + "y": 19.70291519165039, + "z": 1.0136252641677856 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2467117866 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998999238014221, + "qx": 0.012190090492367744, + "qy": 0.0052819205448031425, + "qz": -0.004866494331508875 + }, + "translation": { + "x": 20.961824417114258, + "y": -3.8864505290985107, + "z": 0.8150482177734375 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9079999923706055 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2959176039 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5490000247955322, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016378400614485145, + "qy": 0.0054694050922989845, + "qz": -0.013534817844629288 + }, + "translation": { + "x": 26.569625854492188, + "y": -7.529988765716553, + "z": 0.4740234315395355 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0339999198913574 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3310447420 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.909000039100647, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": 10.409364700317383, + "y": -0.006536040920764208, + "z": 1.0275099277496338 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3145108322 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406999945640564, + "length": 4.335000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6997348666191101, + "qx": 0.0027635267470031977, + "qy": -0.025412455201148987, + "qz": 0.713945209980011 + }, + "translation": { + "x": -2.6191487312316895, + "y": -25.460407257080078, + "z": 0.9942360520362854 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.127000093460083 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 119018899 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.847000002861023, + "length": 4.826000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564304560422897, + "qy": -0.002214066917076707, + "qz": 0.003534125629812479 + }, + "translation": { + "x": -18.573078155517578, + "y": -3.2155685424804688, + "z": 1.0729252099990845 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3559999465942383 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3491272702 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.819000005722046, + "length": 3.7939999103546143, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564304560422897, + "qy": -0.002214066917076707, + "qz": 0.003534125629812479 + }, + "translation": { + "x": -25.77066993713379, + "y": -3.550118923187256, + "z": 0.9457351565361023 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1570000648498535 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 747976608 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.5960001945495605, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564304560422897, + "qy": -0.002214066917076707, + "qz": 0.003534125629812479 + }, + "translation": { + "x": -14.831372261047363, + "y": 0.11061916500329971, + "z": 0.9652722477912903 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2841633901 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.625999927520752, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.999948263168335, + "qx": 0.008582940325140953, + "qy": -0.0021406859159469604, + "qz": -0.005024383310228586 + }, + "translation": { + "x": -30.06063461303711, + "y": 0.04464789107441902, + "z": 1.0306392908096313 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1079715147 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.99399995803833, + "length": 5.488999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998708963394165, + "qx": 0.005245274864137173, + "qy": 0.00628923112526536, + "qz": -0.01382434368133545 + }, + "translation": { + "x": 30.632137298583984, + "y": -4.090756893157959, + "z": 1.0298134088516235 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.315999984741211 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 992655451 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.414999961853027, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998721480369568, + "qx": 0.005244356580078602, + "qy": 0.0062881773337721825, + "qz": -0.01373623963445425 + }, + "translation": { + "x": 39.32326889038086, + "y": -4.546187877655029, + "z": 0.8569362759590149 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0220000743865967 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 268570078 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5429999828338623, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 45.78540802001953, + "y": -4.808963298797607, + "z": 0.8566541075706482 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4231537816 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.9859999418258667, + "length": 4.866000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 52.299312591552734, + "y": -5.0281500816345215, + "z": 0.843343198299408 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162731714 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 61.37439727783203, + "y": -5.478079319000244, + "z": 0.7952568531036377 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2222379123 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 71.89700317382812, + "y": -5.720041275024414, + "z": 1.3351496458053589 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3177185776 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406000018119812, + "length": 4.6479997634887695, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -39.56132888793945, + "y": 11.194963455200195, + "z": 0.8082664012908936 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.066999912261963 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4001353500 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -47.18912124633789, + "y": 15.099135398864746, + "z": 0.7758787870407104 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1626581097 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.5969998836517334, + "length": 5.738999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010213453322649002, + "qx": 0.014171781949698925, + "qy": 0.014838425442576408, + "qz": -0.9997373223304749 + }, + "translation": { + "x": -69.01954650878906, + "y": 14.98891544342041, + "z": 1.2497212886810303 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.4489998817443848 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3617468232 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -75.84442138671875, + "y": 11.171950340270996, + "z": 0.825411856174469 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3164887200 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -126.9056625366211, + "y": 11.480806350708008, + "z": 0.8147002458572388 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2994241561 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.187999963760376, + "length": 8.08899974822998, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.0002141483419109136, + "qx": 0.014194547198712826, + "qy": 0.014937466010451317, + "qz": -0.9997876286506653 + }, + "translation": { + "x": -162.917236328125, + "y": 15.695611000061035, + "z": 1.3227592706680298 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2249005525 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8179999589920044, + "length": 4.640999794006348, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.011704386211931705, + "qx": 0.026412852108478546, + "qy": 0.008314303122460842, + "qz": -0.9995480179786682 + }, + "translation": { + "x": -22.46918487548828, + "y": 11.208455085754395, + "z": 0.9341655969619751 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2362024192 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6649999618530273, + "length": 4.39300012588501, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.5558229684829712, + "qx": 0.015935877338051796, + "qy": -0.008074731566011906, + "qz": -0.8311087489128113 + }, + "translation": { + "x": -22.36699676513672, + "y": 25.192821502685547, + "z": 0.9473546743392944 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9880000352859497 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3250882079 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7239999771118164, + "length": 5.624000072479248, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010838676244020462, + "qx": 0.018651124089956284, + "qy": 0.005233247764408588, + "qz": -0.9997535943984985 + }, + "translation": { + "x": 2.662454605102539, + "y": 14.433924674987793, + "z": 0.8962152600288391 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2249999046325684 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2463053674 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5169999599456787, + "length": 4.585000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.011704386211931705, + "qx": 0.026412852108478546, + "qy": 0.008314303122460842, + "qz": -0.9995480179786682 + }, + "translation": { + "x": 5.711543560028076, + "y": 18.833599090576172, + "z": 0.6699221730232239 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2443944299 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.120999813079834, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.021226031705737114, + "qx": 0.017374126240611076, + "qy": 0.0082908496260643, + "qz": -0.9995893239974976 + }, + "translation": { + "x": 26.815780639648438, + "y": 13.774690628051758, + "z": 1.0124191045761108 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1420477341 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8819999694824219, + "length": 5.263000011444092, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.012448763474822044, + "qx": 0.011223973706364632, + "qy": 0.008484914898872375, + "qz": -0.9998235106468201 + }, + "translation": { + "x": 46.86628341674805, + "y": 13.225262641906738, + "z": 1.0485742092132568 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1559998989105225 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1426550613 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.252000093460083, + "length": 6.006999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.015066367574036121, + "qx": 0.011201129294931889, + "qy": 0.008466379716992378, + "qz": -0.9997879266738892 + }, + "translation": { + "x": 50.68640899658203, + "y": 16.72408103942871, + "z": 1.395294427871704 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.5160000324249268 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2481576130 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.640000104904175, + "length": 22.937000274658203, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02127690240740776, + "qx": 0.0017402170924469829, + "qy": -0.0036480107810348272, + "qz": -0.9997654557228088 + }, + "translation": { + "x": 107.50566101074219, + "y": 18.07809829711914, + "z": 2.1657798290252686 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.4560000896453857 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 781211998 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.9769999980926514, + "length": 11.10099983215332, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9989948868751526, + "qx": 0.008467831648886204, + "qy": -0.0025583647657185793, + "qz": 0.04394209757447243 + }, + "translation": { + "x": -182.2374267578125, + "y": -7.7689642906188965, + "z": 1.735180377960205 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.803999900817871 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1380939260 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764841318130493, + "qx": 0.004468786064535379, + "qy": 0.007634091190993786, + "qz": -0.9609777927398682 + }, + "translation": { + "x": -57.56474304199219, + "y": -56.07761001586914, + "z": 0.5693147778511047 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 38389432 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7200000286102295, + "length": 4.577000141143799, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764841318130493, + "qx": 0.004468786064535379, + "qy": 0.007634091190993786, + "qz": -0.9609777927398682 + }, + "translation": { + "x": -57.85565185546875, + "y": -59.38927459716797, + "z": 0.35223686695098877 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0759999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1701922374 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7619999647140503, + "length": 4.556000232696533, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9997044801712036, + "qx": 0.00861932709813118, + "qy": -0.001989120850339532, + "qz": -0.022642845287919044 + }, + "translation": { + "x": 66.72583770751953, + "y": 4.261404991149902, + "z": 1.393691062927246 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2159555239 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.798999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601641282439232, + "qy": -0.002064261818304658, + "qz": -0.01391802728176117 + }, + "translation": { + "x": 100.57363891601562, + "y": -10.249628067016602, + "z": 1.4777613878250122 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3221070520 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4830000400543213, + "length": 4.294000148773193, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.001367855933494866, + "qx": 0.010235127061605453, + "qy": 0.008580203168094158, + "qz": -0.9999098777770996 + }, + "translation": { + "x": -48.416725158691406, + "y": 21.5141658782959, + "z": 0.47544628381729126 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.875 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2725026509 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.75600004196167, + "length": 4.619999885559082, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7109451293945312, + "qx": 0.01154810655862093, + "qy": 0.017492005601525307, + "qz": -0.7029350399971008 + }, + "translation": { + "x": -5.661161422729492, + "y": -137.06007385253906, + "z": 1.755862832069397 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1019999980926514 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4266191278 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7380000352859497, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -20.358121871948242, + "y": -50.44111633300781, + "z": 0.32940250635147095 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2952303680 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -20.28108024597168, + "y": -47.20258712768555, + "z": 0.39426878094673157 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4226593624 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8200000524520874, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -20.33698081970215, + "y": -53.6280632019043, + "z": 0.3108566105365753 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3737572489 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0829999446868896, + "length": 5.548999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422693252563, + "qx": 0.00884496420621872, + "qy": -0.00012652215082198381, + "qz": -0.23297590017318726 + }, + "translation": { + "x": -20.23589324951172, + "y": -56.54669952392578, + "z": 0.39227524399757385 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2700115367 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.461999893188477, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.705819845199585, + "qx": 0.004503664094954729, + "qy": -0.0076135676354169846, + "qz": 0.7083361744880676 + }, + "translation": { + "x": -5.447950839996338, + "y": 79.15742492675781, + "z": 1.7135080099105835 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 135457706 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.555999994277954, + "length": 5.735000133514404, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999729990959167, + "qx": 0.001553972833789885, + "qy": 0.005333384033292532, + "qz": -0.004810037557035685 + }, + "translation": { + "x": 13.894190788269043, + "y": -7.18402099609375, + "z": 0.9316674470901489 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.36899995803833 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1329488856 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5449999570846558, + "length": 5.49399995803833, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.020301399752497673, + "qx": 0.011155208572745323, + "qy": 0.008429132401943207, + "qz": -0.9996961355209351 + }, + "translation": { + "x": 49.10829544067383, + "y": 10.011096000671387, + "z": 1.0332615375518799 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3450000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3783211353 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6799999475479126, + "length": 4.616000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": -1.1615082025527954, + "y": -3.1758763790130615, + "z": 0.6855882406234741 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2750000953674316 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2891454341 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.4170000553131104, + "length": 5.271999835968018, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.008563683368265629, + "qy": -0.002216469496488571, + "qz": 0.003814674448221922 + }, + "translation": { + "x": 5.988199710845947, + "y": -6.329801082611084, + "z": 0.9267823696136475 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2009999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1837707302 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7580000162124634, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016378400614485145, + "qy": 0.0054694050922989845, + "qz": -0.013534817844629288 + }, + "translation": { + "x": 33.07284927368164, + "y": -7.8138813972473145, + "z": 0.4865606427192688 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0420000553131104 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1326176443 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5740000009536743, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254163026809692, + "qx": 0.00471551064401865, + "qy": -0.007484207395464182, + "qz": 0.6882535815238953 + }, + "translation": { + "x": -14.78261661529541, + "y": 64.44329833984375, + "z": 1.6794830560684204 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2398204818 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6440000534057617, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254163026809692, + "qx": 0.00471551064401865, + "qy": -0.007484207395464182, + "qz": 0.6882535815238953 + }, + "translation": { + "x": -15.427336692810059, + "y": 52.37044143676758, + "z": 1.6956990957260132 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2561427869 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0969998836517334, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7374891638755798, + "qx": 0.00732114352285862, + "qy": -0.01010083593428135, + "qz": 0.6752437353134155 + }, + "translation": { + "x": -45.09843063354492, + "y": 43.155399322509766, + "z": 1.1310473680496216 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2468979459 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.174999952316284, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752792000770569, + "qx": 0.004697681404650211, + "qy": 0.0023740765172988176, + "qz": -0.7375434041023254 + }, + "translation": { + "x": -47.81949996948242, + "y": 42.97797393798828, + "z": 1.17512845993042 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2286959183 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9202319383621216, + "qx": 0.014650153927505016, + "qy": 0.007153531536459923, + "qz": -0.39103367924690247 + }, + "translation": { + "x": 101.29338836669922, + "y": 26.113706588745117, + "z": 1.3722825050354004 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 673396575 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.451000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.705819845199585, + "qx": 0.004503664094954729, + "qy": -0.0076135676354169846, + "qz": 0.7083361744880676 + }, + "translation": { + "x": -0.3479767143726349, + "y": 79.36744689941406, + "z": 1.2893157005310059 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1365080015 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5759999752044678, + "length": 4.486999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.705819845199585, + "qx": 0.004503664094954729, + "qy": -0.0076135676354169846, + "qz": 0.7083361744880676 + }, + "translation": { + "x": -8.667880058288574, + "y": 79.3917236328125, + "z": 1.6274484395980835 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1187369618 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.510000228881836, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333226084709167, + "qx": 0.014485307037830353, + "qy": 0.007050201762467623, + "qz": -0.3586772084236145 + }, + "translation": { + "x": 104.73035430908203, + "y": 30.521095275878906, + "z": 1.4628652334213257 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1179469999 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.480000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333226084709167, + "qx": 0.014485307037830353, + "qy": 0.007050201762467623, + "qz": -0.3586772084236145 + }, + "translation": { + "x": 106.84358215332031, + "y": 32.8711051940918, + "z": 1.5123896598815918 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3656592464 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.5, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9333226084709167, + "qx": 0.014485307037830353, + "qy": 0.007050201762467623, + "qz": -0.3586772084236145 + }, + "translation": { + "x": 108.81025695800781, + "y": 34.745452880859375, + "z": 1.553118109703064 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.009999990463257 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1348824365 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5420000553131104, + "length": 0.4909999966621399, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6326812505722046, + "qx": 0.007114709354937077, + "qy": 0.005256454460322857, + "qz": -0.774361789226532 + }, + "translation": { + "x": 97.64877319335938, + "y": 21.059091567993164, + "z": 1.1186715364456177 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 0.546999990940094 + }, + "class_id": 0, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3195657140 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6699999570846558, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128906846046448, + "qx": 0.004579820204526186, + "qy": -0.007568001747131348, + "qz": 0.701219379901886 + }, + "translation": { + "x": -11.772246360778809, + "y": -30.919170379638672, + "z": 0.4065866470336914 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1600076501 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128906846046448, + "qx": 0.004579820204526186, + "qy": -0.007568001747131348, + "qz": 0.701219379901886 + }, + "translation": { + "x": -11.775406837463379, + "y": -43.669349670410156, + "z": 0.08193957060575485 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3693165868 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764841318130493, + "qx": 0.004468786064535379, + "qy": 0.007634091190993786, + "qz": -0.9609777927398682 + }, + "translation": { + "x": -75.16057586669922, + "y": -44.006866455078125, + "z": 0.3493669331073761 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3620744540 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764841318130493, + "qx": 0.004468786064535379, + "qy": 0.007634091190993786, + "qz": -0.9609777927398682 + }, + "translation": { + "x": -75.32416534423828, + "y": -41.46901321411133, + "z": 0.3921668529510498 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2569709928 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940999984741211, + "length": 5.190000057220459, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.705819845199585, + "qx": 0.004503664094954729, + "qy": -0.0076135676354169846, + "qz": 0.7083361744880676 + }, + "translation": { + "x": -8.399434089660645, + "y": 66.85372161865234, + "z": 1.8087042570114136 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.382999897003174 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1704132362 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005494067445397377, + "qx": 0.014206906780600548, + "qy": 0.01499333418905735, + "qz": -0.9997715353965759 + }, + "translation": { + "x": -100.49188232421875, + "y": 11.051573753356934, + "z": 0.7156857252120972 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1101125771 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.968000054359436, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.0020525199361145496, + "qx": 0.01419046800583601, + "qy": 0.014919369481503963, + "qz": -0.9997859001159668 + }, + "translation": { + "x": -203.82940673828125, + "y": 8.274051666259766, + "z": 0.4157063066959381 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1428694652 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + } + ], + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:38:59.203480Z" + } + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.7730000019073486, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": -1.8706696033477783, + "y": -6.6351470947265625, + "z": 0.6081783771514893 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0199999809265137 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 987620307 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.069999933242798, + "length": 5.48199987411499, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": 8.407816886901855, + "y": -3.2484869956970215, + "z": 0.8601659536361694 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3934200682 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3969999551773071, + "length": 4.7769999504089355, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": -6.2136149406433105, + "y": 0.10451427847146988, + "z": 0.6087489128112793 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.055000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3303441164 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7339999675750732, + "length": 4.552999973297119, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": -8.617196083068848, + "y": -3.334789991378784, + "z": 0.7073069214820862 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.181999921798706 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 926775473 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6269999742507935, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7021678686141968, + "qx": 0.004464267287403345, + "qy": -0.007636466063559055, + "qz": 0.7119564414024353 + }, + "translation": { + "x": -30.92857551574707, + "y": 42.43522262573242, + "z": 0.667492151260376 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3429999351501465 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4263263740 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8029999732971191, + "length": 4.767000198364258, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.536502838134766, + "y": -32.45396041870117, + "z": 0.6378636360168457 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2218577133 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6490000486373901, + "length": 4.868000030517578, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.842472076416016, + "y": -35.47509002685547, + "z": 0.47171008586883545 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3095114869 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8250000476837158, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.544273376464844, + "y": -38.72164535522461, + "z": 0.6613864898681641 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2039999961853027 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2355452925 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7079999446868896, + "length": 4.754000186920166, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.274009704589844, + "y": -41.99913024902344, + "z": 0.5673661828041077 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1001235426 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7269999980926514, + "length": 4.715000152587891, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -45.92647933959961, + "y": -47.716796875, + "z": 0.41547492146492004 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 36237167 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6510000228881836, + "length": 4.7179999351501465, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -45.71349334716797, + "y": -44.79194641113281, + "z": 0.38954174518585205 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2073239145 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5729999542236328, + "length": 4.573999881744385, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -45.811702728271484, + "y": -50.69431686401367, + "z": 0.4779423773288727 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4024251048 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8420000076293945, + "length": 4.633999824523926, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -45.5708122253418, + "y": -56.94306564331055, + "z": 0.7709180116653442 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1788680519 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8220000267028809, + "length": 4.692999839782715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -45.76117706298828, + "y": -53.69630432128906, + "z": 0.3996877074241638 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1953886780 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8609999418258667, + "length": 4.611999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9682281017303467, + "qx": 0.00884559378027916, + "qy": 2.7786241844296455e-05, + "qz": -0.2499120980501175 + }, + "translation": { + "x": -46.47672653198242, + "y": -59.568992614746094, + "z": 0.6009186506271362 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0859999656677246 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1095694435 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.843999981880188, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6896355748176575, + "qx": 0.004330312833189964, + "qy": -0.007713215425610542, + "qz": 0.7241025567054749 + }, + "translation": { + "x": -36.05915832519531, + "y": 43.35087966918945, + "z": 0.7697978615760803 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.203000068664551 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1020506225 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.180999994277954, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.719559907913208, + "qx": 0.007195476442575455, + "qy": -0.010159363970160484, + "qz": 0.6943187713623047 + }, + "translation": { + "x": -38.671348571777344, + "y": 43.01801681518555, + "z": 1.0367248058319092 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2359942993 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.197999954223633, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752790808677673, + "qx": 0.004697528202086687, + "qy": 0.0023738862946629524, + "qz": -0.7375435829162598 + }, + "translation": { + "x": -41.23872375488281, + "y": 43.22273635864258, + "z": 1.1040319204330444 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1451267456 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3589999675750732, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7374893426895142, + "qx": 0.007320952136069536, + "qy": -0.010100684128701687, + "qz": 0.6752435564994812 + }, + "translation": { + "x": -53.4017333984375, + "y": 43.20295333862305, + "z": 1.2695975303649902 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4210554413 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.183000087738037, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6943528652191162, + "qx": 0.004887558985501528, + "qy": 0.0021086677443236113, + "qz": -0.7196149826049805 + }, + "translation": { + "x": -37.986366271972656, + "y": 29.499568939208984, + "z": 0.5058866143226624 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 101581897 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.621000051498413, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.1931138038635254, + "qx": 0.02162107639014721, + "qy": 0.0046738809905946255, + "qz": -0.9809269905090332 + }, + "translation": { + "x": -8.339396476745605, + "y": 44.333824157714844, + "z": 1.2347854375839233 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.871000051498413 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 328286980 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.310999870300293, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2101331353187561, + "qx": 0.0090557299554348, + "qy": 0.0069650448858737946, + "qz": -0.9776059985160828 + }, + "translation": { + "x": -8.04299259185791, + "y": 47.30531311035156, + "z": 1.260024070739746 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1672550325 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5149999856948853, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02705499716103077, + "qx": 0.043608471751213074, + "qy": 0.004349404014647007, + "qz": -0.9986728429794312 + }, + "translation": { + "x": 13.932583808898926, + "y": 21.622100830078125, + "z": 0.4845925569534302 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1070001125335693 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162860985 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.158999919891357, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2101331353187561, + "qx": 0.0090557299554348, + "qy": 0.0069650448858737946, + "qz": -0.9776059985160828 + }, + "translation": { + "x": -7.23720121383667, + "y": 49.917999267578125, + "z": 1.2033238410949707 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.7899999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2464875149 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.418000221252441, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.00793638825416565, + "qx": 0.03422562777996063, + "qy": 0.005652653519064188, + "qz": -0.9993666410446167 + }, + "translation": { + "x": 29.376733779907227, + "y": 21.348337173461914, + "z": 0.49535244703292847 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0490000247955322 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2675183418 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.472000002861023, + "length": 4.941999912261963, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01785523071885109, + "qx": 0.0013959603384137154, + "qy": 0.005456106271594763, + "qz": -0.9998247027397156 + }, + "translation": { + "x": 48.72996139526367, + "y": 20.299222946166992, + "z": 0.8359447121620178 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9119999408721924 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1245564312 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4570000171661377, + "length": 4.229000091552734, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9943521022796631, + "qx": 0.00883952435106039, + "qy": 0.022358613088726997, + "qz": 0.10337235033512115 + }, + "translation": { + "x": 28.868864059448242, + "y": 33.0037727355957, + "z": 0.8680016994476318 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9470000267028809 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2978048694 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.531000018119812, + "length": 4.27400016784668, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855901002883911, + "qx": 0.005070996470749378, + "qy": -0.021294936537742615, + "qz": 0.16772890090942383 + }, + "translation": { + "x": 28.93653678894043, + "y": 38.45011520385742, + "z": 0.8586624264717102 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.8930000066757202 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1558880067 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.3960000276565552, + "length": 4.416999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855901002883911, + "qx": 0.005070996470749378, + "qy": -0.021294936537742615, + "qz": 0.16772890090942383 + }, + "translation": { + "x": 29.115890502929688, + "y": 41.58003616333008, + "z": 0.830097496509552 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9450000524520874 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 702855053 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.209000110626221, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9855901002883911, + "qx": 0.005070996470749378, + "qy": -0.021294936537742615, + "qz": 0.16772890090942383 + }, + "translation": { + "x": 28.958219528198242, + "y": 44.24638366699219, + "z": 0.9311338663101196 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.937999963760376 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1036907190 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7450000047683716, + "length": 4.4070000648498535, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.018044112250208855, + "qx": 0.01762104593217373, + "qy": 0.005165764596313238, + "qz": -0.999668538570404 + }, + "translation": { + "x": 55.94993209838867, + "y": 20.00276756286621, + "z": 1.0754328966140747 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.061000108718872 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2990471596 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4670000076293945, + "length": 4.8379998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9916065335273743, + "qx": 0.0004823238414246589, + "qy": -0.0012332963524386287, + "qz": 0.1292853206396103 + }, + "translation": { + "x": 29.458648681640625, + "y": 27.52918243408203, + "z": 0.6596941351890564 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.878000020980835 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 848568023 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01795167848467827, + "qx": 0.009630492888391018, + "qy": 0.005308933090418577, + "qz": -0.9997783899307251 + }, + "translation": { + "x": 67.24617004394531, + "y": 19.702884674072266, + "z": 1.0136178731918335 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2467117866 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998999238014221, + "qx": 0.012189848348498344, + "qy": 0.00528190191835165, + "qz": -0.004866727162152529 + }, + "translation": { + "x": 20.961822509765625, + "y": -3.886460304260254, + "z": 0.8150508999824524 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9079999923706055 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2959176039 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5490000247955322, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016375984996557236, + "qy": 0.0054693869315087795, + "qz": -0.013535051606595516 + }, + "translation": { + "x": 26.569622039794922, + "y": -7.530001163482666, + "z": 0.4740280508995056 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0339999198913574 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3310447420 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.909000039100647, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": 10.409364700317383, + "y": -0.0065408628433942795, + "z": 1.027510404586792 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.253999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3145108322 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406999945640564, + "length": 4.335000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6997233629226685, + "qx": 0.003984305541962385, + "qy": -0.027132773771882057, + "qz": 0.7138873338699341 + }, + "translation": { + "x": -2.6326420307159424, + "y": -24.93141746520996, + "z": 0.9862568378448486 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.127000093460083 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 119018899 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.847000002861023, + "length": 4.826000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564060553908348, + "qy": -0.0022140825167298317, + "qz": 0.003533894196152687 + }, + "translation": { + "x": -18.5703125, + "y": -3.216139554977417, + "z": 1.072928547859192 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3559999465942383 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3491272702 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.819000005722046, + "length": 3.7939999103546143, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564060553908348, + "qy": -0.0022140825167298317, + "qz": 0.003533894196152687 + }, + "translation": { + "x": -25.770671844482422, + "y": -3.550107002258301, + "z": 0.9457363486289978 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1570000648498535 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 747976608 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.5960001945495605, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999546408653259, + "qx": 0.008564060553908348, + "qy": -0.0022140825167298317, + "qz": 0.003533894196152687 + }, + "translation": { + "x": -14.831372261047363, + "y": 0.11062602698802948, + "z": 0.9652720093727112 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2841633901 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7519999742507935, + "length": 4.625999927520752, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999490976333618, + "qx": 0.008582337759435177, + "qy": -0.002142143901437521, + "qz": -0.004856788087636232 + }, + "translation": { + "x": -29.646854400634766, + "y": 0.040359560400247574, + "z": 1.032372236251831 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.124000072479248 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1079715147 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.99399995803833, + "length": 5.488999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998708963394165, + "qx": 0.005245033651590347, + "qy": 0.00628921203315258, + "qz": -0.013824577443301678 + }, + "translation": { + "x": 30.63213539123535, + "y": -4.090771198272705, + "z": 1.0298165082931519 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.315999984741211 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 992655451 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6729999780654907, + "length": 4.414999961853027, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998721480369568, + "qx": 0.005244115367531776, + "qy": 0.006288158241659403, + "qz": -0.013736473396420479 + }, + "translation": { + "x": 39.323265075683594, + "y": -4.546205997467041, + "z": 0.8569398522377014 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0220000743865967 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 268570078 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5429999828338623, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 45.78540802001953, + "y": -4.808984279632568, + "z": 0.8566579818725586 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4231537816 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.9859999418258667, + "length": 4.866000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 52.299312591552734, + "y": -5.02817440032959, + "z": 0.8433473706245422 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3162731714 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 61.37522888183594, + "y": -5.477560520172119, + "z": 0.795274555683136 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2222379123 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.684000015258789, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 71.97686004638672, + "y": -5.721630096435547, + "z": 1.3354768753051758 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3177185776 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.406000018119812, + "length": 4.6479997634887695, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005493839271366596, + "qx": 0.014206923544406891, + "qy": 0.014993088319897652, + "qz": -0.9997715950012207 + }, + "translation": { + "x": -41.10957336425781, + "y": 11.191255569458008, + "z": 0.8014332056045532 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.066999912261963 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4001353500 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005493839271366596, + "qx": 0.014206923544406891, + "qy": 0.014993088319897652, + "qz": -0.9997715950012207 + }, + "translation": { + "x": -48.78021240234375, + "y": 15.080567359924316, + "z": 0.7686014771461487 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1626581097 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.5969998836517334, + "length": 5.738999843597412, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.008468437008559704, + "qx": 0.01417587697505951, + "qy": 0.014855572953820229, + "qz": -0.9997532963752747 + }, + "translation": { + "x": -70.45789337158203, + "y": 14.992546081542969, + "z": 1.2434909343719482 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.4489998817443848 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3617468232 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005493839271366596, + "qx": 0.014206923544406891, + "qy": 0.014993088319897652, + "qz": -0.9997715950012207 + }, + "translation": { + "x": -77.3342056274414, + "y": 11.1610746383667, + "z": 0.8187097907066345 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3164887200 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.005493839271366596, + "qx": 0.014206923544406891, + "qy": 0.014993088319897652, + "qz": -0.9997715950012207 + }, + "translation": { + "x": -128.35250854492188, + "y": 11.464573860168457, + "z": 0.8080918788909912 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2994241561 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.187999963760376, + "length": 8.08899974822998, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.00040393450763076544, + "qx": 0.014194146730005741, + "qy": 0.014935355633497238, + "qz": -0.9997876286506653 + }, + "translation": { + "x": -163.94187927246094, + "y": 15.691154479980469, + "z": 1.3311957120895386 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2249005525 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8179999589920044, + "length": 4.640999794006348, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010832135565578938, + "qx": 0.026420606300234795, + "qy": 0.008333465084433556, + "qz": -0.9995574951171875 + }, + "translation": { + "x": -24.01721954345703, + "y": 11.233389854431152, + "z": 0.9388267397880554 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2362024192 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6649999618530273, + "length": 4.39300012588501, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.5558227300643921, + "qx": 0.015935750678181648, + "qy": -0.008074944838881493, + "qz": -0.8311088681221008 + }, + "translation": { + "x": -22.366985321044922, + "y": 25.19283103942871, + "z": 0.9473419785499573 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9880000352859497 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3250882079 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7239999771118164, + "length": 5.624000072479248, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010838903486728668, + "qx": 0.018651142716407776, + "qy": 0.005233000498265028, + "qz": -0.9997535943984985 + }, + "translation": { + "x": 1.3822306394577026, + "y": 14.454431533813477, + "z": 0.9209727048873901 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2249999046325684 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2463053674 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5169999599456787, + "length": 4.585000038146973, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.010832135565578938, + "qx": 0.026420606300234795, + "qy": 0.008333465084433556, + "qz": -0.9995574951171875 + }, + "translation": { + "x": 4.287503242492676, + "y": 18.83311653137207, + "z": 0.6836879253387451 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2443944299 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7610000371932983, + "length": 5.120999813079834, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.021219052374362946, + "qx": 0.016506321728229523, + "qy": 0.00830902811139822, + "qz": -0.9996040463447571 + }, + "translation": { + "x": 25.574527740478516, + "y": 13.825922966003418, + "z": 1.0038694143295288 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2090001106262207 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1420477341 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8819999694824219, + "length": 5.263000011444092, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.013321644626557827, + "qx": 0.01121638622134924, + "qy": 0.0084784971550107, + "qz": -0.9998124241828918 + }, + "translation": { + "x": 45.652587890625, + "y": 13.25628662109375, + "z": 1.0387992858886719 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1559998989105225 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1426550613 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.252000093460083, + "length": 6.006999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.015066596679389477, + "qx": 0.01120114978402853, + "qy": 0.00846613384783268, + "qz": -0.9997879266738892 + }, + "translation": { + "x": 49.71979522705078, + "y": 16.751670837402344, + "z": 1.3915390968322754 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.5160000324249268 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2481576130 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.640000104904175, + "length": 22.937000274658203, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.021277133375406265, + "qx": 0.001740235835313797, + "qy": -0.003648253856226802, + "qz": -0.9997654557228088 + }, + "translation": { + "x": 107.35456848144531, + "y": 18.084407806396484, + "z": 2.1652233600616455 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.4560000896453857 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 781211998 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.9769999980926514, + "length": 11.10099983215332, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9990010261535645, + "qx": 0.008467942476272583, + "qy": -0.0025571961887180805, + "qz": 0.04380333423614502 + }, + "translation": { + "x": -182.2043914794922, + "y": -7.7664055824279785, + "z": 1.735365867614746 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.803999900817871 + }, + "class_id": 3, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1380939260 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764839231967926, + "qx": 0.0044687348417937756, + "qy": 0.007633852772414684, + "qz": -0.9609778523445129 + }, + "translation": { + "x": -57.56476974487305, + "y": -56.07758331298828, + "z": 0.5693405866622925 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 38389432 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7200000286102295, + "length": 4.577000141143799, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764839231967926, + "qx": 0.0044687348417937756, + "qy": 0.007633852772414684, + "qz": -0.9609778523445129 + }, + "translation": { + "x": -57.855682373046875, + "y": -59.38924789428711, + "z": 0.35226425528526306 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0759999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1701922374 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7619999647140503, + "length": 4.556000232696533, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9997044801712036, + "qx": 0.008619084022939205, + "qy": -0.0019891427364200354, + "qz": -0.0226430781185627 + }, + "translation": { + "x": 66.72583770751953, + "y": 4.261374473571777, + "z": 1.393691062927246 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2159555239 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8279999494552612, + "length": 4.798999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998639822006226, + "qx": 0.008601397275924683, + "qy": -0.0020642816089093685, + "qz": -0.013918259181082249 + }, + "translation": { + "x": 100.78824615478516, + "y": -10.256333351135254, + "z": 1.4785927534103394 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0910000801086426 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3221070520 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.4830000400543213, + "length": 4.294000148773193, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.001367626478895545, + "qx": 0.010235142894089222, + "qy": 0.008579958230257034, + "qz": -0.9999098777770996 + }, + "translation": { + "x": -48.416717529296875, + "y": 21.51418685913086, + "z": 0.47543466091156006 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.875 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2725026509 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.75600004196167, + "length": 4.619999885559082, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7109449505805969, + "qx": 0.011547948233783245, + "qy": 0.017491821199655533, + "qz": -0.7029352188110352 + }, + "translation": { + "x": -5.6524786949157715, + "y": -137.81529235839844, + "z": 1.7430189847946167 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.1019999980926514 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4266191278 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7380000352859497, + "length": 4.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -20.358144760131836, + "y": -50.44110870361328, + "z": 0.329426646232605 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2952303680 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -20.281103134155273, + "y": -47.202579498291016, + "z": 0.39429137110710144 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 4226593624 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.8200000524520874, + "length": 4.710999965667725, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -20.337005615234375, + "y": -53.6280517578125, + "z": 0.3108823001384735 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3737572489 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0829999446868896, + "length": 5.548999786376953, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9724422097206116, + "qx": 0.008844731375575066, + "qy": -0.0001265948812942952, + "qz": -0.23297612369060516 + }, + "translation": { + "x": -20.235919952392578, + "y": -56.546688079833984, + "z": 0.39230236411094666 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2200000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2700115367 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.461999893188477, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058200240135193, + "qx": 0.00450348062440753, + "qy": -0.007613406516611576, + "qz": 0.7083359956741333 + }, + "translation": { + "x": -5.447914123535156, + "y": 79.15743255615234, + "z": 1.7134695053100586 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 135457706 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.555999994277954, + "length": 5.735000133514404, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999729990959167, + "qx": 0.0015537311555817723, + "qy": 0.0053333682008087635, + "qz": -0.004810271319001913 + }, + "translation": { + "x": 13.894186973571777, + "y": -7.184027671813965, + "z": 0.9316715598106384 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.36899995803833 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1329488856 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5449999570846558, + "length": 5.49399995803833, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.02030162885785103, + "qx": 0.01115522999316454, + "qy": 0.008428887464106083, + "qz": -0.9996961355209351 + }, + "translation": { + "x": 47.862213134765625, + "y": 10.053091049194336, + "z": 1.0315361022949219 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.3450000286102295 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3783211353 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6799999475479126, + "length": 4.616000175476074, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": -1.1615098714828491, + "y": -3.1758759021759033, + "z": 0.6855899691581726 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2750000953674316 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2891454341 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.4170000553131104, + "length": 5.271999835968018, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999536275863647, + "qx": 0.00856343936175108, + "qy": -0.002216485096141696, + "qz": 0.00381444301456213 + }, + "translation": { + "x": 5.98819637298584, + "y": -6.329803943634033, + "z": 0.9267858266830444 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.2009999752044678 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1837707302 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7580000162124634, + "length": 4.208000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998921155929565, + "qx": 0.0016375984996557236, + "qy": 0.0054693869315087795, + "qz": -0.013535051606595516 + }, + "translation": { + "x": 33.072845458984375, + "y": -7.813896656036377, + "z": 0.48656561970710754 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0420000553131104 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1326176443 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5740000009536743, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254164218902588, + "qx": 0.004715322516858578, + "qy": -0.007484051864594221, + "qz": 0.6882534027099609 + }, + "translation": { + "x": -14.782587051391602, + "y": 64.44330596923828, + "z": 1.679451584815979 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2398204818 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6440000534057617, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7254164218902588, + "qx": 0.004715322516858578, + "qy": -0.007484051864594221, + "qz": 0.6882534027099609 + }, + "translation": { + "x": -15.427312850952148, + "y": 52.37044906616211, + "z": 1.6956733465194702 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0399999618530273 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2561427869 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0969998836517334, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7374893426895142, + "qx": 0.007320952136069536, + "qy": -0.010100684128701687, + "qz": 0.6752435564994812 + }, + "translation": { + "x": -45.098411560058594, + "y": 43.15542221069336, + "z": 1.1310251951217651 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2468979459 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.174999952316284, + "length": 5.3420000076293945, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6752790808677673, + "qx": 0.004697528202086687, + "qy": 0.0023738862946629524, + "qz": -0.7375435829162598 + }, + "translation": { + "x": -47.819480895996094, + "y": 42.977996826171875, + "z": 1.175106406211853 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.312000036239624 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2286959183 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.333000183105469, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9202318787574768, + "qx": 0.014649936929345131, + "qy": 0.007153420243412256, + "qz": -0.3910338878631592 + }, + "translation": { + "x": 101.29339599609375, + "y": 26.11366081237793, + "z": 1.3722729682922363 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 673396575 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.7280000448226929, + "length": 4.451000213623047, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058200240135193, + "qx": 0.00450348062440753, + "qy": -0.007613406516611576, + "qz": 0.7083359956741333 + }, + "translation": { + "x": -0.3479400873184204, + "y": 79.36744689941406, + "z": 1.2892773151397705 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1365080015 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5759999752044678, + "length": 4.486999988555908, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058200240135193, + "qx": 0.00450348062440753, + "qy": -0.007613406516611576, + "qz": 0.7083359956741333 + }, + "translation": { + "x": -8.66784381866455, + "y": 79.39173126220703, + "z": 1.627409815788269 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.059000015258789 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1187369618 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.510000228881836, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.933322548866272, + "qx": 0.014485086314380169, + "qy": 0.007050097920000553, + "qz": -0.3586774170398712 + }, + "translation": { + "x": 104.7303695678711, + "y": 30.521045684814453, + "z": 1.4628536701202393 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1179469999 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.480000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.933322548866272, + "qx": 0.014485086314380169, + "qy": 0.007050097920000553, + "qz": -0.3586774170398712 + }, + "translation": { + "x": 106.84359741210938, + "y": 32.871055603027344, + "z": 1.5123769044876099 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.996999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3656592464 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5329999923706055, + "length": 4.5, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.933322548866272, + "qx": 0.014485086314380169, + "qy": 0.007050097920000553, + "qz": -0.3586774170398712 + }, + "translation": { + "x": 108.81027221679688, + "y": 34.745399475097656, + "z": 1.5531045198440552 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.009999990463257 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1348824365 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.6699999570846558, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128908038139343, + "qx": 0.0045796348713338375, + "qy": -0.007567842490971088, + "qz": 0.7012192606925964 + }, + "translation": { + "x": -11.772260665893555, + "y": -30.919164657592773, + "z": 0.40660154819488525 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1600076501 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.781000018119812, + "length": 4.5370001792907715, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7128908038139343, + "qx": 0.0045796348713338375, + "qy": -0.007567842490971088, + "qz": 0.7012192606925964 + }, + "translation": { + "x": -11.77542781829834, + "y": -43.66934585571289, + "z": 0.08196067065000534 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.071000099182129 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3693165868 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764839231967926, + "qx": 0.0044687348417937756, + "qy": 0.007633852772414684, + "qz": -0.9609778523445129 + }, + "translation": { + "x": -75.16059875488281, + "y": -44.006832122802734, + "z": 0.3493863642215729 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3620744540 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.753999948501587, + "length": 4.484000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.2764839231967926, + "qx": 0.0044687348417937756, + "qy": 0.007633852772414684, + "qz": -0.9609778523445129 + }, + "translation": { + "x": -75.32418060302734, + "y": -41.46897506713867, + "z": 0.3921850621700287 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.003999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2569709928 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940999984741211, + "length": 5.190000057220459, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7058200240135193, + "qx": 0.00450348062440753, + "qy": -0.007613406516611576, + "qz": 0.7083359956741333 + }, + "translation": { + "x": -8.39940357208252, + "y": 66.85372161865234, + "z": 1.8086717128753662 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.382999897003174 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1704132362 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5709999799728394, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.004912052769213915, + "qx": 0.014205684885382652, + "qy": 0.014987416565418243, + "qz": -0.999774694442749 + }, + "translation": { + "x": -102.02786254882812, + "y": 11.054716110229492, + "z": 0.7090213894844055 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1101125771 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.968000054359436, + "length": 4.381999969482422, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.004961493890732527, + "qx": 0.014183935709297657, + "qy": 0.01489038672298193, + "qz": -0.9997761845588684 + }, + "translation": { + "x": -204.92942810058594, + "y": 8.271906852722168, + "z": 0.41085314750671387 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.9919999837875366 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1428694652 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2463-05-15T00:39:00.203574Z" + } + } + ], + "metadata": {} +} \ No newline at end of file diff --git a/tests/data/dgp/test_scene/scene_01/agents_5feabc42f5d25b85ae812e086a2811332a904d86.json b/tests/data/dgp/test_scene/scene_01/agents_5feabc42f5d25b85ae812e086a2811332a904d86.json new file mode 100644 index 00000000..bc878ed4 --- /dev/null +++ b/tests/data/dgp/test_scene/scene_01/agents_5feabc42f5d25b85ae812e086a2811332a904d86.json @@ -0,0 +1,16 @@ +{ + "agent_ontologies": { + "0": "16322f7584a52ca979ed1c7049f17a7e420e86b1", + "1": "16322f7584a52ca979ed1c7049f17a7e420e86b1" + }, + "agent_tracks_file": "agent/agent_tracks_74cc7118fa4133df27796123854c72619679ec5c.json", + "agents_slices_file": "agent/agents_slices_bdc20c991bac35c33d03c0780892c0ce5ad2cb4c.json", + "creation_date": "2021-10-20T19:23:56.004076Z", + "description": "", + "feature_ontologies": { + "5": "5db09fd03b2d9f74b7871c86d7c40cbaac85cc66" + }, + "log": "TRI_INTERNAL_LOG", + "metadata": {}, + "name": "" +} \ No newline at end of file diff --git a/tests/data/dgp/test_scene/scene_01/agents_f4087ed95eecd2f54d4dca1c7b9fb816fcf89756.json b/tests/data/dgp/test_scene/scene_01/agents_f4087ed95eecd2f54d4dca1c7b9fb816fcf89756.json new file mode 100644 index 00000000..08e40c10 --- /dev/null +++ b/tests/data/dgp/test_scene/scene_01/agents_f4087ed95eecd2f54d4dca1c7b9fb816fcf89756.json @@ -0,0 +1,16 @@ +{ + "agent_ontologies": { + "0": "16322f7584a52ca979ed1c7049f17a7e420e86b1", + "1": "16322f7584a52ca979ed1c7049f17a7e420e86b1" + }, + "agent_tracks_file": "agent/agent_tracks_74cc7118fa4133df27796123854c72619679ec5c.json", + "agents_slices_file": "agent/agents_slices_bdc20c991bac35c33d03c0780892c0ce5ad2cb4c.json", + "creation_date": "2021-10-20T19:24:08.496190Z", + "description": "", + "feature_ontologies": { + "5": "5db09fd03b2d9f74b7871c86d7c40cbaac85cc66" + }, + "log": "TRI_INTERNAL_LOG", + "metadata": {}, + "name": "" +} \ No newline at end of file diff --git a/tests/data/dgp/test_scene/scene_01/feature_ontology/5db09fd03b2d9f74b7871c86d7c40cbaac85cc66.json b/tests/data/dgp/test_scene/scene_01/feature_ontology/5db09fd03b2d9f74b7871c86d7c40cbaac85cc66.json new file mode 100644 index 00000000..d54e18d9 --- /dev/null +++ b/tests/data/dgp/test_scene/scene_01/feature_ontology/5db09fd03b2d9f74b7871c86d7c40cbaac85cc66.json @@ -0,0 +1,9 @@ +{ + "items": [ + { + "feature_value_type": 0, + "id": 0, + "name": "ParkedVehicleState" + } + ] +} \ No newline at end of file diff --git a/tests/data/dgp/test_scene/scene_02/agent/agent_tracks_ad845f5b13e2fbe37b8875bbcb4cc1b4c578e15d.json b/tests/data/dgp/test_scene/scene_02/agent/agent_tracks_ad845f5b13e2fbe37b8875bbcb4cc1b4c578e15d.json new file mode 100644 index 00000000..a73b2816 --- /dev/null +++ b/tests/data/dgp/test_scene/scene_02/agent/agent_tracks_ad845f5b13e2fbe37b8875bbcb4cc1b4c578e15d.json @@ -0,0 +1,1526 @@ +{ + "agent_tracks": [ + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.5350000858306885, + "length": 6.580999851226807, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9997594952583313, + "qx": -0.011796706356108189, + "qy": 0.006395071279257536, + "qz": -0.017344560474157333 + }, + "translation": { + "x": 81.65145111083984, + "y": -0.10194900631904602, + "z": 2.857138156890869 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.924999952316284 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 443946110 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.5350000858306885, + "length": 6.580999851226807, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998056292533875, + "qx": -0.007635264191776514, + "qy": 0.005473369266837835, + "qz": -0.01733178272843361 + }, + "translation": { + "x": 80.69873809814453, + "y": -0.1152145266532898, + "z": 2.9926724433898926 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.924999952316284 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 443946110 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.5350000858306885, + "length": 6.580999851226807, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.999833345413208, + "qx": -0.003184402361512184, + "qy": 0.004888547118753195, + "qz": -0.01729912869632244 + }, + "translation": { + "x": 79.73384857177734, + "y": -0.12787212431430817, + "z": 3.0728812217712402 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.924999952316284 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 443946110 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 1, + "instance_id": 443946110 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5260000228881836, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.017323970794677734, + "qx": -0.0064506432972848415, + "qy": -0.01500175055116415, + "qz": -0.999716579914093 + }, + "translation": { + "x": -140.21432495117188, + "y": 4.272097110748291, + "z": 4.621768951416016 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 497050057 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5260000228881836, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.017290623858571053, + "qx": -0.005602036137133837, + "qy": -0.015066085383296013, + "qz": -0.9997212886810303 + }, + "translation": { + "x": -142.98526000976562, + "y": 4.311714172363281, + "z": 4.408964157104492 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 497050057 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5260000228881836, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01724052242934704, + "qx": -0.005091377068310976, + "qy": -0.014926566742360592, + "qz": -0.9997270107269287 + }, + "translation": { + "x": -145.80316162109375, + "y": 4.347755432128906, + "z": 4.2897796630859375 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 497050057 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 497050057 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822822213172913, + "qx": 0.0006012872327119112, + "qy": -0.011873938143253326, + "qz": -0.18703001737594604 + }, + "translation": { + "x": 28.02912139892578, + "y": 59.38059997558594, + "z": 2.722515344619751 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 715214751 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822831749916077, + "qx": 0.000837550382129848, + "qy": -0.011056852526962757, + "qz": -0.18707425892353058 + }, + "translation": { + "x": 26.761804580688477, + "y": 59.383480072021484, + "z": 2.7588562965393066 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 715214751 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822781682014465, + "qx": 0.0008053065394051373, + "qy": -0.010529161430895329, + "qz": -0.18713133037090302 + }, + "translation": { + "x": 25.475019454956055, + "y": 59.385799407958984, + "z": 2.801143169403076 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 715214751 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 715214751 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.0480000972747803, + "length": 4.541999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998685717582703, + "qx": -0.007044895552098751, + "qy": 0.014414877630770206, + "qz": -0.0023325427900999784 + }, + "translation": { + "x": -21.85791015625, + "y": 0.11974173039197922, + "z": 1.067447304725647 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.503999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1545514913 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0480000972747803, + "length": 4.541999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999066591262817, + "qx": -0.009334825910627842, + "qy": 0.009737085551023483, + "qz": -0.0021829111501574516 + }, + "translation": { + "x": -21.707393646240234, + "y": 0.09756964445114136, + "z": 1.0177068710327148 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.503999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1545514913 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0480000972747803, + "length": 4.541999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999181032180786, + "qx": -0.011460283771157265, + "qy": 0.005315970163792372, + "qz": -0.0020359810441732407 + }, + "translation": { + "x": -21.547117233276367, + "y": 0.07429345697164536, + "z": 0.9850212931632996 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.503999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1545514913 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 1545514913 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.3429999351501465, + "length": 6.236000061035156, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7280698418617249, + "qx": -0.010058393701910973, + "qy": 0.00041911526932381094, + "qz": -0.685429036617279 + }, + "translation": { + "x": 17.649988174438477, + "y": -17.243568420410156, + "z": 1.7026660442352295 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.746999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1740587446 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3429999351501465, + "length": 6.236000061035156, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7281010746955872, + "qx": -0.009535321965813637, + "qy": -0.00025183489196933806, + "qz": -0.6854034066200256 + }, + "translation": { + "x": 16.39154052734375, + "y": -17.24181365966797, + "z": 1.7335023880004883 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.746999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1740587446 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3429999351501465, + "length": 6.236000061035156, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.728141188621521, + "qx": -0.009088844992220402, + "qy": -0.0005355176981538534, + "qz": -0.685366690158844 + }, + "translation": { + "x": 15.114571571350098, + "y": -17.240406036376953, + "z": 1.7450923919677734 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.746999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1740587446 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 1740587446 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.940000057220459, + "length": 4.276000022888184, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6445804238319397, + "qx": -0.014832522720098495, + "qy": -0.007172481622546911, + "qz": -0.7643589377403259 + }, + "translation": { + "x": -60.11799621582031, + "y": 79.25965881347656, + "z": 3.0702807903289795 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.906000018119812 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1793247213 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940000057220459, + "length": 4.276000022888184, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6446085572242737, + "qx": -0.014235686510801315, + "qy": -0.007779168430715799, + "qz": -0.7643406391143799 + }, + "translation": { + "x": -61.38762283325195, + "y": 79.2543716430664, + "z": 2.954207420349121 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.906000018119812 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1793247213 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940000057220459, + "length": 4.276000022888184, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6446499824523926, + "qx": -0.013759286142885685, + "qy": -0.008010011166334152, + "qz": -0.7643120288848877 + }, + "translation": { + "x": -62.67683410644531, + "y": 79.24658966064453, + "z": 2.9113972187042236 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.906000018119812 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1793247213 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 1793247213 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.0, + "length": 5.089000225067139, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.002845065202564001, + "qx": 0.003493674099445343, + "qy": -0.015094914473593235, + "qz": -0.9998759031295776 + }, + "translation": { + "x": -103.35440063476562, + "y": 3.8771679401397705, + "z": 2.8237102031707764 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.493000030517578 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1868710109 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0, + "length": 5.089000225067139, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.002811012091115117, + "qx": 0.004341276828199625, + "qy": -0.015171059407293797, + "qz": -0.999871551990509 + }, + "translation": { + "x": -106.2027816772461, + "y": 3.89918851852417, + "z": 2.6909754276275635 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.493000030517578 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1868710109 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0, + "length": 5.089000225067139, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.0027622622437775135, + "qx": 0.004853914491832256, + "qy": -0.01503837015479803, + "qz": -0.9998713135719299 + }, + "translation": { + "x": -109.10038757324219, + "y": 3.919095039367676, + "z": 2.6268694400787354 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.493000030517578 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1868710109 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 1868710109 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822822213172913, + "qx": 0.0006012872327119112, + "qy": -0.011873938143253326, + "qz": -0.18703001737594604 + }, + "translation": { + "x": 35.048004150390625, + "y": 55.269874572753906, + "z": 2.9020373821258545 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2110970748 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822831749916077, + "qx": 0.000837550382129848, + "qy": -0.011056852526962757, + "qz": -0.18707425892353058 + }, + "translation": { + "x": 33.78075408935547, + "y": 55.2734375, + "z": 2.9509127140045166 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2110970748 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822781682014465, + "qx": 0.0008053065394051373, + "qy": -0.010529161430895329, + "qz": -0.18713133037090302 + }, + "translation": { + "x": 32.494239807128906, + "y": 55.27650833129883, + "z": 2.9993131160736084 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2110970748 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 2110970748 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.5765007138252258, + "qx": -0.004395258147269487, + "qy": -0.026908650994300842, + "qz": -0.816641628742218 + }, + "translation": { + "x": 44.97602462768555, + "y": 76.19868469238281, + "z": 1.8284701108932495 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2556950328 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.5764856338500977, + "qx": -0.003657097229734063, + "qy": -0.02648497000336647, + "qz": -0.816669762134552 + }, + "translation": { + "x": 43.70863342285156, + "y": 76.2030029296875, + "z": 1.8908634185791016 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2556950328 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.5764520168304443, + "qx": -0.003312810556963086, + "qy": -0.026082899421453476, + "qz": -0.8167079091072083 + }, + "translation": { + "x": 42.420806884765625, + "y": 76.20748138427734, + "z": 1.9549179077148438 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2556950328 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 2556950328 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.5839999914169312, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9902671575546265, + "qx": -0.004616985563188791, + "qy": 0.0029828620608896017, + "qz": -0.1390710473060608 + }, + "translation": { + "x": 94.02996826171875, + "y": -2.3546626567840576, + "z": 2.526512384414673 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3215172593 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5839999914169312, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9874512553215027, + "qx": -0.005030833184719086, + "qy": 0.0016755644464865327, + "qz": -0.157834991812706 + }, + "translation": { + "x": 93.21247863769531, + "y": -2.521613121032715, + "z": 2.6894724369049072 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3215172593 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5839999914169312, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9842128753662109, + "qx": -0.005269888322800398, + "qy": 0.0007407291559502482, + "qz": -0.17690882086753845 + }, + "translation": { + "x": 92.37904357910156, + "y": -2.709527015686035, + "z": 2.79077410697937 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3215172593 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 3215172593 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.496999979019165, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.005534684285521507, + "qx": -0.0005146409384906292, + "qy": 0.009972890838980675, + "qz": -0.9999347925186157 + }, + "translation": { + "x": 70.5826644897461, + "y": 4.1860504150390625, + "z": 1.9342620372772217 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.117000102996826 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3357023490 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.496999979019165, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.005479747895151377, + "qx": 0.00033152970718219876, + "qy": 0.009802471846342087, + "qz": -0.9999368786811829 + }, + "translation": { + "x": 68.28878784179688, + "y": 4.205092430114746, + "z": 2.0040886402130127 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.117000102996826 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3357023490 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.496999979019165, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.005417759995907545, + "qx": 0.00084189313929528, + "qy": 0.00983800645917654, + "qz": -0.999936580657959 + }, + "translation": { + "x": 65.95511627197266, + "y": 4.225173473358154, + "z": 2.0243351459503174 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.117000102996826 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3357023490 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 3357023490 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 3.4040000438690186, + "length": 8.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.981942892074585, + "qx": 0.003150931093841791, + "qy": -0.01142834685742855, + "qz": -0.1888056844472885 + }, + "translation": { + "x": 24.85007095336914, + "y": 61.7719841003418, + "z": 3.457655668258667 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.2660000324249268 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3527146084 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.4040000438690186, + "length": 8.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9819431900978088, + "qx": 0.0033886495511978865, + "qy": -0.01061156950891018, + "qz": -0.18884776532649994 + }, + "translation": { + "x": 23.58129119873047, + "y": 61.77468490600586, + "z": 3.4882349967956543 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.2660000324249268 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3527146084 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.4040000438690186, + "length": 8.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9819381237030029, + "qx": 0.0033573326654732227, + "qy": -0.01008367445319891, + "qz": -0.18890346586704254 + }, + "translation": { + "x": 22.293487548828125, + "y": 61.776451110839844, + "z": 3.5278897285461426 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.2660000324249268 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3527146084 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 1, + "instance_id": 3527146084 + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2622801661491394, + "qx": -0.005982918199151754, + "qy": -0.028969936072826385, + "qz": -0.9645382761955261 + }, + "translation": { + "x": 26.36121940612793, + "y": 70.80889129638672, + "z": 3.3914413452148438 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3668932913 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2622601389884949, + "qx": -0.005144163500517607, + "qy": -0.02882404997944832, + "qz": -0.9645529389381409 + }, + "translation": { + "x": 25.09170913696289, + "y": 70.81172180175781, + "z": 3.423156261444092 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3668932913 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2622191309928894, + "qx": -0.004682827740907669, + "qy": -0.028563635423779488, + "qz": -0.9645741581916809 + }, + "translation": { + "x": 23.80293846130371, + "y": 70.81367492675781, + "z": 3.4667258262634277 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3668932913 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "class_id": 2, + "instance_id": 3668932913 + } + ], + "metadata": {} +} \ No newline at end of file diff --git a/tests/data/dgp/test_scene/scene_02/agent/agents_slices_f01f15764ab750a8f2d1b0cafd080714886d2a16.json b/tests/data/dgp/test_scene/scene_02/agent/agents_slices_f01f15764ab750a8f2d1b0cafd080714886d2a16.json new file mode 100644 index 00000000..7241f161 --- /dev/null +++ b/tests/data/dgp/test_scene/scene_02/agent/agents_slices_f01f15764ab750a8f2d1b0cafd080714886d2a16.json @@ -0,0 +1,1478 @@ +{ + "agents_slices": [ + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.5350000858306885, + "length": 6.580999851226807, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9997594952583313, + "qx": -0.011796706356108189, + "qy": 0.006395071279257536, + "qz": -0.017344560474157333 + }, + "translation": { + "x": 81.65145111083984, + "y": -0.10194900631904602, + "z": 2.857138156890869 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.924999952316284 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 443946110 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5260000228881836, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.017323970794677734, + "qx": -0.0064506432972848415, + "qy": -0.01500175055116415, + "qz": -0.999716579914093 + }, + "translation": { + "x": -140.21432495117188, + "y": 4.272097110748291, + "z": 4.621768951416016 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 497050057 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822822213172913, + "qx": 0.0006012872327119112, + "qy": -0.011873938143253326, + "qz": -0.18703001737594604 + }, + "translation": { + "x": 28.02912139892578, + "y": 59.38059997558594, + "z": 2.722515344619751 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 715214751 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0480000972747803, + "length": 4.541999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998685717582703, + "qx": -0.007044895552098751, + "qy": 0.014414877630770206, + "qz": -0.0023325427900999784 + }, + "translation": { + "x": -21.85791015625, + "y": 0.11974173039197922, + "z": 1.067447304725647 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.503999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1545514913 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3429999351501465, + "length": 6.236000061035156, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7280698418617249, + "qx": -0.010058393701910973, + "qy": 0.00041911526932381094, + "qz": -0.685429036617279 + }, + "translation": { + "x": 17.649988174438477, + "y": -17.243568420410156, + "z": 1.7026660442352295 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.746999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1740587446 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940000057220459, + "length": 4.276000022888184, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6445804238319397, + "qx": -0.014832522720098495, + "qy": -0.007172481622546911, + "qz": -0.7643589377403259 + }, + "translation": { + "x": -60.11799621582031, + "y": 79.25965881347656, + "z": 3.0702807903289795 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.906000018119812 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1793247213 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0, + "length": 5.089000225067139, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.002845065202564001, + "qx": 0.003493674099445343, + "qy": -0.015094914473593235, + "qz": -0.9998759031295776 + }, + "translation": { + "x": -103.35440063476562, + "y": 3.8771679401397705, + "z": 2.8237102031707764 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.493000030517578 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1868710109 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822822213172913, + "qx": 0.0006012872327119112, + "qy": -0.011873938143253326, + "qz": -0.18703001737594604 + }, + "translation": { + "x": 35.048004150390625, + "y": 55.269874572753906, + "z": 2.9020373821258545 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2110970748 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.5765007138252258, + "qx": -0.004395258147269487, + "qy": -0.026908650994300842, + "qz": -0.816641628742218 + }, + "translation": { + "x": 44.97602462768555, + "y": 76.19868469238281, + "z": 1.8284701108932495 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2556950328 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5839999914169312, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9902671575546265, + "qx": -0.004616985563188791, + "qy": 0.0029828620608896017, + "qz": -0.1390710473060608 + }, + "translation": { + "x": 94.02996826171875, + "y": -2.3546626567840576, + "z": 2.526512384414673 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3215172593 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.496999979019165, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.005534684285521507, + "qx": -0.0005146409384906292, + "qy": 0.009972890838980675, + "qz": -0.9999347925186157 + }, + "translation": { + "x": 70.5826644897461, + "y": 4.1860504150390625, + "z": 1.9342620372772217 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.117000102996826 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3357023490 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.4040000438690186, + "length": 8.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.981942892074585, + "qx": 0.003150931093841791, + "qy": -0.01142834685742855, + "qz": -0.1888056844472885 + }, + "translation": { + "x": 24.85007095336914, + "y": 61.7719841003418, + "z": 3.457655668258667 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.2660000324249268 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3527146084 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2622801661491394, + "qx": -0.005982918199151754, + "qy": -0.028969936072826385, + "qz": -0.9645382761955261 + }, + "translation": { + "x": 26.36121940612793, + "y": 70.80889129638672, + "z": 3.3914413452148438 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3668932913 + }, + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + } + ], + "slice_id": { + "index": "0", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:10.027900Z" + } + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.5350000858306885, + "length": 6.580999851226807, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9998056292533875, + "qx": -0.007635264191776514, + "qy": 0.005473369266837835, + "qz": -0.01733178272843361 + }, + "translation": { + "x": 80.69873809814453, + "y": -0.1152145266532898, + "z": 2.9926724433898926 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.924999952316284 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 443946110 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5260000228881836, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.017290623858571053, + "qx": -0.005602036137133837, + "qy": -0.015066085383296013, + "qz": -0.9997212886810303 + }, + "translation": { + "x": -142.98526000976562, + "y": 4.311714172363281, + "z": 4.408964157104492 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 497050057 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822831749916077, + "qx": 0.000837550382129848, + "qy": -0.011056852526962757, + "qz": -0.18707425892353058 + }, + "translation": { + "x": 26.761804580688477, + "y": 59.383480072021484, + "z": 2.7588562965393066 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 715214751 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0480000972747803, + "length": 4.541999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999066591262817, + "qx": -0.009334825910627842, + "qy": 0.009737085551023483, + "qz": -0.0021829111501574516 + }, + "translation": { + "x": -21.707393646240234, + "y": 0.09756964445114136, + "z": 1.0177068710327148 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.503999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1545514913 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3429999351501465, + "length": 6.236000061035156, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.7281010746955872, + "qx": -0.009535321965813637, + "qy": -0.00025183489196933806, + "qz": -0.6854034066200256 + }, + "translation": { + "x": 16.39154052734375, + "y": -17.24181365966797, + "z": 1.7335023880004883 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.746999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1740587446 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940000057220459, + "length": 4.276000022888184, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6446085572242737, + "qx": -0.014235686510801315, + "qy": -0.007779168430715799, + "qz": -0.7643406391143799 + }, + "translation": { + "x": -61.38762283325195, + "y": 79.2543716430664, + "z": 2.954207420349121 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.906000018119812 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1793247213 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0, + "length": 5.089000225067139, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.002811012091115117, + "qx": 0.004341276828199625, + "qy": -0.015171059407293797, + "qz": -0.999871551990509 + }, + "translation": { + "x": -106.2027816772461, + "y": 3.89918851852417, + "z": 2.6909754276275635 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.493000030517578 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1868710109 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822831749916077, + "qx": 0.000837550382129848, + "qy": -0.011056852526962757, + "qz": -0.18707425892353058 + }, + "translation": { + "x": 33.78075408935547, + "y": 55.2734375, + "z": 2.9509127140045166 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2110970748 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.5764856338500977, + "qx": -0.003657097229734063, + "qy": -0.02648497000336647, + "qz": -0.816669762134552 + }, + "translation": { + "x": 43.70863342285156, + "y": 76.2030029296875, + "z": 1.8908634185791016 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2556950328 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5839999914169312, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9874512553215027, + "qx": -0.005030833184719086, + "qy": 0.0016755644464865327, + "qz": -0.157834991812706 + }, + "translation": { + "x": 93.21247863769531, + "y": -2.521613121032715, + "z": 2.6894724369049072 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3215172593 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.496999979019165, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.005479747895151377, + "qx": 0.00033152970718219876, + "qy": 0.009802471846342087, + "qz": -0.9999368786811829 + }, + "translation": { + "x": 68.28878784179688, + "y": 4.205092430114746, + "z": 2.0040886402130127 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.117000102996826 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3357023490 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.4040000438690186, + "length": 8.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9819431900978088, + "qx": 0.0033886495511978865, + "qy": -0.01061156950891018, + "qz": -0.18884776532649994 + }, + "translation": { + "x": 23.58129119873047, + "y": 61.77468490600586, + "z": 3.4882349967956543 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.2660000324249268 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3527146084 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2622601389884949, + "qx": -0.005144163500517607, + "qy": -0.02882404997944832, + "qz": -0.9645529389381409 + }, + "translation": { + "x": 25.09170913696289, + "y": 70.81172180175781, + "z": 3.423156261444092 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3668932913 + }, + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + } + ], + "slice_id": { + "index": "1", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:11.018358Z" + } + }, + { + "agent_snapshots": [ + { + "agent_snapshot_3D": { + "box": { + "height": 2.5350000858306885, + "length": 6.580999851226807, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.999833345413208, + "qx": -0.003184402361512184, + "qy": 0.004888547118753195, + "qz": -0.01729912869632244 + }, + "translation": { + "x": 79.73384857177734, + "y": -0.12787212431430817, + "z": 3.0728812217712402 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.924999952316284 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 443946110 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5260000228881836, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.01724052242934704, + "qx": -0.005091377068310976, + "qy": -0.014926566742360592, + "qz": -0.9997270107269287 + }, + "translation": { + "x": -145.80316162109375, + "y": 4.347755432128906, + "z": 4.2897796630859375 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 497050057 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822781682014465, + "qx": 0.0008053065394051373, + "qy": -0.010529161430895329, + "qz": -0.18713133037090302 + }, + "translation": { + "x": 25.475019454956055, + "y": 59.385799407958984, + "z": 2.801143169403076 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 715214751 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0480000972747803, + "length": 4.541999816894531, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9999181032180786, + "qx": -0.011460283771157265, + "qy": 0.005315970163792372, + "qz": -0.0020359810441732407 + }, + "translation": { + "x": -21.547117233276367, + "y": 0.07429345697164536, + "z": 0.9850212931632996 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.503999948501587 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1545514913 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.3429999351501465, + "length": 6.236000061035156, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.728141188621521, + "qx": -0.009088844992220402, + "qy": -0.0005355176981538534, + "qz": -0.685366690158844 + }, + "translation": { + "x": 15.114571571350098, + "y": -17.240406036376953, + "z": 1.7450923919677734 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.746999979019165 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1740587446 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.940000057220459, + "length": 4.276000022888184, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.6446499824523926, + "qx": -0.013759286142885685, + "qy": -0.008010011166334152, + "qz": -0.7643120288848877 + }, + "translation": { + "x": -62.67683410644531, + "y": 79.24658966064453, + "z": 2.9113972187042236 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 1.906000018119812 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1793247213 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 2.0, + "length": 5.089000225067139, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.0027622622437775135, + "qx": 0.004853914491832256, + "qy": -0.01503837015479803, + "qz": -0.9998713135719299 + }, + "translation": { + "x": -109.10038757324219, + "y": 3.919095039367676, + "z": 2.6268694400787354 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.493000030517578 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 1868710109 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9822781682014465, + "qx": 0.0008053065394051373, + "qy": -0.010529161430895329, + "qz": -0.18713133037090302 + }, + "translation": { + "x": 32.494239807128906, + "y": 55.27650833129883, + "z": 2.9993131160736084 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2110970748 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.5764520168304443, + "qx": -0.003312810556963086, + "qy": -0.026082899421453476, + "qz": -0.8167079091072083 + }, + "translation": { + "x": 42.420806884765625, + "y": 76.20748138427734, + "z": 1.9549179077148438 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 2556950328 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.5839999914169312, + "length": 4.5879998207092285, + "occlusion": 0, + "pose": { + "rotation": { + "qw": 0.9842128753662109, + "qx": -0.005269888322800398, + "qy": 0.0007407291559502482, + "qz": -0.17690882086753845 + }, + "translation": { + "x": 92.37904357910156, + "y": -2.709527015686035, + "z": 2.79077410697937 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.0480000972747803 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3215172593 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.496999979019165, + "length": 4.433000087738037, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.005417759995907545, + "qx": 0.00084189313929528, + "qy": 0.00983800645917654, + "qz": -0.999936580657959 + }, + "translation": { + "x": 65.95511627197266, + "y": 4.225173473358154, + "z": 2.0243351459503174 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.117000102996826 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3357023490 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 3.4040000438690186, + "length": 8.859000205993652, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.9819381237030029, + "qx": 0.0033573326654732227, + "qy": -0.01008367445319891, + "qz": -0.18890346586704254 + }, + "translation": { + "x": 22.293487548828125, + "y": 61.776451110839844, + "z": 3.5278897285461426 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 3.2660000324249268 + }, + "class_id": 1, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3527146084 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + }, + { + "agent_snapshot_3D": { + "box": { + "height": 1.878000020980835, + "length": 4.605000019073486, + "occlusion": 0, + "pose": { + "rotation": { + "qw": -0.2622191309928894, + "qx": -0.004682827740907669, + "qy": -0.028563635423779488, + "qz": -0.9645741581916809 + }, + "translation": { + "x": 23.80293846130371, + "y": 70.81367492675781, + "z": 3.4667258262634277 + } + }, + "sample_idx": 0, + "truncation": 0.0, + "width": 2.119999885559082 + }, + "class_id": 2, + "feature_type": 5, + "features": [ + "dynamic" + ], + "instance_id": 3668932913 + }, + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "slice_id": { + "index": "2", + "log": "TRI_INTERNAL_LOG", + "name": "", + "timestamp": "2464-11-12T01:04:12.028828Z" + } + } + ], + "metadata": {} +} \ No newline at end of file diff --git a/tests/data/dgp/test_scene/scene_02/agents_197a8d328c89cb99f276847709425a8e86967350.json b/tests/data/dgp/test_scene/scene_02/agents_197a8d328c89cb99f276847709425a8e86967350.json new file mode 100644 index 00000000..98a505c4 --- /dev/null +++ b/tests/data/dgp/test_scene/scene_02/agents_197a8d328c89cb99f276847709425a8e86967350.json @@ -0,0 +1,16 @@ +{ + "agent_ontologies": { + "0": "16322f7584a52ca979ed1c7049f17a7e420e86b1", + "1": "16322f7584a52ca979ed1c7049f17a7e420e86b1" + }, + "agent_tracks_file": "agent/agent_tracks_ad845f5b13e2fbe37b8875bbcb4cc1b4c578e15d.json", + "agents_slices_file": "agent/agents_slices_f01f15764ab750a8f2d1b0cafd080714886d2a16.json", + "creation_date": "2021-10-20T19:24:08.993929Z", + "description": "", + "feature_ontologies": { + "5": "5db09fd03b2d9f74b7871c86d7c40cbaac85cc66" + }, + "log": "TRI_INTERNAL_LOG", + "metadata": {}, + "name": "" +} \ No newline at end of file diff --git a/tests/data/dgp/test_scene/scene_02/agents_b9dbdaca6d6785f1ead25d06aee6042dae500567.json b/tests/data/dgp/test_scene/scene_02/agents_b9dbdaca6d6785f1ead25d06aee6042dae500567.json new file mode 100644 index 00000000..3e93c83f --- /dev/null +++ b/tests/data/dgp/test_scene/scene_02/agents_b9dbdaca6d6785f1ead25d06aee6042dae500567.json @@ -0,0 +1,16 @@ +{ + "agent_ontologies": { + "0": "16322f7584a52ca979ed1c7049f17a7e420e86b1", + "1": "16322f7584a52ca979ed1c7049f17a7e420e86b1" + }, + "agent_tracks_file": "agent/agent_tracks_ad845f5b13e2fbe37b8875bbcb4cc1b4c578e15d.json", + "agents_slices_file": "agent/agents_slices_f01f15764ab750a8f2d1b0cafd080714886d2a16.json", + "creation_date": "2021-10-20T19:23:56.492027Z", + "description": "", + "feature_ontologies": { + "5": "5db09fd03b2d9f74b7871c86d7c40cbaac85cc66" + }, + "log": "TRI_INTERNAL_LOG", + "metadata": {}, + "name": "" +} \ No newline at end of file diff --git a/tests/data/dgp/test_scene/scene_02/feature_ontology/5db09fd03b2d9f74b7871c86d7c40cbaac85cc66.json b/tests/data/dgp/test_scene/scene_02/feature_ontology/5db09fd03b2d9f74b7871c86d7c40cbaac85cc66.json new file mode 100644 index 00000000..d54e18d9 --- /dev/null +++ b/tests/data/dgp/test_scene/scene_02/feature_ontology/5db09fd03b2d9f74b7871c86d7c40cbaac85cc66.json @@ -0,0 +1,9 @@ +{ + "items": [ + { + "feature_value_type": 0, + "id": 0, + "name": "ParkedVehicleState" + } + ] +} \ No newline at end of file From 16fc0be51c49584abe5fb30f2ead0afdb39324e8 Mon Sep 17 00:00:00 2001 From: visak kumar Date: Tue, 26 Oct 2021 09:05:53 -0700 Subject: [PATCH 4/7] fix: issues and requested changes --- dgp/__init__.py | 6 - dgp/constants.py | 2 +- dgp/datasets/agent_dataset.py | 2 - dgp/datasets/frame_dataset.py | 16 + dgp/datasets/prediction_dataset.py | 467 ------------------------ dgp/proto/agent.proto | 2 +- dgp/proto/annotations.proto | 4 +- dgp/proto/artifacts.proto | 1 + dgp/proto/dataset.proto | 4 +- dgp/proto/ontology.proto | 6 +- dgp/scripts/backfill_agents.py | 256 ------------- dgp/utils/protobuf.py | 1 + dgp/utils/structures/bounding_box_3d.py | 10 +- tests/test_agent_dataset.py | 32 ++ 14 files changed, 60 insertions(+), 749 deletions(-) delete mode 100644 dgp/datasets/prediction_dataset.py delete mode 100644 dgp/scripts/backfill_agents.py create mode 100644 tests/test_agent_dataset.py diff --git a/dgp/__init__.py b/dgp/__init__.py index e6001364..8d87c2e3 100644 --- a/dgp/__init__.py +++ b/dgp/__init__.py @@ -13,12 +13,6 @@ TRI_RAW_FOLDER_PREFIX = "raw/" TRI_DGP_JSON_PREFIX = "dataset_v" -TRI_DGP_S3_BUCKET = "tri-ml-datasets" -TRI_DGP_FOLDER_PREFIX = "dgp/" -TRI_RAW_FOLDER_PREFIX = "raw/" -TRI_DGP_S3_BUCKET_URL = "s3://{}/{}".format(TRI_DGP_S3_BUCKET, TRI_DGP_FOLDER_PREFIX) -TRI_RAW_S3_BUCKET_URL = "s3://{}/{}".format(TRI_DGP_S3_BUCKET, TRI_RAW_FOLDER_PREFIX) - # DGP Directory structure constants RGB_FOLDER = 'rgb' POINT_CLOUD_FOLDER = 'point_cloud' diff --git a/dgp/constants.py b/dgp/constants.py index 9d4ccfbd..1ee957ce 100644 --- a/dgp/constants.py +++ b/dgp/constants.py @@ -17,7 +17,7 @@ ALL_ANNOTATION_TYPES = tuple(ANNOTATION_KEY_TO_TYPE_ID.keys()) # Provide supported annotations for each type of datum -SUPPORTED_ANNOTATIONS_IN_DATUM = OrderedDict({ +DATUM_TYPE_TO_SUPPORTED_ANNOTATION_TYPE = OrderedDict({ 'image': [ 'bounding_box_2d', 'bounding_box_3d', 'semantic_segmentation_2d', 'instance_segmentation_2d', 'depth', 'surface_normals_2d', 'motion_vectors_2d', 'key_point_2d', 'key_line_2d', 'agent_behavior' diff --git a/dgp/datasets/agent_dataset.py b/dgp/datasets/agent_dataset.py index f67d9f7a..0e9a9069 100644 --- a/dgp/datasets/agent_dataset.py +++ b/dgp/datasets/agent_dataset.py @@ -3,7 +3,6 @@ import hashlib import itertools import logging -#import math import os import random import time @@ -14,7 +13,6 @@ import numpy as np from diskcache import Cache -#from ouroboros import OUROBOROS_CACHE_DIR from dgp import DGP_CACHE_DIR, FEATURE_ONTOLOGY_FOLDER, ONTOLOGY_FOLDER from dgp.agents import (AGENT_REGISTRY, AGENT_TYPE_TO_ANNOTATION_TYPE, ANNOTATION_TYPE_TO_AGENT_TYPE) from dgp.annotations import ONTOLOGY_REGISTRY diff --git a/dgp/datasets/frame_dataset.py b/dgp/datasets/frame_dataset.py index 882c732b..e15dc9b6 100644 --- a/dgp/datasets/frame_dataset.py +++ b/dgp/datasets/frame_dataset.py @@ -10,8 +10,24 @@ from functools import partial from multiprocessing import Pool, cpu_count +import numpy as np +import xarray as xr + +from dgp.constants import (ALL_ANNOTATION_TYPES, DATUM_TYPE_TO_SUPPORTED_ANNOTATION_TYPE) from dgp.datasets import BaseDataset, DatasetMetadata +SUPPORTED_ANNOTATIONS_TABLE = xr.DataArray( + np.zeros((len(DATUM_TYPE_TO_SUPPORTED_ANNOTATION_TYPE), len(ALL_ANNOTATION_TYPES)), dtype=np.bool), + dims=["datum_types", "annotations"], + coords={ + "datum_types": list(DATUM_TYPE_TO_SUPPORTED_ANNOTATION_TYPE), + "annotations": list(ALL_ANNOTATION_TYPES) + } +) +for datum_type_, annotations_ in DATUM_TYPE_TO_SUPPORTED_ANNOTATION_TYPE.items(): + for annotation_ in annotations_: + SUPPORTED_ANNOTATIONS_TABLE.loc[datum_type_, annotations_] = True + class _FrameDataset(BaseDataset): """Single frame dataset. diff --git a/dgp/datasets/prediction_dataset.py b/dgp/datasets/prediction_dataset.py deleted file mode 100644 index dadc4645..00000000 --- a/dgp/datasets/prediction_dataset.py +++ /dev/null @@ -1,467 +0,0 @@ -# Copyright 2020 Toyota Research Institute. All rights reserved. -import copy -import itertools -import logging -#import math -import os -import time -from collections import defaultdict -from multiprocessing import Pool, cpu_count - -import numpy as np - -from dgp.annotations import ANNOTATION_REGISTRY -from dgp.constants import ANNOTATION_KEY_TO_TYPE_ID -from dgp.datasets.base_dataset import (BaseDataset, DatasetMetadata, SceneContainer) -from dgp.datasets.synchronized_dataset import SynchronizedSceneDataset -from dgp.proto.scene_pb2 import Scene as ScenePb2 -from dgp.utils.protobuf import open_pbobject - - -class ResampledSceneContainer(SceneContainer): - """Object-oriented container for assembling datasets from collections of scenes. - Each scene is resampled from a scene described within a sub-directory with an associated - scene.json file, by a given sampling rate. - """ - def __init__( - self, - scene_path, - directory=None, - autolabeled_scenes=None, - is_datums_synchronized=False, - use_diskcache=True, - sampling_rate=1.0 - ): - """Initialize a scene with a scene object and optionally provide the - directory containing the scene.json to gather additional information - for directory-based dataset loading mode. - - Parameters - ---------- - scene_path: str - Path to the Scene object containing data samples. - - directory: str, default: None - Optional directory containing scene_.json. - - autolabeled_scenes: dict, default: None - Dictionary mapping (defined as:`autolabel_model`/`annotation_key`) to autolabeled SceneContainer. - - is_datums_synchronized: bool, default: False - If True, sample-level synchronization is required i.e. each sample must contain all datums specified in the requested - `datum_names`, and all samples in this scene must contain the same number of datums. - If False, sample-level synchronization is not required i.e. samples are allowed to have different sets of datums. - - use_diskcache: bool, default: True - If True, cache ScenePb2 object using diskcache. If False, save the object in memory. - NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of scenes. - - sampling_rate: float, default: 1.0 - - """ - super().__init__( - scene_path=scene_path, - directory=directory, - autolabeled_scenes=autolabeled_scenes, - is_datums_synchronized=is_datums_synchronized, - use_diskcache=use_diskcache - ) - self.sampling_rate = sampling_rate - - @property - def scene(self): - """ Returns scene. - - If self.use_diskcache is True: returns the cached `_scene` if available, otherwise load the - scene and cache it. - - If self.use_diskcache is False: returns `_scene` in memory if the instance has attribute - `_scene`, otherwise load the scene and save it in memory. - NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of scenes. - """ - if self.use_diskcache: - cached_path = self.scene_path if self.sampling_rate == 1.0 \ - else os.path.join(self.scene_path, f'{self.sampling_rate:.3f}') - if cached_path in SceneContainer.SCENE_CACHE: - _scene = SceneContainer.SCENE_CACHE.get(cached_path) - if _scene is not None: - return _scene - _scene = self.resample_scene(open_pbobject(self.scene_path, ScenePb2)) - SceneContainer.SCENE_CACHE.add(cached_path, _scene) - return _scene - else: - if self._scene is None: - self._scene = self.resample_scene(open_pbobject(self.scene_path, ScenePb2)) - return self._scene - - def resample_scene(self, scene): - """Resample the scene based on given sampling rate. - - Parameters - ---------- - scene: scene_pb2.Scene - scene protobuf data with original sampling rate. - - Returns - ------- - resampled_scene: scene_pb2.Scene - scene protobuf data with giving sampling rate. - """ - resampled_indices = np.linspace(0, len(scene.samples) - 1, int(len(scene.samples) * self.sampling_rate)) - resampled_indices = resampled_indices.astype(np.int32).tolist() - resampled_scene = copy.deepcopy(scene) - resampled_scene.ClearField('samples') - resampled_scene.ClearField('data') - datum_per_sample = len(scene.data) // len(scene.samples) - for r_idx in resampled_indices: - resampled_scene.samples.append(scene.samples[r_idx]) - for d_idx in range(datum_per_sample): - resampled_scene.data.append(scene.data[r_idx * datum_per_sample + d_idx]) - return resampled_scene - - -class PredictionAgentDataset(BaseDataset): - """Dataset for agent-centric prediction use cases, works just like normal SynchronizedSceneDataset, - but guaranteeing trajectory of main agent is present in any fetched sample. - - Parameters - ---------- - scene_dataset_json: str - Full path to the scene dataset json holding collections of paths to scene json. - - split: str, default: 'train' - Split of dataset to read ("train" | "val" | "test" | "train_overfit"). - - datum_names: list, default: None - Select list of datum names for synchronization (see self.select_datums(datum_names)). - - requested_annotations: tuple, default: None - Tuple of annotation types, i.e. ('bounding_box_2d', 'bounding_box_3d'). Should be equivalent - to directory containing annotation from dataset root. - - requested_main_agent_types: tuple, default: 'car' - Tuple of main agent types, i.e. ('car', 'pedestrian'). - The string should be the same as dataset_metadata.ontology_table. - - requested_main_agent_attributes: tuple[str], default: None - Tuple of main agent attributes, i.e. ('moving', 'stopped'). This is predefined per dataset. - By default (None) will include all attributes. - - requested_autolabels: tuple[str], default: None - Currently not supported. - - forward_context: int, default: 0 - Forward context in frames [T+1, ..., T+forward] - - backward_context: int, default: 0 - Backward context in frames [T-backward, ..., T-1] - - min_main_agent_forward: int, default: 0 - Minimum forward samples for main agent. The main-agent will be guaranteed to appear - minimum samples in forward context; i.e., the main-agent will appear in number of - [min_main_agent_forward, forward_context] samples in forward direction. - - min_main_agent_backward: int, default: 0 - Minimum backward samples for main agent. The main-agent will be guaranteed to appear - minimum samples in backward context; i.e., the main-agent will appear in number of - [min_main_agent_backward, backward_context] samples in backward direction. - - generate_depth_from_datum: str, default: None - Datum name of the point cloud. If is not None, then the depth map will be generated for the camera using - the desired point cloud. - - use_3d_trajectories: bool, default: True - Use 3D trajectories (from bounding_box_3d) as main reference of agents. - This requires camera datum with bounding_box_3d annotations. - - batch_per_agent: bool, default: False - Include whole trajectory of an agent in each batch Fetch, this is designed to be used for inference. - If True, backward_context = forward_context = 0 implicitly. - - fps: float, default: -1 - Frame per second during data fetch. -1 means use original fps. - """ - ATTRIBUTE_NAME = 'behavior' - - def __init__( - self, - dataset_json, - split='train', - datum_names=None, - requested_annotations=('bounding_box_3d', ), - requested_main_agent_types=('car', ), - requested_main_agent_attributes=None, - requested_autolabels=None, - forward_context=0, - backward_context=0, - min_main_agent_forward=0, - min_main_agent_backward=0, - generate_depth_from_datum=None, - use_3d_trajectories=True, - batch_per_agent=False, - fps=-1 - ): - self.generate_depth_from_datum = generate_depth_from_datum - self.use_3d_trajectories = use_3d_trajectories - assert len(datum_names) - self.trajectories_reference = 'lidar' if any(['lidar' in datum_name.lower() \ - for datum_name in datum_names]) else datum_names[0].lower() - self.use_3d_trajectories = use_3d_trajectories or self.trajectories_reference == 'lidar' - self.annotation_reference = 'bounding_box_3d' if self.use_3d_trajectories else 'bounding_box_2d' - assert self.annotation_reference in requested_annotations - assert min_main_agent_backward <= backward_context and \ - min_main_agent_forward <= forward_context, 'Provide valid minimum context for main agent.' - if batch_per_agent: # fetch frame-by-frame for agent - backward_context = forward_context = 0 - SynchronizedSceneDataset.set_context(self, backward=backward_context, forward=forward_context) - self.min_main_agent_forward = min_main_agent_forward if min_main_agent_forward else forward_context - self.min_main_agent_backward = min_main_agent_backward if min_main_agent_forward else backward_context - - # Extract all scenes from the scene dataset JSON for the appropriate split - scenes = BaseDataset._extract_scenes_from_scene_dataset_json( - dataset_json, split=split, requested_autolabels=requested_autolabels, is_datums_synchronized=True - ) - metadata = BaseDataset._extract_metadata_from_scene_dataset_json(dataset_json) - - # Return SynchronizedDataset with scenes built from dataset.json - dataset_metadata = DatasetMetadata.from_scene_containers(scenes, requested_annotations, requested_autolabels) - name_to_id = dataset_metadata.ontology_table[self.annotation_reference].name_to_id - self.requested_main_agent_types = tuple([name_to_id[atype] + 1 for atype in requested_main_agent_types]) - self.requested_main_agent_attributes = requested_main_agent_attributes - - # Resample scenes based on given fps - self.sampling_rate = fps / metadata.frame_per_second if fps != -1 and metadata.frame_per_second else 1.0 - assert self.sampling_rate <= 1, f"Support lower fps only (current is {metadata.frame_per_second:.2f} fps)." - resampled_scenes = [] - for scene in scenes: - resampled_scene = ResampledSceneContainer( - scene_path=scene.scene_path, - directory=scene.directory, - autolabeled_scenes=scene.autolabeled_scenes, - is_datums_synchronized=scene.is_datums_synchronized, - use_diskcache=scene.use_diskcache, - sampling_rate=self.sampling_rate - ) - resampled_scenes.append(resampled_scene) - - super().__init__( - dataset_metadata, - scenes=resampled_scenes, - datum_names=datum_names, - requested_annotations=requested_annotations - ) - - # Record each agent's life time - self.batch_per_agent = batch_per_agent - if batch_per_agent: - self.dataset_agent_index = defaultdict(list) - for index in range(len(self.dataset_item_index)): - scene_idx, sample_idx_in_scene, main_agent_info, datum_names = self.dataset_item_index[index] - _, main_agent_id = main_agent_info - # Find the range of agents' trajectories - if main_agent_id not in self.dataset_agent_index: - self.dataset_agent_index[main_agent_id] = [-1, -1, float('inf'), -1, []] - self.dataset_agent_index[main_agent_id] = [ - main_agent_id, - scene_idx, - min(sample_idx_in_scene, self.dataset_agent_index[main_agent_id][2]), # birth sample index - max(sample_idx_in_scene, self.dataset_agent_index[main_agent_id][3]), # death sample item index - datum_names - ] - self.dataset_agent_index = [v for k, v in self.dataset_agent_index.items()] - - def _build_item_index(self): - """Builds an index of dataset items that refer to the scene index, agent index, - sample index and datum_within_scene index. This refers to a particular dataset - split. __getitem__ indexes into this look up table. - - Synchronizes at the sample-level and only adds sample indices if context frames are available. - This is enforced by adding sample indices that fall in (bacwkard_context, N-forward_context) range. - - Returns - ------- - item_index: list - List of dataset items that contain index into - (scene_idx, sample_idx_in_scene, (main_agent_idx, main_agent_id), [datum_name ...]). - """ - logging.info(f'Building index for {self.__class__.__name__}, this will take a while.') - st = time.time() - # Fetch the item index per scene based on the selected datums. - with Pool(cpu_count()) as proc: - item_index = proc.starmap( - self._item_index_for_scene, [(scene_idx, ) for scene_idx in range(len(self.scenes))] - ) - logging.info(f'Index built in {time.time() - st:.2f}s.') - assert len(item_index) > 0, 'Failed to index items in the dataset.' - # Chain the index across all scenes. - item_index = list(itertools.chain.from_iterable(item_index)) - # Filter out indices that failed to load. - item_index = [item for item in item_index if item is not None] - item_lengths = [len(item_tup) for item_tup in item_index] - assert all([l == item_lengths[0] for l in item_lengths] - ), ('All sample items are not of the same length, datum names might be missing.') - return item_index - - def _item_index_for_scene(self, scene_idx): - scene = self.scenes[scene_idx] - instance_id_to_trajectory = defaultdict(list) - instance_id_to_segment_idx = defaultdict(int) - # Decide main trajectories reference. - # There are 3 cases to decide referenced annotation for trajectories: - # 1. LIDAR only: bounding_box_3d as reference. - # 2. CAMERA only: bounding_box_3d if use_3d_trajectories else bounding_box_2d. - # 3. LIDAR + CAMERA: bounding_box_3d (from LIDAR) as reference. - reference_datums = [datum_name for datum_name in scene.selected_datums \ - if self.trajectories_reference in datum_name] - - # Only add to index if datum-name exists. - if len(reference_datums) == 0: - logging.debug('Skipping scene {} due to missing datums'.format(scene)) - return [] - - # Define a safe sample range given desired context - sample_range = np.arange(0, len(scene.datum_index)) - annotated_samples = scene.annotation_index[scene.datum_index[sample_range]].any(axis=(1, 2)) - for sample_idx_in_scene, is_annotated in zip(sample_range, annotated_samples): - if not is_annotated: - continue - else: - for datum_name in reference_datums: - datum = self.get_datum(scene_idx, sample_idx_in_scene, datum_name) - annotation_key = self.annotation_reference - annotations = self.get_annotations(datum) - annotation_file = os.path.join( - self.scenes[scene_idx].directory, annotations[ANNOTATION_KEY_TO_TYPE_ID[annotation_key]] - ) - bboxes_list = ANNOTATION_REGISTRY[annotation_key].load( - annotation_file, self.dataset_metadata.ontology_table[annotation_key] - ) - for agent_idx, bbox in enumerate(bboxes_list): - # Filter undesired agent types and attributes. - if bbox.class_id not in self.requested_main_agent_types or \ - (self.ATTRIBUTE_NAME in bbox.attributes and \ - self.requested_main_agent_attributes is not None and \ - bbox.attributes[self.ATTRIBUTE_NAME] not in self.requested_main_agent_attributes): - continue - # Make sure the track is sample-continuous - instance_index_prefix = \ - f'{datum.id.name}_{str(scene_idx)}_{str(bbox.instance_id)}' - segment_idx_start = instance_id_to_segment_idx[instance_index_prefix] \ - if instance_index_prefix in instance_id_to_segment_idx else 0 - for segment_idx in range(segment_idx_start, len(self.scenes[scene_idx].samples)): - instance_index_id = f'{instance_index_prefix}_{segment_idx}' - if instance_index_id in instance_id_to_trajectory and \ - instance_id_to_trajectory[instance_index_id][-1][1] + 1 != sample_idx_in_scene: - continue - instance_id_to_trajectory[instance_index_id].append( - (scene_idx, sample_idx_in_scene, (agent_idx, bbox.instance_id), scene.selected_datums) - ) - instance_id_to_segment_idx[instance_index_prefix] = segment_idx - break - # Fiter unavailable items according to forward_context/backward_context for each agent. - item_index = [] - trajectory_min_length = self.min_main_agent_backward + self.min_main_agent_forward + 1 - for id_ in instance_id_to_trajectory: - scene_idx = instance_id_to_trajectory[id_][0][0] - num_samples = len(self.scenes[scene_idx].samples) - trajectory_length = len(instance_id_to_trajectory[id_]) - # Make sure track length is sufficient - if trajectory_length >= trajectory_min_length: - first_sample_idx = instance_id_to_trajectory[id_][0][1] - final_sample_idx = instance_id_to_trajectory[id_][-1][1] - # Crop out valid samples as items - beg = self.min_main_agent_backward \ - if self.min_main_agent_backward + first_sample_idx > self.backward_context \ - else self.backward_context - end = trajectory_length - (self.min_main_agent_forward \ - if self.min_main_agent_forward + final_sample_idx < num_samples \ - else self.forward_context) - if end > beg: - item_index.append(instance_id_to_trajectory[id_][beg:end]) - return list(itertools.chain.from_iterable(item_index)) - - def __len__(self): - """Return the length of the dataset.""" - return len(self.dataset_agent_index) if self.batch_per_agent else len(self.dataset_item_index) - - def __getitem__(self, index): - """Get the dataset item at index. - - Parameters - ---------- - index: int - Index of item to get. - - Returns - ------- - data: list of list of OrderedDict - - "timestamp": int - Timestamp of the image in microseconds. - - "datum_name": str - Sensor name from which the data was collected - - "rgb": PIL.Image (mode=RGB) - Image in RGB format. - - "intrinsics": np.ndarray - Camera intrinsics. - - "extrinsics": Pose - Camera extrinsics with respect to the world frame. - - "pose": Pose - Pose of sensor with respect to the world/global frame - - "main_agent_idx": int - Index of main agent in agent list (bounding_box_2d/bounding_box_3d). - - Returns a list of list of OrderedDict(s). - Outer list corresponds to temporal ordering of samples. Each element is - a list of OrderedDict(s) corresponding to synchronized datums. - - In other words, __getitem__ returns a nested list with the ordering as - follows: (C, D, I), where - C = forward_context + backward_context + 1, - D = len(datum_names) - I = OrderedDict item - """ - assert self.dataset_item_index is not None, ('Index is not built, select datums before getting elements.') - - if self.batch_per_agent: - # Get dataset agent index - main_agent_id, scene_idx, sample_idx_in_scene_start, sample_idx_in_scene_end, datum_names = \ - self.dataset_agent_index[index] - else: - # Get dataset item index - scene_idx, sample_idx_in_scene, main_agent_info, datum_names = self.dataset_item_index[index] - _, main_agent_id = main_agent_info - sample_idx_in_scene_start = sample_idx_in_scene - self.backward_context - sample_idx_in_scene_end = sample_idx_in_scene + self.forward_context - - # All sensor data (including pose, point clouds and 3D annotations are - # defined with respect to the sensor's reference frame captured at that - # corresponding timestamp. In order to move to a locally consistent - # reference frame, you will need to use the "pose" that specifies the - # ego-pose of the sensor with respect to the local (L) frame (pose_LS). - - context_window = [] - reference_annotation_key = self.annotation_reference - # Iterate through context samples - for qsample_idx_in_scene in range(sample_idx_in_scene_start, sample_idx_in_scene_end + 1): - # Main agent index may be different along the samples. - synchronized_sample = [] - for datum_name in datum_names: - datum_data = SynchronizedSceneDataset.get_datum_data(self, scene_idx, qsample_idx_in_scene, datum_name) - - if reference_annotation_key in datum_data: - # Over the main agent's trajectory, set main_agent_idx as None. - # Notice: main agent index may be different along the samples. - instance_matched = [ - bbox.instance_id == main_agent_id for bbox in datum_data[reference_annotation_key] - ] - main_agent_idx_in_sample = instance_matched.index(True) if any(instance_matched) else None - datum_data['main_agent_idx'] = main_agent_idx_in_sample - - synchronized_sample.append(datum_data) - context_window.append(synchronized_sample) - return context_window diff --git a/dgp/proto/agent.proto b/dgp/proto/agent.proto index 41fe3b8a..6b95c981 100644 --- a/dgp/proto/agent.proto +++ b/dgp/proto/agent.proto @@ -42,7 +42,7 @@ message AgentGroup { google.protobuf.Timestamp creation_date = 7; // Task-specific feature ontologies - // Ontologies are stored under /ontology/.json + // Ontologies are stored under /feature_ontology/.json // Maps dgp.proto.FeatureType (Agent_3D, EGO_INTENTION, etc) to the filename // containing the ontology for the specific FeatureType/Task. map feature_ontologies = 8; diff --git a/dgp/proto/annotations.proto b/dgp/proto/annotations.proto index a8687a9d..45e18545 100644 --- a/dgp/proto/annotations.proto +++ b/dgp/proto/annotations.proto @@ -1,4 +1,4 @@ -// Copyright 2019 Toyota Research Institute. All rights reserved. +// Copyright 2021 Toyota Research Institute. All rights reserved. // Definitions for annotation types for images and point clouds syntax = "proto3"; @@ -101,7 +101,7 @@ message BoundingBox2DAnnotation { // An associative map stores arbitrary attributes, where the key is attribute name // and the value is attribute value. Both key_type and value_type are string. - // This is used to stored `agent_behavior` states (i.e., parked car, pedestrian intent). + // This can be used to stored `agent_behavior` states (i.e., parked car, pedestrian intent). map attributes = 6; } diff --git a/dgp/proto/artifacts.proto b/dgp/proto/artifacts.proto index cc3aab62..2e9b373a 100644 --- a/dgp/proto/artifacts.proto +++ b/dgp/proto/artifacts.proto @@ -1,3 +1,4 @@ +// Copyright 2019-2021 Toyota Research Institute. All rights reserved. // Definitions for metadata related to whole datasets and its instances and // splits. diff --git a/dgp/proto/dataset.proto b/dgp/proto/dataset.proto index ebf56895..24e600c1 100644 --- a/dgp/proto/dataset.proto +++ b/dgp/proto/dataset.proto @@ -1,4 +1,4 @@ -// Copyright 2019-2020 Toyota Research Institute. All rights reserved. +// Copyright 2019-2021 Toyota Research Institute. All rights reserved. // Definitions for metadata related to whole datasets and its instances and // splits. @@ -13,7 +13,6 @@ import "dgp/proto/scene.proto"; import "dgp/proto/statistics.proto"; -// TODO: remove OntologyV1 once all ontology files upgraded to OntologyV2. // Dataset ontology message Ontology { // Dictionary maintaining the class name to unique class id mapping @@ -40,7 +39,6 @@ enum DatasetSplit { VAL = 1; TEST = 2; - // TODO (allan.raventos): deprecate this once we have a stable version of the DGP tagged TRAIN_OVERFIT = 3; } diff --git a/dgp/proto/ontology.proto b/dgp/proto/ontology.proto index c38c098c..b7ac5cba 100644 --- a/dgp/proto/ontology.proto +++ b/dgp/proto/ontology.proto @@ -1,3 +1,4 @@ +// Copyright 2019-2021 Toyota Research Institute. All rights reserved. // Definitions for OntologyItem and Ontology. // OntologyItem and Ontology are defined in an Object Oriented way for the ease of downstream // consumption. Ontology is simply a collection of multiple OntologyItems that contain all @@ -5,7 +6,6 @@ syntax = "proto3"; -// TODO: move package back to dgp.proto once dataset_pb2 is deprecated. package dgp.proto.v2; // An Ontology represents a set of unique concepts/categories that expresses their properties. @@ -44,8 +44,8 @@ message Ontology { repeated OntologyItem items = 1; } -// An Feature Ontology represents a set of unique feature fields that expresses their properties. -// An FeatureOntologyItem defines a single, unique element within in an FeatureOntology. +// A Feature Ontology represents a set of unique feature fields that expresses their properties. +// A FeatureOntologyItem defines a single, unique element within in an FeatureOntology. message FeatureOntologyItem { // OntologyItem name. For e.g., 'Speed', 'Link_to_rasterized_image', 'parking_attribute', etc. string name = 1; diff --git a/dgp/scripts/backfill_agents.py b/dgp/scripts/backfill_agents.py deleted file mode 100644 index 0e9f055b..00000000 --- a/dgp/scripts/backfill_agents.py +++ /dev/null @@ -1,256 +0,0 @@ -#!/usr/bin/env python -# Copyright 2021 Toyota Research Institute. All rights reserved. -"""Script that backfill agents into original DGP format.""" -import argparse -import logging -import os -from collections import defaultdict -from pathlib import Path - -from dgp import ( - AGENT_FOLDER, FEATURE_ONTOLOGY_FOLDER, TRI_DGP_AGENT_TRACKS_JSON_NAME, TRI_DGP_AGENTS_JSON_NAME, - TRI_DGP_AGENTS_SLICES_JSON_NAME, TRI_DGP_S3_BUCKET_URL, TRI_RAW_S3_BUCKET_URL -) -from dgp.datasets.prediction_dataset import PredictionAgentDataset -from dgp.proto import dataset_pb2, features_pb2 -from dgp.proto.agent_pb2 import (AgentGroup, AgentsSlice, AgentsSlices, AgentTracks) -from dgp.proto.ontology_pb2 import FeatureOntology, FeatureOntologyItem -from dgp.utils.cloud.s3 import s3_copy -from dgp.utils.dataset_conversion import get_date, get_datetime_proto -from dgp.utils.protobuf import (generate_uid_from_pbobject, open_pbobject, save_pbobject_as_json) - -TRIPCCOntology = FeatureOntology(items=[FeatureOntologyItem(name='ParkedVehicleState', id=0, feature_value_type=0)]) - - -class AgentBackfillDemo: - """ - Class to backfill agents information into ioda scene dataset to create a - demo dataset. - """ - def __init__(self, scene_dataset_json): - self.agent_dataset_name = "agents_pcc_mini" - self.version = "1" - self.description = 'agents of pcc mini dataset' - self.EMAIL = 'chao.fang@tri.global' - self.public = False - self.scene_dataset_json = scene_dataset_json - self.scene_dataset = open_pbobject(scene_dataset_json, dataset_pb2.SceneDataset) - self.agents_dataset_pb2 = dataset_pb2.Agents() - self.local_output_path = Path(scene_dataset_json).parent.as_posix() - self.ontologies = {features_pb2.PARKED_CAR: TRIPCCOntology} - self.populate_metadata() - - def populate_metadata(self): - """Populate boilerplate fields agent metadata""" - self.agents_dataset_pb2.metadata.name = self.agent_dataset_name - self.agents_dataset_pb2.metadata.version = self.version - self.agents_dataset_pb2.metadata.creation_date = get_date() - self.agents_dataset_pb2.metadata.creator = self.EMAIL - - self.agents_dataset_pb2.metadata.bucket_path.value = os.path.join( - TRI_DGP_S3_BUCKET_URL, self.agent_dataset_name - ) - self.agents_dataset_pb2.metadata.raw_path.value = os.path.join(TRI_RAW_S3_BUCKET_URL, self.agent_dataset_name) - - self.agents_dataset_pb2.metadata.description = self.description - self.agents_dataset_pb2.metadata.origin = self.agents_dataset_pb2.metadata.PUBLIC if self.public \ - else self.agents_dataset_pb2.metadata.INTERNAL - - def generate(self): - for (split_type, split) in zip([dataset_pb2.TRAIN, dataset_pb2.TEST, dataset_pb2.VAL], - ['train', 'test', 'val']): - if split_type not in self.scene_dataset.scene_splits: - continue - - logging.info('Processing {}'.format(split)) - original_dataset = PredictionAgentDataset( - self.scene_dataset_json, - split=split, - datum_names=('LIDAR', ), - requested_main_agent_types=( - 'Person', - 'Truck', - 'Car', - 'Bus/RV/Caravan', - 'Motorcycle', - 'Wheeled Slow', - 'Train', - 'Towed Object', - 'Bicycle', - 'Trailer', - ), - batch_per_agent=True - ) - self.backfill(original_dataset, split_type) - agent_json_path = self.write_agents() - - return agent_json_path - - def backfill(self, original_dataset, split_type): - """Backfill agent information. - - Parameters - ---------- - original_dataset: PredictionAgentDataset - DGP PredictionAgentDataset object - - split_type: DatasetSplit - Split of dataset to read ("train" | "val" | "test" | "train_overfit"). - - """ - # Map from scene idx to list agent - scene_agent_map = defaultdict(list) - for agent_idx, agent_track in enumerate(original_dataset.dataset_agent_index): - scene_idx = agent_track[1] - scene_agent_map[scene_idx].append(agent_idx) - for scene_idx, scene in enumerate(original_dataset.scenes): - output_scene_dirname = scene.directory - agent_pb2 = AgentGroup() - agent_pb2.feature_ontologies[features_pb2.PARKED_CAR] = \ - generate_uid_from_pbobject(self.ontologies[features_pb2.PARKED_CAR]) - for k, v in scene.scene.ontologies.items(): - agent_pb2.agent_ontologies[k] = v - agent_tracks_pb2 = AgentTracks() - agents_slices_pb2 = AgentsSlices() - sample_agent_snapshots_dict = defaultdict(AgentsSlice) - for agent_idx in scene_agent_map[scene_idx]: - main_agent_id, scene_idx, sample_idx_in_scene_start, _, _ = \ - original_dataset.dataset_agent_index[agent_idx] - agent_track_original = original_dataset[agent_idx] - agent_track = agent_tracks_pb2.agent_tracks.add() - agent_track.instance_id = main_agent_id - agent_track.class_id = original_dataset.dataset_metadata.ontology_table[ - original_dataset.annotation_reference].contiguous_id_to_class_id[agent_track_original[0][0][ - 'bounding_box_3d'][agent_track_original[0][0]['main_agent_idx']].class_id] - sample_idx = sample_idx_in_scene_start - for agent_snapshot_original in agent_track_original: - try: - box = agent_snapshot_original[0]['bounding_box_3d'][int( - agent_snapshot_original[0]['main_agent_idx'] - )] - except TypeError: # pylint: disable=bare-except - sample_idx = sample_idx + 1 - continue - if sample_idx not in sample_agent_snapshots_dict: - sample_agent_snapshots_dict[sample_idx].slice_id.CopyFrom(scene.samples[sample_idx].id) - sample_agent_snapshots_dict[sample_idx].slice_id.index = sample_idx - agent_snapshot = agent_track.agent_snapshots.add() - agent_snapshot.agent_snapshot_3D.box.CopyFrom(box.to_proto()) - agent_snapshot.slice_id.CopyFrom(scene.samples[sample_idx].id) - agent_snapshot.slice_id.index = sample_idx - agent_snapshot.agent_snapshot_3D.class_id = agent_track.class_id - - agent_snapshot.agent_snapshot_3D.instance_id = main_agent_id - # The feature fields need to backfill from - agent_snapshot.agent_snapshot_3D.features.extend(["dynamic"]) - - # 5 for parked car features - agent_snapshot.agent_snapshot_3D.feature_type = features_pb2.PARKED_CAR - - # Handle agent slices - sample_agent_snapshots_dict[sample_idx].agent_snapshots.extend([agent_snapshot]) - - sample_idx = sample_idx + 1 - - for sample_idx in range(len(scene.samples)): - if sample_idx in sample_agent_snapshots_dict: - agents_slices_pb2.agents_slices.extend([sample_agent_snapshots_dict[sample_idx]]) - else: - agents_slices_pb2.agents_slices.extend([AgentsSlice()]) - - # Save agent_tracks file - os.makedirs(os.path.join(self.local_output_path, output_scene_dirname, AGENT_FOLDER), exist_ok=True) - agent_tracks_filename = os.path.join( - AGENT_FOLDER, - TRI_DGP_AGENT_TRACKS_JSON_NAME.format(track_hash=generate_uid_from_pbobject(agents_slices_pb2)) - ) - save_pbobject_as_json( - agent_tracks_pb2, os.path.join(self.local_output_path, output_scene_dirname, agent_tracks_filename) - ) - agent_pb2.agent_tracks_file = agent_tracks_filename - - # Save agents_slices file - agents_slices_filename = os.path.join( - AGENT_FOLDER, - TRI_DGP_AGENTS_SLICES_JSON_NAME.format(slice_hash=generate_uid_from_pbobject(agent_tracks_pb2)) - ) - save_pbobject_as_json( - agents_slices_pb2, os.path.join(self.local_output_path, output_scene_dirname, agents_slices_filename) - ) - agent_pb2.agents_slices_file = agents_slices_filename - - # Save AgentGroup - agent_pb2.log = scene.scene.log - agent_pb2.name = scene.scene.name - agent_pb2.creation_date.CopyFrom(get_datetime_proto()) - agents_group_filename = os.path.join( - output_scene_dirname, TRI_DGP_AGENTS_JSON_NAME.format(agent_hash=generate_uid_from_pbobject(agent_pb2)) - ) - self.agents_dataset_pb2.agents_splits[split_type].filenames.append(agents_group_filename) - save_pbobject_as_json(agent_pb2, os.path.join(self.local_output_path, agents_group_filename)) - - # Populate ontologies - os.makedirs( - os.path.join(self.local_output_path, output_scene_dirname, FEATURE_ONTOLOGY_FOLDER), exist_ok=True - ) - for feature_type, ontology_id in agent_pb2.feature_ontologies.items(): - ontology_filename = os.path.join( - self.local_output_path, output_scene_dirname, FEATURE_ONTOLOGY_FOLDER, - "{}.json".format(ontology_id) - ) - save_pbobject_as_json(self.ontologies[feature_type], ontology_filename) - - def write_agents(self, upload=False): - """Write the final scene dataset JSON. - Parameters - ---------- - upload: bool, default: False - If true, upload the dataset to the scene pool in s3. - Returns - ------- - scene_dataset_json_path: str - Path of the scene dataset JSON file created. - """ - agent_dataset_json_path = os.path.join( - self.local_output_path, - '{}_v{}.json'.format(self.agents_dataset_pb2.metadata.name, self.agents_dataset_pb2.metadata.version) - ) - save_pbobject_as_json(self.agents_dataset_pb2, agent_dataset_json_path) - - # Printing SceneDataset scene counts per split (post-merging) - logging.info('-' * 80) - logging.info( - 'Output SceneDataset {} has: {} train, {} val, {} test'.format( - agent_dataset_json_path, len(self.agents_dataset_pb2.agents_splits[dataset_pb2.TRAIN].filenames), - len(self.agents_dataset_pb2.agents_splits[dataset_pb2.VAL].filenames), - len(self.agents_dataset_pb2.agents_splits[dataset_pb2.TEST].filenames) - ) - ) - - s3_path = os.path.join( - self.agents_dataset_pb2.metadata.bucket_path.value, os.path.basename(agent_dataset_json_path) - ) - if upload: - s3_copy(agent_dataset_json_path, s3_path) - - else: - logging.info( - 'Upload the DGP-compliant agent dataset JSON to s3 via `aws s3 cp --acl bucket-owner-full-control {} ' - '{}`'.format(agent_dataset_json_path, s3_path) - ) - - return agent_dataset_json_path - - -if __name__ == "__main__": - parser = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter, add_help=True - ) - parser.add_argument("-i", "--scene-dataset-json", help="Input dataset json", required=True) - parser.add_argument('--verbose', action='store_true') - args, other_args = parser.parse_known_args() - if args.verbose: - logging.basicConfig(level=logging.INFO) - - dataset = AgentBackfillDemo(args.scene_dataset_json) - dataset.generate() diff --git a/dgp/utils/protobuf.py b/dgp/utils/protobuf.py index cb22eacc..97da7906 100644 --- a/dgp/utils/protobuf.py +++ b/dgp/utils/protobuf.py @@ -1,3 +1,4 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. import hashlib import json import logging diff --git a/dgp/utils/structures/bounding_box_3d.py b/dgp/utils/structures/bounding_box_3d.py index 49e0793e..7a83f402 100644 --- a/dgp/utils/structures/bounding_box_3d.py +++ b/dgp/utils/structures/bounding_box_3d.py @@ -1,3 +1,4 @@ +# Copyright 2019-2021 Toyota Research Institute. All rights reserved. import hashlib import cv2 @@ -15,7 +16,7 @@ class BoundingBox3D: Parameters ---------- - pose: ouroboros.dgp.utils.pose.Pose, (default: Pose()) + pose: dgp.utils.pose.Pose, (default: Pose()) Pose of the center of the 3D cuboid. sizes: np.float32, (default: np.float32([0,0,0])) @@ -70,19 +71,14 @@ def __init__( self._pose = pose self._sizes = sizes - self._class_id = class_id self._instance_id = instance_id self._color = color self._attributes = dict(attributes) if attributes is not None else {} - - # TODO: Define better defaults for occlusion/truncation self._num_points = num_points self._occlusion = occlusion self._truncation = truncation - self._feature_ontology_type = feature_ontology_type - self._sample_idx = sample_idx @property @@ -249,7 +245,6 @@ def render(self, image, camera, line_thickness=2, class_name=None, font_scale=0. class_name: str, default: None Class name of the bounding box. - TODO (allan.raventos): make this a property of `self`? font_scale: float, default: 0.5 Font scale used in text labels. @@ -271,7 +266,6 @@ def render(self, image, camera, line_thickness=2, class_name=None, font_scale=0. if (self.corners[:, 2] <= 0).any(): return image - # TODO (allan.raventos): find a nice way to use class colors from ontology colormap, # while preserving ability to debug object orientation easily COLORS = [RED, GREEN, BLUE] diff --git a/tests/test_agent_dataset.py b/tests/test_agent_dataset.py new file mode 100644 index 00000000..f5574898 --- /dev/null +++ b/tests/test_agent_dataset.py @@ -0,0 +1,32 @@ +import os +import unittest + +from dgp.datasets.agent_dataset import AgentDatasetLite +from tests import TEST_DATA_DIR + + +class TestAgentDataset(unittest.TestCase): + DGP_TEST_DATASET_DIR = os.path.join(TEST_DATA_DIR, "dgp") + + def setUp(self): + self.test_scene_json = os.path.join(self.DGP_TEST_DATASET_DIR, "test_scene/scene_dataset_v1.0.json") + + self.agent_json = os.path.join(self.DGP_TEST_DATASET_DIR, "test_scene/agents_pcc_mini_v1.json") + + def test_prediction_agent_dataset_3d(self): + #Test agent dataset loading + + dataset = AgentDatasetLite( + self.test_scene_json, + self.agent_json, + split='train', + datum_names=None, + requested_main_agent_classes=('Car', 'Person'), + requested_feature_types=("parked_car", ), + batch_per_agent=True + ) + assert len(dataset) == 110 + + +if __name__ == "__main__": + unittest.main() From 8497455681b9f043afa3146ee876f38b8de4646d Mon Sep 17 00:00:00 2001 From: visak kumar Date: Thu, 4 Nov 2021 12:39:05 -0700 Subject: [PATCH 5/7] feat: agent visualization --- dgp/constants.py | 15 +++ examples/agent_visualization.py | 180 ++++++++++++++++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 examples/agent_visualization.py diff --git a/dgp/constants.py b/dgp/constants.py index 1ee957ce..7da98edf 100644 --- a/dgp/constants.py +++ b/dgp/constants.py @@ -34,3 +34,18 @@ FEATURE_TYPE_ID_TO_KEY = OrderedDict({v: k for k, v in FEATURE_KEY_TO_TYPE_ID.items()}) # String identifiers for feature types ALL_FEATURE_TYPES = tuple(FEATURE_KEY_TO_TYPE_ID.keys()) + +#EGO AGENT DIMENSIONS +vehicle_name = 'lexus' +vehicle_length = 5.234 +vehicle_width = 1.900 +vehicle_width_with_mirrors = 2.1852 +vehicle_height = 1.68 +vehicle_wheelbase = 3.12 +vehicle_trackwidth = 1.610 +vehicle_wheel_radius = 0.360 +vehicle_fa_to_bumper_dist = 0.950 +vehicle_applanix_origin_to_fa_dist = 3.12 +vehicle_applanix_origin_to_cg_dist = 1.53 +vehicle_applanix_origin_to_r_bumper = 1.164 +vehicle_applanix_origin_height = 0.000 diff --git a/examples/agent_visualization.py b/examples/agent_visualization.py new file mode 100644 index 00000000..c3eeefbb --- /dev/null +++ b/examples/agent_visualization.py @@ -0,0 +1,180 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. +import argparse +import logging +import time +from collections import Counter +from copy import deepcopy +from pathlib import Path + +import cv2 +import matplotlib.pyplot as plt +import numpy as np +import seaborn as sns +from IPython.display import Image, Video +from moviepy.editor import ImageSequenceClip +from tqdm import tqdm + +from dgp.constants import (vehicle_applanix_origin_to_r_bumper, vehicle_height, vehicle_length, vehicle_width) +from dgp.datasets.agent_dataset import AgentDataset, AgentDatasetLite +from dgp.datasets.synchronized_dataset import (SynchronizedScene, SynchronizedSceneDataset) +from dgp.utils.pose import Pose +from dgp.utils.structures.bounding_box_3d import BoundingBox3D +from dgp.utils.visualization_utils import visualize_bev + + +def calc_warp_pose(pose_other, pose_target): + # return pose for going from pose to pose_target + pose_target_w = pose_target.inverse() # world to target + pose_p2p1 = pose_target_w * pose_other # local other to world, world to target -> local to target + return pose_p2p1 + + +def render_agent_bev( + agent_dataset, + ontology, +): + class_colormap = ontology._contiguous_id_colormap + id_to_name = ontology.contiguous_id_to_name + + tvec = np.array([vehicle_length / 2 - vehicle_applanix_origin_to_r_bumper, 0, 0]) + ego_box = BoundingBox3D( + Pose(tvec=tvec), sizes=np.array([vehicle_width, vehicle_length, vehicle_height]), class_id=1, instance_id=0 + ) + + # Drawing code, create a pallet + pallet = list(sns.color_palette("hls", 32)) + pallet = [[np.int(255 * a), np.int(255 * b), np.int(255 * c)] for a, b, c in pallet] + # draw unmatched in a dark gray color + unmatched = [50, 50, 50] + + def get_random_color(): + idx = np.random.choice(len(pallet)) + return pallet[idx] + + trackid_to_color = {} + paths = {} + frames = [] + prior_pose = None + max_path_len = 15 + + agent_frames = [] + agent_idx = None + + for k in tqdm(range(0, len(agent_dataset))): + context = agent_dataset[k] + lidar = context[0]["datums"][1] + camera = context[0]["datums"][0] + agents = context[0]['agents'] + cam_color = (0, 255, 0) + agents.boxlist.append(ego_box) + lidar['bounding_box_3d'] = agents + trackid_to_color[0] = (255, 255, 255) + + # core tracking color and path generation code + if prior_pose is None: + prior_pose = lidar['pose'] + + warp_pose = calc_warp_pose(prior_pose, lidar['pose']) + prior_pose = lidar['pose'] + + new_colors = {box.instance_id: get_random_color() for box in agents if box.instance_id not in trackid_to_color} + trackid_to_color.update(new_colors) + updated = [] + # warp existing paths + for instance_id in paths: + # move the path into ego's local frame. We assume all prior path entrys are in the previous frame + # this is not true if we skip a step because of occulision or missed detection... TODO: handle this somehow + paths[instance_id] = [warp_pose * pose if pose is not None else None for pose in paths[instance_id]] + + # add new boxes to the path + for box in agents: + + if box.instance_id not in paths: + paths[box.instance_id] = [] + + paths[box.instance_id].insert(0, box.pose) + + # keep track of what was updated so we can insert Nones if there is a miss + updated.append(box.instance_id) + + if len(paths[box.instance_id]) > max_path_len: + paths[box.instance_id].pop() + + box.attributes['path'] = paths[box.instance_id] + + # go through the non updated paths and append None + for instance_id in paths: + if instance_id not in updated: + paths[instance_id].insert(0, None) + + if len(paths[instance_id]) > max_path_len: + paths[instance_id].pop() + + cuboid_caption_fn = lambda x: ('Parked' if 'parked' in x.attributes else None, (255, 0, 0)) + + marker_fn = lambda x: (cv2.MARKER_DIAMOND if 'parked' in x.attributes else None, (255, 0, 0)) + + img = visualize_bev([lidar], class_colormap, show_instance_id_on_bev=False, id_to_name = id_to_name, bev_font_scale = .5, bev_line_thickness = 2\ + , instance_colormap = trackid_to_color, show_paths_on_bev=True,\ + cuboid_caption_fn = cuboid_caption_fn, \ + marker_fn = marker_fn, + camera_datums= [camera], + camera_colors = [cam_color], + bev_metric_width=100, + bev_metric_height=int(3*100/4), + bev_pixels_per_meter = 10, + bev_center_offset_w=0 + ) + + frames.append(img) + return frames + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter, add_help=True + ) + + parser.add_argument('--agent-json', help='Agent JSON file') + parser.add_argument('--scene-dataset-json', help='Scene Dataset JSON file') + parser.add_argument( + '--split', help='Dataset split', required=False, choices=['train', 'val', 'test'], default='train' + ) + args, other_args = parser.parse_known_args() + + agent_dataset_frame = AgentDatasetLite( + args.scene_dataset_json, + args.agent_json, + split=args.split, + datum_names=['lidar', 'CAMERA_01'], + requested_main_agent_classes=('Car', 'Person'), + requested_feature_types=("parked_car", ), + batch_per_agent=False + ) + + agent_dataset_lite = AgentDatasetLite( + args.scene_dataset_json, + args.agent_json, + split=args.split, + datum_names=['lidar', 'CAMERA_01'], + requested_main_agent_classes=('Car', 'Person'), + requested_feature_types=("parked_car", ), + batch_per_agent=True + ) + + ontology = agent_dataset_lite.Agent_dataset_metadata.ontology_table.get('bounding_box_3d', None) + + frames = render_agent_bev(agent_dataset_frame, ontology) + + a = [agent_dataset_frame.dataset_item_index[k][0] for k in range(len(agent_dataset_frame))] + + #Should design a better way + frame_num = 0 + for i in range(max(a) + 1): + + plt.figure(figsize=(20, 20)) + + clip = ImageSequenceClip(frames[frame_num:frame_num + a.count(i)], fps=10) + clip.write_gif('test_scene' + str(i) + '.gif', fps=10) + frame_num += a.count(i) + print(frame_num) From b5bc270de760eea00b5ff0e968459e7ac36c9e88 Mon Sep 17 00:00:00 2001 From: visak kumar Date: Thu, 4 Nov 2021 12:49:04 -0700 Subject: [PATCH 6/7] feat: agent visualization --- examples/agent_visualization.py | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/examples/agent_visualization.py b/examples/agent_visualization.py index c3eeefbb..1e8ab5ba 100644 --- a/examples/agent_visualization.py +++ b/examples/agent_visualization.py @@ -1,22 +1,15 @@ # Copyright 2021 Toyota Research Institute. All rights reserved. import argparse -import logging -import time -from collections import Counter -from copy import deepcopy -from pathlib import Path import cv2 import matplotlib.pyplot as plt import numpy as np import seaborn as sns -from IPython.display import Image, Video from moviepy.editor import ImageSequenceClip from tqdm import tqdm from dgp.constants import (vehicle_applanix_origin_to_r_bumper, vehicle_height, vehicle_length, vehicle_width) -from dgp.datasets.agent_dataset import AgentDataset, AgentDatasetLite -from dgp.datasets.synchronized_dataset import (SynchronizedScene, SynchronizedSceneDataset) +from dgp.datasets.agent_dataset import AgentDatasetLite from dgp.utils.pose import Pose from dgp.utils.structures.bounding_box_3d import BoundingBox3D from dgp.utils.visualization_utils import visualize_bev @@ -44,8 +37,6 @@ def render_agent_bev( # Drawing code, create a pallet pallet = list(sns.color_palette("hls", 32)) pallet = [[np.int(255 * a), np.int(255 * b), np.int(255 * c)] for a, b, c in pallet] - # draw unmatched in a dark gray color - unmatched = [50, 50, 50] def get_random_color(): idx = np.random.choice(len(pallet)) @@ -57,9 +48,6 @@ def get_random_color(): prior_pose = None max_path_len = 15 - agent_frames = [] - agent_idx = None - for k in tqdm(range(0, len(agent_dataset))): context = agent_dataset[k] lidar = context[0]["datums"][1] @@ -162,9 +150,9 @@ def get_random_color(): batch_per_agent=True ) - ontology = agent_dataset_lite.Agent_dataset_metadata.ontology_table.get('bounding_box_3d', None) + ont = agent_dataset_lite.Agent_dataset_metadata.ontology_table.get('bounding_box_3d', None) - frames = render_agent_bev(agent_dataset_frame, ontology) + bev_frames = render_agent_bev(agent_dataset_frame, ont) a = [agent_dataset_frame.dataset_item_index[k][0] for k in range(len(agent_dataset_frame))] @@ -174,7 +162,7 @@ def get_random_color(): plt.figure(figsize=(20, 20)) - clip = ImageSequenceClip(frames[frame_num:frame_num + a.count(i)], fps=10) + clip = ImageSequenceClip(bev_frames[frame_num:frame_num + a.count(i)], fps=10) clip.write_gif('test_scene' + str(i) + '.gif', fps=10) frame_num += a.count(i) print(frame_num) From 0d44f8b71cf1c983c60ec921b84c16f6937fb3a4 Mon Sep 17 00:00:00 2001 From: visak kumar Date: Wed, 10 Nov 2021 16:39:29 -0800 Subject: [PATCH 7/7] feat: create agent json files --- dgp/datasets/prediction_dataset.py | 466 +++++++++++++++++++++++++++++ dgp/scripts/backfill_agents.py | 232 ++++++++++++++ dgp/utils/visualization_utils.py | 218 ++++++++++++-- 3 files changed, 884 insertions(+), 32 deletions(-) create mode 100644 dgp/datasets/prediction_dataset.py create mode 100644 dgp/scripts/backfill_agents.py diff --git a/dgp/datasets/prediction_dataset.py b/dgp/datasets/prediction_dataset.py new file mode 100644 index 00000000..2c60f193 --- /dev/null +++ b/dgp/datasets/prediction_dataset.py @@ -0,0 +1,466 @@ +# Copyright 2021 Toyota Research Institute. All rights reserved. +import copy +import itertools +import logging +import os +import time +from collections import defaultdict +from multiprocessing import Pool, cpu_count + +import numpy as np + +from dgp.annotations import ANNOTATION_REGISTRY +from dgp.constants import ANNOTATION_KEY_TO_TYPE_ID +from dgp.datasets.base_dataset import (BaseDataset, DatasetMetadata, SceneContainer) +from dgp.datasets.synchronized_dataset import SynchronizedSceneDataset +from dgp.proto.scene_pb2 import Scene as ScenePb2 +from dgp.utils.protobuf import open_pbobject + + +class ResampledSceneContainer(SceneContainer): + """Object-oriented container for assembling datasets from collections of scenes. + Each scene is resampled from a scene described within a sub-directory with an associated + scene.json file, by a given sampling rate. + """ + def __init__( + self, + scene_path, + directory=None, + autolabeled_scenes=None, + is_datums_synchronized=False, + use_diskcache=True, + sampling_rate=1.0 + ): + """Initialize a scene with a scene object and optionally provide the + directory containing the scene.json to gather additional information + for directory-based dataset loading mode. + + Parameters + ---------- + scene_path: str + Path to the Scene object containing data samples. + + directory: str, default: None + Optional directory containing scene_.json. + + autolabeled_scenes: dict, default: None + Dictionary mapping (defined as:`autolabel_model`/`annotation_key`) to autolabeled SceneContainer. + + is_datums_synchronized: bool, default: False + If True, sample-level synchronization is required i.e. each sample must contain all datums specified in the requested + `datum_names`, and all samples in this scene must contain the same number of datums. + If False, sample-level synchronization is not required i.e. samples are allowed to have different sets of datums. + + use_diskcache: bool, default: True + If True, cache ScenePb2 object using diskcache. If False, save the object in memory. + NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of scenes. + + sampling_rate: float, default: 1.0 + + """ + super().__init__( + scene_path=scene_path, + directory=directory, + autolabeled_scenes=autolabeled_scenes, + is_datums_synchronized=is_datums_synchronized, + use_diskcache=use_diskcache + ) + self.sampling_rate = sampling_rate + + @property + def scene(self): + """ Returns scene. + - If self.use_diskcache is True: returns the cached `_scene` if available, otherwise load the + scene and cache it. + - If self.use_diskcache is False: returns `_scene` in memory if the instance has attribute + `_scene`, otherwise load the scene and save it in memory. + NOTE: Setting use_diskcache to False would exhaust the memory if have a large number of scenes. + """ + if self.use_diskcache: + cached_path = self.scene_path if self.sampling_rate == 1.0 \ + else os.path.join(self.scene_path, f'{self.sampling_rate:.3f}') + if cached_path in SceneContainer.SCENE_CACHE: + _scene = SceneContainer.SCENE_CACHE.get(cached_path) + if _scene is not None: + return _scene + _scene = self.resample_scene(open_pbobject(self.scene_path, ScenePb2)) + SceneContainer.SCENE_CACHE.add(cached_path, _scene) + return _scene + else: + if self._scene is None: + self._scene = self.resample_scene(open_pbobject(self.scene_path, ScenePb2)) + return self._scene + + def resample_scene(self, scene): + """Resample the scene based on given sampling rate. + + Parameters + ---------- + scene: scene_pb2.Scene + scene protobuf data with original sampling rate. + + Returns + ------- + resampled_scene: scene_pb2.Scene + scene protobuf data with giving sampling rate. + """ + resampled_indices = np.linspace(0, len(scene.samples) - 1, int(len(scene.samples) * self.sampling_rate)) + resampled_indices = resampled_indices.astype(np.int32).tolist() + resampled_scene = copy.deepcopy(scene) + resampled_scene.ClearField('samples') + resampled_scene.ClearField('data') + datum_per_sample = len(scene.data) // len(scene.samples) + for r_idx in resampled_indices: + resampled_scene.samples.append(scene.samples[r_idx]) + for d_idx in range(datum_per_sample): + resampled_scene.data.append(scene.data[r_idx * datum_per_sample + d_idx]) + return resampled_scene + + +class PredictionAgentDataset(BaseDataset): + """Dataset for agent-centric prediction use cases, works just like normal SynchronizedSceneDataset, + but guaranteeing trajectory of main agent is present in any fetched sample. + + Parameters + ---------- + scene_dataset_json: str + Full path to the scene dataset json holding collections of paths to scene json. + + split: str, default: 'train' + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + datum_names: list, default: None + Select list of datum names for synchronization (see self.select_datums(datum_names)). + + requested_annotations: tuple, default: None + Tuple of annotation types, i.e. ('bounding_box_2d', 'bounding_box_3d'). Should be equivalent + to directory containing annotation from dataset root. + + requested_main_agent_types: tuple, default: 'car' + Tuple of main agent types, i.e. ('car', 'pedestrian'). + The string should be the same as dataset_metadata.ontology_table. + + requested_main_agent_attributes: tuple[str], default: None + Tuple of main agent attributes, i.e. ('moving', 'stopped'). This is predefined per dataset. + By default (None) will include all attributes. + + requested_autolabels: tuple[str], default: None + Currently not supported. + + forward_context: int, default: 0 + Forward context in frames [T+1, ..., T+forward] + + backward_context: int, default: 0 + Backward context in frames [T-backward, ..., T-1] + + min_main_agent_forward: int, default: 0 + Minimum forward samples for main agent. The main-agent will be guaranteed to appear + minimum samples in forward context; i.e., the main-agent will appear in number of + [min_main_agent_forward, forward_context] samples in forward direction. + + min_main_agent_backward: int, default: 0 + Minimum backward samples for main agent. The main-agent will be guaranteed to appear + minimum samples in backward context; i.e., the main-agent will appear in number of + [min_main_agent_backward, backward_context] samples in backward direction. + + generate_depth_from_datum: str, default: None + Datum name of the point cloud. If is not None, then the depth map will be generated for the camera using + the desired point cloud. + + use_3d_trajectories: bool, default: True + Use 3D trajectories (from bounding_box_3d) as main reference of agents. + This requires camera datum with bounding_box_3d annotations. + + batch_per_agent: bool, default: False + Include whole trajectory of an agent in each batch Fetch, this is designed to be used for inference. + If True, backward_context = forward_context = 0 implicitly. + + fps: float, default: -1 + Frame per second during data fetch. -1 means use original fps. + """ + ATTRIBUTE_NAME = 'behavior' + + def __init__( + self, + dataset_json, + split='train', + datum_names=None, + requested_annotations=('bounding_box_3d', ), + requested_main_agent_types=('car', ), + requested_main_agent_attributes=None, + requested_autolabels=None, + forward_context=0, + backward_context=0, + min_main_agent_forward=0, + min_main_agent_backward=0, + generate_depth_from_datum=None, + use_3d_trajectories=True, + batch_per_agent=False, + fps=-1 + ): + self.generate_depth_from_datum = generate_depth_from_datum + self.use_3d_trajectories = use_3d_trajectories + assert len(datum_names) + self.trajectories_reference = 'lidar' if any(['lidar' in datum_name.lower() \ + for datum_name in datum_names]) else datum_names[0].lower() + self.use_3d_trajectories = use_3d_trajectories or self.trajectories_reference == 'lidar' + self.annotation_reference = 'bounding_box_3d' if self.use_3d_trajectories else 'bounding_box_2d' + assert self.annotation_reference in requested_annotations + assert min_main_agent_backward <= backward_context and \ + min_main_agent_forward <= forward_context, 'Provide valid minimum context for main agent.' + if batch_per_agent: # fetch frame-by-frame for agent + backward_context = forward_context = 0 + SynchronizedSceneDataset.set_context(self, backward=backward_context, forward=forward_context) + self.min_main_agent_forward = min_main_agent_forward if min_main_agent_forward else forward_context + self.min_main_agent_backward = min_main_agent_backward if min_main_agent_forward else backward_context + + # Extract all scenes from the scene dataset JSON for the appropriate split + scenes = BaseDataset._extract_scenes_from_scene_dataset_json( + dataset_json, split=split, requested_autolabels=requested_autolabels, is_datums_synchronized=True + ) + metadata = BaseDataset._extract_metadata_from_scene_dataset_json(dataset_json) + + # Return SynchronizedDataset with scenes built from dataset.json + dataset_metadata = DatasetMetadata.from_scene_containers(scenes, requested_annotations, requested_autolabels) + name_to_id = dataset_metadata.ontology_table[self.annotation_reference].name_to_id + self.requested_main_agent_types = tuple([name_to_id[atype] + 1 for atype in requested_main_agent_types]) + self.requested_main_agent_attributes = requested_main_agent_attributes + + # Resample scenes based on given fps + self.sampling_rate = fps / metadata.frame_per_second if fps != -1 and metadata.frame_per_second else 1.0 + assert self.sampling_rate <= 1, f"Support lower fps only (current is {metadata.frame_per_second:.2f} fps)." + resampled_scenes = [] + for scene in scenes: + resampled_scene = ResampledSceneContainer( + scene_path=scene.scene_path, + directory=scene.directory, + autolabeled_scenes=scene.autolabeled_scenes, + is_datums_synchronized=scene.is_datums_synchronized, + use_diskcache=scene.use_diskcache, + sampling_rate=self.sampling_rate + ) + resampled_scenes.append(resampled_scene) + + super().__init__( + dataset_metadata, + scenes=resampled_scenes, + datum_names=datum_names, + requested_annotations=requested_annotations + ) + + # Record each agent's life time + self.batch_per_agent = batch_per_agent + if batch_per_agent: + self.dataset_agent_index = defaultdict(list) + for index in range(len(self.dataset_item_index)): + scene_idx, sample_idx_in_scene, main_agent_info, datum_names = self.dataset_item_index[index] + _, main_agent_id = main_agent_info + # Find the range of agents' trajectories + if main_agent_id not in self.dataset_agent_index: + self.dataset_agent_index[main_agent_id] = [-1, -1, float('inf'), -1, []] + self.dataset_agent_index[main_agent_id] = [ + main_agent_id, + scene_idx, + min(sample_idx_in_scene, self.dataset_agent_index[main_agent_id][2]), # birth sample index + max(sample_idx_in_scene, self.dataset_agent_index[main_agent_id][3]), # death sample item index + datum_names + ] + self.dataset_agent_index = [v for k, v in self.dataset_agent_index.items()] + + def _build_item_index(self): + """Builds an index of dataset items that refer to the scene index, agent index, + sample index and datum_within_scene index. This refers to a particular dataset + split. __getitem__ indexes into this look up table. + + Synchronizes at the sample-level and only adds sample indices if context frames are available. + This is enforced by adding sample indices that fall in (bacwkard_context, N-forward_context) range. + + Returns + ------- + item_index: list + List of dataset items that contain index into + (scene_idx, sample_idx_in_scene, (main_agent_idx, main_agent_id), [datum_name ...]). + """ + logging.info(f'Building index for {self.__class__.__name__}, this will take a while.') + st = time.time() + # Fetch the item index per scene based on the selected datums. + with Pool(cpu_count()) as proc: + item_index = proc.starmap( + self._item_index_for_scene, [(scene_idx, ) for scene_idx in range(len(self.scenes))] + ) + logging.info(f'Index built in {time.time() - st:.2f}s.') + assert len(item_index) > 0, 'Failed to index items in the dataset.' + # Chain the index across all scenes. + item_index = list(itertools.chain.from_iterable(item_index)) + # Filter out indices that failed to load. + item_index = [item for item in item_index if item is not None] + item_lengths = [len(item_tup) for item_tup in item_index] + assert all([l == item_lengths[0] for l in item_lengths] + ), ('All sample items are not of the same length, datum names might be missing.') + return item_index + + def _item_index_for_scene(self, scene_idx): + scene = self.scenes[scene_idx] + instance_id_to_trajectory = defaultdict(list) + instance_id_to_segment_idx = defaultdict(int) + # Decide main trajectories reference. + # There are 3 cases to decide referenced annotation for trajectories: + # 1. LIDAR only: bounding_box_3d as reference. + # 2. CAMERA only: bounding_box_3d if use_3d_trajectories else bounding_box_2d. + # 3. LIDAR + CAMERA: bounding_box_3d (from LIDAR) as reference. + reference_datums = [datum_name for datum_name in scene.selected_datums \ + if self.trajectories_reference in datum_name] + + # Only add to index if datum-name exists. + if len(reference_datums) == 0: + logging.debug('Skipping scene {} due to missing datums'.format(scene)) + return [] + + # Define a safe sample range given desired context + sample_range = np.arange(0, len(scene.datum_index)) + annotated_samples = scene.annotation_index[scene.datum_index[sample_range]].any(axis=(1, 2)) + for sample_idx_in_scene, is_annotated in zip(sample_range, annotated_samples): + if not is_annotated: + continue + else: + for datum_name in reference_datums: + datum = self.get_datum(scene_idx, sample_idx_in_scene, datum_name) + annotation_key = self.annotation_reference + annotations = self.get_annotations(datum) + annotation_file = os.path.join( + self.scenes[scene_idx].directory, annotations[ANNOTATION_KEY_TO_TYPE_ID[annotation_key]] + ) + bboxes_list = ANNOTATION_REGISTRY[annotation_key].load( + annotation_file, self.dataset_metadata.ontology_table[annotation_key] + ) + for agent_idx, bbox in enumerate(bboxes_list): + # Filter undesired agent types and attributes. + if bbox.class_id not in self.requested_main_agent_types or \ + (self.ATTRIBUTE_NAME in bbox.attributes and \ + self.requested_main_agent_attributes is not None and \ + bbox.attributes[self.ATTRIBUTE_NAME] not in self.requested_main_agent_attributes): + continue + # Make sure the track is sample-continuous + instance_index_prefix = \ + f'{datum.id.name}_{str(scene_idx)}_{str(bbox.instance_id)}' + segment_idx_start = instance_id_to_segment_idx[instance_index_prefix] \ + if instance_index_prefix in instance_id_to_segment_idx else 0 + for segment_idx in range(segment_idx_start, len(self.scenes[scene_idx].samples)): + instance_index_id = f'{instance_index_prefix}_{segment_idx}' + if instance_index_id in instance_id_to_trajectory and \ + instance_id_to_trajectory[instance_index_id][-1][1] + 1 != sample_idx_in_scene: + continue + instance_id_to_trajectory[instance_index_id].append( + (scene_idx, sample_idx_in_scene, (agent_idx, bbox.instance_id), scene.selected_datums) + ) + instance_id_to_segment_idx[instance_index_prefix] = segment_idx + break + # Fiter unavailable items according to forward_context/backward_context for each agent. + item_index = [] + trajectory_min_length = self.min_main_agent_backward + self.min_main_agent_forward + 1 + for id_ in instance_id_to_trajectory: + scene_idx = instance_id_to_trajectory[id_][0][0] + num_samples = len(self.scenes[scene_idx].samples) + trajectory_length = len(instance_id_to_trajectory[id_]) + # Make sure track length is sufficient + if trajectory_length >= trajectory_min_length: + first_sample_idx = instance_id_to_trajectory[id_][0][1] + final_sample_idx = instance_id_to_trajectory[id_][-1][1] + # Crop out valid samples as items + beg = self.min_main_agent_backward \ + if self.min_main_agent_backward + first_sample_idx > self.backward_context \ + else self.backward_context + end = trajectory_length - (self.min_main_agent_forward \ + if self.min_main_agent_forward + final_sample_idx < num_samples \ + else self.forward_context) + if end > beg: + item_index.append(instance_id_to_trajectory[id_][beg:end]) + return list(itertools.chain.from_iterable(item_index)) + + def __len__(self): + """Return the length of the dataset.""" + return len(self.dataset_agent_index) if self.batch_per_agent else len(self.dataset_item_index) + + def __getitem__(self, index): + """Get the dataset item at index. + + Parameters + ---------- + index: int + Index of item to get. + + Returns + ------- + data: list of list of OrderedDict + + "timestamp": int + Timestamp of the image in microseconds. + + "datum_name": str + Sensor name from which the data was collected + + "rgb": PIL.Image (mode=RGB) + Image in RGB format. + + "intrinsics": np.ndarray + Camera intrinsics. + + "extrinsics": Pose + Camera extrinsics with respect to the world frame. + + "pose": Pose + Pose of sensor with respect to the world/global frame + + "main_agent_idx": int + Index of main agent in agent list (bounding_box_2d/bounding_box_3d). + + Returns a list of list of OrderedDict(s). + Outer list corresponds to temporal ordering of samples. Each element is + a list of OrderedDict(s) corresponding to synchronized datums. + + In other words, __getitem__ returns a nested list with the ordering as + follows: (C, D, I), where + C = forward_context + backward_context + 1, + D = len(datum_names) + I = OrderedDict item + """ + assert self.dataset_item_index is not None, ('Index is not built, select datums before getting elements.') + + if self.batch_per_agent: + # Get dataset agent index + main_agent_id, scene_idx, sample_idx_in_scene_start, sample_idx_in_scene_end, datum_names = \ + self.dataset_agent_index[index] + else: + # Get dataset item index + scene_idx, sample_idx_in_scene, main_agent_info, datum_names = self.dataset_item_index[index] + _, main_agent_id = main_agent_info + sample_idx_in_scene_start = sample_idx_in_scene - self.backward_context + sample_idx_in_scene_end = sample_idx_in_scene + self.forward_context + + # All sensor data (including pose, point clouds and 3D annotations are + # defined with respect to the sensor's reference frame captured at that + # corresponding timestamp. In order to move to a locally consistent + # reference frame, you will need to use the "pose" that specifies the + # ego-pose of the sensor with respect to the local (L) frame (pose_LS). + + context_window = [] + reference_annotation_key = self.annotation_reference + # Iterate through context samples + for qsample_idx_in_scene in range(sample_idx_in_scene_start, sample_idx_in_scene_end + 1): + # Main agent index may be different along the samples. + synchronized_sample = [] + for datum_name in datum_names: + datum_data = SynchronizedSceneDataset.get_datum_data(self, scene_idx, qsample_idx_in_scene, datum_name) + + if reference_annotation_key in datum_data: + # Over the main agent's trajectory, set main_agent_idx as None. + # Notice: main agent index may be different along the samples. + instance_matched = [ + bbox.instance_id == main_agent_id for bbox in datum_data[reference_annotation_key] + ] + main_agent_idx_in_sample = instance_matched.index(True) if any(instance_matched) else None + datum_data['main_agent_idx'] = main_agent_idx_in_sample + + synchronized_sample.append(datum_data) + context_window.append(synchronized_sample) + return context_window diff --git a/dgp/scripts/backfill_agents.py b/dgp/scripts/backfill_agents.py new file mode 100644 index 00000000..3df1f40f --- /dev/null +++ b/dgp/scripts/backfill_agents.py @@ -0,0 +1,232 @@ +#!/usr/bin/env python +# Copyright 2021 Toyota Research Institute. All rights reserved. +"""Script that backfill agents into original DGP format.""" +import argparse +import logging +import os +from collections import defaultdict +from pathlib import Path + +from dgp import ( + AGENT_FOLDER, FEATURE_ONTOLOGY_FOLDER, TRI_DGP_AGENT_TRACKS_JSON_NAME, TRI_DGP_AGENTS_JSON_NAME, + TRI_DGP_AGENTS_SLICES_JSON_NAME +) +from dgp.datasets.prediction_dataset import PredictionAgentDataset +from dgp.proto import dataset_pb2, features_pb2 +from dgp.proto.agent_pb2 import (AgentGroup, AgentsSlice, AgentsSlices, AgentTracks) +from dgp.proto.ontology_pb2 import FeatureOntology, FeatureOntologyItem +from dgp.utils.dataset_conversion import get_date, get_datetime_proto +from dgp.utils.protobuf import (generate_uid_from_pbobject, open_pbobject, save_pbobject_as_json) + +TRIPCCOntology = FeatureOntology(items=[FeatureOntologyItem(name='ParkedVehicleState', id=0, feature_value_type=0)]) + + +class AgentBackfillDemo: + """ + Class to backfill agents information into ioda scene dataset to create a + demo dataset. + """ + def __init__(self, scene_dataset_json, creator): + self.agent_dataset_name = "agents_pcc_mini" + self.version = "1" + self.description = 'agents of pcc mini dataset' + self.EMAIL = creator + self.public = True + self.scene_dataset_json = scene_dataset_json + self.scene_dataset = open_pbobject(scene_dataset_json, dataset_pb2.SceneDataset) + self.agents_dataset_pb2 = dataset_pb2.Agents() + self.local_output_path = Path(scene_dataset_json).parent.as_posix() + self.ontologies = {features_pb2.PARKED_CAR: TRIPCCOntology} + self.populate_metadata() + + def populate_metadata(self): + """Populate boilerplate fields agent metadata""" + self.agents_dataset_pb2.metadata.name = self.agent_dataset_name + self.agents_dataset_pb2.metadata.version = self.version + self.agents_dataset_pb2.metadata.creation_date = get_date() + self.agents_dataset_pb2.metadata.creator = self.EMAIL + self.agents_dataset_pb2.metadata.description = self.description + self.agents_dataset_pb2.metadata.origin = self.agents_dataset_pb2.metadata.PUBLIC if self.public \ + else self.agents_dataset_pb2.metadata.INTERNAL + + def generate(self): + for (split_type, split) in zip([dataset_pb2.TRAIN, dataset_pb2.TEST, dataset_pb2.VAL], + ['train', 'test', 'val']): + if split_type not in self.scene_dataset.scene_splits: + continue + + logging.info('Processing {}'.format(split)) + original_dataset = PredictionAgentDataset( + self.scene_dataset_json, + split=split, + datum_names=('LIDAR', ), + requested_main_agent_types=( + 'Person', + 'Truck', + 'Car', + 'Bus/RV/Caravan', + 'Motorcycle', + 'Wheeled Slow', + 'Train', + 'Towed Object', + 'Bicycle', + 'Trailer', + ), + batch_per_agent=True + ) + self.backfill(original_dataset, split_type) + agent_json_path = self.write_agents() + + return agent_json_path + + def backfill(self, original_dataset, split_type): + """Backfill agent information. + + Parameters + ---------- + original_dataset: PredictionAgentDataset + DGP PredictionAgentDataset object + + split_type: DatasetSplit + Split of dataset to read ("train" | "val" | "test" | "train_overfit"). + + """ + # Map from scene idx to list agent + scene_agent_map = defaultdict(list) + for agent_idx, agent_track in enumerate(original_dataset.dataset_agent_index): + scene_idx = agent_track[1] + scene_agent_map[scene_idx].append(agent_idx) + for scene_idx, scene in enumerate(original_dataset.scenes): + output_scene_dirname = scene.directory + + agent_pb2 = AgentGroup() + agent_pb2.feature_ontologies[features_pb2.PARKED_CAR] = \ + generate_uid_from_pbobject(self.ontologies[features_pb2.PARKED_CAR]) + for k, v in scene.scene.ontologies.items(): + agent_pb2.agent_ontologies[k] = v + agent_tracks_pb2 = AgentTracks() + agents_slices_pb2 = AgentsSlices() + sample_agent_snapshots_dict = defaultdict(AgentsSlice) + for agent_idx in scene_agent_map[scene_idx]: + main_agent_id, scene_idx, sample_idx_in_scene_start, _, _ = \ + original_dataset.dataset_agent_index[agent_idx] + agent_track_original = original_dataset[agent_idx] + agent_track = agent_tracks_pb2.agent_tracks.add() + agent_track.instance_id = main_agent_id + agent_track.class_id = original_dataset.dataset_metadata.ontology_table[ + original_dataset.annotation_reference].contiguous_id_to_class_id[agent_track_original[0][0][ + 'bounding_box_3d'][agent_track_original[0][0]['main_agent_idx']].class_id] + sample_idx = sample_idx_in_scene_start + for agent_snapshot_original in agent_track_original: + try: + box = agent_snapshot_original[0]['bounding_box_3d'][int( + agent_snapshot_original[0]['main_agent_idx'] + )] + except TypeError: # pylint: disable=bare-except + sample_idx = sample_idx + 1 + continue + if sample_idx not in sample_agent_snapshots_dict: + sample_agent_snapshots_dict[sample_idx].slice_id.CopyFrom(scene.samples[sample_idx].id) + sample_agent_snapshots_dict[sample_idx].slice_id.index = sample_idx + agent_snapshot = agent_track.agent_snapshots.add() + agent_snapshot.agent_snapshot_3D.box.CopyFrom(box.to_proto()) + agent_snapshot.slice_id.CopyFrom(scene.samples[sample_idx].id) + agent_snapshot.slice_id.index = sample_idx + agent_snapshot.agent_snapshot_3D.class_id = agent_track.class_id + + agent_snapshot.agent_snapshot_3D.instance_id = main_agent_id + # The feature fields need to backfill from + agent_snapshot.agent_snapshot_3D.features.extend(["dynamic"]) + + # 5 for parked car features + agent_snapshot.agent_snapshot_3D.feature_type = features_pb2.PARKED_CAR + + # Handle agent slices + sample_agent_snapshots_dict[sample_idx].agent_snapshots.extend([agent_snapshot]) + + sample_idx = sample_idx + 1 + + for sample_idx in range(len(scene.samples)): + if sample_idx in sample_agent_snapshots_dict: + agents_slices_pb2.agents_slices.extend([sample_agent_snapshots_dict[sample_idx]]) + else: + agents_slices_pb2.agents_slices.extend([AgentsSlice()]) + + # Save agent_tracks file + os.makedirs(os.path.join(output_scene_dirname, AGENT_FOLDER), exist_ok=True) + agent_tracks_filename = os.path.join( + AGENT_FOLDER, + TRI_DGP_AGENT_TRACKS_JSON_NAME.format(track_hash=generate_uid_from_pbobject(agents_slices_pb2)) + ) + + save_pbobject_as_json(agent_tracks_pb2, os.path.join(output_scene_dirname, agent_tracks_filename)) + agent_pb2.agent_tracks_file = agent_tracks_filename + + # Save agents_slices file + agents_slices_filename = os.path.join( + AGENT_FOLDER, + TRI_DGP_AGENTS_SLICES_JSON_NAME.format(slice_hash=generate_uid_from_pbobject(agent_tracks_pb2)) + ) + save_pbobject_as_json(agents_slices_pb2, os.path.join(output_scene_dirname, agents_slices_filename)) + agent_pb2.agents_slices_file = agents_slices_filename + + # Save AgentGroup + agent_pb2.log = scene.scene.log + agent_pb2.name = scene.scene.name + agent_pb2.creation_date.CopyFrom(get_datetime_proto()) + + scene_dirname = output_scene_dirname.replace(self.local_output_path + '/', '') + agents_group_filename = os.path.join( + scene_dirname, TRI_DGP_AGENTS_JSON_NAME.format(agent_hash=generate_uid_from_pbobject(agent_pb2)) + ) + + self.agents_dataset_pb2.agents_splits[split_type].filenames.append(agents_group_filename) + save_pbobject_as_json(agent_pb2, os.path.join(self.local_output_path + '/' + agents_group_filename)) + + # Populate ontologies + os.makedirs(os.path.join(output_scene_dirname, FEATURE_ONTOLOGY_FOLDER), exist_ok=True) + for feature_type, ontology_id in agent_pb2.feature_ontologies.items(): + ontology_filename = os.path.join( + output_scene_dirname, FEATURE_ONTOLOGY_FOLDER, "{}.json".format(ontology_id) + ) + save_pbobject_as_json(self.ontologies[feature_type], ontology_filename) + + def write_agents(self, ): + """Write the final scene dataset JSON. + Returns + ------- + scene_dataset_json_path: str + Path of the scene dataset JSON file created. + """ + agent_dataset_json_path = os.path.join( + self.local_output_path, + '{}_v{}.json'.format(self.agents_dataset_pb2.metadata.name, self.agents_dataset_pb2.metadata.version) + ) + save_pbobject_as_json(self.agents_dataset_pb2, agent_dataset_json_path) + + # Printing SceneDataset scene counts per split (post-merging) + logging.info('-' * 80) + logging.info( + 'Output SceneDataset {} has: {} train, {} val, {} test'.format( + agent_dataset_json_path, len(self.agents_dataset_pb2.agents_splits[dataset_pb2.TRAIN].filenames), + len(self.agents_dataset_pb2.agents_splits[dataset_pb2.VAL].filenames), + len(self.agents_dataset_pb2.agents_splits[dataset_pb2.TEST].filenames) + ) + ) + + return agent_dataset_json_path + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter, add_help=True + ) + parser.add_argument("-i", "--scene-dataset-json", help="Input dataset json", required=True) + parser.add_argument('--verbose', action='store_true') + parser.add_argument("--creator", help="Creator email", required=True) # + args, other_args = parser.parse_known_args() + if args.verbose: + logging.basicConfig(level=logging.INFO) + + dataset = AgentBackfillDemo(args.scene_dataset_json, args.creator) + dataset.generate() diff --git a/dgp/utils/visualization_utils.py b/dgp/utils/visualization_utils.py index c43c23df..61dc6e35 100644 --- a/dgp/utils/visualization_utils.py +++ b/dgp/utils/visualization_utils.py @@ -385,6 +385,12 @@ class BEVImage: background_clr: tuple[int], defaults: (0, 0, 0) Background color in BGR order. + + center_offset_w: int, default: 0 + Offset in pixels to move ego center in BEV. + + center_offset_h: int, default: 0 + Offset in pixels to move ego center in BEV. """ def __init__( self, @@ -394,7 +400,9 @@ def __init__( polar_step_size_meters=10, forward=(1, 0, 0), left=(0, 1, 0), - background_clr=(0, 0, 0) + background_clr=(0, 0, 0), + center_offset_w=0, + center_offset_h=0, ): forward, left = np.array(forward, np.float64), np.array(left, np.float64) assert np.dot(forward, left) == 0 # orthogonality check. @@ -405,7 +413,7 @@ def __init__( self._polar_step_size_meters = polar_step_size_meters self._forward = forward self._left = left - self._bg_clr = np.uint8(background_clr)[::-1].reshape(1, 1, 3) + self._bg_clr = np.array(background_clr)[::-1].reshape(1, 1, 3).astype(np.uint8) # Body frame -> BEV frame right = -left @@ -413,8 +421,10 @@ def __init__( bev_rotation = Pose.from_rotation_translation(bev_rotation, tvec=np.zeros(3)) self._bev_rotation = bev_rotation - self._center_pixel = (int(metric_height * pixels_per_meter) // 2, int(metric_width * pixels_per_meter) // 2) - + self._center_pixel = ( + int((metric_width * pixels_per_meter) // 2 - pixels_per_meter * center_offset_w), + int((metric_height * pixels_per_meter) // 2 - pixels_per_meter * center_offset_h) + ) self.reset() def __repr__(self): @@ -432,7 +442,7 @@ def reset(self): for i in range(1, int(max(self._metric_width, self._metric_height)) // self._polar_step_size_meters): cv2.circle( self.data, self._center_pixel, int(i * self._polar_step_size_meters * self._pixels_per_meter), - (50, 50, 50), 2 + (50, 50, 50), 1 ) def render_point_cloud(self, point_cloud, extrinsics=Pose(), color=GRAY): @@ -544,6 +554,46 @@ def clip_norm(v, x): color = (255, 110, 199) cv2.arrowedLine(self.data, (cx, cy), (cx2, cy2), color, thickness=1, line_type=cv2.LINE_AA) + def render_paths(self, paths, extrinsics=Pose(), colors=(GREEN, ), line_thickness=1, tint=1.0): + """Render object paths on bev. + + Parameters + ---------- + paths: list[list[Pose]] + List of object poses in the coordinate frame of the current timestep. + + extrinsics: Pose, default: Identity pose + The pose of the pointcloud sensor wrt the body frame (Sensor frame -> (Vehicle) Body frame). + + colors: List of RGB tuple, default: [GREEN,] + Draw path using this color. + + line_thickness: int, default: 1 + Thickness of lines. + + tint: float, default: 1.0 + Mulitiplicative factor applied to color used to darken lines. + """ + + if len(colors) == 1: + colors = list(colors) * len(paths) + + if tint != 1.0: + colors = [[int(tint * c) for c in color] for color in colors] + + combined_transform = self._bev_rotation * extrinsics + + for path, color in zip(paths, colors): + # path should contain a list of Pose objects or None types. None types will be skipped. + # TODO: add option to interpolate skipped poses. + path3d = [combined_transform * pose.tvec.reshape(1, 3) for pose in path if pose is not None] + path2d = np.round(self._pixels_per_meter * np.stack(path3d, 0)[..., :2], + 0).astype(np.int32).reshape(1, -1, 2) + offset = np.array(self._center_pixel).reshape(1, 1, 2) # pylint: disable=E1121 + path2d = path2d + offset + # TODO: if we group the paths by color we can draw all paths with the same color at once + cv2.polylines(self.data, path2d, 0, color, line_thickness, cv2.LINE_AA) + def render_bounding_box_3d( self, bboxes3d, @@ -554,12 +604,16 @@ def render_bounding_box_3d( texts=None, line_thickness=2, font_scale=0.5, + font_colors=(WHITE, ), + markers=None, + marker_scale=.5, + marker_colors=(RED, ), ): """Render bounding box 3d in BEV perspective. Parameters ---------- - bboxes3d: list of BoundingBox3D + bboxes3d: List of BoundingBox3D 3D annotations in the sensor coordinate frame. extrinsics: Pose, default: Identity pose @@ -578,21 +632,40 @@ def render_bounding_box_3d( 3D annotation category name. line_thickness: int, default: 2 - Thickness of lines + Thickness of lines. font_scale: float, default: 0.5 Font scale used for text labels. + + font_colors: List of RGB tuple, default: [WHITE,] + Color used for text labels. + + markers: List[int], default: None + List of opencv markers to draw in bottom right corner of cuboid. Should be one of: + cv2.MARKER_CROSS, cv2.MARKER_DIAMOND, cv2.MARKER_SQUARE, cv2.MARKER_STAR, cv2.MARKER_TILTED_CROSS, cv2.MARKER_TRIANGLE_DOWN, cv2.MARKER_TRIANGLE_UP, or None. + + marker_scale: float, default: .5 + Scale factor for markers, + + marker_colors: List of RGB Tuple, default: [RED,] + Draw markers using this color. """ if len(colors) == 1: colors = list(colors) * len(bboxes3d) + if len(font_colors) == 1: + font_colors = list(font_colors) * len(bboxes3d) + + if len(marker_colors) == 1: + marker_colors = list(marker_colors) * len(bboxes3d) + combined_transform = self._bev_rotation * extrinsics # Draw cuboids for bidx, (bbox, color) in enumerate(zip(bboxes3d, colors)): # Create 3 versions of colors for face coding. - front_face_color = RED + front_face_color = color side_line_color = [int(side_color_fraction * c) for c in color] rear_face_color = [int(rear_color_fraction * c) for c in color] @@ -608,26 +681,41 @@ def render_bounding_box_3d( center = np.mean(corners2d, axis=0).astype(np.int32) corners2d = corners2d.astype(np.int32) + # Draw front face, side faces and back face + cv2.line(self.data, tuple(corners2d[0]), tuple(corners2d[1]), front_face_color, line_thickness, cv2.LINE_AA) + cv2.line(self.data, tuple(corners2d[1]), tuple(corners2d[2]), side_line_color, line_thickness, cv2.LINE_AA) + cv2.line(self.data, tuple(corners2d[2]), tuple(corners2d[3]), rear_face_color, line_thickness, cv2.LINE_AA) + cv2.line(self.data, tuple(corners2d[3]), tuple(corners2d[0]), side_line_color, line_thickness, cv2.LINE_AA) + # Draw white light connecting center and font side. - cv2.line( + cv2.arrowedLine( self.data, tuple(center), ( (corners2d[0][0] + corners2d[1][0]) // 2, (corners2d[0][1] + corners2d[1][1]) // 2, - ), GREEN, 2 + ), WHITE, 1, cv2.LINE_AA ) - # Draw front face, side faces and back face - cv2.line(self.data, tuple(corners2d[0]), tuple(corners2d[1]), front_face_color, line_thickness) - cv2.line(self.data, tuple(corners2d[1]), tuple(corners2d[2]), side_line_color, line_thickness) - cv2.line(self.data, tuple(corners2d[2]), tuple(corners2d[3]), rear_face_color, line_thickness) - cv2.line(self.data, tuple(corners2d[3]), tuple(corners2d[0]), side_line_color, line_thickness) - if texts: - top_left = np.argmin(np.linalg.norm(corners2d, axis=1)) - cv2.putText( - self.data, texts[bidx], tuple(corners2d[top_left]), cv2.FONT_HERSHEY_SIMPLEX, font_scale, WHITE, - line_thickness // 2, cv2.LINE_AA - ) + if texts[bidx] is not None: + top_left = np.argmin(np.linalg.norm(corners2d, axis=1)) + cv2.putText( + self.data, texts[bidx], tuple(corners2d[top_left]), cv2.FONT_HERSHEY_SIMPLEX, font_scale, + font_colors[bidx], line_thickness // 2, cv2.LINE_AA + ) + + if markers: + if markers[bidx] is not None: + bottom_right = np.argmax(np.linalg.norm(corners2d, axis=1)) + + assert markers[bidx] in [ + cv2.MARKER_CROSS, cv2.MARKER_DIAMOND, cv2.MARKER_SQUARE, cv2.MARKER_STAR, + cv2.MARKER_TILTED_CROSS, cv2.MARKER_TRIANGLE_DOWN, cv2.MARKER_TRIANGLE_UP + ] + + cv2.drawMarker( + self.data, tuple(corners2d[bottom_right]), marker_colors[bidx], markers[bidx], + int(20 * marker_scale), 2, cv2.LINE_AA + ) def render_camera_frustrum(self, intrinsics, extrinsics, width, color=YELLOW, line_thickness=1): """ @@ -774,6 +862,13 @@ def visualize_bev( bev_line_thickness=4, bev_font_scale=0.5, radar_datums=None, + instance_colormap=None, + cuboid_caption_fn=None, + marker_fn=None, + marker_scale=.5, + show_paths_on_bev=False, + bev_center_offset_w=0, + bev_center_offset_h=0, ): """Create BEV visualization that shows pointcloud, 3D bounding boxes, and optionally camera frustrums. Parameters @@ -782,7 +877,7 @@ def visualize_bev( List of lidar datums as a dictionary. class_colormap: Dict Mapping from class IDs to RGB colors. - show_instance_id_on_bev: bool, default: False + show_instance_id_on_bev: Bool, default: False If True, then show `instance_id` on a corner of 3D bounding boxes in BEV view. If False, then show `class_name` instead. id_to_name: OrderedDict, default: None @@ -795,14 +890,39 @@ def visualize_bev( See `BEVImage` for these keyword arguments. radar_datums: List[OrderedDict], default: None List of radar datums to visualize + instance_colormap: Dict + Mapping from instance id to RGB colors. + cuboid_caption_fn: Callable, BoundingBox3d -> Tuple[String,Tuple[3]] + Function taking a BoundingBox3d object and returning a tuple with the caption string, and the rgb + value for that caption. e.g., ( 'car', (255,0,0) ) + marker_fn: Callable, BoundingBox3d -> Tuple[int,Tuple[3]] + Function taking a BoundingBox3d object and returning a tuple with the caption a marker id, and the rgb + value for that marker. e.g., ( cv2.MARKER_DIAMOND, (255,0,0) ). Marker should be one of + cv2.MARKER_CROSS, cv2.MARKER_DIAMOND, cv2.MARKER_SQUARE, cv2.MARKER_STAR, cv2.MARKER_TILTED_CROSS, cv2.MARKER_TRIANGLE_DOWN, cv2.MARKER_TRIANGLE_UP, or None. + show_paths_on_bev: Bool, default: False + If true draw a path for each cuboid. Paths are stored in cuboid attributes under the 'path' key, i.e., + path = cuboid.attributes['path'], paths are themselves a list of pose objects transformed to the + correct frame. This method does not handle creating or transforming the paths. + bev_enter_offset_w: int, default: 0 + Offset in pixels to move ego center in BEV. + bev_center_offset_h: int, default: 0 + Offset in pixels to move ego center in BEV. + Returns ------- np.ndarray BEV visualization as an image. """ bev = BEVImage( - bev_metric_width, bev_metric_height, bev_pixels_per_meter, bev_polar_step_size_meters, bev_forward, bev_left, - bev_background_clr + bev_metric_width, + bev_metric_height, + bev_pixels_per_meter, + bev_polar_step_size_meters, + bev_forward, + bev_left, + bev_background_clr, + center_offset_w=bev_center_offset_w, + center_offset_h=bev_center_offset_h ) # 1. Render pointcloud @@ -823,24 +943,58 @@ def visualize_bev( # 3. Render 3D bboxes. for lidar_datum in lidar_datums: if 'bounding_box_3d' in lidar_datum: - class_ids = [bbox3d.class_id for bbox3d in lidar_datum['bounding_box_3d']] - colors = [class_colormap[class_id] for class_id in class_ids] - if show_instance_id_on_bev: - labels = [str(bbox3d.instance_id) for bbox3d in lidar_datum['bounding_box_3d']] - else: # show class names - labels = [id_to_name[i] for i in class_ids] + + if len(lidar_datum['bounding_box_3d']) == 0: + continue + + if instance_colormap is not None: + colors = [ + instance_colormap.get(bbox.instance_id, class_colormap[bbox.class_id]) + for bbox in lidar_datum['bounding_box_3d'] + ] + else: + colors = [class_colormap[bbox.class_id] for bbox in lidar_datum['bounding_box_3d']] + + # If no caption function is supplied, generate one from the instance ids or class ids + # Caption functions should return a tuple (string, color) + # TODO: expand to include per caption font size. + if show_instance_id_on_bev and cuboid_caption_fn is None: + cuboid_caption_fn = lambda x: (str(x.instance_id), WHITE) + elif cuboid_caption_fn is None: # show class names + cuboid_caption_fn = lambda x: (id_to_name[x.class_id], WHITE) + + labels, font_colors = zip(*[cuboid_caption_fn(bbox3d) for bbox3d in lidar_datum['bounding_box_3d']]) + + markers, marker_colors = None, (RED, ) + if marker_fn is not None: + markers, marker_colors = zip(*[marker_fn(bbox3d) for bbox3d in lidar_datum['bounding_box_3d']]) + bev.render_bounding_box_3d( lidar_datum['bounding_box_3d'], lidar_datum['extrinsics'], colors=colors, - texts=labels, + texts=labels if bev_font_scale > 0 else None, line_thickness=bev_line_thickness, font_scale=bev_font_scale, + font_colors=font_colors, + markers=markers if marker_scale > 0 else None, + marker_scale=marker_scale, + marker_colors=marker_colors, ) + if show_paths_on_bev: + # Collect the paths and path colors + paths, path_colors = zip( + *[(bbox.attributes['path'], c) + for bbox, c in zip(lidar_datum['bounding_box_3d'], colors) + if 'path' in bbox.attributes] + ) + if len(paths) > 0: + bev.render_paths(paths, extrinsics=lidar_datum['extrinsics'], colors=path_colors, line_thickness=1) + + # 4. Render camera frustrums. if camera_datums is not None: for cam_datum, cam_color in zip(camera_datums, camera_colors): - # 3. Render camera frustrums. bev.render_camera_frustrum( cam_datum['intrinsics'], cam_datum['extrinsics'],