The main objective is to develop a program that allows the user to execute any action inside an iTHOR environment.
There are two ways of running the program:
-
Using metadata given by the simulator. Thanks to it we can know which objects are in a specific scene and their positions. Using this data we can then generate a PDDL problem to obtain an optimized plan. The plan is translated back to executable actions and triggered in order.
-
Using OGAMUS algorithm. OGAMUS is an algorithm developed by Leonardo Lamanna, Luciano Serafini, Alessandro Saetti, Alfonso Gerevini y Paolo Traverso which scans an iTHOR scene using pretrained neural network models and stores all the data it gets inside PDDL problem files. In this project the algorithm has been modified so it can run within an specific environment and so that actions can be chained. There is also the possibility to pass a PDDL problem as argument and translate the actions that want to be executed.
- Operative System: macOS 10.9 o Ubuntu 14.04+ (recommended: Ubuntu 22.04)
- Python: 3.5+
- CPU with SSE2 instruction support
- GPU: DX9 (shader model 3.0) or DX11 with feature level 9.3 capabilities
- Linux users need X server with GLX module enabled
-
Meet simulator requirements
-
Clone repository into local folder
git clone https://github.com/xHugo21/ai2thor-hugo.git
cd ai2thor-hugo
-
Install Anaconda / Miniconda (recommended) and run the following command to install dependencies
conda env create -n ai2thor -f environment.yml
-
Activate the conda environment
conda activate ai2thor
-
Init and update the planner submodule
git submodule init
git submodule update
-
Compile the planner
cd planner/metric-ff-macos/
make
-
Download the pretrained neural network from the following link and drop the files into /Utils/pretrained_models/ Pretrained Neural Network
-
Execute main.py and follow steps in CLI
python main.py
-
If the user wants, he can pass a PDDL problem file as argument so that there is no need to select actions and objectives via CLI. This is only allowed for the OGAMUS method. There is a PDDL input example file at /pddl/inputs/example.pddl
python main.py ./pddl/inputs/example.pddl
iTHOR simulator launches a visualization window every time an environment is generated. However, it is pretty hard to see if everything has executed correctly. The program extracts the following data on each action executed:
- scene.png: A zenithal shot of the scene so that the user can see the layout of the room. It is generated in /images/scene.png
- problemX_Y: An image of each step executed. X represents the action and Y the step.
-
CLI data: When an action is finished, status about last action and objective is displayed.
-
PDDL problem files in /pddl/problems/
-
Plans generated in /pddl/outputs/
- Run the following command to prevent GNOME from launching the "Application not responds" window. This way the Unity window can be left more time without interruption before executing tasks
gsettings set org.gnome.mutter check-alive-timeout 60000
- iTHOR documentation: https://ai2thor.allenai.org/ithor/documentation/
- LAMANNA, Leonardo, et al. Online grounding of symbolic planning domains in unknown environments. En Proceedings of the International Conference on Principles of Knowledge Representation and Reasoning. 2022. p. 511-521. PDF. GitHub
- Metric-FF planner
- tranchis macos compilable version of Metric-FF