Ir al contenido

Arquitectura

everything-imu es un workspace de Rust: un conjunto de crates enfocados detrás de un shell de escritorio Tauri 2, más pequeñas apps complementarias del lado de la consola para dispositivos que no pueden manejarse directamente.

┌──────────────┐
│ tauri-app │
└──────┬───────┘
┌──────▼───────┐
│ core │
└──┬─────┬─────┘
│ │
┌──────────────┼─────┴──────────┬───────────────┐
│ │ │ │
┌────▼────┐ ┌──────▼──────┐ ┌──────▼──────┐ ┌─────▼──────┐
│device-* │ │slime-tracker│ │ imu-fusion │ │persistence │
└────┬────┘ └─────────────┘ └──────┬──────┘ └────────────┘
│ │
┌────▼────────┐ ┌──────▼──────┐
│device-traits│ │ imu-math │
└─────────────┘ └─────────────┘
  • slime-tracker - protocolo de cable SlimeVR UDP (handshake, sensor info, rotación, accel, BUNDLE, feature flags) con gating de auto-fallback de BUNDLE y pruebas de compatibilidad de cable contra fixtures de referencia.
  • imu-math - operaciones de quaternion, transformaciones de coordenadas y aplicación de calibración. Pura, determinista, basada en nalgebra.
  • imu-fusion - VQF (estimación de bias en reposo), Madgwick y BasicVQF. Probada contra la salida de referencia dentro de ε < 1e-6 rad.
  • device-traits - las interfaces Device / DeviceFactory compartidas por cada driver.
  • device-joycon - Joy-Con 1, Joy-Con 2 y Pro Controllers. JC1/Pro por HID con calibración SPI; JC2 por BLE con servicios y comandos GATT.
  • device-dualsense - DualSense, DualSense Edge y DualShock 4 por USB y Bluetooth (HID sobre Bluetooth Classic, no BLE). Gyro/accel/batería, reset con el botón PS, lightbar RGB y el timestamp de sensor por hardware del DS5.
  • device-psmove - PS Move ZCM1 y ZCM2 por USB y Bluetooth.
  • device-wii - listener TCP para el forwarder Wi-Fi del Wii Remote.
  • device-3ds / device-vita - listeners UDP para los forwarders homebrew del 3DS y la PS Vita.
  • device-steam-deck / device-steam-controller - IMU HID de Valve por USB.
  • device-tesla - sintetiza IMU a partir del rumbo y la velocidad de un vehículo mediante la Fleet API.
  • device-hopx - IMU BLE HOPX / Triki sobre el Nordic UART Service, descubierta por prefijo del nombre anunciado.
  • device-remote - ingesta UDP para el protocolo remote-hub de eimu (teléfono/reloj).
  • osc-haptics - bridge VRChat OSC → rumble.
  • persistence - almacén SQLite de configuración y calibración mediante rusqlite.
  • core - AppState, el Supervisor de descubrimiento de dispositivos y el Pipeline por dispositivo (eventos IMU → fusion → SlimeVR UDP).
[BLE/HID device] → device-* crate → ChannelInfo stream
imu-fusion (VQF)
▼ Quaternion + accel
slime-tracker
▼ UDP packet
SlimeVR-Server (port 6969)
Parallel: core::AppState → Tauri event "tracker_update"
→ throttled 30 Hz → React store (Zustand) → Dashboard UI

tauri-specta genera tipos de TypeScript a partir de Rust como una única fuente de verdad. La pose de tracker de alta frecuencia (60-200 Hz) se emite como un evento tracker_update; la UI se suscribe y limita su bucle de render a 30-60 Hz.

React 19 + Vite + TypeScript, Tailwind, primitivos de Radix, una paleta de comandos cmdk, gráficas en vivo y stores de Zustand que reflejan el estado del core de Rust mediante eventos de Tauri.

Objetivo Bundle
Windows Instalador NSIS .exe (Tauri bundler)
Linux .deb, .AppImage (Tauri bundler)