Un giroscopio es un sensor que mide la velocidad angular de rotación de un dispositivo respecto a tres ejes. A diferencia de un acelerómetro, que mide la aceleración lineal, un giroscopio detecta la rotación y la orientación en el espacio. Según STMicroelectronics, 2024, los giroscopios MEMS modernos alcanzan una precisión de hasta 0.01 grados por segundo, lo que permite su uso en navegación, estabilización de imagen y aplicaciones de RA.
Puntos clave
Un giroscopio en un smartphone es un sensor microelectromecánico (MEMS) que mide la velocidad angular de rotación del dispositivo. A diferencia de los giroscopios mecánicos utilizados en aviación, un giroscopio MEMS es un chip de silicio de 2×2×1 mm montado en la placa base del teléfono.
Los smartphones modernos utilizan exclusivamente giroscopios MEMS de tipo vibratorio: tuning-fork y ring-design. No tienen piezas giratorias, lo que garantiza una durabilidad de hasta 10 años de funcionamiento continuo. Los principales fabricantes son Bosch Sensortec (serie BMI), STMicroelectronics (series L3G, A3G) e InvenSense (serie ICM).
Un giroscopio MEMS típico tiene un rango de medición de ±125 a ±2000 °/s, una frecuencia de muestreo de hasta 32 kHz y un consumo de corriente de 3–6 mA. Según Bosch Sensortec BMI160 (2023), el nivel de ruido es de 0.007 °/s/√Hz en un rango de ±125 °/s, suficiente para un seguimiento preciso de los giros.
| Parámetro | Valor |
|---|---|
| Tecnología | MEMS (vibratorio) |
| Rango | ±125 — ±2000 °/s |
| Consumo | 3–6 mA |
| Tamaño | 2×2×1 mm |
| Ruido | 0.007 °/s/√Hz |
El principio de funcionamiento de un giroscopio MEMS se basa en el efecto Coriolis. Dentro del chip hay una masa de silicio que vibra a una frecuencia específica (15–30 kHz). Cuando el dispositivo gira, la fuerza de Coriolis actúa sobre la masa vibrante, proporcional a la velocidad angular.
Los elementos clave de un giroscopio MEMS son los electrodos de excitación que crean las vibraciones y los electrodos sensores que detectan el desplazamiento. Según el artículo de investigación “MEMS Gyroscopes for Consumer Electronics” (IEEE, 2023), un diseño típico incluye de 4 a 8 estructuras de peine dispuestas simétricamente alrededor de la masa central.
Los giroscopios modernos transmiten datos a través de los buses I²C o SPI. El controlador del smartphone recibe valores de velocidad angular en tres ejes: X (Pitch), Y (Roll) y Z (Yaw). El ADC integrado convierte la señal capacitiva en valores digitales con una resolución de 16–24 bits. La frecuencia de actualización en modos de juego alcanza los 400 Hz.
Un acelerómetro mide la aceleración lineal: el cambio de velocidad de un objeto a lo largo de los ejes. Un giroscopio mide la rotación: la velocidad de cambio del ángulo. Estos sensores son complementarios: el acelerómetro proporciona orientación respecto al vector de gravedad, pero no distingue la inclinación del movimiento lineal. El giroscopio rastrea las rotaciones independientemente de la gravedad, pero está sujeto a deriva.
En aplicaciones reales se utiliza Sensor Fusion, un algoritmo que combina datos del giroscopio, el acelerómetro y el magnetómetro. El filtro de Mahony o el filtro complementario calculan cuaterniones de orientación con una precisión de 2 grados en estática y 5 grados en dinámica. Android proporciona el sensor virtual TYPE_ROTATION_VECTOR a nivel de framework.
val rotationVector = sensorManager
.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR)
val callback = object : SensorEventListener {
override fun onSensorChanged(event: SensorEvent) {
val quat = FloatArray(4)
SensorManager.getQuaternionFromVector(quat, event.values)
// quat[0..3] — cuaternión de orientación
}
}
Android proporciona dos tipos de sensores de giroscopio: TYPE_GYROSCOPE (calibrado, sin deriva) y TYPE_GYROSCOPE_UNCALIBRATED (datos brutos con estimación de deriva). Se accede a ellos mediante SensorManager.getDefaultSensor(). Los datos se devuelven en rad/s, radianes por segundo.
Registrar un listener del giroscopio requiere especificar un retardo: SENSOR_DELAY_GAME (20 ms) para juegos, SENSOR_DELAY_UI (67 ms) para interfaz, SENSOR_DELAY_FASTEST (0 ms) para máxima frecuencia. Sin cancelar el registro en onPause(), la batería se agota en 2–3 horas.
class GyroActivity : AppCompatActivity() {
private lateinit var sensorManager: SensorManager
private var gyroscope: Sensor? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
gyroscope = sensorManager.getDefaultSensor(
Sensor.TYPE_GYROSCOPE
)
}
override fun onResume() {
super.onResume()
gyroscope?.let { sensor ->
sensorManager.registerListener(
this, sensor, SensorManager.SENSOR_DELAY_GAME
)
}
}
}
Los datos brutos de event.values[0..2] corresponden a la velocidad angular en X, Y y Z. Para obtener el ángulo de rotación, es necesario integrar la velocidad angular en el tiempo. A 50 Hz, el error de integración es de aproximadamente 1 grado por minuto, aceptable para juegos pero insuficiente para navegación sin corrección.
La deriva de cero (bias drift) es el principal problema de los giroscopios MEMS. Incluso en reposo, el sensor puede mostrar una velocidad angular no nula (0.1–2 °/s). La causa son los cambios de temperatura y las tensiones mecánicas en la estructura de silicio. Los fabricantes compensan este efecto a nivel de hardware.
El sistema Android calibra automáticamente el giroscopio al primer encendido o cuando cambia la temperatura. El proceso de calibración dura entre 10 y 30 segundos y no requiere intervención del usuario: basta con colocar el teléfono sobre una superficie fija. El método calibrate() no está disponible en todos los dispositivos. Para una calibración forzada, se utiliza TYPE_GYROSCOPE_UNCALIBRATED obteniendo el offset de bias mediante event.values[3..5].
private fun handleUncalibratedGyro(event: SensorEvent) {
val rawX = event.values[0] // rad/s sin calibrar
val biasX = event.values[3] // compensación del eje X
val calibratedX = rawX - biasX
applyCalibrationToFusion(
calibratedX,
event.values[1] - event.values[4],
event.values[2] - event.values[5]
)
}
El giroscopio se utiliza en decenas de escenarios, desde la estabilización de cámara hasta cascos de RV como Google Cardboard. ARKit de Apple y ARCore de Google utilizan el giroscopio como sensor principal para el seguimiento de la rotación de la cabeza. Según Apple ARKit Technical Specification (2024), el giroscopio combinado con un acelerómetro proporciona una precisión de seguimiento de hasta 0.5 grados.
Más allá de la electrónica de consumo, los giroscopios se utilizan en robótica y UAV. Los robots móviles basados en Android Things y ROS (Robot Operating System) utilizan giroscopios MEMS para la estabilización del movimiento y la odometría. Según el estudio de IEEE “MEMS IMU in Robotics” (2024), la precisión de posicionamiento de un robot móvil con giroscopio es de 3 a 5 veces mayor que solo con odometría de ruedas, especialmente en superficies resbaladizas. En drones de consumo, el giroscopio combinado con un barómetro mantiene la altitud de vuelo con una precisión de 0.5 metros con vientos de hasta 10 m/s.
Para las aplicaciones de RA, el giroscopio es el sensor principal que determina la posición de los objetos virtuales respecto al mundo real. Google ARCore utiliza el giroscopio para el seguimiento del movimiento del dispositivo a 1000 Hz (mediante muestreo interno, independiente de la frecuencia de la API). ARKit de Apple alcanza una precisión de posicionamiento de 0.5 grados durante el movimiento, suficiente para superponer muebles virtuales o personajes de juegos en la escena real.
La nueva generación de IMU de 6 ejes (InvenSense ICM-42688, 2024) integra un giroscopio y un acelerómetro en un solo chip con un consumo de 0.45 mA en modo de bajo consumo. El desarrollo de gradiómetros y giroscopios atómicos para dispositivos móviles sigue en fase de prototipo de laboratorio. Se esperan giroscopios MEMS de grado comercial con una precisión de 0.001 °/s para 2028.
Preguntas frecuentes
El giroscopio detecta la rotación y orientación del dispositivo en el espacio. Sin él, serían imposibles el modo RV, la rotación automática por inclinación, la estabilización de vídeo y las aplicaciones de RA. Los teléfonos modernos no pueden funcionar sin un giroscopio.
Un acelerómetro mide la aceleración lineal (movimiento e inclinación respecto a la gravedad). Un giroscopio mide la velocidad angular (rotación). El acelerómetro no distingue la rotación del dispositivo de su movimiento lineal: el giroscopio resuelve este problema.
Android utiliza calibración automática. Para la calibración manual, descargue aplicaciones como “GPS Status & Toolbox”: le guiarán para colocar el teléfono sobre una superficie plana y calibrarlo mediante TYPE_GYROSCOPE_UNCALIBRATED.
Esto es la deriva de cero, una propiedad natural de los sensores MEMS. Incluso los giroscopios caros tienen un offset de 0.1–2 °/s en reposo. La calibración resta este offset. Si la deriva supera los 5 °/s, el sensor está defectuoso.
Use SensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) y registre un SensorEventListener. Los datos llegan en rad/s en tres ejes. Para juegos, use SENSOR_DELAY_GAME (20 ms); para fondo, SENSOR_DELAY_UI (67 ms).
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también