Drivetrain Blocks
En esta guía construirás visualmente el mismo drivetrain mecanum de la guía de Java, usando el editor Blocks integrado en el Control Hub.
El objetivo es aprender:
- Cómo abrir el editor Blocks desde el navegador
- Cómo crear un nuevo OpMode en Blocks
- Cómo usar los bloques de Hardware para controlar motores
- Cómo leer el gamepad con bloques
- Cómo replicar la misma matemática de mecanum que usamos en Java
- Cómo guardar y correr tu OpMode
Antes de comenzar
Section titled “Antes de comenzar”Asegúrate de tener:
- Control Hub configurado y encendido
- Laptop o teléfono conectado a la red WiFi del Control Hub
- Driver Station instalada
- 4 motores mecanum cableados
Abrir el editor Blocks
Section titled “Abrir el editor Blocks”- Conéctate a la red WiFi del Control Hub.
- Abre un navegador y entra a la dirección del Robot Controller:
192.168.43.1:8080si usas Control Hub, o192.168.49.1:8080si usas un teléfono como Robot Controller. - En la consola del Robot Controller, selecciona el enlace Blocks.
Configurar los motores primero
Section titled “Configurar los motores primero”Igual que en la versión Java, los motores deben existir en la configuración del robot antes de programarlos.
- Desde Driver Station, entra a Configure Robot.
- Agrega 4 motores.
- Nómbralos exactamente:
front_left_drive,back_left_drive,front_right_drive,back_right_drive. - Guarda la configuración.
Crear un nuevo OpMode en Blocks
Section titled “Crear un nuevo OpMode en Blocks”- Presiona el botón Create New Op Mode en la esquina superior izquierda.
- Escribe un nombre, por ejemplo
MecanumDriveBlocks. - Elige una plantilla en blanco.
Blocks genera automáticamente la estructura base:
- Un bloque morado “to runOpMode” que contiene todo el programa
- Un comentario “Put initialization blocks here” antes de esperar el Start
- Un bloque “call …waitForStart”
- Un comentario “Put run blocks here”
- Un bucle “repeat while call …opModeIsActive”
Declarar los motores (bloques de Hardware)
Section titled “Declarar los motores (bloques de Hardware)”A diferencia de Java, en Blocks no declaras variables de motor manualmente: cada motor que configuraste en Configure Robot aparece directamente como bloque en la categoría Actuators > DcMotor.
Arrastra el bloque de cada motor (front_left_drive, back_left_drive, front_right_drive, back_right_drive) hacia el área de trabajo cuando lo necesites.
Invertir motores
Section titled “Invertir motores”Dentro del bloque de inicialización, arrastra:
set front_left_drive.Direction to REVERSEset back_left_drive.Direction to REVERSEset front_right_drive.Direction to FORWARDset back_right_drive.Direction to FORWARDLeer el gamepad
Section titled “Leer el gamepad”Dentro del bucle repeat while, crea 3 variables (categoría Variables > Create Variable): axial, lateral y yaw.
Asigna cada una usando bloques de la categoría Gamepad:
axial= un bloque de resta (0 −gamepad1.LeftStickY), para invertir el signolateral=gamepad1.LeftStickXyaw=gamepad1.RightStickX
Calcular la potencia de cada motor
Section titled “Calcular la potencia de cada motor”Usa bloques de matemáticas (categoría Math) para combinar las 3 variables, replicando la misma fórmula de la versión Java:
| Motor | Fórmula |
|---|---|
| front_left_drive | axial + lateral + yaw |
| front_right_drive | axial − lateral − yaw |
| back_left_drive | axial − lateral + yaw |
| back_right_drive | axial + lateral − yaw |
Guarda cada resultado en una nueva variable, por ejemplo frontLeftPower, frontRightPower, backLeftPower, backRightPower.
Enviar la potencia a los motores
Section titled “Enviar la potencia a los motores”Dentro del mismo bucle, para cada motor:
set front_left_drive.Power to frontLeftPowerset front_right_drive.Power to frontRightPowerset back_left_drive.Power to backLeftPowerset back_right_drive.Power to backRightPowerGuardar el OpMode
Section titled “Guardar el OpMode”- Presiona el botón Save Op Mode.
- Espera el mensaje “Save completed successfully”.
Equivalencia Java vs Blocks
Section titled “Equivalencia Java vs Blocks”| Concepto | Java | Blocks |
|---|---|---|
| Obtener el motor | hardwareMap.get(DcMotor.class, "front_left_drive") | Bloque front_left_drive en Actuators > DcMotor |
| Invertir | setDirection(DcMotor.Direction.REVERSE) | set front_left_drive.Direction to REVERSE |
| Leer el stick | gamepad1.left_stick_y | gamepad1.LeftStickY |
| Enviar potencia | frontLeftDrive.setPower(frontLeftPower) | set front_left_drive.Power to frontLeftPower |
| Compilar | Build (OnBot Java) / Run (Android Studio) | Save Op Mode |
Problemas comunes
Section titled “Problemas comunes”- Confirma que guardaste la configuración en Configure Robot
- Recarga la página del editor Blocks
- Verifica que la laptop siga conectada a la red del Control Hub
- Revisa que no haya bloques sueltos o incompletos
- Revisa la dirección de cada motor
- Confirma que las fórmulas de cada motor coincidan con la tabla de equivalencia
- Confirma que presionaste START, no solo INIT, en Driver Station
- Revisa que el gamepad esté conectado
Siguientes pasos
Section titled “Siguientes pasos”Ahora puedes continuar con:
- Corriendo el programa
- Drivetrain Java, si quieres comparar ambas rutas
- Autónomo básico
- Sensores (IMU, encoders)
FIRSTHub es un proyecto comunitario independiente. No está afiliado, patrocinado ni respaldado por FIRST. Las traducciones no sustituyen a la documentación oficial: ante cualquier diferencia, manda el documento original.