# FLEXR_v0 IsaacLab ## Overview This project/repository serves as a template for building projects or extensions based on Isaac Lab. It allows you to develop in an isolated environment, outside of the core Isaac Lab repository. **Key Features:** - `Isolation` Work outside the core Isaac Lab repository, ensuring that your development efforts remain self-contained. - `Flexibility` This template is set up to allow your code to be run as an extension in Omniverse. **Keywords:** extension, template, isaaclab ## Installation - Install Isaac Lab by following the [installation guide](https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/index.html). We recommend using the conda installation as it simplifies calling Python scripts from the terminal. - Clone or copy this project/repository separately from the Isaac Lab installation (i.e. outside the `IsaacLab` directory): - Using a python interpreter that has Isaac Lab installed, install the library in editable mode using: ```bash # use 'PATH_TO_isaaclab.sh|bat -p' instead of 'python' if Isaac Lab is not installed in Python venv or conda python -m pip install -e source/FLEXR_v0 - Verify that the extension is correctly installed by: - Listing the available tasks: Note: It the task name changes, it may be necessary to update the search pattern `"Template-"` (in the `scripts/list_envs.py` file) so that it can be listed. ```bash # use 'FULL_PATH_TO_isaaclab.sh|bat -p' instead of 'python' if Isaac Lab is not installed in Python venv or conda python scripts/list_envs.py ``` - Running a task: ```bash # use 'FULL_PATH_TO_isaaclab.sh|bat -p' instead of 'python' if Isaac Lab is not installed in Python venv or conda python scripts//train.py --task= ``` - Running a task with dummy agents: These include dummy agents that output zero or random agents. They are useful to ensure that the environments are configured correctly. - Zero-action agent ```bash # use 'FULL_PATH_TO_isaaclab.sh|bat -p' instead of 'python' if Isaac Lab is not installed in Python venv or conda python scripts/zero_agent.py --task= ``` - Random-action agent ```bash # use 'FULL_PATH_TO_isaaclab.sh|bat -p' instead of 'python' if Isaac Lab is not installed in Python venv or conda python scripts/random_agent.py --task= ``` ### Set up IDE (Optional) To setup the IDE, please follow these instructions: - Run VSCode Tasks, by pressing `Ctrl+Shift+P`, selecting `Tasks: Run Task` and running the `setup_python_env` in the drop down menu. When running this task, you will be prompted to add the absolute path to your Isaac Sim installation. If everything executes correctly, it should create a file .python.env in the `.vscode` directory. The file contains the python paths to all the extensions provided by Isaac Sim and Omniverse. This helps in indexing all the python modules for intelligent suggestions while writing code. ### Setup as Omniverse Extension (Optional) We provide an example UI extension that will load upon enabling your extension defined in `source/FLEXR_v0/FLEXR_v0/ui_extension_example.py`. To enable your extension, follow these steps: 1. **Add the search path of this project/repository** to the extension manager: - Navigate to the extension manager using `Window` -> `Extensions`. - Click on the **Hamburger Icon**, then go to `Settings`. - In the `Extension Search Paths`, enter the absolute path to the `source` directory of this project/repository. - If not already present, in the `Extension Search Paths`, enter the path that leads to Isaac Lab's extension directory directory (`IsaacLab/source`) - Click on the **Hamburger Icon**, then click `Refresh`. 2. **Search and enable your extension**: - Find your extension under the `Third Party` category. - Toggle it to enable your extension. ## Code formatting We have a pre-commit template to automatically format your code. To install pre-commit: ```bash pip install pre-commit ``` Then you can run pre-commit with: ```bash pre-commit run --all-files ``` ## Troubleshooting ### Pylance Missing Indexing of Extensions In some VsCode versions, the indexing of part of the extensions is missing. In this case, add the path to your extension in `.vscode/settings.json` under the key `"python.analysis.extraPaths"`. ```json { "python.analysis.extraPaths": [ "/source/FLEXR_v0" ] } ``` ### Pylance Crash If you encounter a crash in `pylance`, it is probable that too many files are indexed and you run out of memory. A possible solution is to exclude some of omniverse packages that are not used in your project. To do so, modify `.vscode/settings.json` and comment out packages under the key `"python.analysis.extraPaths"` Some examples of packages that can likely be excluded are: ```json "/extscache/omni.anim.*" // Animation packages "/extscache/omni.kit.*" // Kit UI tools "/extscache/omni.graph.*" // Graph UI tools "/extscache/omni.services.*" // Services tools ... ```