Objetivo da aula
- Compreender o que é o DriveBase e como ele controla o robô como um todo.
- Aprender a configurar o DriveBase com as dimensões do seu robô (rodas e eixo).
- Executar movimentos precisos usando
straight()eturn(). - Introduzir a lógica de calibração e repetibilidade dos movimentos.
1) O que é o DriveBase?
O DriveBase é uma classe do PyBricks que transforma dois motores independentes (esquerdo e direito)
em um sistema único de locomoção.
Ele permite programar o robô usando comandos de distância (mm) e ângulo (°),
sem precisar calcular manualmente quantas rotações cada motor deve fazer.
2) Configuração inicial
Para criar o DriveBase, você precisa informar:
- Os motores usados nas rodas esquerda e direita.
- O diâmetro da roda (em mm).
- A distância entre as rodas (de centro a centro, em mm).
from pybricks.hubs import PrimeHub from pybricks.pupdevices import Motor from pybricks.parameters import Port from pybricks.robotics import DriveBase from pybricks.tools import wait hub = PrimeHub() motorE = Motor(Port.A) motorD = Motor(Port.B) wheel_diameter = 56 # mm axle_track = 120 # mm (distância entre rodas) robot = DriveBase(motorE, motorD, wheel_diameter, axle_track)
Esse trecho “ensina” o PyBricks o tamanho físico do seu robô, permitindo que ele converta automaticamente
milímetros em rotações e graus de giro de forma precisa.
3) Movendo o robô em linha reta
O comando robot.straight(distancia) move o robô para frente (valores positivos) ou para trás (negativos),
medindo a distância em milímetros.
robot.straight(300) # anda 300 mm para frente wait(500) robot.straight(-150) # anda 150 mm para trás
4) Fazendo o robô virar
O comando robot.turn(ângulo) faz o robô girar sobre o próprio eixo.
- Ângulo positivo → gira para a direita.
- Ângulo negativo → gira para a esquerda.
robot.turn(90) # gira 90° para a direita wait(500) robot.turn(-45) # gira 45° para a esquerda
5) Parando o robô com precisão
Após um movimento, você pode definir como o robô deve parar:
robot.stop()— para o robô (modo padrão BRAKE).robot.stop(Stop.HOLD)— trava os motores na posição final.robot.stop(Stop.COAST)— deixa rolar livremente até parar.
robot.straight(500) robot.stop(Stop.HOLD)
6) Ajustando a velocidade
A velocidade do DriveBase é controlada com robot.settings().
Você pode definir:
- Velocidade linear (mm/s)
- Velocidade angular (°/s)
robot.settings(straight_speed=250, turn_rate=90) robot.straight(400) robot.turn(180)
Isso é essencial para calibrar a precisão das missões: velocidades menores aumentam a estabilidade; maiores reduzem tempo, mas geram mais variação.
7) Repetindo trajetórias com funções
Podemos combinar os movimentos em funções reutilizáveis para criar sequências de missão mais limpas:
def missao_1():
robot.settings(straight_speed=250, turn_rate=90)
robot.straight(300)
robot.turn(45)
robot.straight(150)
robot.stop(Stop.HOLD)
missao_1()
Essa prática é essencial em torneios: o código fica mais organizado e fácil de ajustar sem afetar outras partes.
8) Calibração e consistência
Para movimentos precisos, a calibração do DriveBase é fundamental.
- Verifique se as rodas têm o mesmo diâmetro e estão bem presas.
- Evite cabos enroscados — eles puxam o robô para um lado.
- Calibre o valor de
wheel_diameteraté que o robô percorra a distância exata programada. - Evite acelerações bruscas — use
robot.settings()para suavizar movimentos.
Programe
robot.straight(500), meça o quanto o robô andou, e corrija o wheel_diameter proporcionalmente.Atividade prática
- Monte o
DriveBasecom as dimensões do seu robô. - Faça o robô andar 300 mm, virar 90°, e voltar ao ponto inicial.
- Experimente velocidades diferentes e observe o impacto na precisão.
- Crie uma função
quadrado()que faça o robô andar em formato de quadrado (4 lados de 200 mm).