Le robot R-D6 sous Arduino Uno livre des colis dans une ville 3D dotée de physique et de piétons

PinPort est un laboratoire en ligne où l'on assemble un circuit dans le navigateur, écrit un croquis pour Arduino et observe le résultat sur un émulateur. Cette fois, les créateurs ont enrichi la plateforme d'une ville virtuelle avec voitures, feux tricolores et piétons — et y ont envoyé le robot R-D6 à 6 roues, chargé de transporter des colis du point A au point B. Le robot n'est pas piloté en JavaScript, mais par un véritable croquis Arduino Uno, compilé côté serveur via arduino-cli et exécuté sur un émulateur ATmega328P. L'émulateur tourne à 16 MHz, synchronisé avec le moteur physique Rapier (pas de 2 ms). Le lidar et le navigateur sont connectés en I2C, les capteurs sont implémentés sous forme de registres, et le pilotage des moteurs se fait par PWM via un driver L298N. • **Ville** : grille 3×3 au pas de 32 m, routes de 8 m dans chaque sens, trottoirs de 3 m, 5 feux tricolores (cycle de 50 s : 20 au vert, 3 au orange, 2 au tout-rouge) • **Dynamique** : 12 voitures circulent sur les voies, 20 piétons marchent sur les trottoirs et traversent avec une probabilité de 0,4, cédant le passage au robot dès qu'il s'approche à moins de 1,7 m • **Fiabilité** : déterminisme assuré par mulberry32, un croquis = un résultat, identique d'un ordinateur à l'autre

Traité par IA depuis Habr AI ; édité par Hamidun News
Le robot R-D6 sous Arduino Uno livre des colis dans une ville 3D dotée de physique et de piétons
Source : Habr AI. Collage: Hamidun News.
Écouter l'article
Fiche synthèse et chiffres clés
ParamètreDonnées
Source primaireHabr AI ↗
Rédacteur en chef
Villegrille 3×3 au pas de 32 m, routes de 8 m dans chaque sens, trottoirs de 3 m, 5 feux tricolores (cycle de 50 s : 20 au vert, 3 au orange, 2 au tout-rouge)
Fiabilitédéterminisme assuré par mulberry32, un croquis = un résultat, identique d'un ordinateur à l'autre

PinPort est un laboratoire en ligne pour l'apprentissage de la robotique, où l'on écrit des croquis Arduino dans le navigateur et observe le résultat sur un émulateur. Les développeurs ont créé une ville 3D avec voitures, feux tricolores et piétons, dans laquelle circule un robot à six roues, le R-D6. Il est piloté par un véritable croquis Arduino Uno, compilé côté serveur via arduino-cli et exécuté sur un émulateur ATmega328P. Le robot doit livrer une commande du point A au point B en respectant le code de la route.

Architecture : trois couches synchronisées

Le système se compose de trois parties évoluant au même rythme : l'émulateur AVR (16 MHz, PWM, I2C, UART), le moteur physique Rapier (pas de 2 ms), et la ville avec sa logique de feux tricolores et de piétons. La carte et la physique fonctionnent en alternance : deux millisecondes d'émulation, puis un pas physique.

Les capteurs sont implémentés sous forme de registres I2C. Le lidar (adresse 0×52) renvoie 36 secteurs de 10° chacun à une fréquence de 10 fois par seconde, avec une portée de 20 m. Le navigateur (0×53) se met à jour 50 fois par seconde et fournit la position, le cap, l'angle vers la cible, les distances. Le lidar comprend trois rayons par secteur (−3°, 0°, +3°), et c'est l'impact le plus proche qui est retenu. Le pilotage des moteurs se fait par PWM sur les broches ENA/ENB et les niveaux du driver L298N. La bibliothèque intégrée RD6.h lit le scan du lidar (72 octets) en trois morceaux de 24 octets, car le buffer Wire ne fait que 32 octets.

La ville et ses habitants

Le plan est une grille 3×3 au pas de 32 m, avec une chaussée de 8 m dans chaque sens et des trottoirs de 3 m. Cinq feux tricolores sont installés aux carrefours (cycle de 50 secondes : 20 au vert, 3 au orange, 2 au tout-rouge). Douze voitures circulent sur les voies, gardent leurs distances, et choisissent aléatoirement leur direction aux carrefours. Pour les demi-tours : à droite (rayon de 2 m), à gauche (6 m).

Vingt piétons marchent en boucle le long des trottoirs. Sur un passage piéton, ils décident de traverser avec une probabilité de 0,4 ; au vert, ils entament la traversée ; au clignotant, non. Les piétons cèdent le passage au robot : s'il s'approche à moins de 1,7 m, la personne s'arrête puis recule au bout de 0,6 s. Voitures et piétons sont des corps physiques dans Rapier, si bien que le lidar les détecte au même titre que les bâtiments, et les collisions sont de véritables contacts dans le moteur.

L'itinéraire est calculé par l'algorithme de Dijkstra sur un graphe. Le navigateur ne donne pas une direction vers le point suivant, mais vers une « carotte » — une position située 2,5 m en avant (principe classique du pure pursuit). Sans cela, le robot couperait vers des points éloignés, dériverait vers le bord du trottoir et se bloquerait devant les arbres (plantés tous les 8 m). Avec la carotte, le robot reste au milieu du trottoir et au centre du passage piéton. Les fenêtres des façades sont dessinées tous les 2,6 m à l'horizontale et 3 m à la verticale. L'arrivée est enregistrée quand le centre du robot se trouve à moins de 1,5 m du point B.

Déterminisme et reproductibilité

Tout le système est conçu pour produire un résultat identique, que ce soit sur un ordinateur portable modeste ou une machine puissante. Trois règles : l'aléatoire ne provient que de mulberry32 avec une graine fixe, le temps est compté en pas physiques (sans Date.now()), et les décisions des voitures et des piétons sont prises une fois toutes les 20 ms sur une grille fixe.

Vérification : le firmware est lancé deux fois avec un découpage temporel différent (2 et 7,3 ms par appel), puis le hash de l'état du monde est comparé — ils correspondent. Sur l'arène de compétition, le serveur exécute le firmware du participant dans Node.js avec les mêmes modules que le navigateur, et les hashs coïncident jusqu'au dernier chiffre.

Un pilote automatique à cinq règles a passé les 12 combinaisons « itinéraire × scénario » sans infraction. La livraison prend de 65 à 135 secondes de temps modélisé. Extensions prévues : la nuit (environ 45 % des fenêtres allumées selon le hash de l'étage et de la travée), l'heure de pointe avec 40 piétons, des travaux sur le trottoir.

Le rendu s'appuie sur un moteur WebGL maison sans framework : les bâtiments sont des boîtes, les fenêtres dessinées par un shader de fragments. La caméra suit le robot et s'élève si un bâtiment le masque. Les cimes des arbres sur la ligne de visée ne sont pas dessinées.

Une vue de dessus en Canvas 2D est disponible pour le débogage : on y voit l'itinéraire, les signaux de tous les feux tricolores et les rayons du lidar.

Questions clés sur cet article

Que sait-on sur Architecture : trois couches synchronisées ?

Le système se compose de trois parties évoluant au même rythme : l'émulateur AVR (16 MHz, PWM, I2C, UART), le moteur physique Rapier (pas de 2 ms), et la ville avec sa logique de feux tricolores et de piétons. La carte et la physique fonctionnent en alternance : deux millisecondes d'émulation, puis un pas physique. Les capteurs sont implémentés sous forme de registres I2C. Le lidar (adresse 0×52) renvoie 36 secteurs de 10° chacun à une fréquence de 10 fois par seconde, avec une portée de 20 m. Le navigateur (0×53) se met à jour 50 fois par seconde et fournit la position, le

Que sait-on sur La ville et ses habitants ?

Le plan est une grille 3×3 au pas de 32 m, avec une chaussée de 8 m dans chaque sens et des trottoirs de 3 m. Cinq feux tricolores sont installés aux carrefours (cycle de 50 secondes : 20 au vert, 3 au orange, 2 au tout-rouge). Douze voitures circulent sur les voies, gardent leurs distances, et choisissent aléatoirement leur direction aux carrefours. Pour les demi-tours : à droite (rayon de 2 m), à gauche (6 m). Vingt piétons marchent en boucle le long des trottoirs. Sur un passage piéton, ils décident de traverser avec une probabilité de 0,4 ; au vert, ils entament la trav

Que sait-on sur Déterminisme et reproductibilité ?

Tout le système est conçu pour produire un résultat identique, que ce soit sur un ordinateur portable modeste ou une machine puissante. Trois règles : l'aléatoire ne provient que de mulberry32 avec une graine fixe, le temps est compté en pas physiques (sans Date.now()), et les décisions des voitures et des piétons sont prises une fois toutes les 20 ms sur une grille fixe. Vérification : le firmware est lancé deux fois avec un découpage temporel différent (2 et 7,3 ms par appel), puis le hash de l'état du monde est comparé — ils correspondent. Sur l'arène de compétition, le

ZK
Zhemal Khamidun — CPO d'Alpina Digital, product manager d'AlpinaGPT. Conçoit des produits IA depuis 2019. Hamidun News est un projet personnel devenu un agrégateur en production avec plus de 6 000 lecteurs.
✦ 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'en pensez-vous ?
Chargement des commentaires…