个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Plateforme intégrée du projet de recherche « L'IA au service de la création théâtrale » (Sylvain Gagné, Ph. D., chercheur indépendant non affilié et autofinancé) : console de pilotage multi-robots, partenaire de théâtre, robot virtuel humanoïde, drone de scène et chien de scène (virtuels, puis réels), atelier dramaturgique instrumenté, pont scénique, interface spectateur, analyse et gouvernance, réunis autour d'un seul journal des cinq opérations de la cocréation instrumentée (consigne, génération, sélection, transformation, attribution).
La plateforme réalise les 58 fonctions du Cahier des fonctions et plan d'action v1.0 (11 oct. 2026) : les fonctions
« doit » (N, A, R, S, Q, G, P) et les extensions « pourrait » (O-01 à O-12), auxquelles s'ajoutent les extensions O-13 (drone
de scène) et O-14 (chien de scène), du 19 oct. 2026, soit 60 fonctions. La table bridge/pilotage/fonctions.py,
affichée dans la page Gouvernance et vérifiée par les tests, rattache chaque fonction à son code, à son test et à ce
qui reste à faire.
| Page | Fonctions | Rôle |
|---|---|---|
/ Console | R-01 à R-04, R-07, R-08, N-07, N-08, O-12 | Pilotage de la flotte (robot actif, profils), observateur de sécurité, règle de l'IA, arrêt global, saisie « de tête », surtitres et voix divulguée |
/partenaire | O-01 à O-04, O-10 | Formation, répétiteur (consigne graduée), variations (deux régimes), analyse de pièce, DraCor et export TEI, mode pédagogique É.T.T. |
/atelier | A-01 à A-08, O-01 | Atelier P1 : cinq opérations, routeur D03 sans repli, modèles D13, registre de consigne, verrous de mise en service |
/scene | R-05, R-06, O-05, O-06, O-11, O-12 | Conduite du pont scénique sous GO unique, multi-robots, aperçu et GO simulés dans le jumeau, écho tracé, surtitres |
/spectateur | S-01 à S-06 | Tirage scellé X.2, séance P3 (condition de provenance), questionnaires I-7 et I-6 sur serveur public distinct, avis S-06 |
/surtitres | O-06 | Surtitrage et audiodescription proposés, validés par une personne, étiquetés, exportés en WebVTT |
/recherche | Q-01 à Q-05, O-02, O-08, O-09 | Analyse reproductible (dossier daté, script R, manifeste), codage local des entretiens, veille, tableau public |
/gouvernance | G-01 à G-07, R-08 | Verrous (avis éthique, EFVP), incidents, décisions humaines (Loi 25, art. 12.1), conservation, registre des systèmes |
/regie | P-01 à P-04 | Registre du projet, régisseur IA en lecture seule, revue trimestrielle ISO/IEC 42001, inventaire mensuel, dépôts |
/tableau-public | O-09 | Indicateurs agrégés publiés après validation (seuil de cinq) |
/chien | O-14 | Chien de scène : quadrupède virtuel (12 articulations, trot, postures, allures expressives) sur le plateau, les escaliers et dans la salle, conduite au GO, caméra de tête, sol praticable, liaison au chien réel par le pont |
/drone | O-13 | Drone de scène : drone virtuel dans le théâtre en 3D (plateau et salle), console de vol, conduite au GO, caméra 4K virtuelle et réelle, zones de vol, liaison au drone réel par le pont |
Toutes les pages sont bilingues (français par défaut, anglais), sans ressource externe, et utilisables au clavier.
gouvernance/etat.yaml et que l'EFVP ne couvre pas la version de la fonction ; le mode « essai » reste ouvert, ses données rangées à part.Chaque robot est décrit par un profil TOML (robots/) : articulations et limites, pilote, zone d'exclusion, bibliothèque.
Pilotes fournis : ligne JSON (série, TCP, UDP, WebSocket, simulation), bus de servos Hiwonder (AiNex), rosbridge (ROS 1
et 2), MQTT, OSC, HTTP REST, Reachy Mini et processus externe. Trousses pour écrire un pilote dans le langage du robot :
Python, JavaScript (Node), C++ et Arduino (sdk/), toutes conformes au langage de commande unifié v2 (PROTOCOLE.md).
Un même geste nommé se joue sur chaque robot validé ; un brouillon est refusé sur robot réel, et les statuts
intermédiaires jouent à demi-vitesse.
Hiwonder TonyPi Pro (humanoïde de 20 axes) : profil robots/tonypi_pro.toml (degrés relatifs à la position debout ;
bornes tirées des 116 groupes d'actions officiels ; sens à confirmer par relevé) et deux liaisons — le pilote embarqué
sdk/python/tonypi_embarque.py (tout le robot : gestes natifs, marche, chute, capteurs, DEL, voix, flux MJPEG) ou, sans
rien installer, le serveur JSON-RPC de Hiwonder (robots/tonypi_pro_rpc.toml). Gestes natifs dans la Console, la
conduite (natif:<nom>) et l'IA supervisée (par leur nom, liste fermée) ; le robot virtuel reflète les 20 axes et
pilote la tête, les bras et les mains ; outils/hiwonder_tonypi.py convertit les groupes d'actions .d6a en
séquences et inversement. Guide : web/aide/Guide_TonyPi_Pro_ROBO-SCENE_v1.0.docx.
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
export ANTHROPIC_API_KEY=… OPENAI_API_KEY=… # facultatif ; jamais dans config.toml
python -m bridge.serveur --sim # tous les robots en simulation
Ouvrir http://127.0.0.1:8765. Pour que le pont soit toujours disponible (en simulation, sans fenêtre du Terminal) : bash outils/demarrage_automatique.sh installer (retirer pour l'annuler, etat pour vérifier). Le service « Pont ROBO-SCÈNE », invisible, démarre à l'ouverture de session et relance le pont s'il s'arrête ; macOS demande une seule fois l'accès au dossier Documents (répondre « Autoriser »). L'application ~/Applications/ROBO-SCÈNE.app ouvre directement la console. lancer.command réinstalle les dépendances dès que requirements.txt change. Réglages : config.toml (sections [modeles], [flotte], [scene], [spectateur],
[pilotage], [pedagogie], [diffusion]). Analyse hors interface : python -m bridge.analyse --exclure X2-03.
Le script R de l'analyse principale (lme4, pbkrtest, ordinal) est copié dans chaque dossier d'analyse.
Application de développement, de suivi et de pilotage d'un robot à microcontrôleur, conçue pour la séance incarnée S04 du protocole ROBO-SCÈNE (mouvement supervisé réel, sous seuil de confiance).
Interface web (navigateur, tablette) Serveur-pont Python Robot
───────────────────────────────── ────────────────────── ──────────────
suivi · téléopération · séquences ⇄ WS ⇄ sécurité · séquences · IA ⇄ série USB ou TCP Wi-Fi
IA supervisée · journal journal de séance (corpus) ESP32 + servos + roues
Le pont est le seul à parler au robot : chaque commande, qu'elle vienne d'un curseur, d'une séquence ou de l'agent IA, traverse la même couche de sécurité (bornage articulaire, limitation de vitesse, plafond de propulsion, verrou d'arrêt d'urgence), puis est archivée.
Prérequis : Python 3.12 ou plus récent (3.11 pour la seule console).
cd robo-scene-console
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python -m bridge.serveur --sim
Ouvrir ensuite http://127.0.0.1:8765. Sur macOS, bash lancer.command dans le Terminal (ou un double-clic, une fois le fichier autorisé dans Réglages Système › Confidentialité et sécurité) fait tout cela et ouvre le navigateur.
Le robot simulé parle exactement le même protocole que le micrologiciel : tout ce qui fonctionne en simulation fonctionnera sur le robot réel, aux réglages de câblage près.
firmware/esp32_robot/esp32_robot.ino dans l'IDE Arduino, installer le paquet de cartes esp32 d'Espressif, puis les bibliothèques ESP32Servo et ArduinoJson (7.x). Adapter le bloc « Configuration à adapter » (broches, limites, mot de passe Wi-Fi), téléverser. Le croquis a été compilé sans erreur pour « ESP32 Dev Module » avec le paquet esp32 3.3.12, ESP32Servo 3.2.1 et ArduinoJson 7.4.3 ; il n'a pas encore été essayé sur une carte physique, d'où l'essai sur cales recommandé plus bas.config.toml, section [robot], choisir transport = "serie" (câble USB ; renseigner port_serie, par exemple /dev/tty.usbserial-0001 sur Mac) ou transport = "tcp" (se connecter au réseau Wi-Fi ROBO-SCENE-01 créé par l'ESP32 ; adresse 192.168.4.1). Les limites articulaires de config.toml doivent être identiques à celles du micrologiciel.python -m bridge.serveur (sans --sim).| Fonction | Broche ESP32 | Remarque |
|---|---|---|
| Servos Base, Épaule, Coude, Tête | 13, 14, 27, 26 | alimentation 5–6 V séparée, masses communes |
| TB6612 PWMA / AIN1 / AIN2 | 25 / 33 / 32 | roue gauche |
| TB6612 PWMB / BIN1 / BIN2 | 4 / 16 / 17 | roue droite |
| TB6612 STBY | 18 | |
| Tension batterie | 34 | pont diviseur 10 kΩ / 3,3 kΩ |
| HC-SR04 TRIG / ECHO | 19 / 23 | ECHO en 5 V : diviseur obligatoire |
| Bouton d'arrêt local (NF) | 22 | mettre BOUTON_ARRET à 0 si absent |
Le protocole complet figure dans PROTOCOLE.md ; il permet d'adapter n'importe quel autre microcontrôleur.
| Zone | Rôle |
|---|---|
| ARRÊT (ou touche Échap, ou barre d'espace hors champ de saisie) | Arrêt d'urgence logiciel verrouillé ; « Réarmer » est une action distincte et volontaire. |
| Suivi | Schéma des articulations, plan du plateau 4 × 3 m (jardin, cour, avant-scène, lointain) avec trace et rayon du capteur, tuiles et courbes sur 12 s. |
| Téléopération | Un curseur par articulation ; manette tactile ou flèches / ZQSD pour les roues. Relâcher = arrêt (homme mort de 400 ms côté pont, chien de garde de 500 ms côté robot). |
| Séquences | Jouer, arrêter, charger dans l'éditeur ; « Capturer la pose » ajoute la position courante ; durées et pauses modifiables ; enregistrement en JSON dans sequences/. |
| Interaction IA | Consigne en français → proposition (action, confiance, justification). Sous le seuil, la proposition est bloquée ; au-dessus, elle attend la validation de l'opératrice. |
| Journal | Événements en direct, notes observationnelles horodatées, clôture de séance. |
La confiance retenue vaut min(confiance déclarée par le modèle, confiance de vérification). La vérification est déterministe et indépendante du modèle : angles hors limites, obstacle à moins de 40 cm devant, déplacement de plus de 3 s, séquence inexistante, etc. Une auto-évaluation d'un modèle de langage n'étant pas une probabilité calibrée, elle ne peut jamais, à elle seule, autoriser un mouvement.
Sans clé API, un analyseur de règles hors ligne prend le relais (consignes simples : « salut », « repos », « avance », « tourne à gauche », « lève la tête »…). Pour activer Claude :
pip install anthropic
export ANTHROPIC_API_KEY=… # ne jamais l'écrire dans config.toml
python -m bridge.serveur
Le modèle et la température se règlent dans [ia]. Le profil « commande » utilise une température basse (0,2) ; le profil 0,7 de votre protocole de génération dramaturgique reste réservé aux monologues, dialogues et scènes. L'API Anthropic refuse, pour les modèles récents, que temperature et top_p soient fixés simultanément : le pont n'envoie donc que la température.
Chaque lancement ouvre une séance identifiée selon la nomenclature [DATE]_[SYSTÈME]_[TYPE]_[NUMÉRO] (par défaut 20261008_ESP32_S04_001), rangée dans corpus/[Système]/[Type]/[Date]/ :
….jsonl : commandes (origine : manuel, séquence, IA), refus, arrêts, propositions IA avec le prompt intégral, décisions, notes, télémétrie à 5 Hz ;….json : métadonnées (opératrice, transport, paramètres de sécurité et d'IA, compteurs, notes observationnelles, début et fin).Renseigner operatrice et type dans [protocole] avant la séance. Le dossier corpus/ se versionne avec Git comme le reste du protocole.
127.0.0.1. Passer hote = "0.0.0.0" pour piloter depuis une tablette expose la commande sans authentification à tout le réseau local : ne le faire que sur un réseau isolé dédié à la scène.L'interface est publiée sur https://robo-scene.netlify.app (console), https://robo-scene.netlify.app/partenaire et https://robo-scene.netlify.app/avatar (robot virtuel, utilisable sans pont) https://robo-scene.netlify.app/drone (drone de scène) et https://robo-scene.netlify.app/chien (chien de scène), tous utilisables sans pont. Netlify ne sert que des pages statiques : le pont Python, le robot, vos documents et les données des acteurs restent sur votre ordinateur, et la page en ligne se connecte au pont local, ws://127.0.0.1:8765/ws.
bash lancer.command).web/simulateur.js) : un bandeau l'annonce, la téléopération, les séquences et la télémétrie sont simulées, aucune commande matérielle n'est émise, rien n'est consigné et l'IA supervisée reste fermée. « Réessayer le pont » recharge la page ; « Modifier l'adresse » vise un autre port ou une autre machine. L'adresse ?simulation=1 force la démonstration même quand le pont tourne.[serveur] origines_autorisees dans config.toml ; toute autre page est refusée (HTTP 403), ce qui empêche un site tiers ouvert dans le navigateur de commander le robot.Seul le dossier web/ est publié (netlify.toml) ; les treize pages ont une route explicite (/console, /partenaire, /avatar, /drone, /chien, /atelier, /scene, /spectateur, /surtitres, /recherche, /gouvernance, /regie, /tableau-public), et les en-têtes interdisent l'intégration dans un cadre et l'indexation, limitent caméra et microphone à l'origine, et appliquent une politique de sécurité du contenu en mode « rapport seulement » (à rendre contraignante après un essai d'imitation MediaPipe sans écart dans la console du navigateur). Essai réalisé le 10 octobre 2026 avec Chromium : connexion de la page en ligne au pont local réussie. Le comportement de Safari envers ws://127.0.0.1 depuis une page https n'a pas été vérifié : en cas d'échec, utiliser Chrome, ou l'interface locale http://127.0.0.1:8765.
Pour republier après une modification de l'interface : relier le dépôt GitHub au projet Netlify (déploiement continu), ou relancer un déploiement manuel du dossier web/.
Ouvrir http://127.0.0.1:8765/partenaire (lien « Partenaire » dans l'en-tête de la console). Le bouton ARRÊT et la touche Échap y fonctionnent comme dans la console : ils figent le robot, coupent la voix et suspendent la répétition.
| Onglet | Rôle |
|---|---|
| Formation | Les 97 exercices du Livret d'exercices pour acteurs (trois années), restitués tels quels : fiche technique, déroulement minuté, variantes, note pédagogique. Le partenaire guide l'exercice à voix haute avec minuteurs ; le robot peut l'accompagner (souffle en quatre temps, immobilité, miroir lent). Séance type composée selon la structure du livret, calendrier de progression, grille d'auto-évaluation hebdomadaire. |
| Répétition | Le partenaire donne les répliques des autres rôles (voix de synthèse, une voix par personnage) et écoute l'acteur. Il souffle le début de la réplique après un silence réglable ; il propose une mémorisation progressive (texte, initiales, premier mot, masqué). Mesures : reprise de réplique, durée, pauses, débit, intensité, fidélité au texte. Trajectoire longitudinale des passages. |
| Variations | Pour chaque réplique : indices textuels (didascalies, lexique, ponctuation) et trois propositions — lecture du texte, contre-emploi, mélange de deux affects (exercice 5.3 du livret) — avec intensité de 1 à 10 et cinq styles (exercice 6.3). Deux régimes de rendu : émulation humaine (prosodie et posture) ou voie machinique (facteurs d'effort de Laban — poids, temps, espace, flux — et voix aplatie ou signal tonal sans mots). L'effort peut être composé directement, sans étiquette émotionnelle. |
| Analyse de pièce | Distribution de la parole, réseau de coprésence, matrice des configurations, stichomythies, tirades, fiche de personnage (questions de Stanislavski et quatre couches du livret). Lecture interprétative (fable, modèle actantiel, enjeux, pistes de jeu, place du robot) avec une clé API ; les citations non retrouvées mot pour mot dans la pièce sont retirées. |
| Répertoire | Recherche croisée dans DraCor (24 corpus, dont 1 940 pièces françaises et Shakespeare) par nombre d'hommes, de femmes, de personnages, genre et époque, puis import du texte intégral avec sa licence. Import de vos propres textes (collage, .txt, .docx). Liens vers les catalogues CEAD, Playwrights Guild of Canada, Le Proscenium, Théâtre-contemporain.net, Doollee et Folger Shakespeare. |
| Conseiller | Questions sur le jeu, la voix, le corps, la dramaturgie, la mise en scène, la scénographie, la robotique et l'IA, à partir de vos documents indexés (et de la pièce étudiée). Sans clé API : passages pertinents avec leur référence ; avec clé : synthèse dont chaque référence est contrôlée. |
| Coprésence (régie) | Partition du chapitre 7 (attente partagée, marche accordée, adresse au public, silence tenu) et perturbations P1 à P3. Le plan est scellé par empreinte SHA-256 inscrite au journal de séance ; son descellement vérifie l'intégrité. L'onglet est destiné au poste de régie, non à l'écran de l'acteur. |
processLocally). Sinon, selon le navigateur, l'audio peut être traité par un service distant ; c'est pourquoi elle exige un consentement distinct.Désactivée par défaut ([partenaire] incarnation = false), elle se bascule dans l'en-tête. Les gestes du partenaire — accompagnements, variations, répliques, situations de coprésence — sont des images clés bornées qui traversent la même couche de sécurité que la téléopération ; l'arrêt d'urgence les interrompt.
La base de connaissances indexe les fichiers de partenaire/sources/. Ce dossier et les index qui en sont tirés (partenaire/index/) restent sur l'ordinateur de l'équipe : ils ne sont pas versionnés (dépôt public) ; les trois tests qui en dépendent sont ignorés là où ils manquent. Pour en ajouter : déposer le fichier (.docx, .pdf, .md, .txt, .html), puis lancer python -m bridge.partenaire.connaissances. Après une nouvelle édition du livret : python -m bridge.partenaire.livret.
Ouvrir http://127.0.0.1:8765/avatar (lien « Robot virtuel » dans l'en-tête), ou https://robo-scene.netlify.app/avatar : le robot virtuel fonctionne entièrement dans le navigateur ; le pont n'est requis que pour le journal de séance, l'interprète par modèle (service unique des modèles, rôle « commande ») et le jumeau du robot physique. Guide complet : docs/Guide_robot_virtuel_ROBO-SCENE.docx.
Personnage masculin procédural en 3D (three.js 0.169, licence MIT, servi localement depuis web/vendor/) : 32 degrés de liberté bornés (tête, tronc, bassin, épaules, coudes, poignets, doigts, hanches, genoux, chevilles), visage animé par unités d'action FACS (sourcils, paupières, regard, lèvres, mâchoire), présence vivante (respiration, transfert de poids, saccades, clignements), marche sur un plateau figuré (cour, jardin, lointain, avant-scène).
| Onglet | Rôle |
|---|---|
| Directives | Consignes écrites ou dictées en français (« lève le bras droit lentement puis souris », « va côté cour et salue le public », « deviens triste, puis dis « Je ne reviendrai pas. » »). Interprète de règles hors ligne (252 exemples de référence, tous vérifiés par les tests), qui corrige les fautes de frappe et rapproche les formulations voisines ; s'il ne comprend pas, le robot le dit à voix haute et propose des commandes proches ; « aide » affiche la liste. Ce qu'il ne comprend pas peut être soumis par le pont au service des modèles (routeur de sensibilité compris), puis revalidé et présenté pour validation humaine. Annule, répète, stop, mémoire de poses. |
| Émotions et parole | Douze émotions (les onze du partenaire et le dégoût) à intensité réglable : visage, posture, qualité d'effort de Laban et prosodie. Expressions isolées. Parole par synthèse vocale avec synchronisation labiale par visèmes et battements de tête et de sourcils. |
| Corps | Clic et glisser sur une partie du corps ; curseurs de tous les degrés de liberté ; 71 gestes (quotidien, scène, combat de théâtre : saluer, rouler les poignets, bras au ciel, frapper à la porte, boire, téléphoner, sauter, boxer, tituber, dormir…), 11 poses (dont effondré, en garde, le penseur, statue), mouvements de scène (tour de la scène, cent pas, pirouette, sortie, entrée, pas chassé), poses mémorisées, chorégraphie d'images clés, export et import JSON. |
| Corps humain | Style « humain » au choix (menu Corps, ou « passe en version humaine ») : corps d'homme athlétique issu de MakeHuman (maillage, morphologie, squelette et yeux sous licence CC0 ; outils/humain/construire_humain.py), replacé dans la pose de repos du robot et lié à son squelette — bras, poignets, jambes, tronc, tête, mâchoire, paupières, yeux et les 15 phalanges de chaque main suivent exactement le robot. Peau aux dix tons de l'échelle de Monk (Ellis Monk, Google, CC BY 4.0 ; « peau Monk 8 ») ou aux teintes nommées ; cheveux, sourcils et barbe en coques ; vêtements peints sur la peau (dont le maillot de lutte blanc à liserés bleu ciel) ; sept modèles de maillots de lutte (chiné bleu ou rouge, motif ton sur ton rouge ou bleu, bleu roi, blanc nuagé à liserés rouges, noir à flancs en maille) et huit modèles de chaussures de lutte montantes (menus de l'onglet Apparence, ou « mets le maillot de lutte bleu chiné », « mets les chaussures à chevrons ») ; coupes du maillot calculées par pixel, pied chaussé aux orteils comblés (outils/humain/chaussure_pleine.py), maillage affiné au chargement. Garde-corps des bras (web/avatar/garde.js, deux styles) : pendant les gestes et les contacts, la main et l'avant-bras restent hors de la tête, du cou, du tronc, du bassin et des cuisses (la main se pose à plat sur le cœur au lieu d'y entrer) ; bras levés en V corrigés, rythme scapulo-huméral, os « à mi-rotation » aux épaules, coudes, poignets, hanches et genoux (aisselles sans bourrelet). Expressions du visage limitées à la mâchoire, aux paupières et au regard. |
Cadrages (face, trois-quarts, profil, gros plan, plan américain, en pied, plan large, plongée), cinq ambiances lumineuses, Mode scène plein écran et Fenêtre séparée pour un second écran. Le bouton ARRÊT et la touche Échap figent le personnage, coupent la parole et envoient l'arrêt d'urgence au pont.
Ouvrir http://127.0.0.1:8765/drone (lien « Drone » dans l'en-tête) ou https://robo-scene.netlify.app/drone : le drone virtuel vole entièrement dans le navigateur, dans un théâtre à l'italienne en 3D (plateau, cadre de scène, porteuses, parterre, balcon, régie) ; le pont n'est requis que pour le drone réel.
| Onglet | Contenu |
|---|---|
| Vol | Décoller, stationnaire, atterrir, retour à l'aire ; manettes à l'écran (mode 2), clavier, manette de jeu ; aller à un repère ou au point cliqué ; couronne de DEL ; coupure des moteurs confirmée (« COUPER ») |
| Conduite | Repères joués au GO (Entrée) ou d'affilée : décoller, aller, stationnaire, atterrir, avec lacet, visée de la caméra et couleur ; trajectoires à secousse minimale, validées tous les 5 cm contre les zones ; durées trop courtes allongées ; GO bloqué si un segment touche un obstacle, le public ou un interprète ; import et export JSON |
| Caméra 4K | Caméra embarquée virtuelle (nacelle, zoom, visée d'un repère, grille des tiers), image fixe rendue à 3840 × 2160, enregistrement WebM ; caméra réelle par carte de capture HDMI (UVC, 3840 × 2160 demandés) ou par WebRTC/WHEP (MediaMTX), affichée seulement, jamais enregistrée (G-06) ; mode superposé pour caler le jumeau |
| Zones | Trois modes : plateau seul ; salle vide (initiales de la personne qui l'a vérifiée) ; représentation (survol du public interdit : colonnes d'exclusion élargies de 2 m) ; cylindres des interprètes ; marges, plafonds de vitesse, seuils de batterie |
| Drone réel | Adaptateurs du pont : simulation, ArduPilot par MAVLink (GUIDED), Tello (SDK texte), JSON par ligne vers un ordinateur compagnon ; conditions affichées ; liste de contrôle signée ; télémétrie ; le virtuel devient le jumeau du réel |
| Journal | Événements et refus ; export JSON nommé [DATE]_[SYSTÈME]VOL[NUMÉRO], sans aucune image |
La salle est décrite dans web/drone/salle.json, lu à la fois par la page et par le pont (bridge/drone/zones.py) ; un
test vérifie que les deux implantations rendent le même verdict sur 3 000 points dans chacun des trois modes. Avant
tout vol réel, remplacer ce gabarit par le relevé de la salle. Le pont n'ouvre un adaptateur réel que si
[drone] reel_autorise = true ; il exige ensuite l'observateur de sécurité déclaré dans la Console, la liste de contrôle
cochée et signée, refuse le mode « représentation » tant que [drone] vol_en_representation = false, vérifie chaque
destination et chaque segment, découpe les trajets en consignes à 10 Hz, filtre les consignes de vitesse par le point
d'arrêt prévu, met le drone en stationnaire puis le pose si la page se tait (1 s, puis 4 s), et le pose sur tout ARRÊT
de la plateforme. Pour MAVLink : pip install pymavlink. Guide : docs/Guide_drone_de_scene_ROBO-SCENE_v1.2.docx.
Ouvrir http://127.0.0.1:8765/chien (lien « Chien » dans l'en-tête) ou https://robo-scene.netlify.app/chien. La
page reprend la logique du drone : le chien virtuel marche entièrement dans le navigateur, dans le même théâtre (même
salle.json), complété d'escaliers d'accès à la salle ; le pont n'est requis que pour le chien réel.
| Onglet | Contenu |
|---|---|
| Marche | Se lever, s'arrêter, se coucher, retour à la marque ; postures (debout, couché, assis, donner la patte, saluer, s'étirer) ; allures expressives (neutre, joyeux, craintif, menaçant, fatigué, curieux) ; manettes, clavier, manette de jeu ; aller à un repère ou au point cliqué ; couleur des yeux ; coupure confirmée |
| Conduite | Repères au GO : se lever, se coucher, posture, allure, aller, tourner, attendre, regarder ; marches à secousse minimale vérifiées tous les 5 cm contre le sol praticable ; durées allongées selon les surfaces (escaliers à 0,3 m/s) |
| Caméra | Caméra de tête virtuelle (regard orientable), image 3840 × 2160, enregistrement WebM ; caméra réelle par carte de capture ou WHEP, affichée seulement (G-06) |
| Zones | Sol praticable par mode : plateau seul ; salle vide (escaliers, avant-salle, allée centrale) ; représentation (1 m des rangées, 0,4 m/s hors du plateau ; l'allée centrale se ferme d'elle-même) ; cercles des interprètes |
| Chien réel | Adaptateurs du pont : simulation, ROS 2 ou ROS 1 par rosbridge (/cmd_vel, /odom, sujets de posture et d'arrêt), Petoi Bittle/Nybble (jetons série OpenCat), JSON par ligne ; conditions, liste de contrôle signée, télémétrie, jumeau |
| Journal | Export JSON nommé [DATE]_[SYSTÈME]MARCHE[NUMÉRO], sans image |
Le bloc sol de web/drone/salle.json décrit les surfaces praticables (avec leur hauteur et leur vitesse maximale),
les obstacles au sol, la marque de départ, les repères et la liste de contrôle ; web/chien/sol.js et
bridge/chien/sol.py appliquent la même règle (parité vérifiée sur 4 000 points dans chacun des trois modes). Le pont
n'ouvre un adaptateur réel que si [chien] reel_autorise = true, exige l'observateur et la liste signée, refuse la
représentation tant que [chien] marche_en_representation = false, suit les trajets par poursuite de la référence à
10 Hz à partir de l'odométrie, filtre les consignes manuelles par le point d'arrêt prévu, arrête le robot si la page
se tait (0,5 s) puis le couche (3 s), et le couche sur tout ARRÊT. Pour ROS : un petit nœud côté robot traduit le sujet
de posture (std_msgs/String) en commandes du fabricant. Guide : docs/Guide_chien_de_scene_ROBO-SCENE_v1.2.docx.
| Moyen | Effet |
|---|---|
| Souris | Saisir le robot dans la vue 3D et le glisser : un anneau vert (destination permise) ou rouge (refusée) le suit ; au relâchement, le robot s'y rend par une trajectoire à secousse minimale. Drone : le glissement suit le plan de son altitude, Maj enfoncée change l'altitude ; posé, il décolle d'abord. Double-clic sur le sol : aller ici. |
| Flèches | Repère au choix : du robot (↑ avant, ↓ arrière, ← → gauche et droite) ou de la scène vue de la salle (↑ lointain, ↓ salle, ← jardin, → cour ; le chien se tourne vers la direction puis marche). Maj + ← → : rotation ; drone : Maj + ↑ ↓ ou Pg↑ Pg↓ : altitude. W A S D, R F, Q E restent actifs. |
| Voix ou texte | Bouton 🎙 Parler (touche V) ou champ de commande : « décolle puis va au centre », « avance de 2 mètres », « tourne à droite de 45 degrés », « lève-toi », « assis », « avance de 3 pas », « va en haut de l'escalier cour », « reviens à ta place », « stop », « arrêt d'urgence ». Grammaire française déterministe (web/drone/commande.js), enchaînements par « puis », repères de salle.json et périphrases (« centre de la salle », « devant le premier rang »). |
Chaque commande, quelle que soit sa source, passe par les fonctions ordinaires de la page, donc par les mêmes
vérifications (zones, sol praticable, pont et sécurités du robot réel) ; une reprise des manettes, du clavier ou de la
souris interrompt la commande en cours ; la voix ne commande jamais la coupure des moteurs. La reconnaissance vocale
utilise l'API Web Speech du navigateur ; la case « reconnaissance sur l'appareil », cochée par défaut, exige le
traitement local (processLocally, avec téléchargement unique du modèle de langue française au besoin) et refuse
d'écouter sinon ; décochée, le navigateur peut envoyer l'audio à un service distant. Aucun son n'est enregistré par la
plateforme. Essais : tests/test_commandes.py.
Le robot humanoïde, le chien et le drone conversent avec une personne (onglet Dialogue des pages Robot virtuel,
Chien et Drone). On parle au micro (🎙 Dicter ou 🎙 Parler, touche V) ou l'on écrit : une phrase comprise
comme une commande s'exécute comme d'habitude ; toute autre phrase part au pont (bridge/dialogue.py), qui la confie
au moteur choisi pour cette machine, et la machine répond à voix haute (voix humaines de web/voix-direction.js ;
le robot garde sa propre voix, lèvres synchronisées, et peut aussi parler par le haut-parleur du TonyPi Pro relié).
| Moteur | Clé ou réglage | Registre |
|---|---|---|
| Claude (Opus, Sonnet) | ANTHROPIC_API_KEY | SI-01 |
| GPT (Sol, Luna, Terra) | OPENAI_API_KEY | SI-08 |
| Grok (xAI) | XAI_API_KEY | SI-09 |
| Gemini (Argon, Flash) | GEMINI_API_KEY ou GOOGLE_API_KEY (projet avec facturation seulement) | SI-10 |
| Tout modèle chargé dans LM Studio | url_local ; reseau_local = true pour un autre ordinateur du Wi-Fi | SI-02 si c'est le modèle désigné |
[modeles.roles] ; le choix par machine se règle dans la page ou dans
[modeles.choix], et chaque changement est consigné au journal de séance (moteur, version).Wi-Fi. Les robots se relient au pont par le Wi-Fi (TonyPi Pro : 192.168.149.1 en point d'accès, ou le réseau de
la salle ; chien et drone : leurs adaptateurs). Une tablette ou un téléphone peut ouvrir les pages du pont
(hote = "0.0.0.0", réseau isolé de la scène) ; le navigateur n'y accorde le micro qu'en https : renseigner
certificat et cle dans [serveur] (par exemple avec mkcert, dont l'autorité doit aussi être installée sur la
tablette). LM Studio peut tourner sur un autre ordinateur du même Wi-Fi (« Serve on Local Network », url_local
vers son adresse privée, reseau_local = true) ; tout hôte public reste refusé. Essais : tests/test_dialogue.py.
Version publiée : 2.3.3 (16 octobre 2026), en ligne sur https://robo-scene.netlify.app ; les deux documents de référence se téléchargent aussi depuis la page Aide (https://robo-scene.netlify.app/aide, dossier web/aide/).
docs/Guide_plateforme_integree_ROBO-SCENE_v2.0.1.docx — guide de la plateforme intégrée (58 fonctions, révision 2.0.1 du 16 octobre 2026)docs/Guide_drone_de_scene_ROBO-SCENE_v1.2.docx — drone de scène (O-13) : drone virtuel, souris, flèches et voix, conduite, caméra 4K, zones, passage au drone réeldocs/Guide_chien_de_scene_ROBO-SCENE_v1.2.docx — chien de scène (O-14) : quadrupède virtuel, postures et allures, souris, flèches et voix, conduite, sol praticable, passage au chien réeldocs/Guide_mains_cinq_doigts_ROBO-SCENE_v1.1_2026-10-25.docx — guide des mains à cinq doigts du robot virtuel : anatomie, poignets, boucle perception-force-mouvement, prises, accessoires, toucher, commandes, limites et sourcesdocs/Repertoire_commandes_gestes_robot_ROBO-SCENE_v1.4_2026-10-25.docx — répertoire exhaustif des commandes vocales, du dialogue parlé, des 16 habillages, du corps humain et des tons de peau de Monk, des mains à cinq doigts, des poignets, des 71 gestes, des 11 poses et des mouvements induits du robot, et des bibliothèques fermées des robots physiques (dont les 31 gestes natifs du TonyPi Pro)docs/Rapport_mise_en_oeuvre_audit_ROBO-SCENE_2026-10-16.docx — mise en œuvre de l'audit indépendant : correctifs, vérifications, décisions résiduellesdocs/Repertoire_commandes_mouvements_drone_ROBO-SCENE_v1.0_2026-10-20.docx — répertoire exhaustif des commandes vocales, des manœuvres et des mouvements du drone de scènedocs/Repertoire_commandes_mouvements_chien_ROBO-SCENE_v1.0_2026-10-20.docx — répertoire exhaustif des commandes vocales, des postures et des mouvements du chien de scènedocs/Guide_dialogue_moteurs_IA_ROBO-SCENE_v1.0.docx — dialogue parlé du robot, du chien et du drone, moteurs d'IA au choix (Claude, GPT, Grok, Gemini, LM Studio), Wi-Fidocs/Guide_partenaire_ROBO-SCENE.docx — partenaire de théâtredocs/Guide_robot_virtuel_ROBO-SCENE.docx — robot virtuel humanoïdeLes journaux de séance, les procès-verbaux de clôture et les données des personnes participantes (pseudonymes, consentements) ne sont jamais versionnés dans ce dépôt public.
pip install -r requirements.txt -r requirements-dev.txt
python -m pytest -q
179 tests réussis sur l'ordinateur de l'équipe (audit du 16 octobre 2026 ; 3 sont ignorés sur un clone neuf, faute des index locaux du partenaire), tous sans appel réseau ni matériel. Avant l'audit :
prototypes P1, P2, P3, T.6 et X.2 (60) ; console (7) ; partenaire (22) ; robots et pilotes (16) ; modèles D13 (7) ;
traçabilité (6) ; spectateur (10) ; analyse (11) ; extensions (8) ; plateforme (3) ; certificats HTTPS (3) ; robot virtuel (9, dont 4 en JavaScript exécutés par Node.js s'il est présent). L'intégration continue
(.github/workflows/tests.yml) les exécute à chaque dépôt.
robo-scene/
├── config.toml réglages (serveur, robots, sécurité, IA, modèles, scène, spectateur, pilotage…)
├── PROTOCOLE.md langage de commande unifié v2 (pont ↔ robot)
├── bridge/ serveur-pont et plateforme
│ ├── serveur.py contrôleur, flotte, sécurité, IA supervisée, WebSocket
│ ├── plateforme.py montage des pages et des routes de la plateforme
│ ├── trace/ journal unifié des cinq opérations, écart, PROV-O, saisies N-07 et N-08
│ ├── modeles/ service des modèles (D13, D03), clients Anthropic, OpenAI, LM Studio ou Ollama (SI-02)
│ ├── robots/ descriptions, pilotes, bibliothèques fermées, flotte
│ ├── atelier/ atelier P1 relié au journal unifié
│ ├── scene/ pont scénique P2.3 multi-robots, aperçu et simulation
│ ├── spectateur/ séance P3, tirage X.2, questionnaires, avis S-06
│ ├── analyse/ Q-01 à Q-05, juges O-02, script R A.2
│ ├── accessibilite/ surtitres et audiodescription (O-06)
│ ├── veille/ veille bibliographique (O-08)
│ ├── diffusion/ C2PA (O-07), tableau public (O-09)
│ ├── gouvernance/ verrous, incidents, décisions, conservation, retrait, biométrie
│ ├── pilotage/ régie, dépôts, rapports, table de couverture
│ ├── drone/ drone de scène : zones de vol, adaptateurs (simulation, MAVLink, Tello, JSON), contrôleur
│ ├── chien/ chien de scène : sol praticable, adaptateurs (simulation, rosbridge, Petoi, JSON), contrôleur
│ └── partenaire/ partenaire de théâtre ; avatar.py : validation et interprète Claude du robot virtuel
├── modules/ prototypes P1, P2, P3, T.6, X.2 et outils de la Régie (importés tels quels)
├── gouvernance/ état, registre des systèmes, EFVP, conservation (YAML)
├── questionnaires/ instruments I-7 et I-6 (YAML)
├── analyse/ livre de codes A.1
├── robots/ profils de robots (TOML)
├── sdk/ trousses de pilote : Python, JavaScript, C++, Arduino
├── web/ interfaces (HTML, CSS, JS)
│ ├── avatar/ robot virtuel (corps, visage, animation, parole, directives, imitation)
│ ├── drone/ drone de scène (théâtre 3D, vol, conduite, caméra 4K, zones ; salle.json partagé avec le pont)
│ ├── chien/ chien de scène (quadrupède, sol praticable, conduite ; reprend le théâtre et la caméra du drone)
│ └── vendor/ three.js 0.169 (MIT), servi localement
├── firmware/esp32_robot/ micrologiciel Arduino pour ESP32
├── sequences/ chorégraphies (JSON)
├── partenaire/ sources, index, pièces, répertoire, démo
└── tests/
Les données (donnees/, corpus/, donnees_ett/, partenaire/donnees/) restent sur l'ordinateur et sont exclues de Git.
| Acteurs et consentements | Pseudonymes, quatre consentements séparés et révocables (mesures vocales, transcription, caméra, versement au corpus de recherche), historique de formation, droit de retrait qui efface toutes les données de l'acteur. |
| Poignets | Trois mouvements humains par poignet, dans les amplitudes usuelles : flexion (85°) et extension (75°), inclinaisons radiale (20°) et cubitale (40°), rotation de l'avant-bras en pronation et en supination (90°) ; curseurs, glisser sur la main (Maj : fermeture et rotation), commandes (« paume vers le haut », « étends le poignet », « incline le poignet vers le pouce », « tourne le poignet », « roule les poignets »). |
| Mains | Deux mains à cinq doigts (20 articulations chacune, amplitudes usuelles, IPD couplée aux deux tiers de l'IPP, asservissement des doigts voisins) qui relient perception, force et mouvement (web/avatar/mains.js) : chaque doigt se ferme segment par segment jusqu'au contact et le pouce se pose par cinématique inverse sans traverser l'objet ; 8 prises de la taxonomie GRASP (cylindrique, sphérique, crochet, pince fine, tripode, latérale, palmaire, poignée de main) ; 12 accessoires (verre, coupe, épée, éventail, lettre, rose, plume, pomme, crâne, livre, lanterne, main du partenaire) ; force de serrage réglée sur la charge (poids, accélération du bras, frottement) avec une marge selon la manière (effleurer, délicatement, normalement, fermement, de toutes ses forces), plafonnée sous le seuil de dommage de l'objet sauf intention (« froisse la lettre ») ; réflexe de glissement après 74 ms ; 10 capteurs tactiles par main et carte de pression ; 18 postures des doigts (compter de 1 à 5, OK, victoire, pince, clé, griffe…) ; toucher du corps propre (main sur le cœur) et du partenaire ; la fermeture alimente la pince du TonyPi Pro. Onglet « Mains » et commandes écrites ou vocales (« prends le verre délicatement », « serre la main du partenaire », « montre trois doigts »). |
| Apparence | Taille, carrure, corpulence, âge, coiffure, barbe, moustache, peau, yeux, vêtements et couleurs (aussi par directive). |
| Imitation | Reproduction en direct du visage, de la tête et de la posture d'une personne filmée (MediaPipe, traitement local, accord explicite, mode miroir) ; « figer l'expression » ; lecture émotionnelle indicative. |
| Liaisons | Voix et visage pour les répliques de la page Partenaire (case « Robot virtuel » dans son en-tête) ; journalisation dans la séance ; jumeau du robot physique en lecture ou en pilotage, via la couche de sécurité. |