def _config_pathfinder(self, config: Configuration): if "navmesh" in config.sim_cfg.scene.filepaths: navmesh_filenname = config.sim_cfg.scene.filepaths["navmesh"] else: scene_basename = osp.basename(config.sim_cfg.scene.id) # "mesh.ply" is identified as a replica model, whose navmesh # is named as "mesh_semantic.navmesh" and is placed in the # subfolder called "habitat" (a level deeper than the "mesh.ply") if scene_basename == "mesh.ply": scene_dir = osp.dirname(config.sim_cfg.scene.id) navmesh_filenname = osp.join( scene_dir, "habitat", "mesh_semantic.navmesh" ) else: navmesh_filenname = ( osp.splitext(config.sim_cfg.scene.id)[0] + ".navmesh" ) self.pathfinder = hsim.PathFinder() if osp.exists(navmesh_filenname): self.pathfinder.load_nav_mesh(navmesh_filenname) logger.info(f"Loaded navmesh {navmesh_filenname}") else: logger.warning( f"Could not find navmesh {navmesh_filenname}, no collision checking will be done" )
def _config_pathfinder(self, config: Configuration): if "navmesh" in config.sim_cfg.scene.filepaths: navmesh_filenname = config.sim_cfg.scene.filepaths["navmesh"] else: navmesh_filenname = osp.splitext( config.sim_cfg.scene.id)[0] + ".navmesh" self.pathfinder = hsim.PathFinder() if osp.exists(navmesh_filenname): self.pathfinder.load_nav_mesh(navmesh_filenname) logger.info(f"Loaded navmesh {navmesh_filenname}") else: logger.warning( f"Could not find navmesh {navmesh_filenname}, no collision checking will be done" )
def _config_pathfinder(self, config: Configuration) -> None: if "navmesh" in config.sim_cfg.scene.filepaths: navmesh_filenname = config.sim_cfg.scene.filepaths["navmesh"] else: scene_basename = osp.basename(config.sim_cfg.scene.id) # "mesh.ply" is identified as a replica model, whose navmesh # is named as "mesh_semantic.navmesh" and is placed in the # subfolder called "habitat" (a level deeper than the "mesh.ply") if scene_basename == "mesh.ply": scene_dir = osp.dirname(config.sim_cfg.scene.id) navmesh_filenname = osp.join( scene_dir, "habitat", "mesh_semantic.navmesh" ) else: navmesh_filenname = ( osp.splitext(config.sim_cfg.scene.id)[0] + ".navmesh" ) self.pathfinder = PathFinder() if osp.exists(navmesh_filenname): self.pathfinder.load_nav_mesh(navmesh_filenname) logger.info(f"Loaded navmesh {navmesh_filenname}") else: logger.warning( f"Could not find navmesh {navmesh_filenname}, no collision checking will be done" ) agent_legacy_config = AgentConfiguration() default_agent_config = config.agents[config.sim_cfg.default_agent_id] if not np.isclose( agent_legacy_config.radius, default_agent_config.radius ) or not np.isclose(agent_legacy_config.height, default_agent_config.height): logger.info( f"Recomputing navmesh for agent's height {default_agent_config.height} and radius" f" {default_agent_config.radius}." ) navmesh_settings = NavMeshSettings() navmesh_settings.set_defaults() navmesh_settings.agent_radius = default_agent_config.radius navmesh_settings.agent_height = default_agent_config.height self.recompute_navmesh(self.pathfinder, navmesh_settings) self.pathfinder.seed(config.sim_cfg.random_seed)
Example of capturing an Nsight Systems profile: apt-get install nvidia-nsight export HABITAT_PROFILING=1 path/to/nvidia/nsight-systems/bin/nsys profile --sample=none --trace=cuda,nvtx --trace-fork-before-exec=true --output=my_profile python my_program.py # look for my_profile.qdrep in working directory """ import os from contextlib import ContextDecorator from habitat_sim.logging import logger env_var = os.environ.get("HABITAT_PROFILING", "0") enable_profiling = env_var != "0" if enable_profiling: logger.info("HABITAT_PROFILING={}".format(env_var)) logger.info( "profiling_utils.py range_push/range_pop annotation is enabled") from torch.cuda import nvtx def range_push(msg: str) -> None: r"""Annotates the start of a range for profiling. Requires HABITAT_PROFILING environment variable to be set, otherwise the function is a no-op. Pushes a range onto a stack of nested ranges. Every range_push should have a corresponding range_pop. Attached profilers can capture the time spent in ranges." """ if enable_profiling: nvtx.range_push(msg)