El robot R-D6 sobre Arduino Uno entrega carga en una ciudad de navegador con física y peatones

PinPort es un laboratorio online donde armas un circuito en el navegador, escribes un sketch para Arduino y ves el resultado en un emulador. Esta vez, sus creadores la ampliaron con una ciudad virtual con coches, semáforos y peatones, y enviaron allí a un robot de 6 ruedas llamado R-D6, que transporta cargas del punto A al punto B. El robot no se controla con JavaScript, sino con un sketch normal de Arduino Uno, que se compila en el servidor mediante arduino-cli y se ejecuta en un emulador de ATmega328P. El emulador funciona a 16 MHz, sincronizado con el motor de física Rapier (paso de 2 ms). El lidar y el navegador se conectan por I2C, los sensores están implementados como registros, y el control de los motores se hace mediante PWM y un controlador L298N. • **Ciudad**: cuadrícula 3×3 con separación de 32 m, carreteras de 8 metros en cada sentido, aceras de 3 metros, 5 semáforos (ciclo de 50 s: 20 s verde, 3 s amarillo, 2 s todo en rojo) • **Dinámica**: 12 coches circulan por los carriles, 20 peatones caminan por las aceras y cruzan con una probabilidad de 0,4, y ceden el paso al robot cuando este se acerca a menos de 1,7 m • **Fiabilidad**: determinismo mediante mulberry32, un sketch produce un único resultado, que se mantiene igual en distintos ordenadores

Procesado por IA desde Habr AI; editado por Hamidun News
El robot R-D6 sobre Arduino Uno entrega carga en una ciudad de navegador con física y peatones
Fuente: Habr AI. Collage: Hamidun News.
Escuchar artículo
Ficha técnica y cifras clave
ParámetroDatos
Fuente originalHabr AI ↗
Editor jefe
Fiabilidaddeterminismo mediante mulberry32, un sketch produce un único resultado, que se mantiene igual en distintos ordenadores

PinPort es un laboratorio online para enseñar robótica, donde se escriben sketches de Arduino en el navegador y se ve el resultado en un emulador. Sus desarrolladores crearon una ciudad 3D con coches, semáforos y peatones, por la que circula un robot de seis ruedas llamado R-D6. Está controlado por un sketch real de Arduino Uno, compilado en el servidor mediante arduino-cli y ejecutado en un emulador de ATmega328P. El robot debe entregar un pedido del punto A al punto B respetando las normas de tráfico.

Arquitectura: tres capas sincronizadas

El sistema consta de tres partes que avanzan al mismo ritmo: el emulador AVR (16 MHz, PWM, I2C, UART), el motor de física Rapier (paso de 2 ms) y la ciudad, con su lógica de semáforos y peatones. La placa y la física se alternan: dos milisegundos de emulación, luego un paso de física.

Los sensores están implementados como registros I2C. El lidar (dirección 0×52) entrega 36 sectores de 10° cada uno a 10 Hz, con un alcance de 20 m. El navegador (0×53) se actualiza 50 veces por segundo y devuelve posición, rumbo, ángulo hacia el objetivo y distancias. El lidar consta de tres rayos por sector (−3°, 0°, +3°), tomando el impacto más cercano. El control de los motores se realiza mediante PWM en los pines ENA/ENB y los niveles lógicos del controlador L298N. La librería integrada RD6.h lee el escaneo del lidar (72 bytes) en tres bloques de 24 bytes, ya que el búfer de Wire es de solo 32 bytes.

La ciudad y sus habitantes

El plano es una cuadrícula 3×3 con separación de 32 m, calzada de 8 m en cada sentido y aceras de 3 m. Cinco semáforos en los cruces (ciclo de 50 segundos: 20 s verde, 3 s amarillo, 2 s todo en rojo). Doce coches circulan por los carriles, mantienen distancia y eligen el giro al azar en cada cruce. Radios de giro: 2 m a la derecha, 6 m a la izquierda.

Veinte peatones caminan en bucles por las aceras. En el paso de cebra decide cruzar con una probabilidad de 0,4; empieza a cruzar con el semáforo verde, no lo hace si está intermitente. Los peatones le ceden el paso al robot: si este se acerca a menos de 1,7 m, la persona se detiene y retrocede tras 0,6 segundos. Los coches y los peatones son cuerpos físicos dentro de Rapier, por lo que el lidar los detecta igual que a los edificios, y las colisiones son contactos reales dentro del motor.

La ruta se construye con el algoritmo de Dijkstra sobre un grafo. El navegador no indica la dirección hacia el siguiente punto, sino hacia una «zanahoria»: una posición 2,5 m por delante (el clásico pure pursuit). Sin esto, el robot cortaría camino hacia puntos lejanos, se desviaría hacia el bordillo y se quedaría parado frente a los árboles (que crecen cada 8 m). Con la zanahoria, el robot se mantiene en el centro de la acera y en el centro del paso de cebra. Las ventanas de las fachadas se dibujan cada 2,6 m en horizontal y 3 m en vertical. La llegada se registra cuando el centro del robot está a menos de 1,5 m del punto B.

Determinismo y reproducibilidad

Todo el sistema está diseñado para producir un único resultado, tanto en un portátil modesto como en un ordenador potente. Tres reglas: la aleatoriedad proviene únicamente de mulberry32 con una semilla fija, el tiempo se cuenta en pasos de física (sin Date.now()) y las decisiones de coches y peatones se toman cada 20 ms sobre una cuadrícula fija.

Verificación: el firmware se ejecuta dos veces con distinto fraccionamiento del tiempo (2 ms y 7,3 ms por llamada), y se comparan los hashes del estado del mundo, que coinciden. En la arena competitiva, el servidor ejecuta el firmware de cada participante en Node.js con los mismos módulos que usa el navegador, y los hashes coinciden hasta el último dígito.

Un piloto automático de cinco reglas superó las 12 combinaciones de «ruta × escenario» sin infracciones. La entrega tarda entre 65 y 135 segundos de tiempo simulado. Extensiones: modo noche (alrededor del 45% de las ventanas iluminadas, según un hash del piso y del tramo), hora punta con 40 peatones, y reparación de acera.

El renderizado se hace con un motor WebGL propio, sin motores externos: los edificios se dibujan como cajas, y las ventanas las genera un shader de fragmentos. La cámara sigue al robot y se eleva si un edificio lo tapa. Las copas de los árboles que están en la línea de visión no se dibujan.

Hay disponible una vista aérea en Canvas 2D para depuración, donde se ven la ruta, la señal de todos los semáforos y los rayos del lidar.

Preguntas frecuentes sobre la noticia

¿Qué se sabe sobre Arquitectura: tres capas sincronizadas?

El sistema consta de tres partes que avanzan al mismo ritmo: el emulador AVR (16 MHz, PWM, I2C, UART), el motor de física Rapier (paso de 2 ms) y la ciudad, con su lógica de semáforos y peatones. La placa y la física se alternan: dos milisegundos de emulación, luego un paso de física. Los sensores están implementados como registros I2C. El lidar (dirección 0×52) entrega 36 sectores de 10° cada uno a 10 Hz, con un alcance de 20 m. El navegador (0×53) se actualiza 50 veces por segundo y devuelve posición, rumbo, ángulo hacia el objetivo y distancias. El lidar consta de tres r

¿Qué se sabe sobre La ciudad y sus habitantes?

El plano es una cuadrícula 3×3 con separación de 32 m, calzada de 8 m en cada sentido y aceras de 3 m. Cinco semáforos en los cruces (ciclo de 50 segundos: 20 s verde, 3 s amarillo, 2 s todo en rojo). Doce coches circulan por los carriles, mantienen distancia y eligen el giro al azar en cada cruce. Radios de giro: 2 m a la derecha, 6 m a la izquierda. Veinte peatones caminan en bucles por las aceras. En el paso de cebra decide cruzar con una probabilidad de 0,4; empieza a cruzar con el semáforo verde, no lo hace si está intermitente. Los peatones le ceden el paso al robot:

¿Qué se sabe sobre Determinismo y reproducibilidad?

Todo el sistema está diseñado para producir un único resultado, tanto en un portátil modesto como en un ordenador potente. Tres reglas: la aleatoriedad proviene únicamente de mulberry32 con una semilla fija, el tiempo se cuenta en pasos de física (sin Date.now()) y las decisiones de coches y peatones se toman cada 20 ms sobre una cuadrícula fija. Verificación: el firmware se ejecuta dos veces con distinto fraccionamiento del tiempo (2 ms y 7,3 ms por llamada), y se comparan los hashes del estado del mundo, que coinciden. En la arena competitiva, el servidor ejecuta el firmw

ZK
Zhemal Khamidun — CPO de Alpina Digital, product manager de AlpinaGPT. Crea productos de IA desde 2019. Hamidun News es un proyecto personal que creció hasta ser un agregador en producción con más de 6.000 lectores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
¿Qué te parece?
Cargando comentarios…