Um giroscópio é um sensor que mede a velocidade angular de rotação de um dispositivo em torno de três eixos. Ao contrário de um acelerómetro, que mede aceleração linear, um giroscópio detecta rotação e orientação no espaço. De acordo com STMicroelectronics, 2024, os giroscópios MEMS modernos alcançam uma precisão de até 0.01 graus por segundo, permitindo seu uso em navegação, estabilização de imagem e aplicações de RA.
Principais pontos
Um giroscópio num smartphone é um sensor microeletromecânico (MEMS) que mede a velocidade angular de rotação do dispositivo. Ao contrário dos giroscópios mecânicos usados na aviação, um giroscópio MEMS é um chip de silício de 2×2×1 mm montado na placa-mãe do telemóvel.
Os smartphones modernos usam exclusivamente giroscópios MEMS do tipo vibratório — tuning-fork e ring-design. Não têm peças rotativas, garantindo durabilidade de até 10 anos de funcionamento contínuo. Os principais fabricantes são Bosch Sensortec (série BMI), STMicroelectronics (séries L3G, A3G) e InvenSense (série ICM).
Um giroscópio MEMS típico tem um intervalo de medição de ±125 a ±2000 °/s, uma taxa de amostragem até 32 kHz e consumo de corrente de 3–6 mA. Segundo Bosch Sensortec BMI160 (2023), o nível de ruído é de 0.007 °/s/√Hz num intervalo de ±125 °/s — suficiente para um acompanhamento preciso das rotações.
| Parâmetro | Valor |
|---|---|
| Tecnologia | MEMS (vibratório) |
| Intervalo | ±125 — ±2000 °/s |
| Consumo | 3–6 mA |
| Tamanho | 2×2×1 mm |
| Ruído | 0.007 °/s/√Hz |
O princípio de funcionamento de um giroscópio MEMS baseia-se no efeito de Coriolis. Dentro do chip há uma massa de silício que vibra a uma frequência específica (15–30 kHz). Quando o dispositivo roda, a força de Coriolis atua sobre a massa vibrante, proporcional à velocidade angular.
Os elementos-chave de um giroscópio MEMS são os elétrodos de excitação que criam as vibrações e os elétrodos sensores que detetam o deslocamento. Segundo o artigo de investigação “MEMS Gyroscopes for Consumer Electronics” (IEEE, 2023), um design típico inclui 4–8 estruturas de pente dispostas simetricamente em torno da massa central.
Os giroscópios modernos transmitem dados através dos barramentos I²C ou SPI. O controlador do smartphone recebe valores de velocidade angular em três eixos — X (Pitch), Y (Roll) e Z (Yaw). O ADC integrado converte o sinal capacitivo em valores digitais com resolução de 16–24 bits. A taxa de atualização em modos de jogo atinge os 400 Hz.
Um acelerómetro mede a aceleração linear — a variação da velocidade de um objeto ao longo dos eixos. Um giroscópio mede a rotação — a taxa de variação do ângulo. Estes sensores são complementares: o acelerómetro fornece orientação em relação ao vetor de gravidade, mas não distingue inclinação de movimento linear. O giroscópio acompanha as rotações independentemente da gravidade, mas está sujeito a deriva.
Em aplicações reais utiliza-se Sensor Fusion — um algoritmo que combina dados do giroscópio, acelerómetro e magnetómetro. O filtro de Mahony ou o filtro complementar calculam quaterniões de orientação com uma precisão de 2 graus em condições estáticas e 5 graus em condições dinâmicas. O Android disponibiliza o sensor virtual TYPE_ROTATION_VECTOR ao nível da 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] — quaternião de orientação
}
}
O Android fornece dois tipos de sensores de giroscópio: TYPE_GYROSCOPE (calibrado, sem deriva) e TYPE_GYROSCOPE_UNCALIBRATED (dados brutos com estimativa de deriva). O acesso é feito através de SensorManager.getDefaultSensor(). Os dados são devolvidos em rad/s — radianos por segundo.
Registar um listener para o giroscópio requer especificar um atraso: SENSOR_DELAY_GAME (20 ms) para jogos, SENSOR_DELAY_UI (67 ms) para interface, SENSOR_DELAY_FASTEST (0 ms) para máxima frequência. Sem cancelar o registo em onPause(), a bateria descarrega em 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
)
}
}
}
Os dados brutos de event.values[0..2] correspondem à velocidade angular em X, Y e Z. Para obter o ângulo de rotação, é necessário integrar a velocidade angular no tempo. A 50 Hz, o erro de integração é de cerca de 1 grau por minuto — aceitável para jogos mas insuficiente para navegação sem correção.
A deriva de zero (bias drift) é o principal problema dos giroscópios MEMS. Mesmo em repouso, o sensor pode apresentar velocidade angular não nula (0.1–2 °/s). A causa são as variações de temperatura e as tensões mecânicas na estrutura de silício. Os fabricantes compensam este efeito ao nível do hardware.
O sistema Android calibra automaticamente o giroscópio ao primeiro arranque ou quando a temperatura muda. O processo de calibração demora 10–30 segundos e não requer intervenção do utilizador — basta colocar o telemóvel numa superfície fixa. O método calibrate() não está disponível em todos os dispositivos. Para calibração forçada, utiliza-se TYPE_GYROSCOPE_UNCALIBRATED obtendo o offset de bias através de event.values[3..5].
private fun handleUncalibratedGyro(event: SensorEvent) {
val rawX = event.values[0] // rad/s sem calibrar
val biasX = event.values[3] // desvio do eixo X
val calibratedX = rawX - biasX
applyCalibrationToFusion(
calibratedX,
event.values[1] - event.values[4],
event.values[2] - event.values[5]
)
}
O giroscópio é usado em dezenas de cenários — desde a estabilização da câmara até auscultadores de RV como o Google Cardboard. O ARKit da Apple e o ARCore da Google utilizam o giroscópio como sensor principal para acompanhar a rotação da cabeça. Segundo a Apple ARKit Technical Specification (2024), o giroscópio em parceria com um acelerómetro proporciona uma precisão de acompanhamento até 0.5 graus.
Para além da eletrónica de consumo, os giroscópios são usados em robótica e UAV. Robôs móveis baseados em Android Things e ROS (Robot Operating System) utilizam giroscópios MEMS para estabilização de movimento e odometria. Segundo o estudo IEEE “MEMS IMU in Robotics” (2024), a precisão de posicionamento de um robô móvel com giroscópio é 3–5 vezes superior à da odometria apenas com rodas, especialmente em superfícies escorregadias. Em drones de consumo, o giroscópio combinado com um barómetro mantém a altitude de voo com uma precisão de 0.5 metros com ventos até 10 m/s.
Para aplicações de RA, o giroscópio é o sensor principal que determina a posição dos objetos virtuais em relação ao mundo real. O Google ARCore utiliza o giroscópio para acompanhamento do movimento do dispositivo a 1000 Hz (através de amostragem interna, independente da taxa da API). O ARKit da Apple alcança uma precisão de posicionamento de 0.5 graus durante o movimento, suficiente para sobrepor mobiliário virtual ou personagens de jogos na cena real.
A nova geração de IMU de 6 eixos (InvenSense ICM-42688, 2024) integra um giroscópio e um acelerómetro num único chip com consumo de 0.45 mA em modo de baixo consumo. O desenvolvimento de gradiómetros e giroscópios atómicos para dispositivos móveis permanece na fase de protótipo laboratorial. Esperam-se giroscópios MEMS de qualidade comercial com uma precisão de 0.001 °/s até 2028.
Perguntas frequentes
O giroscópio deteta a rotação e orientação do dispositivo no espaço. Sem ele, seriam impossíveis o modo RV, a rotação automática por inclinação, a estabilização de vídeo e as aplicações de RA. Os telemóveis modernos não funcionam sem um giroscópio.
Um acelerómetro mede aceleração linear (movimento e inclinação relativamente à gravidade). Um giroscópio mede velocidade angular (rotação). O acelerómetro não distingue a rotação do dispositivo do seu movimento linear — o giroscópio resolve este problema.
O Android utiliza calibração automática. Para calibração manual, descarregue aplicações como “GPS Status & Toolbox” — estas guiam-no a colocar o telemóvel numa superfície plana e calibrar através de TYPE_GYROSCOPE_UNCALIBRATED.
Isto é a deriva de zero — uma propriedade natural dos sensores MEMS. Mesmo giroscópios caros têm um offset de 0.1–2 °/s em repouso. A calibração subtrai este offset. Se a deriva exceder 5 °/s, o sensor está com defeito.
Use SensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) e registe um SensorEventListener. Os dados chegam em rad/s em três eixos. Para jogos, use SENSOR_DELAY_GAME (20 ms); para segundo plano, SENSOR_DELAY_UI (67 ms).
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também