Génération de scénarios par IA — décrivez une manœuvre, obtenez un scénario vérifié
Écrire un scénario à la main oblige à nommer la route, la voie, le déclencheur et la dynamique de chaque acteur. Avec la génération par IA, il suffit de décrire la manœuvre — et le brouillon obtenu est exécuté dans un simulateur et vérifié avant d’atteindre votre canevas. Tout se passe dans votre navigateur, avec votre propre clé API.
Pour commencer : d’un canevas vide à un scénario
Section intitulée « Pour commencer : d’un canevas vide à un scénario »Le chemin le plus court vers un scénario fonctionnel. Dessinez une voie, placez deux voitures, et dites ce qui doit se passer :
Vehicle2 cuts in front of Vehicle1.
Cinq étapes, rien de plus :
- Dessinez une voie avec l’outil Lane, puis passez en mode Scenario depuis le menu hamburger.
- Placez deux véhicules sur la voie avec Add actor.
- Ouvrez le panneau IA (le bouton AI sur la carte LOGIC) et tapez ce qui doit se passer. Cliquez sur un acteur du canevas pour insérer son nom.
- Cliquez sur Generate. Ce qui passe les vérifications est appliqué au canevas sous forme de phases et d’événements ordinaires — appuyez sur ▶ pour le voir tourner.
- Ajustez à la main. Les événements générés sont à vous, libre de les modifier. Dans la vidéo, l’exécution est rejouée avec les traces fantômes activées, la timeline est ramenée au moment du cut-in, et un événement est retouché dans l’éditeur avant une nouvelle lecture.
Rien dans le résultat n’est traité à part : parcourez la timeline,
changez une vitesse ou un déclencheur, ajoutez une condition
d’échec, ou exportez le
.xosc — exactement comme pour un scénario que vous auriez écrit
vous-même. Vous pouvez aussi continuer à dialoguer avec le panneau
plutôt que de tout régénérer, voir Affiner en
mots.
Sur une carte réelle
Section intitulée « Sur une carte réelle »Le même principe sur un réseau routier OpenDRIVE importé — ici une carte CARLA Town05 — avec une requête plus longue : un dépassement qui se rabat et freine.
Vehicle2 comes up behind the Ego in the same lane, moves to the left lane, overtakes the Ego, and cuts back into the Ego’s lane soon after passing, leaving only a small gap. Immediately after cutting in, Vehicle2 brakes to 20 km/h. The Ego follows and keeps a safe distance.
La boucle de génération
Section intitulée « La boucle de génération »- Vous placez les acteurs sur le canevas et tapez la requête. L’emplacement que vous avez choisi pour un véhicule est traité comme une décision fixe — le modèle reçoit l’instruction explicite de ne pas le déplacer.
- Le modèle répond avec un storyboard — phases, événements, actions et déclencheurs — dans le format interne de drawtonomy, plutôt qu’en XML brut.
- Quatre filtres vérifient la réponse (voir ci-dessous). L’échec d’un filtre se transforme en une liste d’erreurs concrètes — quel champ, quel est le problème, comment le corriger — renvoyée au modèle pour une nouvelle tentative, jusqu’à trois fois.
- Un brouillon qui passe est appliqué au canevas sous forme de phases et d’événements ordinaires. Rien n’est appliqué sans avoir été exécuté au préalable, sauf si vous le demandez explicitement.

Les quatre filtres
Section intitulée « Les quatre filtres »| Filtre | Affiché comme | Ce qu’il vérifie |
|---|---|---|
| 1 | Syntax | La réponse s’analyse correctement et respecte le schéma du storyboard — champs requis, types d’action et de déclencheur reconnus. |
| 2 | Logic | Les identifiants de voie existent sur la carte, les sens de circulation sont cohérents, les déclencheurs peuvent se déclencher, et la manœuvre correspond à la route réellement présente. |
| 3 | Run | Le scénario est réellement exécuté par esmini — compilé en WebAssembly, dans votre navigateur. Les événements qui ne se déclenchent jamais, les acteurs bloqués, les collisions et les sorties de route échouent ici. |
| 4 | Meaning | La trajectoire enregistrée est mesurée par rapport à ce que demandait la requête. Un cut-in qui ne franchit jamais la ligne de voie échoue, même si l’exécution elle-même s’est déroulée sans accroc. |
Le filtre 4 est une vérification géométrique sur la trajectoire enregistrée, pas un second avis donné par un modèle de langage. Si vous avez demandé un cut-in, quelque chose doit réellement s’insérer.
Indépendamment des filtres, une revue sémantique compare le
storyboard généré à votre formulation et peut soulever des réserves —
une étape capable de bloquer l’application automatique et de vous
laisser la décision (Apply with concerns). Ces réserves sont
indicatives ; ce sont les filtres qui constituent la barrière stricte.
Quand un filtre détecte un problème, il le corrige
Section intitulée « Quand un filtre détecte un problème, il le corrige »- Le problème exact — quel champ, quelle est l’erreur, comment la corriger — repart directement vers le modèle, qui retente sa chance. La plupart des requêtes passent dès la première ou la deuxième tentative.
- Vous pouvez suivre le processus en direct : le panneau compte les tentatives et nomme l’étape en cours, de “Asking the AI…” à “Checking it matches your request…”, avec le détail filtre par filtre disponible sous Details.
- Si une requête a besoin d’un coup de pouce de votre part, le bouton Try again apparaît, le brouillon reste visible dans la timeline, et tout scénario appliqué sans exécution propre est clairement signalé — de sorte qu’un scénario vérifié et un scénario non vérifié ne sont jamais confondus.

Ce que le modèle sait de votre carte
Section intitulée « Ce que le modèle sait de votre carte »La génération s’appuie sur la carte que vous avez importée, pas sur des suppositions :
- Routes et voies — identifiants de route, identifiants et types de voie, sens de circulation, quelles voies sont adjacentes, et laquelle se trouve à gauche ou à droite du point de vue du conducteur.
- Les placements que vous avez faits — la route, la voie et la position le long de celle-ci pour chaque véhicule, marquées comme fixes.
- Ce qui tient sur cette route — combien de route reste devant chaque acteur, et donc quelles vitesses et quelle durée de scénario sont réalisables. Si une vitesse demandée ne tient pas sur la route disponible, le panneau l’indique sous Fitted to the road plutôt que de la modifier en silence.
Les véhicules peuvent être placés sur des voies de circulation et sur des voies de bretelle (entrée, sortie, insertion, déboîtement, voie de raccordement) ; les piétons, sur les trottoirs, les passages piétons et les accotements. La même règle décide où vous pouvez déposer un acteur à la main, si bien que ce que vous pouvez dessiner et ce que l’IA peut proposer restent toujours alignés.

Le véhicule ego reste le système sous test
Section intitulée « Le véhicule ego reste le système sous test »drawtonomy traite l’ego comme l’élément que l’on teste, pas comme un acteur de plus à scripter. Dans la démo ci-dessus, rien dans le storyboard généré ne demande à l’ego de ralentir — la requête dit seulement “The Ego follows and keeps a safe distance.” Le freinage que vous observez est le contrôleur de régulation de référence qui réagit au cut-in et au ralentissement de la voiture rouge :
| Vitesse | |
|---|---|
| Voiture rouge (scriptée) | 60 km/h → 20 km/h, à partir de 0,7 s après son insertion dans la voie |
| Ego (non scriptée) | 40 km/h → 21 km/h, en suivant à 10 m |
C’est la forme même d’un test utile : le stimulus est écrit, et la réponse est ce que vous mesurez réellement. Voir conditions de fin et d’échec pour transformer cette réponse en un verdict de réussite ou d’échec.

Affiner en mots
Section intitulée « Affiner en mots »Une fois un scénario appliqué, la même zone de saisie devient une zone d’affinage : décrivez le changement plutôt que de tout régénérer. Les affinages sont appliqués comme des modifications ciblées — une vitesse, un seuil de déclencheur, un événement ajouté ou supprimé, la durée du scénario — de sorte que les parties que vous avez déjà retouchées à la main restent inchangées.
Les ordres numériques simples sont traités sans faire appel au modèle. “Set Vehicle2 to 40 km/h” nomme un acteur, un nombre et une unité, donc drawtonomy le résout directement et le panneau signale qu’aucun appel à l’IA n’a été nécessaire. Tout ce qui reste ambigu est transmis au modèle.
Ce qui est couvert aujourd’hui
Section intitulée « Ce qui est couvert aujourd’hui »Ce que le générateur peut exprimer aujourd’hui — et comment il se comporte quand une requête va au-delà.
- Un vocabulaire de manœuvres complet — changements de vitesse, changements de voie, décalages latéraux, téléportations, maintien de distance et suivi de trajectoire, déclenchés par le temps de simulation, la distance relative, l’intervalle temporel, la vitesse, ou l’état d’un autre événement. Tout ce que vous générez arrive sous forme de phases et d’événements ordinaires, donc tout ce qui sort de ce vocabulaire n’est qu’à une modification manuelle de distance.
- Des tentatives que vous ne voyez jamais — une requête peut être résolue dès le premier essai ou nécessiter jusqu’à trois tentatives, chacune corrigée par les filtres. Ce qui arrive sur votre canevas est la tentative qui a réussi.
- Une durée d’exécution ajustée à la route — la durée du scénario est calculée à partir de la manœuvre, des vitesses et de la route disponible devant, de sorte que l’exécution se termine toujours sur du bitume réel. Besoin de plus long ? Demandez-le dans la zone d’affinage, et cela sera appliqué comme une modification ciblée.
- De la place pour manœuvrer — un dépassement a besoin de route. Donnez aux acteurs un tronçon d’environ 30 m ou plus, et le solveur aura de quoi travailler.
Configurez votre clé API
Section intitulée « Configurez votre clé API »La génération utilise votre propre clé API, si bien que les requêtes s’exécutent sur votre compte et votre quota. La clé est stockée dans votre navigateur et envoyée directement au fournisseur que vous avez choisi — elle n’atteint jamais un serveur de drawtonomy, ni un fichier, ni un journal.
Ouvrez le panneau AI dans l’éditeur de scénarios et cliquez sur API key en bas :

- Choisissez un fournisseur — Anthropic (par défaut), OpenAI (ChatGPT), ou Gemini.
- Collez la clé et cliquez sur Save. Le champ affiche alors
Replace key, et un bouton Clear apparaît pour la supprimer à nouveau. - Les clés sont mémorisées par fournisseur, donc changer de fournisseur ne supprime pas l’autre clé.
Obtenir une clé API Claude
Section intitulée « Obtenir une clé API Claude »Créez-en une dans la console Anthropic (Settings → API keys → Create Key). Un compte Anthropic avec du crédit API est nécessaire ; les formules d’abonnement Claude sont distinctes de l’accès à l’API.
En cas de rejet
Section intitulée « En cas de rejet »Le panneau indique la cause plutôt que d’échouer en silence :
| Ce que vous voyez | Que faire |
|---|---|
| The key was rejected | Vérifiez que la clé est valide, qu’elle a accès à l’API, et qu’elle est limitée à un seul workspace (voir ci-dessus). |
| The API is rate limiting this key | Attendez un instant et cliquez sur Try again. |
| The API is temporarily unavailable | Une panne temporaire côté fournisseur ; réessayez sous peu. |
Pages associées
Section intitulée « Pages associées »- Créer votre premier scénario — le même storyboard, écrit à la main.
- Phases et événements — ce que signifie la structure générée une fois sur le canevas.
- Lecture — rejouer le résultat, la caméra de suivi et le badge PASS/FAIL.
- Générer une scène avec l’IA — l’extension distincte qui transforme une description en dessin plutôt qu’en scénario.