Inercial#
Introdução#
Um sensor inercial mede como o robô se está a mover e a rodar.
O sensor inercial utiliza duas partes para desempenhar esta função. O giroscópio mede a rotação, como a direção, a rotação, a taxa de rotação e a orientação. O acelerómetro mede as mudanças de movimento, como a aceleração ou a desaceleração ao longo dos eixos x, y e z.
Para que os comandos inerciais apareçam no VEXcode V5, deve ser configurado um sensor inercial na janela Dispositivos.
Segue-se uma lista dos métodos disponíveis:
Orientação — Leia e controle a direção, a rotação e a calibração do sensor.
heading— Devolve a direção para a qual o sensor está a apontar, de 0 a 359,99 graus.rotation— Devolve o quanto o sensor rodou.gyro_rate— Retorna a velocidade de rotação do sensor no veio seleccionado.orientation— Devolve o ângulo de rotação, inclinação ou guinada do sensor inercial.set_heading— Define o rumo actual do sensor inercial para um novo valor de rumo.set_rotation— Define a rotação actual do sensor inercial para um novo valor de rotação.calibrate— Calibra o sensor inercial.reset_heading— Repõe a direção atual do sensor inercial para 0 graus.reset_rotation— Repõe a rotação actual do sensor inercial para 0 graus.is_calibrating— Retorna se o sensor inercial está actualmente a calibrar.changed— Regista uma função a ser executada quando o valor do sensor inercial é alterado.installed— Verifica se o sensor inercial está instalado.
Movimento — Mede a aceleração, as colisões e o comportamento de direção de curva.
acceleration— Devolve a rapidez com que o sensor está a acelerar ou a desacelerar no eixo selecionado.collision— Regista uma função a ser executada quando o Sensor Inercial detecta uma colisão.set_turn_type— Define qual a direção da curva que devolve valores de direção positivos.get_turn_type— Retorna qual o sentido da curva que devolve valores de sentido positivos.
Construtor
Inertial– Cria um sensor inercial.
Orientação#
heading#
A direção indica para onde o sensor está a apontar, medida em graus de 0 a 359,99. O valor heading devolve a direcção actual do sensor como um número decimal.
A direção inicial é de 0 graus. Se o sensor rodar para além dos 359,99 graus, a direção volta a 0 graus.
Usage:
inertial_1.heading(units)
Parâmetros |
Descrição |
|---|---|
|
Opcional. Unidade de direção: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.heading())
rotation#
A rotação indica o quanto o sensor rodou, medida em graus. Ao contrário da direção, a rotação pode ultrapassar os 359,99 graus ou diminuir abaixo dos 0 graus. No início de um projeto, o valor de rotação é definido como 0 graus. O comando rotation devolve a rotação actual do sensor inercial como um valor float.
Virar para a direita aumenta a rotação, e virar para a esquerda diminui a rotação. Por exemplo, duas voltas completas para a direita resultam numa rotação de 720 graus. Uma volta completa para a esquerda a partir dos 0 graus resulta numa rotação de -360 graus.
Usage:
inertial_1.rotation(units)
Parâmetros |
Descrição |
|---|---|
|
Opcional. Unidade de rotação: |
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.rotation())
gyro_rate#
A taxa de giroscópio indica a velocidade de rotação do sensor inercial. gyro_rate gyro_rate devolve a velocidade de rotação actual do sensor inercial no veio seleccionado, como um valor float.
O valor pode ser positivo ou negativo, dependendo da direção em que o sensor está a rodar nesse eixo.
Usage:
inertial_1.gyro_rate(axis, units)
Parâmetros |
Descrição |
|---|---|
|
Eixo do qual devolver a taxa giroscópica:
|
|
Opcional. Unidade de taxa giroscópica:
|
# Display the rate of change of
# rotation while turning
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(inertial_1.gyro_rate(AxisType.ZAXIS, VelocityUnits.DPS))
drivetrain.stop()
orientation#
A orientação é o ângulo atual do sensor inercial num eixo de rotação selecionado. A orientação orientation de rotação, inclinação ou guinada do sensor inercial, de -180,00 a 180,00 graus, como um valor flutuante.
Os termos “roll”, “pitch” e “yaw” descrevem diferentes formas pelas quais o sensor pode inclinar ou rodar.
Usage:
inertial_1.orientation(type, units)
Parâmetros |
Descrição |
|---|---|
|
Ângulo de orientação para o retorno:
|
|
Opcional. Unidade de orientação:
|
# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
brain.screen.clear_screen()
brain.screen.print(inertial_1.orientation(AxisType.ROLL, DEGREES))
brain.screen.next_row()
brain.screen.print(inertial_1.orientation(AxisType.PITCH, DEGREES))
brain.screen.next_row()
brain.screen.print(inertial_1.orientation(AxisType.YAW, DEGREES))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
set_heading#
A direção é a direção para a qual o sensor está a apontar, medida em graus de 0 a 359,99. O comando set_heading altera a direcção actual do sensor inercial para um novo valor de direcção.
Por exemplo, se o sensor rodou para a direita, definir a direção para 0 graus faz com que esta posição virada para a direita se torne os novos 0 graus. Assim, o sensor pode seguir outras direções com base nessa nova direção.
Usage:
inertial_1.set_heading(value, units)
Parâmetros |
Descrição |
|---|---|
|
O valor da direção, em graus, a configurar para o sensor. Este valor pode variar de 0 a 359,99. |
|
Opcional. Unidade de direção: |
# Turn the robot around
inertial_1.set_heading(180, DEGREES)
drivetrain.turn_to_heading(0)
set_rotation#
A rotação indica o quanto o sensor rodou, medida em graus. Ao contrário da direção, a rotação pode aumentar para além dos 359,99 graus ou diminuir abaixo dos 0 graus. No início de um projeto, o valor de rotação é definido como 0 graus. O comando set_rotation altera a rotação actual do sensor inercial para um novo valor.
Por exemplo, se o sensor tiver dado duas voltas completas para a direita, o seu valor de rotação será de 720 graus. Definir a rotação para 0 graus irá repor este valor de 720 para 0 graus. Assim, o sensor poderá rastrear rotações com base neste novo valor.
Usage:
inertial_1.set_rotation(value, units)
Parâmetros |
Descrição |
|---|---|
|
O valor de rotação, em graus, a definir para o sensor. Pode ser um número inteiro ou decimal (float). |
|
Opcional. Unidade de rotação: |
# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)
calibrate#
calibrate calibra o sensor inercial.
A calibração ajuda o sensor a medir as curvas corretamente. Mantenha o sensor imóvel durante a calibração. Se o sensor se mover durante a calibração, os valores de direção, rotação, velocidade giroscópica e orientação podem não ser medidos corretamente.
O projeto aguardará a conclusão da calibração antes de executar a linha de código seguinte.
Usage:
inertial_1.calibrate()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
# Start calibration.
inertial_1.calibrate()
# Print that the Inertial Sensor is calibrating while
# waiting for it to finish calibrating.
while inertial_1.is_calibrating():
brain.screen.clear()
brain.screen.print("Inertial Sensor Calibrating")
wait(50, MSEC)
reset_heading#
reset_heading reinicia a direção atual do sensor inercial para 0 graus.
Após a utilização deste método, a direção atual do sensor passa a ser a nova direção de 0 graus.
Usage:
inertial_1.reset_heading()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
reset_rotation#
reset_rotation reinicia a rotação atual do sensor inercial para 0 graus.
Após a utilização deste método, o sensor segue as curvas futuras a partir do novo valor de rotação de 0 graus.
Usage:
inertial_1.reset_rotation()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
is_calibrating#
is_calibrating retorna se o sensor inercial está actualmente em processo de calibração.
True— O sensor inercial está a calibrar.False— O sensor inercial não está a calibrar.
Usage:
inertial_1.is_calibrating()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
changed#
changed regista uma função a ser chamada sempre que o valor do sensor inercial se altera.
Usage:
inertial_1.changed(callback, arg)
Parâmetros |
Descrição |
|---|---|
|
Uma função previamente definida que é executada quando o valor do Sensor Inercial é alterado. |
|
Opcional. Uma tupla contendo argumentos para passar para a função de callback. Consulte Utilizar funções com parâmetros para obter mais informações. |
def my_function():
brain.screen.print("Value changed!!")
# Call my_function whenever inertial_1's value changes
inertial_1.changed(my_function)
installed#
installed verifica se o sensor inercial está instalado.
True— O sensor inercial está instalado.False— O sensor inercial não está instalado.
Usage:
inertial_1.installed()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
Movimento#
acceleration#
A aceleração indica a rapidez com que o sensor está a acelerar ou a desacelerar. O valor acceleration devolve a aceleração do sensor inercial no eixo selecionado, de -4,0 G a 4,0 G, como um número de ponto flutuante.
G é uma unidade utilizada para medir a aceleração. 1 G é aproximadamente a aceleração que sente da gravidade enquanto está parado.
O valor pode ser positivo ou negativo, dependendo do sentido da aceleração no eixo selecionado. As opções de eixo são AxisType.XAXIS, AxisType.YAXISe AxisType.ZAXIS.
Usage:
inertial_1.acceleration(type)
Parâmetros |
Descrição |
|---|---|
|
Eixo para medir a aceleração:
|
# Return the acceleration for the Z axis of the Inertial Sensor
zaccel = inertial_1.acceleration(AxisType.ZAXIS)
collision#
collision regista uma função a ser chamada sempre que o Sensor Inercial detete um impacto ou colisão súbita.
Usage:
inertial_1.collision(callback, arg)
Parâmetros |
Descrição |
|---|---|
|
Uma função previamente definida que é executada quando é detectada uma colisão. |
|
Opcional. Uma tupla contendo argumentos para passar para a função de callback. Consulte Utilizar funções com parâmetros para obter mais informações. |
def my_function():
brain.screen.print("Collision!")
# Call my_function whenever a collision is detected
inertial_1.collision(my_function)
set_turn_type#
set_turn_type define qual o sentido da curva que devolve valores de rumo positivos.
Usage:
inertial_1.set_turn_type(turntype)
Parâmetros |
Descrição |
|---|---|
|
Tipo de rotação a configurar:
|
get_turn_type#
get_turn_type devolve qual a direção da curva que devolve valores de rumo positivos.
LEFT— As curvas da esquerda devolvem valores de sentido positivos.RIGHT— As curvas da direita devolvem valores de direção positivos.
Usage:
inertial_1.get_turn_type()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
Construtores#
Inertial#
Inertial cria um sensor inercial.
Usage:
Inertial(port)
Parâmetros |
Descrição |
|---|---|
|
A porta inteligente à qual o sensor inercial está ligado, de 1 a 21. |
# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)