nepher 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nepher-0.1.0/LICENSE +97 -0
- nepher-0.1.0/PKG-INFO +235 -0
- nepher-0.1.0/README.md +192 -0
- nepher-0.1.0/nepher/__init__.py +36 -0
- nepher-0.1.0/nepher/api/__init__.py +6 -0
- nepher-0.1.0/nepher/api/client.py +384 -0
- nepher-0.1.0/nepher/api/endpoints.py +97 -0
- nepher-0.1.0/nepher/auth.py +150 -0
- nepher-0.1.0/nepher/cli/__init__.py +2 -0
- nepher-0.1.0/nepher/cli/commands/__init__.py +6 -0
- nepher-0.1.0/nepher/cli/commands/auth.py +37 -0
- nepher-0.1.0/nepher/cli/commands/cache.py +85 -0
- nepher-0.1.0/nepher/cli/commands/config.py +77 -0
- nepher-0.1.0/nepher/cli/commands/download.py +72 -0
- nepher-0.1.0/nepher/cli/commands/list.py +75 -0
- nepher-0.1.0/nepher/cli/commands/upload.py +69 -0
- nepher-0.1.0/nepher/cli/commands/view.py +310 -0
- nepher-0.1.0/nepher/cli/main.py +30 -0
- nepher-0.1.0/nepher/cli/utils.py +28 -0
- nepher-0.1.0/nepher/config.py +202 -0
- nepher-0.1.0/nepher/core.py +67 -0
- nepher-0.1.0/nepher/env_cfgs/__init__.py +7 -0
- nepher-0.1.0/nepher/env_cfgs/base.py +32 -0
- nepher-0.1.0/nepher/env_cfgs/manipulation/__init__.py +4 -0
- nepher-0.1.0/nepher/env_cfgs/navigation/__init__.py +45 -0
- nepher-0.1.0/nepher/env_cfgs/navigation/abstract_nav_cfg.py +159 -0
- nepher-0.1.0/nepher/env_cfgs/navigation/preset_nav_cfg.py +590 -0
- nepher-0.1.0/nepher/env_cfgs/navigation/usd_nav_cfg.py +644 -0
- nepher-0.1.0/nepher/env_cfgs/registry.py +31 -0
- nepher-0.1.0/nepher/loader/__init__.py +9 -0
- nepher-0.1.0/nepher/loader/base.py +27 -0
- nepher-0.1.0/nepher/loader/category_loaders/__init__.py +2 -0
- nepher-0.1.0/nepher/loader/preset_loader.py +80 -0
- nepher-0.1.0/nepher/loader/registry.py +63 -0
- nepher-0.1.0/nepher/loader/usd_loader.py +49 -0
- nepher-0.1.0/nepher/storage/__init__.py +8 -0
- nepher-0.1.0/nepher/storage/bundle.py +78 -0
- nepher-0.1.0/nepher/storage/cache.py +145 -0
- nepher-0.1.0/nepher/storage/manifest.py +80 -0
- nepher-0.1.0/nepher/utils/__init__.py +12 -0
- nepher-0.1.0/nepher/utils/fast_spawn_sampler.py +334 -0
- nepher-0.1.0/nepher/utils/free_zone_finder.py +239 -0
- nepher-0.1.0/nepher.egg-info/PKG-INFO +235 -0
- nepher-0.1.0/nepher.egg-info/SOURCES.txt +50 -0
- nepher-0.1.0/nepher.egg-info/dependency_links.txt +1 -0
- nepher-0.1.0/nepher.egg-info/entry_points.txt +2 -0
- nepher-0.1.0/nepher.egg-info/requires.txt +20 -0
- nepher-0.1.0/nepher.egg-info/top_level.txt +1 -0
- nepher-0.1.0/pyproject.toml +88 -0
- nepher-0.1.0/setup.cfg +4 -0
- nepher-0.1.0/tests/test_config.py +36 -0
- nepher-0.1.0/tests/test_core.py +40 -0
nepher-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
BUSINESS SOURCE LICENSE 1.1
|
|
2
|
+
|
|
3
|
+
Parameters
|
|
4
|
+
|
|
5
|
+
Licensor: Nepher AI
|
|
6
|
+
Licensed Work: EnvHub - Universal Isaac Lab Environments Platform
|
|
7
|
+
(Nepher: Universal Isaac Lab Environments Platform)
|
|
8
|
+
Change Date: 2030-02-07
|
|
9
|
+
Change License: Apache License, Version 2.0
|
|
10
|
+
Additional Use Grant: You may use the Licensed Work for the specific purposes
|
|
11
|
+
detailed in the "Isaac Lab Ecosystem Grant" section below.
|
|
12
|
+
|
|
13
|
+
-------------------------------------------------------------------------
|
|
14
|
+
|
|
15
|
+
TERMS AND CONDITIONS
|
|
16
|
+
|
|
17
|
+
1. Definitions
|
|
18
|
+
|
|
19
|
+
"Licensor" means the copyright owner or entity authorized by the copyright
|
|
20
|
+
owner that is granting the License.
|
|
21
|
+
|
|
22
|
+
"Licensed Work" means the subject Software and related content governed by
|
|
23
|
+
this License.
|
|
24
|
+
|
|
25
|
+
"Change Date" means the date when the Licensed Work becomes available under
|
|
26
|
+
the Change License.
|
|
27
|
+
|
|
28
|
+
"Change License" means the Open Source license that the Licensed Work
|
|
29
|
+
will revert to on the Change Date.
|
|
30
|
+
|
|
31
|
+
"Production Environment" means any deployment of the Licensed Work where
|
|
32
|
+
it is used for operational purposes, including but not limited to hosting
|
|
33
|
+
environment platforms, providing environment management services, or operating
|
|
34
|
+
environment distribution infrastructure.
|
|
35
|
+
|
|
36
|
+
2. License Grant
|
|
37
|
+
|
|
38
|
+
Subject to the terms of this License, the Licensor grants you a non-exclusive,
|
|
39
|
+
worldwide, non-transferable, royalty-free license to copy, modify, create
|
|
40
|
+
derivative works, and redistribute the Licensed Work.
|
|
41
|
+
|
|
42
|
+
3. Limitations (The "Source Available" Restriction)
|
|
43
|
+
|
|
44
|
+
The License Grant above is subject to the following strict limitations:
|
|
45
|
+
|
|
46
|
+
(a) Production Use Restriction: You may NOT use the Licensed Work in a
|
|
47
|
+
Production Environment unless your use falls specifically under the
|
|
48
|
+
"Additional Use Grant" defined in the Parameters above or the
|
|
49
|
+
"Isaac Lab Ecosystem Grant" defined below.
|
|
50
|
+
|
|
51
|
+
(b) Competitive Restriction: You may NOT use the Licensed Work, in whole or
|
|
52
|
+
in part, to establish, operate, or provide a competing environment
|
|
53
|
+
management platform, environment distribution service, or environment
|
|
54
|
+
marketplace that competes with the Licensor's EnvHub platform, nor may
|
|
55
|
+
you use the Licensed Work to create a competing environment discovery,
|
|
56
|
+
management, or distribution system.
|
|
57
|
+
|
|
58
|
+
4. Isaac Lab Ecosystem Grant (The "Research and Development Exception")
|
|
59
|
+
|
|
60
|
+
The Licensor hereby grants specific permission for the following uses:
|
|
61
|
+
|
|
62
|
+
(a) Research and Development: You are permitted to use, copy, modify, and
|
|
63
|
+
run the Licensed Work for the purpose of research, development, and
|
|
64
|
+
testing of Isaac Lab environments, including but not limited to:
|
|
65
|
+
- Creating and managing Isaac Lab environments for personal or
|
|
66
|
+
organizational use
|
|
67
|
+
- Developing and testing environment configurations
|
|
68
|
+
- Contributing environments to the EnvHub platform
|
|
69
|
+
- Using the Licensed Work as a client to access the EnvHub platform
|
|
70
|
+
|
|
71
|
+
(b) Integration: You are permitted to integrate the Licensed Work into
|
|
72
|
+
software applications that interface with the Licensor's EnvHub platform,
|
|
73
|
+
provided such software does not attempt to replicate the core platform
|
|
74
|
+
functionality for the purpose of launching a competing service.
|
|
75
|
+
|
|
76
|
+
(c) Auditing: You are permitted to use the Licensed Work for the purpose of
|
|
77
|
+
security research, code auditing, and transparency verification.
|
|
78
|
+
|
|
79
|
+
5. Change License Conversion
|
|
80
|
+
|
|
81
|
+
On the Change Date, or the fourth anniversary of the first availability of
|
|
82
|
+
the Licensed Work, whichever comes first, the Licensor grants you a license
|
|
83
|
+
under the terms of the Change License (Apache License, Version 2.0).
|
|
84
|
+
|
|
85
|
+
6. Disclaimer
|
|
86
|
+
|
|
87
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
88
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
89
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
90
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
91
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
92
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
93
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
94
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
95
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
96
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
97
|
+
POSSIBILITY OF SUCH DAMAGE.
|
nepher-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: nepher
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Universal Isaac Lab Environments Platform
|
|
5
|
+
Author: Nepher Contributors
|
|
6
|
+
License: BUSL-1.1
|
|
7
|
+
Project-URL: Homepage, https://github.com/nepher-ai/envhub
|
|
8
|
+
Project-URL: Documentation, https://github.com/nepher-ai/envhub#readme
|
|
9
|
+
Project-URL: Repository, https://github.com/nepher-ai/envhub
|
|
10
|
+
Project-URL: Issues, https://github.com/nepher-ai/envhub/issues
|
|
11
|
+
Keywords: isaac-lab,robotics,environments,simulation
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: License :: Other/Proprietary License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: requests>=2.28.0
|
|
26
|
+
Requires-Dist: pyyaml>=6.0
|
|
27
|
+
Requires-Dist: tomli>=2.0.0
|
|
28
|
+
Requires-Dist: tomli-w>=1.0.0
|
|
29
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
30
|
+
Requires-Dist: click>=8.0.0
|
|
31
|
+
Requires-Dist: rich>=13.0.0
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
35
|
+
Requires-Dist: black>=23.0; extra == "dev"
|
|
36
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
37
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
38
|
+
Provides-Extra: keyring
|
|
39
|
+
Requires-Dist: keyring>=23.0; extra == "keyring"
|
|
40
|
+
Provides-Extra: isaaclab
|
|
41
|
+
Requires-Dist: isaaclab; extra == "isaaclab"
|
|
42
|
+
Dynamic: license-file
|
|
43
|
+
|
|
44
|
+
# Nepher: Universal Isaac Lab Environments Platform
|
|
45
|
+
|
|
46
|
+
[](https://www.python.org/downloads/)
|
|
47
|
+
[](LICENSE)
|
|
48
|
+
|
|
49
|
+
**Nepher** is a unified, category-agnostic Python package for managing Isaac Lab environments across all categories (navigation, manipulation, humanoid, locomotion, etc.). It provides a professional command-line interface and Python API for discovering, downloading, uploading, and managing environment bundles for Isaac Lab/Isaac Sim.
|
|
50
|
+
|
|
51
|
+
## Why EnvHub is Needed
|
|
52
|
+
|
|
53
|
+
Isaac Lab researchers and developers frequently need to work with diverse simulation environments across multiple categories (navigation, manipulation, humanoid, etc.). Managing these environments manually leads to several challenges:
|
|
54
|
+
|
|
55
|
+
- **Fragmented Environment Management**: Without a centralized platform, environments are scattered across repositories, making discovery and sharing difficult
|
|
56
|
+
- **Inconsistent Structure**: Different environment formats and structures make integration into research workflows cumbersome
|
|
57
|
+
- **Limited Discoverability**: Researchers struggle to find and evaluate suitable environments for their tasks
|
|
58
|
+
- **Version Control Issues**: Managing environment versions, dependencies, and updates becomes complex at scale
|
|
59
|
+
- **Repetitive Setup**: Setting up environments requires manual downloads, configuration, and path management
|
|
60
|
+
|
|
61
|
+
EnvHub addresses these challenges by providing a unified platform for environment discovery, management, and integration with Isaac Lab. It standardizes environment structures, enables easy sharing and collaboration, and simplifies the workflow from environment discovery to integration in research code.
|
|
62
|
+
|
|
63
|
+
## What is an Environment?
|
|
64
|
+
|
|
65
|
+
An **Environment** (or **env**) is a bundle containing one or more simulation scenes organized under a common theme or purpose. Each environment has:
|
|
66
|
+
|
|
67
|
+
- **Unique Identifier**: An environment ID that uniquely identifies the bundle
|
|
68
|
+
- **Category**: The type of environment (navigation, manipulation, humanoid, locomotion, etc.)
|
|
69
|
+
- **Type**: Either `usd` (USD-based scenes) or `preset` (programmatically generated scenes)
|
|
70
|
+
- **Metadata**: Description, version, author, and other metadata
|
|
71
|
+
- **Scenes**: A collection of related scenes that share the same environment context
|
|
72
|
+
|
|
73
|
+
Environments serve as containers that group related simulation scenes together, making it easier to organize, discover, and manage simulation assets.
|
|
74
|
+
|
|
75
|
+
## What is a Scene?
|
|
76
|
+
|
|
77
|
+
A **Scene** represents a single, specific simulation configuration within an environment. Each scene defines:
|
|
78
|
+
|
|
79
|
+
- **Scene Identifier**: A unique name within the environment
|
|
80
|
+
- **Type-Specific Configuration**:
|
|
81
|
+
- For USD scenes: A USD file path plus optional occupancy maps and metadata
|
|
82
|
+
- For preset scenes: A Python configuration file that generates the scene programmatically
|
|
83
|
+
- **Scene-Specific Settings**: Spawn areas, exclusion zones, waypoints, and other scene-specific parameters
|
|
84
|
+
|
|
85
|
+
Scenes are the actual simulation configurations that get loaded into Isaac Lab for training or evaluation. A single environment can contain multiple scenes, allowing researchers to work with variations of similar environments.
|
|
86
|
+
|
|
87
|
+
## Installation
|
|
88
|
+
|
|
89
|
+
### From PyPI
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
pip install nepher
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### From Source
|
|
96
|
+
|
|
97
|
+
Clone the repository and install in editable mode:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
git clone https://github.com/nepher-ai/envhub.git
|
|
101
|
+
cd envhub
|
|
102
|
+
pip install -e .
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### Optional Dependencies
|
|
106
|
+
|
|
107
|
+
Install with optional extras as needed:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Development tools (pytest, black, ruff, mypy)
|
|
111
|
+
pip install -e ".[dev]"
|
|
112
|
+
|
|
113
|
+
# Keyring support for secure credential storage
|
|
114
|
+
pip install -e ".[keyring]"
|
|
115
|
+
|
|
116
|
+
# Isaac Lab integration
|
|
117
|
+
pip install -e ".[isaaclab]"
|
|
118
|
+
|
|
119
|
+
# All optional dependencies
|
|
120
|
+
pip install -e ".[dev,keyring,isaaclab]"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Environment and Scene Definitions
|
|
124
|
+
|
|
125
|
+
### Environment Structure
|
|
126
|
+
|
|
127
|
+
Environments are defined using a `manifest.yaml` file that describes the environment bundle:
|
|
128
|
+
|
|
129
|
+
**Example: USD Environment**
|
|
130
|
+
```yaml
|
|
131
|
+
id: digital-twin-warehouse-v1
|
|
132
|
+
type: usd
|
|
133
|
+
version: 1.0.0
|
|
134
|
+
description: Digital twin of a small warehouse environment for navigation training
|
|
135
|
+
category: navigation
|
|
136
|
+
|
|
137
|
+
scenes:
|
|
138
|
+
- scene_id: small_warehouse
|
|
139
|
+
description: Small warehouse digital twin with realistic layout and obstacles
|
|
140
|
+
usd: small_warehouse_digital_twin.usd
|
|
141
|
+
omap_image: digital_twin_omap/map.png
|
|
142
|
+
omap_meta: digital_twin_omap/map.yaml
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Example: Preset Environment**
|
|
146
|
+
```yaml
|
|
147
|
+
id: indoor-environments-v1
|
|
148
|
+
type: preset
|
|
149
|
+
version: 1.0.0
|
|
150
|
+
description: Indoor navigation environments including hospital corridors and warehouse
|
|
151
|
+
category: navigation
|
|
152
|
+
|
|
153
|
+
preset_scenes:
|
|
154
|
+
- scene_id: hospital
|
|
155
|
+
description: Hospital corridor environment for indoor navigation
|
|
156
|
+
preset: hospital_preset.py
|
|
157
|
+
- scene_id: warehouse
|
|
158
|
+
description: Warehouse with shelves and bounding walls
|
|
159
|
+
preset: warehouse_preset.py
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Usage Example
|
|
163
|
+
|
|
164
|
+
Here's how to load and use environments and scenes in your Isaac Lab code:
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
from nepher import load_env, load_scene
|
|
168
|
+
|
|
169
|
+
# Load an environment
|
|
170
|
+
env = load_env("indoor-environments-v1", category="navigation")
|
|
171
|
+
|
|
172
|
+
# List all scenes in the environment
|
|
173
|
+
print("Available scenes:", [s.name for s in env.get_all_scenes()])
|
|
174
|
+
# Output: Available scenes: ['hospital', 'warehouse']
|
|
175
|
+
|
|
176
|
+
# Load a specific scene configuration
|
|
177
|
+
scene_cfg = load_scene(env, scene="hospital", category="navigation")
|
|
178
|
+
|
|
179
|
+
# Use the scene configuration in Isaac Lab
|
|
180
|
+
from isaaclab.envs import ManagerBasedRLEnv
|
|
181
|
+
# ... configure your environment with scene_cfg
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**USD Scene in Isaac Sim**
|
|
185
|
+

|
|
186
|
+
|
|
187
|
+
**Preset Scene in Isaac Sim**
|
|
188
|
+

|
|
189
|
+
|
|
190
|
+
## Quick Start
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# Authenticate with your API key
|
|
194
|
+
nepher login <api_key>
|
|
195
|
+
|
|
196
|
+
# Check current authentication status
|
|
197
|
+
nepher whoami
|
|
198
|
+
|
|
199
|
+
# Logout and clear credentials
|
|
200
|
+
nepher logout
|
|
201
|
+
|
|
202
|
+
# List available environments
|
|
203
|
+
nepher list --category navigation
|
|
204
|
+
|
|
205
|
+
# List evaluation benchmarks (evaluators only - for tournaments)
|
|
206
|
+
nepher list --eval-benchmarks
|
|
207
|
+
|
|
208
|
+
# Download an environment
|
|
209
|
+
nepher download <env_id> --category navigation
|
|
210
|
+
|
|
211
|
+
# List cached environments
|
|
212
|
+
nepher cache list
|
|
213
|
+
|
|
214
|
+
# View an environment in Isaac Sim
|
|
215
|
+
nepher view <env_id> --category navigation
|
|
216
|
+
|
|
217
|
+
# View a specific scene
|
|
218
|
+
nepher view <env_id> --category navigation --scene <scene_name>
|
|
219
|
+
|
|
220
|
+
# Upload your own environment (contributors or evaluators only)
|
|
221
|
+
nepher upload ./my-env --category manipulation --thumbnail ./thumbnail.png
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Features
|
|
225
|
+
|
|
226
|
+
- **Universal Category Support**: Works with any environment category (navigation, manipulation, humanoid, locomotion, etc.)
|
|
227
|
+
- **Professional CLI**: Intuitive command-line interface for all operations
|
|
228
|
+
- **Seamless Integration**: Direct integration with `envhub-backend` API
|
|
229
|
+
- **Flexible Configuration**: User-configurable cache directories and settings
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
## License
|
|
233
|
+
|
|
234
|
+
Business Source License 1.1 (BUSL-1.1) - see [LICENSE](LICENSE) for details.
|
|
235
|
+
|
nepher-0.1.0/README.md
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Nepher: Universal Isaac Lab Environments Platform
|
|
2
|
+
|
|
3
|
+
[](https://www.python.org/downloads/)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
|
|
6
|
+
**Nepher** is a unified, category-agnostic Python package for managing Isaac Lab environments across all categories (navigation, manipulation, humanoid, locomotion, etc.). It provides a professional command-line interface and Python API for discovering, downloading, uploading, and managing environment bundles for Isaac Lab/Isaac Sim.
|
|
7
|
+
|
|
8
|
+
## Why EnvHub is Needed
|
|
9
|
+
|
|
10
|
+
Isaac Lab researchers and developers frequently need to work with diverse simulation environments across multiple categories (navigation, manipulation, humanoid, etc.). Managing these environments manually leads to several challenges:
|
|
11
|
+
|
|
12
|
+
- **Fragmented Environment Management**: Without a centralized platform, environments are scattered across repositories, making discovery and sharing difficult
|
|
13
|
+
- **Inconsistent Structure**: Different environment formats and structures make integration into research workflows cumbersome
|
|
14
|
+
- **Limited Discoverability**: Researchers struggle to find and evaluate suitable environments for their tasks
|
|
15
|
+
- **Version Control Issues**: Managing environment versions, dependencies, and updates becomes complex at scale
|
|
16
|
+
- **Repetitive Setup**: Setting up environments requires manual downloads, configuration, and path management
|
|
17
|
+
|
|
18
|
+
EnvHub addresses these challenges by providing a unified platform for environment discovery, management, and integration with Isaac Lab. It standardizes environment structures, enables easy sharing and collaboration, and simplifies the workflow from environment discovery to integration in research code.
|
|
19
|
+
|
|
20
|
+
## What is an Environment?
|
|
21
|
+
|
|
22
|
+
An **Environment** (or **env**) is a bundle containing one or more simulation scenes organized under a common theme or purpose. Each environment has:
|
|
23
|
+
|
|
24
|
+
- **Unique Identifier**: An environment ID that uniquely identifies the bundle
|
|
25
|
+
- **Category**: The type of environment (navigation, manipulation, humanoid, locomotion, etc.)
|
|
26
|
+
- **Type**: Either `usd` (USD-based scenes) or `preset` (programmatically generated scenes)
|
|
27
|
+
- **Metadata**: Description, version, author, and other metadata
|
|
28
|
+
- **Scenes**: A collection of related scenes that share the same environment context
|
|
29
|
+
|
|
30
|
+
Environments serve as containers that group related simulation scenes together, making it easier to organize, discover, and manage simulation assets.
|
|
31
|
+
|
|
32
|
+
## What is a Scene?
|
|
33
|
+
|
|
34
|
+
A **Scene** represents a single, specific simulation configuration within an environment. Each scene defines:
|
|
35
|
+
|
|
36
|
+
- **Scene Identifier**: A unique name within the environment
|
|
37
|
+
- **Type-Specific Configuration**:
|
|
38
|
+
- For USD scenes: A USD file path plus optional occupancy maps and metadata
|
|
39
|
+
- For preset scenes: A Python configuration file that generates the scene programmatically
|
|
40
|
+
- **Scene-Specific Settings**: Spawn areas, exclusion zones, waypoints, and other scene-specific parameters
|
|
41
|
+
|
|
42
|
+
Scenes are the actual simulation configurations that get loaded into Isaac Lab for training or evaluation. A single environment can contain multiple scenes, allowing researchers to work with variations of similar environments.
|
|
43
|
+
|
|
44
|
+
## Installation
|
|
45
|
+
|
|
46
|
+
### From PyPI
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install nepher
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### From Source
|
|
53
|
+
|
|
54
|
+
Clone the repository and install in editable mode:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
git clone https://github.com/nepher-ai/envhub.git
|
|
58
|
+
cd envhub
|
|
59
|
+
pip install -e .
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
#### Optional Dependencies
|
|
63
|
+
|
|
64
|
+
Install with optional extras as needed:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Development tools (pytest, black, ruff, mypy)
|
|
68
|
+
pip install -e ".[dev]"
|
|
69
|
+
|
|
70
|
+
# Keyring support for secure credential storage
|
|
71
|
+
pip install -e ".[keyring]"
|
|
72
|
+
|
|
73
|
+
# Isaac Lab integration
|
|
74
|
+
pip install -e ".[isaaclab]"
|
|
75
|
+
|
|
76
|
+
# All optional dependencies
|
|
77
|
+
pip install -e ".[dev,keyring,isaaclab]"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Environment and Scene Definitions
|
|
81
|
+
|
|
82
|
+
### Environment Structure
|
|
83
|
+
|
|
84
|
+
Environments are defined using a `manifest.yaml` file that describes the environment bundle:
|
|
85
|
+
|
|
86
|
+
**Example: USD Environment**
|
|
87
|
+
```yaml
|
|
88
|
+
id: digital-twin-warehouse-v1
|
|
89
|
+
type: usd
|
|
90
|
+
version: 1.0.0
|
|
91
|
+
description: Digital twin of a small warehouse environment for navigation training
|
|
92
|
+
category: navigation
|
|
93
|
+
|
|
94
|
+
scenes:
|
|
95
|
+
- scene_id: small_warehouse
|
|
96
|
+
description: Small warehouse digital twin with realistic layout and obstacles
|
|
97
|
+
usd: small_warehouse_digital_twin.usd
|
|
98
|
+
omap_image: digital_twin_omap/map.png
|
|
99
|
+
omap_meta: digital_twin_omap/map.yaml
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Example: Preset Environment**
|
|
103
|
+
```yaml
|
|
104
|
+
id: indoor-environments-v1
|
|
105
|
+
type: preset
|
|
106
|
+
version: 1.0.0
|
|
107
|
+
description: Indoor navigation environments including hospital corridors and warehouse
|
|
108
|
+
category: navigation
|
|
109
|
+
|
|
110
|
+
preset_scenes:
|
|
111
|
+
- scene_id: hospital
|
|
112
|
+
description: Hospital corridor environment for indoor navigation
|
|
113
|
+
preset: hospital_preset.py
|
|
114
|
+
- scene_id: warehouse
|
|
115
|
+
description: Warehouse with shelves and bounding walls
|
|
116
|
+
preset: warehouse_preset.py
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Usage Example
|
|
120
|
+
|
|
121
|
+
Here's how to load and use environments and scenes in your Isaac Lab code:
|
|
122
|
+
|
|
123
|
+
```python
|
|
124
|
+
from nepher import load_env, load_scene
|
|
125
|
+
|
|
126
|
+
# Load an environment
|
|
127
|
+
env = load_env("indoor-environments-v1", category="navigation")
|
|
128
|
+
|
|
129
|
+
# List all scenes in the environment
|
|
130
|
+
print("Available scenes:", [s.name for s in env.get_all_scenes()])
|
|
131
|
+
# Output: Available scenes: ['hospital', 'warehouse']
|
|
132
|
+
|
|
133
|
+
# Load a specific scene configuration
|
|
134
|
+
scene_cfg = load_scene(env, scene="hospital", category="navigation")
|
|
135
|
+
|
|
136
|
+
# Use the scene configuration in Isaac Lab
|
|
137
|
+
from isaaclab.envs import ManagerBasedRLEnv
|
|
138
|
+
# ... configure your environment with scene_cfg
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**USD Scene in Isaac Sim**
|
|
142
|
+

|
|
143
|
+
|
|
144
|
+
**Preset Scene in Isaac Sim**
|
|
145
|
+

|
|
146
|
+
|
|
147
|
+
## Quick Start
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Authenticate with your API key
|
|
151
|
+
nepher login <api_key>
|
|
152
|
+
|
|
153
|
+
# Check current authentication status
|
|
154
|
+
nepher whoami
|
|
155
|
+
|
|
156
|
+
# Logout and clear credentials
|
|
157
|
+
nepher logout
|
|
158
|
+
|
|
159
|
+
# List available environments
|
|
160
|
+
nepher list --category navigation
|
|
161
|
+
|
|
162
|
+
# List evaluation benchmarks (evaluators only - for tournaments)
|
|
163
|
+
nepher list --eval-benchmarks
|
|
164
|
+
|
|
165
|
+
# Download an environment
|
|
166
|
+
nepher download <env_id> --category navigation
|
|
167
|
+
|
|
168
|
+
# List cached environments
|
|
169
|
+
nepher cache list
|
|
170
|
+
|
|
171
|
+
# View an environment in Isaac Sim
|
|
172
|
+
nepher view <env_id> --category navigation
|
|
173
|
+
|
|
174
|
+
# View a specific scene
|
|
175
|
+
nepher view <env_id> --category navigation --scene <scene_name>
|
|
176
|
+
|
|
177
|
+
# Upload your own environment (contributors or evaluators only)
|
|
178
|
+
nepher upload ./my-env --category manipulation --thumbnail ./thumbnail.png
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Features
|
|
182
|
+
|
|
183
|
+
- **Universal Category Support**: Works with any environment category (navigation, manipulation, humanoid, locomotion, etc.)
|
|
184
|
+
- **Professional CLI**: Intuitive command-line interface for all operations
|
|
185
|
+
- **Seamless Integration**: Direct integration with `envhub-backend` API
|
|
186
|
+
- **Flexible Configuration**: User-configurable cache directories and settings
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
Business Source License 1.1 (BUSL-1.1) - see [LICENSE](LICENSE) for details.
|
|
192
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Nepher: Universal Isaac Lab Environments Platform
|
|
3
|
+
|
|
4
|
+
A unified, category-agnostic Python package for managing Isaac Lab environments.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
__version__ = "0.1.0"
|
|
8
|
+
|
|
9
|
+
from nepher.config import get_config, set_config
|
|
10
|
+
from nepher.auth import login, logout, whoami, get_api_key
|
|
11
|
+
from nepher.api.client import get_client, APIClient
|
|
12
|
+
from nepher.core import Environment, Scene
|
|
13
|
+
from nepher.loader import load_env, load_scene
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
# Version
|
|
17
|
+
"__version__",
|
|
18
|
+
# Configuration
|
|
19
|
+
"get_config",
|
|
20
|
+
"set_config",
|
|
21
|
+
# Authentication
|
|
22
|
+
"login",
|
|
23
|
+
"logout",
|
|
24
|
+
"whoami",
|
|
25
|
+
"get_api_key",
|
|
26
|
+
# API Client
|
|
27
|
+
"get_client",
|
|
28
|
+
"APIClient",
|
|
29
|
+
# Core types
|
|
30
|
+
"Environment",
|
|
31
|
+
"Scene",
|
|
32
|
+
# Loaders
|
|
33
|
+
"load_env",
|
|
34
|
+
"load_scene",
|
|
35
|
+
]
|
|
36
|
+
|