Transmissão#
Introdução#
O sistema de transmissão controla a forma como o robô de realidade virtual se move e gira. Pode mover-se para a frente ou para trás, virar para a esquerda ou para a direita, mudar de direção e acompanhar a sua rotação.
Existem muitas formas de programar o sistema de transmissão. Abaixo está uma lista de todos os métodos de programação do sistema de transmissão:
Ações — Mova e rode o robô.
drive— Move o robô para a frente ou para trás para sempre.drive_for— Move o robô para a frente ou para trás uma distância específica.turn— Vira o robô para a esquerda ou para a direita para sempre.turn_for— Roda o robô para a esquerda ou para a direita de um número específico de graus.turn_to_heading— Roda o robô para enfrentar uma direção específica de -359 a 359 graus.turn_to_rotation— Roda o robô para uma rotação específica.stop— Interrompe o movimento do robô.
Mutadores — Ajustam as definições da transmissão.
set_heading— Altera a direção atual do robô para uma nova direção.set_rotation— Altera a rotação atual do robô para uma nova rotação.set_timeout— Define durante quanto tempo o robô tentará terminar um movimento.set_drive_velocity— Indica ao robô a velocidade de deslocação.set_turn_velocity— Indica ao robô a velocidade a que deve virar.
Getters — Verifique o estado da transmissão.
Ações#
drive#
drive moves the robot forward or reverse forever. The robot will continue to move until it is given another action, like turning or stopping.
Usage:
drivetrain.drive(direction)
Parâmetros |
Descrição |
|---|---|
|
A direção em que o robô se move: |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
drive_for#
O comando drive_for move o robô para a frente ou para trás por uma distância específica. O projeto aguardará até que o robô termine de se mover antes de executar a próxima linha de código.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Parâmetros |
Descrição |
|---|---|
|
A direção em que o robô se move: |
|
A distância percorrida pelo robô. Pode ser um número inteiro |
|
Opcional. A unidade de distância: |
|
Opcional. |
def main():
# Drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
# VR threads — Do not delete
vr_thread(main)
turn#
O comando turn o robô vire para a esquerda ou para a direita indefinidamente. O robô continuará a virar até receber outra ação, como conduzir ou parar.
Usage:
drivetrain.turn(direction)
Parâmetros |
Descrição |
|---|---|
|
Direção para a qual o robô vira: |
def main():
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
turn_for#
O comando turn_for roda o robô para a esquerda ou para a direita num número específico de graus. A rotação é relativa à posição atual do robô. O projeto aguardará até que o robô termine de rodar antes de executar a próxima linha de código.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Parâmetros |
Descrição |
|---|---|
|
Direção para a qual o robô vira: |
|
O número de graus que o robô roda. Pode ser um número inteiro |
|
Opcional. Unidade de rotação: |
|
Opcional. |
def main():
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_heading#
A direção é a direção para a qual o robô está virado, medida em graus. turn_to_heading roda o robô de modo a ficar virado para uma direção específica de -359 a 359 graus. O robô irá rodar na direção mais curta para alcançar a direção desejada.
A direção inicial do robô é de 0 graus.
O projeto aguardará até que o robô termine de rodar antes de executar a próxima linha de código.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
Parâmetros |
Descrição |
|---|---|
|
A direção para a qual o robô deve estar virado, em graus. Pode ser um número inteiro |
|
Opcional. Unidade de rotação: |
|
Opcional. |
def main():
# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_rotation#
turn_to_rotation roda o robô para uma rotação específica.
A rotação é o quanto o robô rodou, medida em graus. No início de um projeto, o valor de rotação é definido como 0 graus. A rotação também pode ser definida através do método set_rotation.
Os valores de rotação são absolutos. Isto significa que a direção da viragem depende da rotação atual do robô. Virar para a direita aumenta a rotação, e virar para a esquerda diminui a rotação.
Por exemplo, se o robô começar a 0 graus e rodar 720 graus, este irá virar para a direita duas vezes. Se depois rodar 360 graus, virará para a esquerda uma vez, porque 360 é inferior a 720.
O projeto aguardará até que o robô termine de rodar antes de executar a próxima linha de código.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
Parâmetros |
Descrição |
|---|---|
|
O valor de rotação, em graus, para o qual o robô irá rodar. Pode ser um número inteiro |
|
Opcional. Unidade de rotação: |
|
Opcional. |
def main():
# Turn left, then spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
stop#
stop pára o movimento do robô.
Usage:
drivetrain.stop()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
Mutantes#
set_heading#
A direção é a direção para a qual o robô está virado, medida em graus. set_heading altera a direção atual do robô para um novo valor de direção.
Por exemplo, se o robô se virou para a direita, definir a direção para 0 graus faz com que essa posição virada para a direita se torne os novos 0 graus. De seguida, o robô pode rodar para outras posições com base nessa nova direção.
Usage:
drivetrain.set_heading(heading, units)
Parâmetros |
Descrição |
|---|---|
|
O valor de direção, em graus, a definir para o robô. Pode ser um número inteiro |
|
Opcional. Unidade de medida do cabeçalho: |
def main():
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_rotation#
A rotação indica o quanto o robô rodou, medida em 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 robô para um novo valor.
Por exemplo, se o robô 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 essa rotação de 720 para 0 graus. De seguida, o robô poderá rodar para rotações baseadas nesse novo valor.
Usage:
drivetrain.set_rotation(rotation, units)
Parâmetros |
Descrição |
|---|---|
|
O valor de rotação, em graus, a definir para o robô. Pode ser um número inteiro |
|
Opcional. Unidade de rotação: |
def main():
# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
O parâmetro set_timeout define durante quanto tempo o robô tentará completar um movimento. Se o robô não conseguir completar dentro deste tempo, interromperá a tentativa e passará para a linha de código seguinte. Isto evita que o robô fique preso num movimento.
Usage:
drivetrain.set_timeout(value, units)
Parâmetros |
Descrição |
|---|---|
|
O tempo que o robô pode tentar para completar um movimento. Pode ser um número inteiro positivo |
|
Opcional. A unidade de tempo: |
def main():
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
# VR threads — Do not delete
vr_thread(main)
set_drive_velocity#
O parâmetro set_drive_velocity ( set_drive_velocity define a velocidade de deslocação do robô. Uma percentagem mais elevada faz com que o robô se desloque mais rapidamente, enquanto uma percentagem mais baixa o faz deslocar-se mais lentamente.
Todos os projetos começam com o robô a deslocar-se a 50% da velocidade por defeito.
Nota: Uma velocidade mais elevada faz com que o robô se mova mais rapidamente, mas pode ser menos preciso. Uma velocidade mais baixa faz com que o robô se mova mais devagar, mas pode ser mais preciso.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parâmetros |
Descrição |
|---|---|
|
A velocidade de condução, de 0% a 100%. Pode ser um número inteiro |
|
Opcional. Unidade de velocidade: |
def main():
# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
# VR threads — Do not delete
vr_thread(main)
set_turn_velocity#
O parâmetro set_turn_velocity define a velocidade de rotação do robô. Uma percentagem mais elevada faz com que o robô gire mais rápido, enquanto uma percentagem mais baixa o faz girar mais devagar.
Todos os projetos começam com o robô a rodar a 50% da velocidade por defeito.
Nota: Uma velocidade mais elevada faz com que o robô gire mais rápido, mas pode ser menos preciso. Uma velocidade mais baixa faz com que o robô gire mais devagar, mas pode ser mais preciso.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parâmetros |
Descrição |
|---|---|
|
A velocidade de rotação, de 0% a 100%. Pode ser um número inteiro |
|
Opcional. Unidade de velocidade: |
def main():
# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Getters#
heading#
A direção indica o rumo para o qual o robô está virado, medida em graus. O comando heading devolve a direção atual do robô, variando de 0 a 359,99 graus.
A direção inicial do robô é de 0 graus.
Usage:
drivetrain.heading(units)
Parâmetros |
Descrição |
|---|---|
|
Opcional. Unidade de medida do cabeçalho: |
def main():
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Heading: ")
brain.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotation#
A rotação indica o quanto o robô rodou, medida em graus. No início de um projeto, o valor de rotação é definido como 0 graus. O comando rotation devolve a rotação atual do robô.
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 resultarão numa rotação de 720 graus.
Usage:
drivetrain.rotation(units)
Parâmetros |
Descrição |
|---|---|
|
Opcional. Unidade de rotação: |
def main():
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Rotation: ")
brain.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_done#
is_done devolve um valor booleano indicando se o robô terminou de se mover. Isto pode ser utilizado para controlar o tempo de outras ações com base no movimento do robô.
True— O robô terminou de se mover.False— O robô ainda se está a mover.
Este método funciona em conjunto com os seguintes métodos Drivetrain que têm o parâmetro wait : drive_for, turn_for, turn_to_heading, e turn_to_rotation.
Usage:
drivetrain.is_done()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |
is_moving#
is_moving devolve um valor booleano indicando se o robô está em movimento. Isto pode ser utilizado para controlar o tempo de outras ações com base no movimento do robô.
True— O robô está em movimento.False— O robô não se está a mover.
Usage:
drivetrain.is_moving()
Parâmetros |
Descrição |
|---|---|
Este método não tem parâmetros. |