Acelerômetros - Software¶
Note
Esta seção abrange acelerômetros em software. Para obter um guia de hardware para acelerômetros, consulte Accelerometers - Hardware.
Um acelerômetro é um dispositivo que mede a aceleração.
Os acelerômetros geralmente vêm em dois tipos: eixo único e 3 eixos. Um acelerômetro de eixo único mede a aceleração ao longo de uma dimensão espacial; um acelerômetro de 3 eixos mede a aceleração ao longo das três dimensões espaciais de uma só vez.
O WPILib suporta acelerômetros de eixo único através da `AnalogAccelerometer`_ .
Os acelerômetros de três eixos geralmente exigem protocolos de comunicação mais complicados (como SPI ou I2C) para enviar dados multidimensionais. O WPILib possui suporte nativo para os seguintes acelerômetros de 3 eixos: - ADXL345_I2C - ADXL345_SPI - ADXL362 - BuiltInAccelerometer
Acelerômetro analógico¶
The AnalogAccelerometer (Java, C++) permite que os usuários leiam valores de um acelerômetro de eixo único conectado a uma das entradas analógicas do roboRIO.
Se os usuários tiverem um acelerômetro analógico de 3 eixos, poderão usar três instâncias dessa classe, uma para cada eixo.
A interface do acelerômetro¶
Todos os acelerômetros de 3 eixos no WPILib implementam a Accelerometer interface (Java, C++). Essa interface define a funcionalidade e as configurações comuns a todos os acelerômetros de 3 eixos suportados.
O Accelerometer interface contém getters para a aceleração ao longo de cada direção cardinal (x, ye z), bem como um setter para o intervalo de acelerações que o acelerômetro medirá.
Warning
Nem todos os acelerômetros são capazes de medir todas as faixas.
ADXL345_I2C¶
A ADXL345_I2C (Java, C++) fornece suporte para o acelerômetro ADXL345 através do barramento de comunicação I2C.
ADXL345_SPI¶
A ADXL345_SPI (Java, C++) fornece suporte para o acelerômetro ADXL345 por meio do barramento de comunicações SPI communications.
Third-party accelerometers¶
Embora o WPILib forneça suporte nativo para vários acelerômetros disponíveis no kit de peças ou através da FIRST Choice, existem alguns dispositivos populares AHRS (Sistema de Referência de Atitude e Direção) comumente usados no FRC que incluem acelerômetros. Eles geralmente são controlados por meio de bibliotecas de fornecedores, embora, se tiverem uma saída analógica simples, possam ser usados com `AnalogAccelerometer`_
Usando acelerômetros no código¶
Note
Acelerômetros, como o próprio nome sugere, medem a aceleração. Acelerômetros precisos podem ser usados para determinar a posição através da dupla integração (já que a aceleração é a segunda derivada da posição), da mesma maneira que os giroscópios são usados para determinar a direção. No entanto, os acelerômetros disponíveis para uso em FRC não têm qualidade suficientemente alta para serem usados dessa maneira.
Recomenda-se o uso de acelerômetros no FRC para qualquer aplicação que precise de uma medição aproximada da aceleração atual. Isso pode incluir a detecção de colisões com outros robôs ou elementos de campo, para que os mecanismos vulneráveis possam ser retraídos automaticamente. Eles também podem ser usados para determinar quando o robô está passando por terrenos acidentados para uma rotina autônoma (como atravessar as defesas no FIRST Stronghold).
Para detectar colisões, geralmente é mais robusto medir o empurrão do que a aceleração. O empurrão é a derivada (ou taxa de mudança) da aceleração e indica a rapidez com que as forças do robô estão mudando - o impulso repentino de uma colisão causa um aumento acentuado no empurrão. Jerk pode ser determinado simplesmente tomando a diferença das medições de aceleração subsequentes e dividindo pelo tempo entre elas:
A maioria dos acelerômetros legais para o uso de FRC é bastante barulhenta e geralmente é uma boa ideia combiná-los com a LinearFilter (Java, C++) para reduzir o ruído.