def get_object_summary(object_dict, object_id: str):
        """Summarize the information of one dynamic object.

        Args:
            object_dict: the info dict of a particular object, aka scenario['tracks'][obj_id] (not the ['state'] dict!)
            object_id: the ID of the object

        Returns:
            A dict summarizing the information of this object.
        """
        object_type = object_dict["type"]
        state_dict = object_dict["state"]
        track = state_dict["position"]
        valid_track = track[np.where(state_dict["valid"].astype(int))][..., :2]
        distance = float(
            sum(np.linalg.norm(valid_track[i] - valid_track[i + 1]) for i in range(valid_track.shape[0] - 1))
        )
        valid_length = int(sum(state_dict["valid"]))

        continuous_valid_length = 0
        for v in state_dict["valid"]:
            if v:
                continuous_valid_length += 1
            if continuous_valid_length > 0 and not v:
                break

        return {
            ScenarioDescription.SUMMARY.TYPE: object_type,
            ScenarioDescription.SUMMARY.OBJECT_ID: str(object_id),
            ScenarioDescription.SUMMARY.TRACK_LENGTH: int(len(track)),
            ScenarioDescription.SUMMARY.MOVING_DIST: float(distance),
            ScenarioDescription.SUMMARY.VALID_LENGTH: int(valid_length),
            ScenarioDescription.SUMMARY.CONTINUOUS_VALID_LENGTH: int(continuous_valid_length)
        }
Summarize the information of one dynamic object.

        Args:
            object_dict: the info dict of a particular object, aka scenario['tracks'][obj_id] (not the ['state'] dict!)
            object_id: the ID of the object

        Returns:
            A dict summarizing the information of this object.
        
metadrive/scenario/scenario_description.py