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.

ADXL362

A ADXL362 (Java, C++) fornece suporte para o acelerômetro ADXL362 através do barramento de comunicações SPI.

BuiltInAccelerometer

A BuiltInAccelerometer (Java, C++) fornece acesso ao próprio acelerômetro interno do roboRIO:

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.