Un simulador 3D habilitado para física de alto rendimiento con soporte para:
La filosofía de diseño del hábitat es priorizar la velocidad de simulación sobre la amplitud de las capacidades de simulación. Al representar una escena del conjunto de datos Matterport3D, Hábitat-SIM logra varios miles de cuadros por segundo (FPS) que ejecuta un solo hilo y alcanza más de 10,000 FPS multiproceso en una sola GPU. El hábitat-SIM simula un robot de búsqueda que interactúa en escenas de Replicacad a más de 8,000 pasos por segundo (SPS), donde cada 'paso' implica la observación de 1 RGBD (128 × 128 píxeles) y la dinámica de cuerpo rígido para 1/30 SEC.
Hábitat-SIM se usa típicamente con Hábitat-Lab, una biblioteca modular de alto nivel para experimentos de extremo a extremo en IA incorporada, definiendo tareas de IA incorporadas (por ejemplo, navegación, instrucción siguiente, contestadores de preguntas), agentes de capacitación (mediante imitación o aprendizaje de refuerzo, o ningún aprendizaje en absoluto en el sentido clásico de los tubelinos de sentido clásico) y lajecía de su desempeño en las tareas definidas por el sentido de sensación.
Si usa la plataforma de hábitat en su investigación, cita el hábitat 1.0, el hábitat 2.0 y el hábitat 3.0:
@misc{puig2023habitat3,
title = {Habitat 3.0: A Co-Habitat for Humans, Avatars and Robots},
author = {Xavi Puig and Eric Undersander and Andrew Szot and Mikael Dallaire Cote and Ruslan Partsey and Jimmy Yang and Ruta Desai and Alexander William Clegg and Michal Hlavac and Tiffany Min and Theo Gervet and Vladimír Vondruš and Vincent-Pierre Berges and John Turner and Oleksandr Maksymets and Zsolt Kira and Mrinal Kalakrishnan and Jitendra Malik and Devendra Singh Chaplot and Unnat Jain and Dhruv Batra and Akshara Rai and Roozbeh Mottaghi},
year={2023},
archivePrefix={arXiv},
}
@inproceedings{szot2021habitat,
title = {Habitat 2.0: Training Home Assistants to Rearrange their Habitat},
author = {Andrew Szot and Alex Clegg and Eric Undersander and Erik Wijmans and Yili Zhao and John Turner and Noah Maestre and Mustafa Mukadam and Devendra Chaplot and Oleksandr Maksymets and Aaron Gokaslan and Vladimir Vondrus and Sameer Dharur and Franziska Meier and Wojciech Galuba and Angel Chang and Zsolt Kira and Vladlen Koltun and Jitendra Malik and Manolis Savva and Dhruv Batra},
booktitle = {Advances in Neural Information Processing Systems (NeurIPS)},
year = {2021}
}
@inproceedings{habitat19iccv,
title = {Habitat: {A} {P}latform for {E}mbodied {AI} {R}esearch},
author = {Manolis Savva and Abhishek Kadian and Oleksandr Maksymets and Yili Zhao and Erik Wijmans and Bhavana Jain and Julian Straub and Jia Liu and Vladlen Koltun and Jitendra Malik and Devi Parikh and Dhruv Batra},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
year = {2019}
}
Hábitat-SIM también se basa en el trabajo aportado por otros. Si utiliza métodos/modelos aportados, cite sus trabajos. Consulte la sección Contribuciones externas para obtener una lista de lo que fue contribuido externamente y el trabajo/cita correspondiente.
Hábitat-SIM se puede instalar de 3 maneras:
pip install . para compilar la última construcción sin cabeza con bala. Lea las instrucciones de compilación y los problemas de construcción comunes.El hábitat está en desarrollo activo, y recomendamos a los usuarios que se restrinjan a las versiones estables. Comenzando con V0.1.4, proporcionamos paquetes de conda para cada lanzamiento.
Preparando conda env envado
Suponiendo que haya instalado Conda, preparemos un env env:
# We require python>=3.9 and cmake>=3.10
conda create -n habitat python=3.9 cmake=3.14.0
conda activate habitatconda instalar hábitat-sim
Elija una de las opciones a continuación según su sistema/necesidades:
Para instalar en máquinas con una pantalla adjunta:
conda install habitat-sim -c conda-forge -c aihabitatPara instalar en máquinas sin cabeza (es decir, sin una pantalla adjunta, por ejemplo, en un clúster) y máquinas con múltiples GPU (este parámetro se basa en EGL y, por lo tanto, no funciona en macOS):
conda install habitat-sim headless -c conda-forge -c aihabitat
[ Escenario más común ] para instalar Hábitat-SIM con física de bala
conda install habitat-sim withbullet -c conda-forge -c aihabitat
Nota: Los parámetros de construcción se pueden encadenar juntos. Por ejemplo, para instalar Hábitat-SIM con física en máquinas sin cabeza:
conda install habitat-sim withbullet headless -c conda-forge -c aihabitat
Los paquetes de conda para versiones más antiguas pueden instalar especificando explícitamente la versión, por ejemplo, conda install habitat-sim=0.1.6 -c conda-forge -c aihabitat .
También proporcionamos una construcción de condena nocturna para la rama principal. Sin embargo, esto solo debe usarse si necesita una función específica aún no en la última versión de lanzamiento. Para obtener la construcción nocturna de la última principal, simplemente intercambie -c aihabitat por -c aihabitat-nightly .
Descargemos algunos activos 3D usando nuestra utilidad de descarga de datos de Python:
Descargar (prueba) Escenas 3D
python -m habitat_sim.utils.datasets_download --uids habitat_test_scenes --data-path /path/to/data/ Tenga en cuenta que estas escenas de prueba no proporcionan anotaciones semánticas. Si desea probar los sensores semánticos a través de example.py , utilice los datos del conjunto de datos MatterPort3D (consulte los conjuntos de datos).
Descargar objetos de ejemplo
python -m habitat_sim.utils.datasets_download --uids habitat_example_objects --data-path /path/to/data/Prueba interactiva : use el espectador interactivo incluido con Hábitat-SIM en C ++ o Python:
# C++
# ./build/viewer if compiling locally
habitat-viewer /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb
# Python
# NOTE: depending on your choice of installation, you may need to add '/path/to/habitat-sim' to your PYTHONPATH.
# e.g. from 'habitat-sim/' directory run 'export PYTHONPATH=$(pwd)'
python examples/viewer.py --scene /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glbDebería poder controlar a un agente en esta escena de prueba. Use teclas W/S/D para avanzar/Izquierda/Backward/Derecha y las teclas de flecha o mouse (clic izquierdo) para controlar la dirección de la mirada (busque hacia arriba/hacia abajo/izquierda/derecha). Trate de encontrar la imagen de una mujer rodeada de una corona. ¡Divertirse!
Interacciones físicas : Hábitat-SIM proporciona simulación de dinámica rígida y articulada a través de la integración con física de bala. Pruébelo ahora con nuestra funcionalidad de visor interactivo en C ++ o Python.
Primero, descargue nuestro conjunto de datos de apartamentos Replicacad totalmente interactivo (140 MB):
# NOTE: by default, data will be downloaded into habitat-sim/data/. Optionally modify the data path by adding: `--data-path /path/to/data/`
# with conda install
python -m habitat_sim.utils.datasets_download --uids replica_cad_dataset
# with source (from inside habitat_sim/)
python src_python/habitat_sim/utils/datasets_download.py --uids replica_cad_dataset--uids replica_cad_baked_lighting (480 mb).Luego cargue una escena Replicacad en la aplicación del espectador con física habilitada. Si modificó la ruta de datos anterior, también modifíquela en las llamadas del espectador a continuación.
# C++
# ./build/viewer if compiling locally
habitat-viewer --enable-physics --dataset data/replica_cad/replicaCAD.scene_dataset_config.json -- apt_1
# python
# NOTE: habitat-sim/ directory must be on your `PYTHONPATH`
python examples/viewer.py --dataset data/replica_cad/replicaCAD.scene_dataset_config.json --scene apt_1--dataset data/replica_cad_baked_lighting/replicaCAD_baked.scene_dataset_config.json --scene Baked_sc1_staging_00La aplicación del visor genera la lista completa de opciones de interfaz de teclado y mouse a la consola en tiempo de ejecución.
Ejemplo de inicio rápido:
WASD para moverseLEFT y arrastre el mouse para mirar alrededorSPACE para alternar Simulation/ON (Predeterminado ENCENDIDO)'m' para cambiar al modo de mouse "agarrar"LEFT o RIGHT y arrastre para mover objetos o abra puertas/cajones y suelte para soltar el objetoALT ): Rotar el marco de restricción fijo del objeto (guiñada)CTRL ): rotar el objeto marco de restricción fijo (tono)ALT + CTRL ): Rotar el objeto Marco de restricción fijo (rollo)Prueba no interactiva (por ejemplo para sistemas sin cabeza): ejecute el script de ejemplo:
python /path/to/habitat-sim/examples/example.py --scene /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb El agente atravesará una ruta particular y debería ver las estadísticas de rendimiento al final, algo así: 640 x 480, total time: 3.208 sec. FPS: 311.7 .
Para reproducir la tabla de referencia del hábitat ICCV'19 Ejecutar examples/benchmark.py --scene /path/to/mp3d_example/17DRP5sb8fy/17DRP5sb8fy.glb .
Se proporcionan argumentos adicionales a example.py para cambiar la configuración del sensor, imprimir estadísticas de las anotaciones semánticas en una escena, calcular las trayectorias de ruta más corta del espacio de acción y establecer otra funcionalidad útil. Consulte los archivos de origen example.py y demo_runner.py para obtener una descripción general.
Cargue una casa específica de mp3d o gibson: examples/example.py --scene path/to/mp3d/house_id.glb .
También hemos proporcionado una demostración de ejemplo para referencia.
Para ejecutar un ejemplo de física en Python (después de construir con "Simulación física a través de Bullet"):
python examples/example.py --scene /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb --enable_physics Tenga en cuenta que en este modo el agente estará congelado y orientado hacia los objetos físicos generados. Además, --save_png se puede usar para generar marcos de observación visual del agente de la escena física al directorio actual.
Si se ejecuta en una máquina remota y experimenta errores de visualización al inicializar el simulador, por ejemplo,
X11: The DISPLAY environment variable is missing
Could not initialize GLFW Asegúrese de no tener DISPLAY definida en su entorno (ejecute unset DISPLAY para inventar la variable)
Si ve errores de libgl como:
X11: The DISPLAY environment variable is missing
Could not initialize GLFWLo más probable es que su libgl se encuentre en una ubicación no estándar. Ver por ejemplo, este problema.
Explore la documentación de hábitat-sim en línea.
Echa un vistazo a nuestra serie de tutoriales ECCV para obtener una experiencia práctica rápida.
¿No puede encontrar la respuesta a su pregunta? Intente preguntarle a los desarrolladores y a la comunidad en nuestro foro de discusiones.
Cómo usar conjuntos de datos compatibles comunes con Hábitat-SIM.
Si usa el modelo de ruido de Pyrobot, cite su informe técnico.
Específicamente, el modelo de ruido utilizado para las funciones de control ruidosas llamadas pyrobot_* y definida en src_python/habitat_sim/agent/controls/pyrobot_noisy_controls.py
Si usa el modelo de ruido de profundidad de secoya, cite su papel
Específicamente, el modelo de ruido definido en src_python/habitat_sim/sensors/noise_models/redwood_depth_noise_model.py y src/esp/sensor/RedwoodNoiseModel.*
Hábitat-Sim tiene licencia MIT. Vea la licencia para más detalles.
El uso de los scripts de demostración: