--- 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: `: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.