Spaces:
Sleeping
Sleeping
File size: 6,532 Bytes
2a44712 a753cbb 2a44712 b71fdeb 21c67f9 2a44712 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 4b77608 86258a1 21c67f9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | ---
title: OpenEnv
emoji: π
colorFrom: green
colorTo: blue
sdk: docker
sdk_version: 6.10.0
python_version: '3.11'
app_file: app.py
pinned: false
---
# OpenEnv
<div align="center">
**A Production-Ready Reinforcement Learning Environment for Autonomous Drone Navigation**
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://huggingface.co/spaces/yourusername/openenv-drone-navigation)
π **Try the live demo:** [OpenEnv on Hugging Face Spaces](https://huggingface.co/spaces/yourusername/openenv-drone-navigation)
</div>
---
## π Real-World Task: Warehouse Inventory Inspection
OpenEnv simulates **autonomous drone navigation for automated warehouse inventory inspection** - a critical real-world robotics challenge faced by logistics companies worldwide.
### The Problem
- **Manual inventory checks** in massive warehouses are time-consuming and error-prone
- **Human inspectors** need to navigate aisles, read barcodes, and verify stock levels
- **Operational costs** are high, and accuracy is critical for supply chain management
### Our Solution
Train AI agents to autonomously navigate drones through warehouse environments to:
- β
Reach inspection checkpoints (inventory scanners)
- β
Avoid static obstacles (shelves, boxes, equipment)
- β
Compensate for dynamic disturbances (wind from ventilation, moving machinery)
- β
Optimize flight paths for battery efficiency
- β
Complete inspections within time constraints
### Industry Impact
This environment directly models challenges faced by:
- **Amazon Robotics** - Automated warehouse monitoring
- **DJI Enterprise** - Industrial inspection drones
- **Boston Dynamics** - Autonomous navigation systems
- **Wing Aviation** - Delivery drone path planning
---
## Action and Observation Space
### Observation Space
The environment uses a multi-modal observation space represented strictly through the **OpenEnv Pydantic Spec**:
- `emails_remaining`: (int) How many emails left in the queue.
- `current_email`: (Email) The current email to triage containing ID, sender, subject, body, and ground-truth metadata.
- `time_elapsed`: (float) Time taken in episode.
### Action Space
Discrete control (0-4 integer matching to Ignore, Reply, Forward, Archive, Delete).
### Meaningful Reward Structure
Unlike binary win/loss signals, this environment provides *dense* steps of reward:
- **+1** for correctly triaging an email (e.g. archiving a newsletter).
- **-1** for incorrectly triaging an email.
- **-5** Critical Safety Penalty if an agent *Ignores* or *Deletes* an urgent email.
- **-2** Safety Penalty for *Replying to* or *Forwarding* spam.
---
## Setup & Execution
### 1. Local Installation
```bash
git clone https://github.com/yourusername/OpenEnv
cd OpenEnv
# Create a virtual environment
python -m venv venv
source venv/bin/activate
# Install the package and dependencies
pip install -e .
```
### 2. Validation
Check OpenEnv Spec Compliance:
```bash
openenv validate
# or
python -m openenv.scripts.cli validate
```
### 3. Baseline Agent (OpenAI API)
You can run a completely autonomous baseline test utilizing a state-of-the-art LLM (GPT-4o-mini).
```bash
export OPENAI_API_KEY="sk-..."
python scripts/baseline.py
```
### 4. Interactive Hugging Face UI
Watch the environment in action or play it manually using the Gradio layout:
```bash
python app.py
```
> Go to `http://localhost:7860` to triage the inbox.
---
## π Performance Benchmarks
### Baseline Results
Training with PPO (Stable Baselines3):
| Metric | Value |
|--------|-------|
| Timesteps | 100,000 |
| Mean Return | ~850 |
| Success Rate | ~95% |
| Episode Length | ~150 steps |
### Environment Speed
- **Step Latency:** < 0.1ms (no rendering)
- **Step Latency:** ~2ms (with rgb_array rendering)
- **Parallel Performance:** Scales linearly with VecEnv
---
## π¬ Example Environments
### Custom Environment Variants
You can create specialized variants by modifying configuration:
```python
# Easy version - larger target, no boundary termination
easy_config = EnvConfig(
boundary_limit=100.0,
max_velocity=200.0,
reward_scale=2.0,
terminate_on_boundary=False,
)
# Hard version - smaller target, strict constraints
hard_config = EnvConfig(
boundary_limit=20.0,
max_velocity=50.0,
sparse_rewards=True,
friction=0.1,
)
# Fast training - shorter episodes
fast_config = EnvConfig(
episode_length=200,
dt=0.01,
)
```
---
## π οΈ Development
### Code Quality
This project follows professional standards:
- **Type Hints:** Full type annotation throughout
- **PEP 8:** Compliant code style
- **Black Formatting:** Automated code formatting
- **Docstrings:** Comprehensive documentation
- **Logging:** Structured logging system
### Running Linters
```bash
# Code formatting
black openenv/ tests/
# Linting
flake8 openenv/ tests/
# Type checking
mypy openenv/
```
---
## π€ Contributing
Contributions are welcome! Please follow these guidelines:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests (`pytest tests/ -v`)
5. Ensure code passes linting (`black . && flake8`)
6. Commit your changes (`git commit -m 'Add amazing feature'`)
7. Push to the branch (`git push origin feature/amazing-feature`)
8. Open a Pull Request
---
## π License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
## π Acknowledgments
- Built on [Gymnasium](https://gymnasium.farama.org/) framework
- Inspired by classic control environments (MountainCar, LunarLander)
- Designed for compatibility with [Stable Baselines3](https://stable-baselines3.readthedocs.io/)
---
## π Support
For issues, questions, or contributions:
- **Bug Reports:** GitHub Issues
- **Questions:** GitHub Discussions
- **General Inquiries:** See README contact info
---
## π Citation
If you use OpenEnv in your research, please cite:
```bibtex
@software{openenv2024,
author = {OpenEnv Team},
title = {OpenEnv: A Production-Ready Reinforcement Learning Environment},
year = {2024},
url = {https://github.com/yourusername/OpenEnv},
version = {1.0.0}
}
```
---
<div align="center">
**Built with β€οΈ for the RL Community**
</div> |