File size: 1,517 Bytes
9de9b10
 
 
 
 
 
 
 
 
 
 
 
20a0ca6
9de9b10
 
 
 
 
a42951e
9de9b10
a42951e
9de9b10
 
 
 
 
 
 
 
20a0ca6
9de9b10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a42951e
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
---
title: ESP32 Motion Controller  Reachy Mini
emoji: 🕹️
colorFrom: gray
colorTo: yellow
sdk: static
pinned: false
short_description: ESP32 handheld motion controller for Reachy Mini
tags:
  - reachy_mini
  - reachy_mini_python_app
  - esp32
  - udp
  - imu
---

# ESP32 Motion Controller

Reachy Mini app that receives protocol v4 UDP samples from the handheld ESP32. Engage snapshots IMU zero; roll/pitch/yaw stay clutch-relative (rotation only). The app owns IK-safe clamping, hard yaw stops, antenna idle, and body follow.

See the [repository README](https://github.com/V4C38/esp32-reachy-mini-controller) and [`PROTOCOL.md`](../PROTOCOL.md). Firmware and app must both speak v4.

## Local install

```bash
pip install -e .
python -m esp32_motion_controller.main
```

UDP: `<host>:8766`

Live Space: https://huggingface.co/spaces/V4C38/esp32_motion_controller

## Publish to Hugging Face

Tags required: `reachy_mini`, `reachy_mini_python_app`.

```bash
# from reachy-mini-app/
hf auth login
hf upload YOUR_USER/esp32_motion_controller . --repo-type space \
  --exclude ".venv/*" \
  --exclude "build/*" \
  --exclude "dist/*" \
  --exclude "*.egg-info/*" \
  --exclude "**/__pycache__/*" \
  --exclude "*.pyc" \
  --exclude ".pytest_cache/*" \
  --exclude ".DS_Store"
```

Keep those tags in the README frontmatter. The excludes matter: `packages.find` would otherwise pick up a stray `build/lib/` as a second copy of the package, and `.pyc` files from another Python end up in the daemon's 3.12 venv.