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.

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.

  • calibrate — Calibra o 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.

  • 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

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

units

Opcional. Unidade de direção: DEGREES (padrão) ou TURNS

# 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

units

Opcional. Unidade de rotação: DEGREES (padrão) ou TURNS

# 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

axis

Eixo do qual devolver a taxa giroscópica:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

units

Opcional. Unidade de taxa giroscópica:

  • VelocityUnits.DPS (padrão)
  • VelocityUnits.RPM
  • VelocityUnits.PERCENT

# 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

type

Ângulo de orientação para o retorno:

  • AxisType.PITCH
  • AxisType.ROLL
  • AxisType.YAW

units

Opcional. Unidade de orientação:

  • DEGREES (padrão)
  • RotationUnits.TURNS

# 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)

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)

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

value

O valor da direção, em graus, a configurar para o sensor. Este valor pode variar de 0 a 359,99.

units

Opcional. Unidade de direção: DEGREES (padrão) ou TURNS

# 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

value

O valor de rotação, em graus, a definir para o sensor. Pode ser um número inteiro ou decimal (float).

units

Opcional. Unidade de rotação: DEGREES (padrão) ou TURNS

# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)

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

callback

Uma função previamente definida que é executada quando o valor do Sensor Inercial é alterado.

arg

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

type

Eixo para medir a aceleração:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

# 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

callback

Uma função previamente definida que é executada quando é detectada uma colisão.

arg

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

turntype

Tipo de rotação a configurar:

  • LEFT
  • RIGHT

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(smartport)

Parâmetros

Descrição

smartport

A porta inteligente à qual o sensor inercial está ligado é representada por Ports.PORTx, onde x é o número da porta.

# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)