Skip to content

Commit 3330cc1

Browse files
dbellicoso-bdaiexploy-bot
authored andcommitted
Cleanup README (#84)
### What change is being made Clean up docs. ### Why this change is being made N/A ### Tested N/A GitOrigin-RevId: 3f1a3679315bb7ac76a282d52890cce3b31a6088
1 parent 0540a9d commit 3330cc1

8 files changed

Lines changed: 198 additions & 232 deletions

File tree

README.md

Lines changed: 78 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

83139
This project uses semantic versioning (MAJOR.MINOR.PATCH). The current version is specified in `pixi.toml`.
84140

85141
Releases 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

96145
All 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

141187
This project is under **light maintenance**. No feature development is

docs/getting_started.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
1-
# Getting Started
2-
31
```{include} ../README.md
42
```

0 commit comments

Comments
 (0)