docs: Move Installation and Quick Start above Table of Contents
Promotes Installation and Quick Start to top-level sections placed between Key Features and Table of Contents for faster onboarding. Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
312
README.md
312
README.md
@@ -57,6 +57,162 @@ docker run -p 3000:3000 ruvnet/wifi-densepose:latest
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 📦 Installation
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>Guided Installer</strong> — Interactive hardware detection and profile selection</summary>
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The installer walks through 7 steps: system detection, toolchain check, WiFi hardware scan, profile recommendation, dependency install, build, and verification.
|
||||||
|
|
||||||
|
| Profile | What it installs | Size | Requirements |
|
||||||
|
|---------|-----------------|------|-------------|
|
||||||
|
| `verify` | Pipeline verification only | ~5 MB | Python 3.8+ |
|
||||||
|
| `python` | Full Python API server + sensing | ~500 MB | Python 3.8+ |
|
||||||
|
| `rust` | Rust pipeline (~810x faster) | ~200 MB | Rust 1.70+ |
|
||||||
|
| `browser` | WASM for in-browser execution | ~10 MB | Rust + wasm-pack |
|
||||||
|
| `iot` | ESP32 sensor mesh + aggregator | varies | Rust + ESP-IDF |
|
||||||
|
| `docker` | Docker-based deployment | ~1 GB | Docker |
|
||||||
|
| `field` | WiFi-Mat disaster response kit | ~62 MB | Rust + wasm-pack |
|
||||||
|
| `full` | Everything available | ~2 GB | All toolchains |
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Non-interactive
|
||||||
|
./install.sh --profile rust --yes
|
||||||
|
|
||||||
|
# Hardware check only
|
||||||
|
./install.sh --check-only
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>From Source</strong> — Rust (primary) or Python</summary>
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/ruvnet/wifi-densepose.git
|
||||||
|
cd wifi-densepose
|
||||||
|
|
||||||
|
# Rust (primary — 810x faster)
|
||||||
|
cd rust-port/wifi-densepose-rs
|
||||||
|
cargo build --release
|
||||||
|
cargo test --workspace
|
||||||
|
|
||||||
|
# Python (legacy v1)
|
||||||
|
pip install -r requirements.txt
|
||||||
|
pip install -e .
|
||||||
|
|
||||||
|
# Or via pip
|
||||||
|
pip install wifi-densepose
|
||||||
|
pip install wifi-densepose[gpu] # GPU acceleration
|
||||||
|
pip install wifi-densepose[all] # All optional deps
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>Docker</strong> — Pre-built images, no toolchain needed</summary>
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Rust sensing server (132 MB — recommended)
|
||||||
|
docker pull ruvnet/wifi-densepose:latest
|
||||||
|
docker run -p 3000:3000 -p 3001:3001 -p 5005:5005/udp ruvnet/wifi-densepose:latest
|
||||||
|
|
||||||
|
# Python sensing pipeline (569 MB)
|
||||||
|
docker pull ruvnet/wifi-densepose:python
|
||||||
|
docker run -p 8765:8765 -p 8080:8080 ruvnet/wifi-densepose:python
|
||||||
|
|
||||||
|
# Both via docker-compose
|
||||||
|
cd docker && docker compose up
|
||||||
|
|
||||||
|
# Export RVF model
|
||||||
|
docker run --rm -v $(pwd):/out ruvnet/wifi-densepose:latest --export-rvf /out/model.rvf
|
||||||
|
```
|
||||||
|
|
||||||
|
| Image | Tag | Size | Ports |
|
||||||
|
|-------|-----|------|-------|
|
||||||
|
| `ruvnet/wifi-densepose` | `latest`, `rust` | 132 MB | 3000 (REST), 3001 (WS), 5005/udp (ESP32) |
|
||||||
|
| `ruvnet/wifi-densepose` | `python` | 569 MB | 8765 (WS), 8080 (UI) |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>System Requirements</strong></summary>
|
||||||
|
|
||||||
|
- **Rust**: 1.70+ (primary runtime — install via [rustup](https://rustup.rs/))
|
||||||
|
- **Python**: 3.8+ (for verification and legacy v1 API)
|
||||||
|
- **OS**: Linux (Ubuntu 18.04+), macOS (10.15+), Windows 10+
|
||||||
|
- **Memory**: Minimum 4GB RAM, Recommended 8GB+
|
||||||
|
- **Storage**: 2GB free space for models and data
|
||||||
|
- **Network**: WiFi interface with CSI capability (optional — installer detects what you have)
|
||||||
|
- **GPU**: Optional (NVIDIA CUDA or Apple Metal)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Quick Start
|
||||||
|
|
||||||
|
<details open>
|
||||||
|
<summary><strong>First API call in 3 commands</strong></summary>
|
||||||
|
|
||||||
|
### 1. Install
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Fastest path — Docker
|
||||||
|
docker pull ruvnet/wifi-densepose:latest
|
||||||
|
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
|
||||||
|
|
||||||
|
# Or from source (Rust)
|
||||||
|
./install.sh --profile rust --yes
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Start the System
|
||||||
|
|
||||||
|
```python
|
||||||
|
from wifi_densepose import WiFiDensePose
|
||||||
|
|
||||||
|
system = WiFiDensePose()
|
||||||
|
system.start()
|
||||||
|
poses = system.get_latest_poses()
|
||||||
|
print(f"Detected {len(poses)} persons")
|
||||||
|
system.stop()
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. REST API
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Health check
|
||||||
|
curl http://localhost:3000/api/v1/health
|
||||||
|
|
||||||
|
# Latest sensing frame
|
||||||
|
curl http://localhost:3000/api/v1/sensing
|
||||||
|
|
||||||
|
# Vital signs
|
||||||
|
curl http://localhost:3000/api/v1/vital-signs
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Real-time WebSocket
|
||||||
|
|
||||||
|
```python
|
||||||
|
import asyncio, websockets, json
|
||||||
|
|
||||||
|
async def stream():
|
||||||
|
async with websockets.connect("ws://localhost:3001/ws/sensing") as ws:
|
||||||
|
async for msg in ws:
|
||||||
|
data = json.loads(msg)
|
||||||
|
print(f"Persons: {len(data.get('persons', []))}")
|
||||||
|
|
||||||
|
asyncio.run(stream())
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 📋 Table of Contents
|
## 📋 Table of Contents
|
||||||
|
|
||||||
<details open>
|
<details open>
|
||||||
@@ -493,162 +649,6 @@ See `vendor/ruvector/` for full source.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📦 Installation
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary><strong>Guided Installer</strong> — Interactive hardware detection and profile selection</summary>
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./install.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
The installer walks through 7 steps: system detection, toolchain check, WiFi hardware scan, profile recommendation, dependency install, build, and verification.
|
|
||||||
|
|
||||||
| Profile | What it installs | Size | Requirements |
|
|
||||||
|---------|-----------------|------|-------------|
|
|
||||||
| `verify` | Pipeline verification only | ~5 MB | Python 3.8+ |
|
|
||||||
| `python` | Full Python API server + sensing | ~500 MB | Python 3.8+ |
|
|
||||||
| `rust` | Rust pipeline (~810x faster) | ~200 MB | Rust 1.70+ |
|
|
||||||
| `browser` | WASM for in-browser execution | ~10 MB | Rust + wasm-pack |
|
|
||||||
| `iot` | ESP32 sensor mesh + aggregator | varies | Rust + ESP-IDF |
|
|
||||||
| `docker` | Docker-based deployment | ~1 GB | Docker |
|
|
||||||
| `field` | WiFi-Mat disaster response kit | ~62 MB | Rust + wasm-pack |
|
|
||||||
| `full` | Everything available | ~2 GB | All toolchains |
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Non-interactive
|
|
||||||
./install.sh --profile rust --yes
|
|
||||||
|
|
||||||
# Hardware check only
|
|
||||||
./install.sh --check-only
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary><strong>From Source</strong> — Rust (primary) or Python</summary>
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/ruvnet/wifi-densepose.git
|
|
||||||
cd wifi-densepose
|
|
||||||
|
|
||||||
# Rust (primary — 810x faster)
|
|
||||||
cd rust-port/wifi-densepose-rs
|
|
||||||
cargo build --release
|
|
||||||
cargo test --workspace
|
|
||||||
|
|
||||||
# Python (legacy v1)
|
|
||||||
pip install -r requirements.txt
|
|
||||||
pip install -e .
|
|
||||||
|
|
||||||
# Or via pip
|
|
||||||
pip install wifi-densepose
|
|
||||||
pip install wifi-densepose[gpu] # GPU acceleration
|
|
||||||
pip install wifi-densepose[all] # All optional deps
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary><strong>Docker</strong> — Pre-built images, no toolchain needed</summary>
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Rust sensing server (132 MB — recommended)
|
|
||||||
docker pull ruvnet/wifi-densepose:latest
|
|
||||||
docker run -p 3000:3000 -p 3001:3001 -p 5005:5005/udp ruvnet/wifi-densepose:latest
|
|
||||||
|
|
||||||
# Python sensing pipeline (569 MB)
|
|
||||||
docker pull ruvnet/wifi-densepose:python
|
|
||||||
docker run -p 8765:8765 -p 8080:8080 ruvnet/wifi-densepose:python
|
|
||||||
|
|
||||||
# Both via docker-compose
|
|
||||||
cd docker && docker compose up
|
|
||||||
|
|
||||||
# Export RVF model
|
|
||||||
docker run --rm -v $(pwd):/out ruvnet/wifi-densepose:latest --export-rvf /out/model.rvf
|
|
||||||
```
|
|
||||||
|
|
||||||
| Image | Tag | Size | Ports |
|
|
||||||
|-------|-----|------|-------|
|
|
||||||
| `ruvnet/wifi-densepose` | `latest`, `rust` | 132 MB | 3000 (REST), 3001 (WS), 5005/udp (ESP32) |
|
|
||||||
| `ruvnet/wifi-densepose` | `python` | 569 MB | 8765 (WS), 8080 (UI) |
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary><strong>System Requirements</strong></summary>
|
|
||||||
|
|
||||||
- **Rust**: 1.70+ (primary runtime — install via [rustup](https://rustup.rs/))
|
|
||||||
- **Python**: 3.8+ (for verification and legacy v1 API)
|
|
||||||
- **OS**: Linux (Ubuntu 18.04+), macOS (10.15+), Windows 10+
|
|
||||||
- **Memory**: Minimum 4GB RAM, Recommended 8GB+
|
|
||||||
- **Storage**: 2GB free space for models and data
|
|
||||||
- **Network**: WiFi interface with CSI capability (optional — installer detects what you have)
|
|
||||||
- **GPU**: Optional (NVIDIA CUDA or Apple Metal)
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🚀 Quick Start
|
|
||||||
|
|
||||||
<details open>
|
|
||||||
<summary><strong>First API call in 3 commands</strong></summary>
|
|
||||||
|
|
||||||
### 1. Install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Fastest path — Docker
|
|
||||||
docker pull ruvnet/wifi-densepose:latest
|
|
||||||
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
|
|
||||||
|
|
||||||
# Or from source (Rust)
|
|
||||||
./install.sh --profile rust --yes
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Start the System
|
|
||||||
|
|
||||||
```python
|
|
||||||
from wifi_densepose import WiFiDensePose
|
|
||||||
|
|
||||||
system = WiFiDensePose()
|
|
||||||
system.start()
|
|
||||||
poses = system.get_latest_poses()
|
|
||||||
print(f"Detected {len(poses)} persons")
|
|
||||||
system.stop()
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. REST API
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Health check
|
|
||||||
curl http://localhost:3000/api/v1/health
|
|
||||||
|
|
||||||
# Latest sensing frame
|
|
||||||
curl http://localhost:3000/api/v1/sensing
|
|
||||||
|
|
||||||
# Vital signs
|
|
||||||
curl http://localhost:3000/api/v1/vital-signs
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Real-time WebSocket
|
|
||||||
|
|
||||||
```python
|
|
||||||
import asyncio, websockets, json
|
|
||||||
|
|
||||||
async def stream():
|
|
||||||
async with websockets.connect("ws://localhost:3001/ws/sensing") as ws:
|
|
||||||
async for msg in ws:
|
|
||||||
data = json.loads(msg)
|
|
||||||
print(f"Persons: {len(data.get('persons', []))}")
|
|
||||||
|
|
||||||
asyncio.run(stream())
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🖥️ CLI Usage
|
## 🖥️ CLI Usage
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|||||||
Reference in New Issue
Block a user