def _construct_dataset(num_episodes): episodes = [] for ii in range(num_episodes): episode = Episode( episode_id=str(ii), scene_id="scene_id_" + str(ii % 10), start_position=[0, 0, 0], start_rotation=[0, 0, 0, 1], ) episodes.append(episode) dataset = Dataset() dataset.episodes = episodes return dataset
scene_id = house + os.sep + house + ".glb" elif DATASET == "gibson": scene_id = house + ".glb" else: raise NotImplementedError("Not implemented for this dataset") dummy_episode = NavigationEpisode( episode_id=str(ii), goals=[NavigationGoal([0, 0, 0])], scene_id=scene_id, start_position=[0, 0, 0], start_rotation=[0, 0, 0, 1], ) episodes.append(dummy_episode) dataset = Dataset() dataset.episodes = episodes json = dataset.to_json().encode("utf-8") with gzip.GzipFile( os.path.join(OUTPUT_PATH, "dataset_one_ep_per_scene.json.gz"), "w") as fout: fout.write(json) env = habitat.Env(config=config, dataset=dataset) episodes = [] episode_id = 0 for ii in tqdm.tqdm(range(len(scenes))): try: env.reset() for jj in range(NUM_EPS_PER_LOCATION): episode = generator.generate_pointnav_episode(env, episode_id)
def transform_rgb_bgr(image): return image[:, :, [2, 1, 0]] apartment = "office_3" ep = NavigationEpisode( episode_id="0", scene_id=f"/raid/workspace/alexandrug/Replica-Dataset/dataset" f"/{apartment}/habitat/mesh_semantic.ply", start_position=[-0.6644544, -1.020689, -0.4631982], start_rotation=[0, 0.163276, 0, 0.98658], goals=[NavigationGoal(position=[-2.452475, -1.02069, 1.156327])], info={"geodesic_distance": 0.001}, ) dataset = Dataset() dataset.episodes = [ep] def draw_top_down_map(info, heading, output_size): top_down_map = maps.colorize_topdown_map( info["top_down_map"]["map"], info["top_down_map"]["fog_of_war_mask"]) original_map_size = top_down_map.shape[:2] map_scale = np.array( (1, original_map_size[1] * 1.0 / original_map_size[0])) new_map_size = np.round(output_size * map_scale).astype(np.int32) # OpenCV expects w, h but map size is in h, w top_down_map = cv2.resize(top_down_map, (new_map_size[1], new_map_size[0])) map_agent_pos = info["top_down_map"]["agent_map_coord"] map_agent_pos = np.round(map_agent_pos * new_map_size / original_map_size).astype(np.int32)