Nintendo 3DS / 2DS
Status: implemented; el remapeo de ejes y la escala de accel están pendientes de validación en consola en vivo.
La 3DS, New 3DS, 2DS y New 2DS XL llevan todas una IMU completa de 6 ejes - un acelerómetro de 3 ejes y un giroscopio de 3 ejes - lo que las convierte en buenos trackers, aproximadamente del nivel de un Joy-Con 1 y muy por encima de un pad de un solo eje. La consola no puede controlarse por USB ni Bluetooth, así que una app homebrew corre en la 3DS y transmite la IMU en crudo por UDP.
Transporte
Sección titulada «Transporte»| Aspecto | Valor |
|---|---|
| Protocolo | UDP, el bridge se enlaza a 0.0.0.0:9305 |
| Dirección | 3DS → bridge (unidireccional, sin canal de retorno) |
| Identidad | IP del emisor (una consola = un tracker) |
| Tasa | ~100 Hz (loop del homebrew, sleep de 10 ms) |
| Config | IP del servidor en texto plano en un server.cfg en la tarjeta SD |
Layout del paquete (12 bytes, little-endian)
Sección titulada «Layout del paquete (12 bytes, little-endian)»struct ImuPacket { // 12 bytes, packed s16 ax, ay, az; // accelerometer s16 gx, gy, gz; // gyroscope};| Offset | Campo |
|---|---|
0x00 |
Accel X (i16 LE) |
0x02 |
Accel Y |
0x04 |
Accel Z |
0x06 |
Gyro X (i16 LE) |
0x08 |
Gyro Y |
0x0A |
Gyro Z |
Sin header, sequence ni checksum - valida que length == 12 y descarta en caso contrario.
- Gyro:
rad/s = raw × 0.00125(≈ 0.0716 °/s por LSB). - Accel: el conteo raw por g varía según la revisión, así que el driver
autoescala a la gravedad - sobre las primeras ~100 muestras calcula
division = 9.80665 / mean(|a|)y aplicam/s² = raw × division. Sin constante mágica de LSB/g.
Convención de ejes (provisional)
Sección titulada «Convención de ejes (provisional)»accel = (ax, az, ay) × division, gyro = (−gx, −gy, −gz) × 0.00125. Portado de un
forwarder que funciona; el accel intercambia Y↔Z mientras que el gyro solo niega.
Esto está confirmado empíricamente en otros lados pero pendiente de validación en
hardware de eimu - pon en marcha una consola en vivo, confirma que la gravedad lee
+Z con la pantalla hacia arriba, y confirma que el signo del gyro concuerda con la
rotación derivada del accel antes de tratarlo como canónico.
6 ejes puros: accel (m/s²) + gyro (rad/s). Sin magnetómetro, así que el yaw se integra por gyro con corrección de bias basada en movimiento - deriva lenta, recentra con Reset Yaw.
- No hay botones en el paquete, así que no existe un gesto de reset en el dispositivo - usa el recentrado por software hasta que se extienda el homebrew.
- Sin batería ni rumble en el wire.
- El Wi-Fi de la Old-3DS es 2.4 GHz b/g; la pérdida UDP se tolera (la fusión avanza por inercia sobre un frame perdido).