Ir al contenido

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.

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 aplica m/s² = raw × division. Sin constante mágica de LSB/g.

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).