lkllkl's picture
Upload folder using huggingface_hub
da2e2ac verified
raw
history blame
2.79 kB
from __future__ import annotations
import os
import uuid
import numpy as np
from nuplan.planning.scenario_builder.nuplan_db.nuplan_scenario_builder import NuPlanScenarioBuilder
from nuplan.planning.scenario_builder.nuplan_db.nuplan_scenario_utils import ScenarioMapping
from nuplan.planning.scenario_builder.scenario_filter import ScenarioFilter
from nuplan.planning.utils.multithreading.worker_utils import worker_map
from navsim.planning.simulation.planner.pdm_planner.utils.pdm_geometry_utils import \
convert_absolute_to_relative_se2_array
from navsim.planning.utils.multithreading.worker_ray_no_torch import RayDistributedNoTorch
def get_local_ego_poses(scenarios):
results = []
thread_id = str(uuid.uuid4())
for idx, scenario in enumerate(scenarios):
print(
f"Processing scenario {idx + 1} / {len(scenarios)} in thread_id={thread_id}"
)
init_ego_state = scenario.initial_ego_state
future_traj = scenario.get_ego_future_trajectory(0, 4)
local_ego_poses = convert_absolute_to_relative_se2_array(
init_ego_state.center, np.array([tmp.center.serialize() for tmp in future_traj], dtype=np.float64)
)
results.append(local_ego_poses[None].astype(np.float32))
return results
def main():
root = '/mnt/g'
split = 'test'
logs = os.listdir(f'{root}/nuplan/nuplan-v1.1/splits/{split}')
logs = [tmp.replace('.db', '') for tmp in logs]
navsim_logs = [log.replace('.pkl', '') for log in os.listdir(f'{root}/navsim/navsim_logs/{split}')]
start_idx = 400000
end_idx = 600000
save_dir = './traj_local'
os.makedirs(save_dir, exist_ok=True)
save_file = f'{save_dir}/{split}-pt3.npy'
logs = list(set(logs) & set(navsim_logs))
print(f'total logs: {len(logs)}')
filter = ScenarioFilter(
None, None,
logs,
None, None, None, None, None, False, False, False
)
worker = RayDistributedNoTorch(threads_per_node=16)
builder = NuPlanScenarioBuilder(
data_root=f'{root}/nuplan/',
map_root=f'{root}/nuplan/maps',
sensor_root=f'{root}/nuplan/',
db_files=f'{root}/nuplan/nuplan-v1.1/splits/{split}',
map_version='nuplan-maps-v1.0',
scenario_mapping=ScenarioMapping({}, 0.5)
)
scenarios = builder.get_scenarios(filter, worker)
print(f'total scenarios: {len(scenarios)}, now: {start_idx} to {end_idx}')
all_ego_poses = worker_map(worker, get_local_ego_poses, scenarios[start_idx:end_idx])
all_ego_poses = np.concatenate(all_ego_poses, axis=0)
print(f'save to: {save_file}')
np.save(save_file, all_ego_poses)
print(all_ego_poses.shape)
if __name__ == '__main__':
main()