208 lines
7.0 KiB
Markdown
208 lines
7.0 KiB
Markdown
# EngineAI-Lab
|
||
|
||
**EngineAI Lab** is a python package for training and deploying policies for EngineAI Robots using Isaac Lab and Isaac Sim.
|
||
|
||
|Training| Sim2Sim |Deploy|
|
||
|--------|--------|--------|
|
||
||<img src="./docs/deploy.gif" height="180"/>
|
||
|
||
# Structure
|
||
|
||
```
|
||
engineai-lab
|
||
├── config
|
||
├── dataset
|
||
│ ├── config
|
||
│ └── data
|
||
├── scripts
|
||
└── source
|
||
└── engineai_lab
|
||
├── algorithms
|
||
├── assets
|
||
│ ├── gen2
|
||
│ │ ├── meshes
|
||
│ │ └── urdf
|
||
│ └── pm01
|
||
│ ├── meshes
|
||
│ └── urdf
|
||
├── robots
|
||
├── tasks
|
||
│ └── velocity
|
||
│ ├── config
|
||
│ │ ├── common
|
||
│ │ ├── gen2
|
||
│ │ │ ├── agents
|
||
│ │ │ └── stages
|
||
│ │ └── pm01
|
||
│ └── mdp
|
||
└── utils
|
||
```
|
||
|
||
## QUICKSTART
|
||
|
||
### 1. Create a Conda Environment
|
||
|
||
Create and activate a new environment with Python 3.11:
|
||
|
||
```bash
|
||
conda create -n engineai_lab python=3.11
|
||
conda activate engineai_lab
|
||
```
|
||
|
||
### 2. Install Prerequisites
|
||
|
||
- **Install Isaac Sim**
|
||
|
||
Follow the official installation guide: [Isaac Lab - Pip Installation](https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/pip_installation.html#installing-dependencies).
|
||
|
||
*Since you've already created the engineai_lab environment, follow the guide from "Installing Dependencies" up to (but not including) the "Installing Isaac Lab" section.*
|
||
|
||
- **Clone & Setup Isaac Lab**
|
||
|
||
Clone the repository and switch to the recommended branch:
|
||
|
||
```bash
|
||
git clone https://github.com/isaac-sim/IsaacLab.git
|
||
cd IsaacLab
|
||
git checkout 4df6560e
|
||
./isaaclab.sh -i rsl_rl # Install rsl-rl dependency
|
||
```
|
||
|
||
We highly recommend using the main branch`(4df6560e)` of Isaac Lab, as it can support rsl-rl-lib >= 5.0 and Isaac Sim >= 5.0 .
|
||
|
||
### 3. Install this Package
|
||
|
||
Once the prerequisites are set up, install the package in editable mode:
|
||
|
||
```bash
|
||
pip install -e .
|
||
```
|
||
|
||
## Usage
|
||
|
||
For a step-by-step Chinese guide to importing and training a new humanoid robot, see
|
||
[EngineAI Lab 新人形机器人行走训练攻略](docs/humanoid_locomotion_onboarding_guide.md).
|
||
|
||
Gen2 的阶段划分、训练/续训/迁移命令和配置修改约定见
|
||
[Gen2 分阶段训练说明](source/engineai_lab/tasks/velocity/config/gen2/README.md);
|
||
URDF、mesh 与简化碰撞体约定见
|
||
[Gen2 资产说明](source/engineai_lab/assets/gen2/README.md)。
|
||
|
||
### Supported Robots
|
||
|
||
This repository currently supports the following environments from the EngineAI Robots family:
|
||
|
||
|Robot| Task |Description|
|
||
|--------|--------|--------|
|
||
PM01|`Flat-PM01-v0`|Basic flat-terrain locomotion
|
||
PM01|`Flat-AMP-PM01-v0`|AMP-based motion imitation on flat terrain
|
||
Gen2|`Flat-Gen2-v0`|基础低速行走,包含站立指令采样
|
||
Gen2|`Flat-Gen2-Speed-v0`|平地速度与稳定性巩固
|
||
Gen2|`Flat-Gen2-Natural-v0`|自然对侧摆臂
|
||
Gen2|`Flat-Gen2-Fast-v0`|课程提升至 1.6 m/s
|
||
Gen2|`Flat-Gen2-Sprint-v0`|课程提升至 3.0 m/s
|
||
Gen2|`Flat-Gen2-NaturalRun-v0`|3.0 m/s 自然跑姿微调
|
||
|
||
*More robots and environments are coming soon!*
|
||
|
||
### Training a Policy
|
||
|
||
```
|
||
python scripts/train.py --task=Flat-PM01-v0 --num_envs 4096 --headless --run_name <name>
|
||
python scripts/play.py --task=Flat-PM01-v0 --num_envs 128 --load_run <name>
|
||
```
|
||
|
||
### Gen2 Staged Training
|
||
|
||
基础阶段从头训练:
|
||
|
||
```bash
|
||
/home/xtkuang/App/anaconda3/envs/engineai_lab/bin/python scripts/train.py \
|
||
--task Flat-Gen2-v0 \
|
||
--num_envs 4096 \
|
||
--max_iterations 1500 \
|
||
--run_name gen2_walk_v0 \
|
||
--device cuda:0 \
|
||
--rl_device cuda:0 \
|
||
--headless
|
||
```
|
||
|
||
跨阶段只迁移策略权重,例如 Fast -> Sprint:
|
||
|
||
```bash
|
||
/home/xtkuang/App/anaconda3/envs/engineai_lab/bin/python scripts/train.py \
|
||
--task Flat-Gen2-Sprint-v0 \
|
||
--num_envs 4096 \
|
||
--resume True \
|
||
--load_mode finetune \
|
||
--load_run '<fast_run_directory>' \
|
||
--checkpoint model_<iteration>.pt \
|
||
--run_name gen2_sprint_v1 \
|
||
--device cuda:0 \
|
||
--rl_device cuda:0 \
|
||
--headless
|
||
```
|
||
|
||
同一 Task 中断续训才使用 `--load_mode resume`。所有阶段和对应 Play Task 的完整表格见上面的 Gen2 分阶段训练说明。
|
||
|
||
### Evaluating a Policy
|
||
|
||
```
|
||
python scripts/train.py --task=Flat-AMP-PM01-v0 --num_envs 4096 --headless --run_name <name>
|
||
python scripts/play.py --task=Flat-AMP-PM01-v0 --num_envs 128 --load_run <name>
|
||
```
|
||
|
||
Replace `<name>` with the name of your training run (found in logs/rsl_rl/).
|
||
|
||
### Deployment
|
||
|
||
To deploy a trained policy on real hardware, convert it to the MNN format for efficient inference.
|
||
|
||
#### 1. Export PyTorch Policy to ONNX
|
||
|
||
(Ensure your training script supports ONNX export)
|
||
|
||
#### 2. Build [MNN-Converter](https://mnn-docs.readthedocs.io/en/latest/start/quickstart_cpp.html?highlight=mnn+converter)
|
||
|
||
```bash
|
||
git clone https://github.com/alibaba/mnn
|
||
cd mnn
|
||
mkdir build && cd build
|
||
cmake .. -DMNN_BUILD_CONVERTER=ON
|
||
make -j8
|
||
```
|
||
|
||
#### 3. Convert ONNX into MNN
|
||
|
||
```bash
|
||
./MNNConvert -f ONNX \
|
||
--modelFile path_to_your_policy.onnx \
|
||
--MNNModel your_policy.mnn \
|
||
--bizCode MNN
|
||
```
|
||
|
||
For detailed instructions on integrating the MNN model with EngineAI robots, see:
|
||
[engineai_robotics_native_sdk](https://github.com/engineai-robotics/engineai_robotics_native_sdk).
|
||
|
||
## Support
|
||
|
||
If you have any questions about using this repository, we're here to help!
|
||
|
||
- **Report Issues**: Found a bug or have a feature request. Please open a new issue on our [GitHub Issues](https://github.com/engineai-robotics/engineai_lab/issues) page.
|
||
- **Email Us**: For general inquiries or collaboration opportunities, feel free to reach out at [info@engineai.com.cn](mailto:info@engineai.com.cn).
|
||
|
||
## License
|
||
|
||
This checkout does not currently contain a `LICENSE` file, while its package metadata and the upstream README use different license labels. Add a license file and align the metadata before redistribution.
|
||
|
||
## Acknowledgement
|
||
|
||
This repository is built upon the support and contributions of the following open-source projects. Special thanks to:
|
||
|
||
- [**IsaacLab**](https://github.com/isaac-sim/IsaacLab) — The foundational framework for training and running simulation experiments.
|
||
- [**rsl_rl**](https://github.com/leggedrobotics/rsl_rl) — High-performance reinforcement learning library for legged robots.
|
||
- [**AMP_for_hardware**](https://github.com/escontra/AMP_for_hardware) — Implementation of Adversarial Motion Priors (AMP) for sim-to-real transfer.
|
||
- [**BeyondMimic**](https://github.com/HybridRobotics/whole_body_tracking) — Inspiration for project structure and valuable feature implementations.
|
||
- [**MNN**](https://github.com/alibaba/mnn) — Lightweight, high-performance inference engine for on-device deployment.
|
||
- [**engineai_robotics_native_sdk**](https://github.com/engineai-robotics/engineai_robotics_native_sdk) — Official SDK for deploying policies on EngineAI robotic hardware.
|