Inercial#
Introdução#
O IQ (2ª geração) Cérebro inclui um sensor inercial integrado. Este sensor mede como o cérebro 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.
Esta página utiliza brain_inertial como exemplo de um nome do sensor inercial. Substitua-o pelo nome que configurou, se necessário.
Segue-se uma lista de todos os 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.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.is_calibrating— Retorna se o sensor inercial está actualmente a calibrar.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.changed— Regista uma função a ser executada quando a direção do sensor inercial muda.
Movimento — Medir a aceleração, a velocidade de rotação e a inclinação.
acceleration— Devolve a rapidez com que o sensor está a acelerar ou a desacelerar no eixo selecionado.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.
Construtores — Inicializa e configura manualmente um sensor inercial.
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 direção atual do sensor.
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:
brain_inertial.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(brain_inertial.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 para menos de 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.
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:
brain_inertial.rotation(units)
Parâmetros |
Descrição |
|---|---|
|
Opcional. Unidade de rotação: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate calibra o Sensor Inercial. Todas as linhas subsequentes aguardarão a conclusão da calibração antes de serem executadas. A calibração ajuda o sensor a medir as curvas corretamente, medindo e compensando o ruído e a deriva do sensor durante um período especificado. Durante este tempo, o Cérebro deve permanecer completamente imóvel numa superfície estável. Os movimentos durante a calibração podem produzir resultados imprecisos.
O VEX Brain tenta calibrar automaticamente o sensor inercial integrado no início de cada projeto. No entanto, se o robô estiver a ser transportado ou movimentado durante o início do projeto, o sensor poderá não calibrar corretamente ou apresentar uma calibração incorreta.
Usage:
brain_inertial.calibrate()
Parâmetro |
Descrição |
|---|---|
Este método não tem parâmetros. |
# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
set_heading#
A direção é a direção para a qual o sensor está a apontar, medida em graus de 0 a 359,99. set_heading() altera a direção atual do sensor inercial para um novo valor de direçã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:
brain_inertial.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
brain_inertial.set_heading(180)
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. 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:
brain_inertial.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
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
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:
brain_inertial.is_calibrating()
Parâmetro |
Descrição |
|---|---|
Este método não tem parâmetros. |
# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
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:
brain_inertial.reset_heading()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)
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:
brain_inertial.reset_rotation()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)
changed#
changed regista uma função a ser chamada quando a direção do sensor inercial muda.
Usage:
brain_inertial.changed(callback, arg)
Parâmetros |
Descrição |
|---|---|
|
Uma função que é executada quando a direção do sensor inercial muda. |
|
Opcional. Uma tupla de argumentos a serem passados à função de callback. |
def heading_changed():
brain.screen.set_cursor(1, 1)
brain.screen.clear_screen()
brain.screen.print("my heading ")
brain.screen.next_row()
brain.screen.print("has changed!")
wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)
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 XAXIS, YAXISe ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Parâmetros |
Descrição |
|---|---|
eixo |
Eixos para medir a aceleração:
|
# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
gyro_rate#
A taxa de rotação (gyro rate) indica a velocidade de rotação do sensor inercial. O valor gyro_rate para gyro_rate devolve a velocidade de rotação atual do sensor inercial no eixo selecionado.
O valor pode ser positivo ou negativo, dependendo da direção em que o sensor está a rodar nesse eixo.
Usage:
brain_inertial.gyro_rate(axis, units)
Parâmetros |
Descrição |
|---|---|
|
Eixo de retorno da taxa giroscópica:
|
|
Opcional. Unidade de taxa giroscópica:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
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.
Os termos “roll”, “pitch” e “yaw” descrevem diferentes formas pelas quais o sensor pode inclinar ou rodar.
Usage:
brain_inertial.orientation(axis, 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(brain_inertial.orientation(OrientationType.ROLL))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
Construtores#
Os construtores são utilizados para criar manualmente objetos Inertial , como quando se configura um sensor inercial fora do VEXcode.
Inertial#
Inertial cria um sensor inercial.
Usage:
Inertial(smartport)
Parâmetro |
Descrição |
|---|---|
|
Opcional. Se utilizar o sensor inercial integrado do Brain IQ (2ª geração), não é necessária uma porta inteligente. Se ligar um sensor inercial externo, especifique a porta inteligente à qual o sensor inercial está ligado, escrita como |
# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)


