Open Lambda Core

Documentación

Ficha técnica, pines del Escudo, armado, lista de materiales, puesta en marcha, programación y reglamento. Se publica por partes: lo que todavía no está aparece marcado como pendiente.

Versión preliminarOctubre de 2026
00 · Resumen

Tres capas: base, Escudo y módulos

Open Lambda Core es un robot seguidor de línea para la categoría Robotrace. La placa base es chasis y circuito en una sola pieza. Sobre ella va el Escudo Core, que ocupa el zócalo 2×15 del Arduino Nano y lo reemplaza por un ESP32-S3. En el Escudo van los módulos: el ESP32-S3, el multiplexor, los reguladores, la IMU y el sensor de distancia.

01 · Hardware

Ficha técnica

Microcontrolador
ESP32-S3, en un módulo LOLIN S3 Mini
Conexión
USB y WiFi de 2,4 GHz
Sensores de línea
6 reflectivos, a 9,5 mm uno del otro
Sensores de marca
2, uno por lado
IMU
MPU6050, giroscopio y acelerómetro
Distancia
VL53L0X (ToF), mirando al frente
Motores
2 × N20 HP de 6 V, con encoder en cuadratura
Driver de motores
TB6612FNG
Ruedas
Ø 32 mm · 100,53 mm por vuelta
Batería
LiPo 2S HV · 7,6 V · 300 mAh · JST XH
Reguladores
4 en el Escudo: 2 de 5 V y 2 de 3,3 V
Señales
LED RGB, buzzer y botón
Placa base
88 × 100 mm
Escudo Core
61 × 96 mm

El arreglo de línea trae ocho sensores, de los que el robot usa seis. Un multiplexor 74HC4051 lleva esos seis y los dos de marca a una sola entrada analógica del ESP32-S3.

El Escudo trae montado un radar RD-03E de 24 GHz. El firmware actual no lo usa.

Sin el Escudo, la placa base funciona con un Arduino Nano en el mismo zócalo y con su propio firmware: sigue la línea, pero sin encoders, IMU, sensor de distancia ni WiFi. La plataforma y las funciones de esta documentación son para el Escudo.

El robot no mide su batería. El nivel se revisa por fuera, con un tester.

02 · Hardware

Pines del Escudo

La asignación de los GPIO del ESP32-S3 en el Escudo Core. Para verla sobre el robot, pieza por pieza: Componentes y conexiones.

GPIOSeñalPara qué
1MUX_ZSalida del multiplexor: la lectura analógica de los sensores
11 · 12 · 13MUX_S0 MUX_S1 MUX_S2Selección del canal del multiplexor
14PWMAMotor izquierdo, potencia
16 · 17AIN1 AIN2Motor izquierdo, sentido
15PWMBMotor derecho, potencia
18 · 21BIN1 BIN2Motor derecho, sentido
4 · 5Encoder izquierdoLas dos fases del encoder
6 · 7Encoder derechoLas dos fases del encoder
35 · 36SDA SCLBus I²C: MPU6050 en 0x68 y VL53L0X en 0x29
8IMU_INTInterrupción de la IMU
2XSHUTHabilita el sensor de distancia
34LEDONEnciende los emisores infrarrojos del arreglo de sensores
38BUTTONBotón
33BUZZERBuzzer
47LED RGBEl LED integrado del módulo; es el único LED de aviso del robot
43 · 44UARTReservada para el radar RD-03E; sin uso
3 · 9 · 10 · 37LibresSin uso. No tienen conector en el Escudo: se toman de los pines del módulo ESP32-S3

No uses los GPIO 0, 19 y 20 (USB), 26 a 32, 43 y 44, 45 y 46. Los GPIO 35 y 36 son solo para el bus I²C.

Canales del multiplexor

CanalSeñalSensor
Y0HLMarca lateral izquierda
Y1 a Y6QTR6 a QTR1Los seis sensores de línea
Y7HRMarca lateral derecha

El firmware no sabe de antemano qué extremo de la fila queda a la izquierda ni cuál sensor de marca es el izquierdo. Eso se fija una vez en la puesta a punto, sin tocar el programa.

Zócalo de la placa base

El Escudo se enchufa en el zócalo 2×15 del Arduino Nano y recibe por ahí las señales de la base.

Pin del zócaloSeñal
A0HR, marca lateral derecha
A1 a A6QTR1 a QTR6, sensores de línea
A7HL, marca lateral izquierda
D2BUTTON
D10BUZZER
D11LEDON

Driver de motores

El TB6612FNG recibe tres señales por motor: una de potencia (PWM) y dos de sentido.

IN1IN2El motor
AltoBajoAvanza
BajoAltoRetrocede
AltoAltoFrena
BajoBajoQueda libre

La señal STBY del driver está fija en alto en la placa base: el firmware no puede apagar el driver. Un motor queda libre con las dos señales de sentido en bajo y frena con las dos en alto. Con el PWM en 0 y una sola señal de sentido en alto, el driver también frena.

03 · Hardware

Energía y conectores

El robot se alimenta con una batería LiPo de dos celdas (2S) de alto voltaje (HV): 7,6 V nominales, 300 mAh y 16 × 12 × 46 mm. Se carga con un cargador para 2S: hasta 8,7 V si tiene modo HV, y hasta 8,4 V si no lo tiene.

Los motores son de 6 V y reciben el voltaje de la batería. Por eso el firmware limita la potencia que les entrega: el tope viene en 75 %.

El Escudo tiene cuatro reguladores: dos de 5 V, que bajan el voltaje de la batería, y dos de 3,3 V, que se alimentan de esos 5 V. Ese recorrido se puede seguir sobre el robot, de la batería a cada pieza: El camino de la energía.

Qué se conectaConector
BateríaJST XH de 3 pines, paso 2,5 mm
Cada motor con su encoderJST ZH de 6 pines, en el Escudo
Escudo Core o Arduino NanoZócalo 2×15
Arreglo de sensoresZócalo 1×11
Driver TB6612FNGZócalo 2×8
ComputadorEl USB del módulo ESP32-S3

Como el robot no mide su batería, toda corrida que cuente se hace con la batería cargada.

04 · Hardware

Armado: dónde va cada pieza

El robot tiene tres capas: la placa base, el Escudo Core y los módulos. Esta tabla dice dónde van las piezas principales.

PiezaDónde va
Escudo CoreEn el zócalo 2×15 de la placa base, el mismo que usa el Arduino Nano. Las patas MOTOR_L y MOTOR_R del Escudo caen sobre los dos conectores de motor de la placa base
Módulo ESP32-S3En el Escudo, sobre dos filas de pines
Sensor de distanciaEn la punta del cuello del Escudo, hacia adelante
IMUEn el cuerpo central del Escudo
Arreglo de sensoresEn el zócalo 1×11, al frente de la placa base
Sensores de marcaEn las puntas de los dos brazos de la placa base, uno por lado
Driver TB6612FNGEn el zócalo 2×8
MotoresAtrás, uno a cada lado de la placa base, cada uno con su soporte atornillado a la placa
Cable de cada motor y su encoderEn el conector JST ZH de 6 pines del Escudo, uno por lado
RuedasDirecto en el eje de cada motor
BateríaSe enchufa al conector JST XH de 3 pines de la placa base; la serigrafía marca + y −
PivoteBajo el cuello de la placa base, pegado con cinta de doble contacto o silicona caliente. Es el tercer punto de apoyo

El driver TB6612FNG se quema al encender si está montado al revés. Revisa su orientación contra la serigrafía de la placa.

Si después de armar un motor gira al revés o un encoder cuenta hacia atrás, no se desarma nada: se corrige en la puesta a punto, que necesita el firmware 4.0.0 o posterior.

El manual de armado paso a paso está en preparación.

05 · Hardware

Lista de materiales

Lista preliminar de las piezas del robot con Escudo Core, por bloque. Salvo las dos placas y el pivote, que se imprime en 3D, son piezas de catálogo. Cada pieza enlaza a su ficha en Componentes y conexiones: cómo funciona, por dónde se conecta y dónde comprarla.

BloquePiezaCant.Nota
PlacasPlaca base, 88 × 100 mm1Chasis y circuito en una sola pieza
PlacasEscudo Core, 61 × 96 mm1Va en el zócalo 2×15
CómputoMódulo LOLIN S3 Mini (ESP32-S3)1En el Escudo
CómputoMultiplexor 74HC40511En el Escudo
SensoresArreglo de 8 sensores reflectivos, tipo QTR-8A1El robot usa seis
SensoresSensor de marca lateral: módulo TCRT5000 de 3 pines2Uno por lado
SensoresIMU MPU60501En el Escudo
SensoresSensor de distancia VL53L0X1En el Escudo, al frente
SensoresRadar RD-03E de 24 GHz1En el Escudo; el firmware actual no lo usa
MotoresMotor N20 HP de 6 V, con encoder2Uno por lado
MotoresSoporte de motor2Con sus tornillos
MotoresCable de motor y encoder2Al conector JST ZH del Escudo
MotoresRueda de Ø 32 mm, para eje en D2En el eje del motor
MotoresDriver TB6612FNG1En el zócalo 2×8
EnergíaBatería LiPo 2S HV de 7,6 V y 300 mAh, 16 × 12 × 46 mm1Conector JST XH
EnergíaRegulador de 5 V: módulo AMS1117 de 3 pines2En el Escudo
EnergíaRegulador de 3,3 V: módulo AMS1117 de 3 pines2En el Escudo
EnergíaInterruptor de encendido 1P2T1En la placa base
SeñalesBuzzer de 12 mm1En la placa base
SeñalesPulsador de 6 × 6 mm1En la placa base
SeñalesResistencia de 47 kΩ1Del pulsador
MecánicaPivote impreso en 3D1Tercer punto de apoyo. Se pega con cinta de doble contacto o silicona caliente
Zócalos y conectoresTiras de zócalo hembra de 2,54 mm, en la placa base10Dos de 1×15, una de 1×11, dos de 1×8, dos de 1×3, dos de 1×2 y una de 1×4
Zócalos y conectoresConector JST XH de 3 pines1Batería
Zócalos y conectoresConector JST ZH de 6 pines2En el Escudo, uno por motor

El cargador para 2S no está en esta lista.

El kit de repuestos trae un Arduino Nano de respaldo, que va en el mismo zócalo 2×15 si falla el Escudo. Lo que trae el kit está en Liceos.

La lista con el modelo exacto y el número de parte de cada pieza está en preparación.

06 · Usar

Puesta en marcha

La plataforma es una sola página que se abre en el navegador. Conecta el robot por USB, le instala el firmware base, lo deja en tu red WiFi y muestra sus sensores en vivo.

Qué necesitas

  • Un computador con Chrome o Edge, que son los navegadores que pide la plataforma: la conexión por USB usa Web Serial.
  • Un cable USB de datos. Los que son solo de carga no sirven.
  • Una red WiFi de 2,4 GHz, con el computador en la misma red que el robot.
  • Conexión a internet para instalar o actualizar el firmware base y para usar la IA del chat.

Abrir la plataforma Descargarla

La primera vez que la página busque al robot por el WiFi, el navegador pregunta si puede conectarse a dispositivos de tu red local: hay que permitirlo. Si prefieres no dar ese permiso, o tu navegador no lo ofrece, descarga el archivo y ábrelo desde tu computador con doble clic: funciona igual y no pide nada.

Los tres pasos

  1. Conectar

    Enchufa el robot y pulsa Conectar por USB. Si el robot es nuevo, la página le instala el firmware base, versión 5.5.1; si trae uno anterior, lo actualiza. Después elige tu red, escribe la clave y pulsa Guardar red. Cuando la página pase sola al paso Revisar, el robot ya está en el WiFi y puedes desenchufar el cable. Desde entonces el cable no hace falta: con el robot encendido, Conectar por WiFi entra directo a la pantalla de trabajo. Si la conexión se corta, la página lo sigue buscando sola y vuelve a entrar cuando aparece.

  2. Revisar

    Mueve el robot con la mano y mira que los datos cambien: las seis barras de línea, las dos marcas, el rumbo y la distancia. Aquí también se calibran los sensores y se prueban los motores a mano.

  3. Trabajar

    La pantalla donde se pasa la clase. A un lado está el robot en 3D, que se mueve como el de verdad: copia su rumbo, lo que avanzó cada rueda y lo que ve su sensor de distancia, y deja dibujado el camino que recorrió. Al otro lado está el chat: le pides algo, la IA escribe el programa y, mientras viaja, se ve el enlace del computador a la IA y de la IA al robot. El botón Parar queda a la vista mientras el programa corre. Con Control manual el robot se maneja con las flechas del teclado o con W A S D (Shift acelera, Espacio frena), y hay botones para ir a un punto del piso, volver a casa por donde vino y dar una vuelta mirando alrededor; mientras corre un programa, el control manual espera. Reiniciar vista devuelve la cámara a su lugar, sin tocar nada más. Punto cero hace que el lugar donde está el robot sea el origen: el robot dibujado vuelve al centro, se borra el trazo y la casa queda ahí. Borrar el trazo limpia solo el dibujo. Con Conocer el robot el modelo se abre en capas y cada pieza lleva una marca: al tocarla aparece qué hace, cómo se conecta y cómo probarla. Si el computador no puede dibujar el 3D, la página muestra la misma información en una vista plana desde arriba. El robot atiende a una página a la vez: si lo abres en otra pestaña o en otro computador, la anterior queda en pausa con el aviso «Otra página tomó este robot». Desde ese aviso se puede retomar el robot o detenerlo.

Puesta a punto

Los pasos 1 a 5 se hacen una vez por robot y quedan guardados dentro del robot al pulsar Guardar en el robot, al final de la hoja. La calibración del paso 6 no se guarda: se repite cada vez que se enciende el robot o se cambia de pista. Los pasos 2 y 6 mueven las ruedas de verdad; en los demás lo mueves tú. Sujétalo o déjalo en el suelo según lo que pida cada uno.

  1. Qué extremo de la fila es la izquierda

    Tapas con el dedo el sensor del extremo izquierdo y miras cuál barra se mueve.

  2. Para dónde gira cada motor

    Con el robot levantado, cada botón mueve una sola rueda.

  3. Para dónde cuentan los encoders

    Empujas el robot hacia adelante; las dos cuentas tienen que subir.

  4. Cuál sensor de marca es el izquierdo

    Pasas algo blanco por el costado izquierdo del robot.

  5. Cuántas cuentas da una vuelta de rueda

    Empujas el robot derecho una distancia medida con huincha y la escribes; la página calcula el número.

  6. Calibrar los sensores

    Tres segundos, con la línea blanca y el negro pasando bajo los sensores.

Si algo sale al revés se corrige con un botón; no hay que reinstalar nada. Mientras no se haga el paso 5, los milímetros y la velocidad que informa el robot son aproximados.

Calibrar la odometría. Para que el robot vuelva a casa sin desviarse, cada robot mide una vez cuánto gira y cuánto avanza de verdad. En Trabajar, abre Control manual y elige Calibrar la odometría. Dejas el robot en el piso con un metro y medio libre por delante y marcas dónde está; él avanza un metro, da dos vueltas y media, vuelve y deshace las vueltas. Tú mides dos cosas con una regla: cuánto avanzó y cuánto quedó corrido hacia el lado. Con eso la página calcula la escala del giroscopio, el diámetro de la rueda y el ancho entre ruedas, y los deja guardados en el robot. Necesita el firmware 5.3.0; si el robot trae uno anterior, la misma ventana ofrece actualizarlo por WiFi.

El LED de estado

ColorEl robot está
AzulEn espera, recién encendido
VerdeCorriendo, o con los motores manejados a mano
ÁmbarCalibrando
RojoDetenido: lo cortó el supervisor, se pulsó Parar o el programa llamó a stop()
CelesteDetenido en la meta, con el seguidor de fábrica

Desde que un programa llama a led(), el LED pasa a ser del programa.

Si algo falla

  • El computador no ve el robot. El cable puede ser solo de carga: prueba con uno de datos.
  • No se pudo instalar el firmware. Mantén BOOT, toca RST, suelta BOOT y pulsa Conectar por USB de nuevo.
  • El robot no entra a la red. Revisa la clave y que la red sea de 2,4 GHz.
  • No se llega al robot por WiFi. Revisa que el computador esté en la misma red.
07 · Usar

Programar

El robot se programa en Python. El programa es un texto: viaja por WiFi, queda guardado en el robot y corre al pulsar Correr en la plataforma o el botón del robot. No se compila ni se instala nada.

Esta es la referencia del firmware 5.5.1. Está en versión preliminar y puede cambiar.

Seguir la línea · control proporcional
VELOCIDAD = 40      # de 0 a 100
GANANCIA = 0.08     # cuánto corrige por cada punto de error

calibrate(3000)     # gira sobre sí mismo: que la línea le pase por debajo
beep(900, 100)

while True:
    v = line()
    suma = sum(v)
    if suma > 200:
        posicion = sum(i * v[i] for i in range(6)) * 1000 / suma   # 0 = izquierda, 5000 = derecha
        error = posicion - 2500
        motors(VELOCIDAD + error * GANANCIA, VELOCIDAD - error * GANANCIA)
    sleep_ms(2)

Este programa no mueve nada hasta que pulsas Correr en la plataforma o el botón del robot. Entonces calibra tres segundos girando sobre sí mismo, pita y sigue la línea. Es el programa que el robot trae de fábrica.

Cómo corre un programa

QuéCómo funciona
CorrerEl programa corre de arriba abajo, una vez. Lo que tiene que repetirse va dentro de un while True:.
PararLo detiene en cualquier punto, también en medio de una espera. Cuando el programa termina, por Parar, por un error o porque llegó al final, los motores quedan detenidos.
Funciones del robotYa están cargadas: se usan sin ningún import.
Módulosmath, random y time. No hay pines, archivos ni red: el programa solo llega al robot por las funciones de esta página.
ErroresSi el programa falla, el error llega al chat de la plataforma con el número de línea, y la IA puede corregirlo.
EsperasTodo while True: lleva una espera adentro; en un lazo de control, sleep_ms(2).
TamañoEl robot guarda un programa de hasta 32 768 bytes. El que se envía reemplaza al anterior.

Sensores

FunciónQué entrega
line()Una lista con las seis lecturas de línea, de 0 a 1000, de izquierda a derecha. La línea blanca da valores altos.
line(i)Una sola lectura; i va de 0 a 5.
mark_left()De 0 a 1000. La marca izquierda avisa un cambio de curva.
mark_right()De 0 a 1000. La marca derecha es la partida y la meta.
gyro()Velocidad de giro, en grados por segundo.
heading()Rumbo acumulado, en grados, desde el último zero().
encoders()Milímetros recorridos desde zero(), promedio de las dos ruedas.
encoder_left() encoder_right()Milímetros de cada rueda.
speed()Velocidad, en milímetros por segundo.
distance()Distancia a lo que tiene delante, en milímetros; −1 si no ve nada hasta 1 metro. El robot ya descarta las mediciones falsas: avisa de algo cuando varias mediciones coinciden en el mismo lugar y traen señal de sobra. De cerca tarda 0,1 segundos; de lejos, o con mucho sol, hasta 1 segundo.
button()Verdadero mientras el botón está apretado. El mismo botón es Correr y Parar: con el programa corriendo, apretarlo lo detiene.
clock_ms()Milisegundos desde el encendido.

Moverse una distancia o un ángulo

Para avanzar una distancia, girar un ángulo o llegar hasta una pared se usan estas funciones, no motors(). El robot acelera, frena antes de llegar y se detiene en el punto: mide la distancia con los encoders y sostiene el rumbo con el giroscopio. El programa espera hasta que el movimiento termina.

FunciónQué hace
forward(mm)Avanza esa distancia en milímetros y se detiene ahí, con un error de unos 3 mm. Devuelve True si llegó. Si aparece algo delante a menos de 15 cm, frena y devuelve False.
backward(mm)Lo mismo hacia atrás.
forward_until(mm)Avanza derecho hasta quedar a esa distancia de lo que tenga delante (una pared, una caja) y se detiene ahí: forward_until(200) queda a 20 cm. Mide con el sensor de distancia mientras avanza, frena antes de llegar y, ya detenido, mide de nuevo y corrige. mm va de 100 a 1000, que es lo que el sensor mide bien. Devuelve True si quedó a esa distancia. Avanza a lo más 2 metros: si en ese tramo no encuentra nada, se detiene y devuelve False. Si al partir ya está más cerca, no se mueve.
forward_until(mm, tope, v)El segundo número cambia cuánto avanza a lo más, en milímetros. El tercero es la velocidad, de 140 a 500 mm/s; sin él se acerca a 300.
turn(grados)Gira en el lugar; positivo es hacia la izquierda. Llega con un error de unos 1,5°.
turn_to(rumbo)Gira hasta quedar mirando a ese rumbo, el mismo que entrega heading().
arc(radio, grados)Una curva de un solo trazo: el centro del robot recorre un círculo de ese radio, en milímetros, mientras gira esos grados; positivo es hacia la izquierda y negativo hacia la derecha. arc(150, 360) es un círculo de 30 cm de diámetro. Con el radio negativo hace la misma curva marcha atrás. Acepta la velocidad del centro como tercer número.
wheels(izq, der)Cada rueda recorre su propia distancia en milímetros (negativo es hacia atrás) y las dos parten y llegan juntas. Es el movimiento más general: iguales es un avance, opuestas un giro en el lugar, distintas una curva. wheels(0, 200) pivotea sobre la rueda izquierda. Acepta una velocidad como tercer número.
forward(mm, v) turn(grados, w)Las cuatro aceptan una velocidad como segundo número: de 140 a 500 mm/s al avanzar y de 120 a 360 °/s al girar. Sin ese número van a la velocidad máxima.
last_move()Cómo terminó el último movimiento: 'arrived' (llegó), 'obstacle' (algo delante), 'stuck' (no pudo avanzar: una rueda trabada o algo que lo sujeta), 'timeout' (no cerró el error), 'cancelled' (lo cortaron), 'sensors' (encoders y giroscopio no coinciden, o el sensor de distancia no responde) o 'not_found' (forward_until() avanzó su tope sin encontrar nada).
Un cuadrado · avanzar y girar
# Un cuadrado de 30 cm de lado
for lado in range(4):
    forward(300)        # 300 mm: acelera, frena y llega
    turn(90)            # 90 grados a la izquierda
Hasta la pared · se detiene a 20 cm
if forward_until(200):      # derecho hasta quedar a 20 cm de la pared
    print("quedé a", distance(), "mm")
else:
    print("no llegué:", last_move())    # 'not_found': avanzó 2 m y no vio nada
Un círculo y un ocho · curvas de un solo trazo
arc(150, 360)           # radio 150 mm, una vuelta a la izquierda: un círculo de 30 cm
sleep_ms(400)
arc(150, 360)           # el ocho: una vuelta hacia la izquierda...
arc(150, -360)          # ...y otra hacia la derecha

Velocidad controlada en cada rueda

Cuando no hay una distancia fija ni un obstáculo al que llegar (dar vueltas mientras pasa algo, avanzar hasta que un sensor vea la línea) se le pide al robot una velocidad para cada rueda. El robot mide cada rueda mil veces por segundo y corrige el motor para sostenerla: 200 son 200 mm/s con la batería llena o gastada. Estas funciones no esperan: el programa sigue, y el robot sigue andando hasta que se le pida otra cosa. Por eso el programa necesita siempre una condición para terminar.

FunciónQué hace
drive(izq, der)Cada rueda a esa velocidad en mm/s, hasta 1000; negativo es hacia atrás. drive(0, 0) frena.
curve(v, radio)Lo mismo, dicho como una curva: el centro del robot a v mm/s por un círculo de ese radio en milímetros. Radio positivo dobla a la izquierda; negativo, a la derecha.
speed_left() speed_right()La velocidad medida de cada rueda, en mm/s.
position()Dónde está el robot respecto de donde partió: (x, y) en milímetros, x hacia donde miraba al partir e y hacia su izquierda. Sale de los encoders y el giroscopio.
track()Los milímetros entre las dos ruedas: con ese número se saca la cuenta de cualquier curva.
Dar vueltas cinco segundos · velocidad controlada
curve(200, 150)         # el centro a 200 mm/s por un círculo de 15 cm de radio
sleep(5)                # cinco segundos dando vueltas
drive(0, 0)             # frena

Si el robot choca. Cuando las ruedas empujan y el robot no se mueve (chocó con algo, patina o está en el aire), el robot apaga los motores por su cuenta en cerca de un segundo y termina el programa. La plataforma lo avisa en el chat. Vale para todas las formas de moverlo, incluida motors().

Motores, señales y ajustes

FunciónQué hace
motors(izq, der)Potencia directa a cada motor, sin control, de −100 a 100; positivo es adelante. Sirve para lazos que corrigen en cada vuelta, como seguir la línea. Acepta decimales. Con los ajustes de fábrica, el firmware ignora un mando menor que 5, sube a 20 los que van de 5 a 19 y limita a 75 los mayores. Si hay un obstáculo a menos de 6 cm, el supervisor retiene los motores.
stop()Detiene los motores.
beep(hz, ms)Suena el buzzer; el programa espera mientras suena.
led(r, g, b)Color del LED; cada componente va de 0 a 255.
calibrate(ms)Calibra los sensores con los motores girando; el programa espera mientras tanto.
zero()Pone en cero los milímetros recorridos y el rumbo y, si el robot está detenido, vuelve a medir el error de reposo del giroscopio. Se llama con el robot quieto. Cada vez que se pulsa Correr el robot parte de cero.
sleep_ms(ms) sleep(s)Espera, en milisegundos o en segundos. Se interrumpe al pulsar Parar en la plataforma o el botón del robot.

Chat

FunciónQué hace
print(…)Escribe una línea en el chat de la plataforma, como mensaje del robot. Acepta texto, números y listas, separados por comas: print("error", error). Dentro de un lazo rápido, escribe a lo más unas diez veces por segundo: el robot descarta lo que la página no alcanza a mostrar.

No existe battery(): el robot no mide su batería.

Enviar el programa al robot

En la plataforma, pulsa Editor de código: se abre la hoja Mi programa. Escribe el programa o pídeselo a la IA y, con el robot conectado por WiFi, pulsa Enviar al robot. El programa queda guardado en el robot: sigue ahí aunque lo apagues. Para correrlo, pulsa Correr o el botón del robot.

Desde el chat es lo mismo: cada programa que escribe la IA trae su botón Enviar al robot, y al recibirlo el robot contesta con los botones Correr y Parar.

08 · Competir

Reglamento Robotrace

Robotrace es una competencia en la que un robot autónomo recorre un circuito de línea blanca y compite en velocidad e inteligencia. El reglamento de referencia es «Rules for Robotrace», de la New Technology Foundation de Japón, en su versión del 1 de junio de 2024. Esto es un resumen: el número entre paréntesis es la regla.

El robot

  • Es autónomo: salvo la operación de partida, no se lo controla desde afuera, ni por cable ni de forma inalámbrica (1-1).
  • No se le agrega, quita ni cambia hardware o software durante la competencia; solo reparaciones menores (1-2).
  • Su proyección sobre el piso cabe en un círculo de 25 cm de diámetro y no pasa de 20 cm de alto (1-3).
  • No puede agregar fuerza adhesiva excesiva a las ruedas ni a otras partes para aumentar el contacto con el piso (1-4).

La pista

  • Superficie negra y línea blanca de 1,9 cm de ancho; el recorrido mide hasta 60 m (2-1).
  • Solo rectas y arcos. El radio mínimo es de 10 cm y entre dos cambios de curvatura hay 10 cm o más (2-2, 2-3).
  • La línea puede cruzarse a sí misma, a 90° ± 5°, con 10 cm de recta antes y después del cruce (2-2, 2-4).
  • Partida y meta van en una recta, con la meta 1 m detrás de la partida; sus marcas van a la derecha de la línea (2-5).
  • Cada cambio de curvatura lleva una marca a la izquierda de la línea, en el sentido de carrera (2-8).
  • El borde de la pista queda al menos a 20 cm del centro de la línea (2-10).

La corrida

  • Cada competidor tiene 3 minutos y un máximo de 5 corridas; su tiempo oficial es la vuelta más rápida (3-2, 3-5).
  • La proyección del robot tiene que cubrir la línea durante toda la corrida. Si la suelta por completo, o se detiene más de 2 segundos, el intento es fallido (3-1, 3-7).
  • Al terminar, el robot se detiene solo dentro del área de partida y meta, y se queda quieto al menos 2 segundos. Si no queda entero dentro del área, el tiempo no se registra (3-4, 3-6).
  • Con el trazado ya a la vista no se le entrega información de la pista al robot (3-8), ni se le cargan programas durante la competencia (atención 1).

En el robot

Open Lambda Core lee esas marcas con sus dos sensores laterales: mark_right() ve la partida y la meta, y mark_left(), los cambios de curvatura.

Japón y Chile

El All Chile Robot Contest publica su propio reglamento para la categoría, que cambia algunas medidas.

Fuentes: Rules for Robotrace, New Technology Foundation y reglamento Robotracer del All Chile Robot Contest, consultados el 5 de octubre de 2026.
ReglaJapón (NTF)Chile (ACRC)
Tamaño del robotCírculo de 25 cm de diámetro, 20 cm de alto25 × 25 × 20 cm
Ancho de la línea1,9 cm2,0 cm
Entre cambios de curvatura10 cm o más5 cm o más
Pórticos de partida y meta (ancho × alto)40 × 25 cm20 × 12,5 cm
Tiempo por competidor3 minutos5 minutos (regla 3-2)

El reglamento chileno se contradice en el tiempo: su regla 3-2 da 5 minutos por competidor y su definición de la categoría habla de tres. Confírmalo con la organización antes de competir.

09 · Descargas

Archivos