def geodesic_distance( self, position_a: Union[Sequence[float], ndarray], position_b: Union[Sequence[float], Sequence[Sequence[float]]], episode: Optional[Episode] = None, ) -> float: if episode is None or episode._shortest_path_cache is None: path = habitat_sim.MultiGoalShortestPath() if isinstance(position_b[0], (Sequence, np.ndarray)): path.requested_ends = np.array(position_b, dtype=np.float32) else: path.requested_ends = np.array( [np.array(position_b, dtype=np.float32)] ) else: path = episode._shortest_path_cache path.requested_start = np.array(position_a, dtype=np.float32) self.pathfinder.find_path(path) if episode is not None: episode._shortest_path_cache = path return path.geodesic_distance
def geodesic_distance(self, position_a, position_b): path = habitat_sim.MultiGoalShortestPath() path.requested_start = np.array(position_a, dtype=np.float32) if isinstance(position_b[0], List) or isinstance( position_b[0], np.ndarray): path.requested_ends = np.array(position_b, dtype=np.float32) else: path.requested_ends = np.array( [np.array(position_b, dtype=np.float32)]) self._sim.pathfinder.find_path(path) return path.geodesic_distance