@@ -27,41 +27,98 @@ Authors: Dario Bellicoso, Annika Wollschläger
2727## Project Structure
2828
2929- ` control/ ` : C++ controller library with ONNX Runtime integration
30- - ` exploy/ ` : Python exporter package for policy and environment export
31- - ` examples/ ` : Usage examples for supported frameworks
30+ - ` python/exploy/ ` : Python exporter package for policy and environment export
31+ - ` examples/exporter_scripts/ ` : Usage examples for supported frameworks
32+ - ` examples/controller/ ` : Usage examples for control development
3233- ` docs/ ` : Documentation source files
3334
35+ ## Documentation
36+
37+ Exploy's documentation is available at [ bdaiinstitute.github.io/exploy] ( https://bdaiinstitute.github.io/exploy ) .
38+ To get started with Exploy's core concepts, refer to the following guides:
39+
40+ - [ ** Exporter** ] ( docs/tutorial/exporter/exporter_tutorial.md ) — Step-by-step guide to
41+ exporting an RL environment and policy to a self-contained ONNX file using ` exploy.exporter.core ` .
42+ - [ ** Controller** ] ( docs/tutorial/controller/controller_tutorial.md ) — Step-by-step guide to
43+ deploying a trained policy on a robot using the C++ controller with ONNX Runtime integration.
44+
3445## Getting Started
3546
3647### Prerequisites
3748
38- - [ Pixi] ( https://pixi.sh ) installed on your system
49+ We use [ Pixi] ( https://pixi.sh ) to build this repository. See the
50+ [ Pixi installation guide] ( https://pixi.prefix.dev/latest/installation/ ) for setup instructions.
3951
4052### Installation
4153
42- 1 . ** Clone the repository** :
54+ #### Clone the repository
4355
4456 ``` bash
4557 git clone https://github.com/bdaiinstitute/exploy.git
4658 cd exploy
4759 ```
4860
49- 2 . ** Initialize the environment and install dependencies** :
61+ #### Install the Python exporter as a pip package
62+
63+ Exploy is split into two packages: the Exporter package developed in Python and the Controller package developed in C++.
64+ To use the exporter in your project, install it with ` pip ` :
65+
66+ ``` bash
67+ pip install -e .
68+ ```
69+
70+ The command above installs the core implementation of the exporter. This repository also provides
71+ support for exporter integrations with environments developed in ` IsaacLab ` . You can install
72+ the additional dependency with:
73+
74+ ``` bash
75+ pip install -e .[isaaclab]
76+ ```
77+
78+ #### Integrate into your CMake project
79+
80+ The easiest way to consume the library is via ` add_subdirectory ` :
81+
82+ ``` cmake
83+ cmake_minimum_required(VERSION 3.20)
84+ project(my_robot_controller LANGUAGES CXX)
85+
86+ set(CMAKE_CXX_STANDARD 20)
87+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
88+
89+ # Path to the exploy project root
90+ set(EXPLOY_ROOT_DIR "/path/to/exploy" CACHE PATH "Exploy root directory")
91+
92+ # Pull in the exploy shared library (disables its tests in your build)
93+ set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
94+ add_subdirectory(
95+ "${EXPLOY_ROOT_DIR}/control"
96+ "${CMAKE_CURRENT_BINARY_DIR}/exploy_control"
97+ EXCLUDE_FROM_ALL
98+ )
99+
100+ add_executable(my_controller main.cpp)
101+ target_link_libraries(my_controller PRIVATE exploy)
102+ ```
103+
104+ See [ ` examples/controller/ ` ] ( examples/controller/ ) for a complete working example.
105+
106+ #### Initialize the environment and install dependencies
50107
51108 ``` bash
52109 pixi install
53110 ```
54111
55112### Building the Project
56113
57- 1 . ** Configure and Build C++ Library** :
114+ #### Configure and Build C++ Library
58115
59116 ``` bash
60117 pixi run -e controller configure
61118 pixi run -e controller build
62119 ```
63120
64- 2 . ** Run tests** :
121+ #### Run tests
65122
66123 ``` bash
67124 # Python tests
@@ -71,40 +128,22 @@ Authors: Dario Bellicoso, Annika Wollschläger
71128 pixi run -e controller test
72129 ```
73130
74- ### Tutorials
131+ ### Use Exploy
75132
76- - [ ** Exporter Tutorial** ] ( docs/tutorial/exporter/exporter_tutorial.md ) — Step-by-step guide to
77- exporting an RL environment and policy to a self-contained ONNX file using ` exploy.exporter.core ` .
78- - [ ** Controller Tutorial** ] ( docs/tutorial/controller/controller_tutorial.md ) — Step-by-step guide to
79- deploying a trained policy on a robot using the C++ controller with ONNX Runtime integration.
133+ Start with the [ documentation] ( #documentation ) to learn the core workflow for exporting and
134+ deploying a task. If you have an NVIDIA GPU, you can also run an IsaacLab exporter example with
135+ ` pixi run -e isaaclab export-isaaclab ` .
80136
81137## Versioning
82138
83139This project uses semantic versioning (MAJOR.MINOR.PATCH). The current version is specified in ` pixi.toml ` .
84140
85141Releases are published using GitHub Releases. Version tags follow the format ` vX.Y.Z ` .
86142
87- ## Limitations
88-
89- - IsaacLab integration requires NVIDIA GPU with CUDA support
90- - C++ controller is designed for real-time systems but performance depends
91- on hardware
92- - ONNX model execution time varies based on policy complexity
93-
94143## Dependencies
95144
96145All dependencies are managed through Pixi and specified in ` pixi.toml ` with version constraints.
97146
98- ### Core Dependencies
99-
100- - ** Python** : 3.11.x
101- - ** C++ Build Tools** : CMake (3.24), Ninja, GCC/G++
102- - ** C++ Libraries** : ONNX Runtime (>=1.15), Eigen (>=3.4), fmt (>=9.1), nlohmann_json (>=3.11)
103- - ** Python Libraries** : PyTorch, onnxscript
104- - ** Testing** : GoogleTest, pytest
105-
106- See ` pixi.toml ` for complete dependency specifications with version ranges.
107-
108147## Development
109148
110149### Pre-commit Hooks
@@ -121,21 +160,28 @@ pixi run -e python pre-commit run --all-files
121160
122161### Available Tasks
123162
124- Specified in ` pixi.toml ` :
163+ Tasks are run through Pixi and defined in ` pixi.toml ` . Common tasks include :
125164
126- ** Python tasks ** (use ` -e core ` environment):
165+ #### Core exporter tasks
127166
128167- ` pixi run -e core test ` : Run Python tests with pytest
168+
169+ #### Python code quality tasks
170+
129171- ` pixi run -e core lint-python ` : Check Python code with ruff
130172- ` pixi run -e core format-python ` : Format Python code with ruff
131173
132- ** C++ tasks** (use ` -e controller ` environment):
174+ #### C++ tasks
133175
134176- ` pixi run -e controller configure ` : Run CMake configuration
135177- ` pixi run -e controller build ` : Build the C++ library
136178- ` pixi run -e controller test ` : Run C++ tests with CTest
137179- ` pixi run -e controller format-cpp ` : Format C++ code with clang-format
138180
181+ #### Example task
182+
183+ - ` pixi run -e isaaclab export-isaaclab ` : Export a policy for an existing IsaacLab task
184+
139185## Maintenance and Support
140186
141187This project is under ** light maintenance** . No feature development is
0 commit comments