Aller au contenu principal

Simulateur robotique gratuit en ligne · Blockly · Jumeau numérique

Programmez un robotpour couper les cheveux.Chaque mouvement est vérifié.

HCR est une étude universitaire consacrée à un Hair Cutting Robot. Les participants assemblent des blocs pour guider un Service Robot à cinq articulations sur une coiffure en voxels. Un jumeau numérique vérifie chaque mouvement et refuse ceux qui risquent de toucher la tête.

Le client fonctionne dans le navigateur et un service Rust rejoue puis note les programmes envoyés. Aucun robot physique n’est nécessaire ; la difficulté évolue selon les résultats de chaque participant.

Ou télécharger l’application de bureau pour macOS, Windows et Linux. Elle est utile lorsque la salle ne dispose pas de Wi-Fi.

Coupe courte netteEn cours
  1. shoulderRoll15°
  2. shoulder72°
  3. elbow10°
  4. elbow−48°
  5. baseYaw−30°
  6. baseYaw
  7. baseYaw30°
  8. wrist−20°
Achèvement57.6
À couperÀ conserver

Pourquoi

L’enseignement de la robotique passe difficilement à l’échelle

Un bras, un élève

Un véritable bras robotisé coûte cher, ne sert qu’un élève à la fois et exige la présence d’un enseignant.

Un cours, un rythme

Une progression unique ennuie les élèves rapides et décourage ceux qui ont besoin de plus de temps.

Les erreurs coûtent cher

Sur le matériel réel, un mauvais angle provoque une collision. La solution la plus sûre consiste alors à ne pas laisser les débutants piloter.

La boucle

Programmez, vérifiez, notez. Modifiez une valeur et recommencez

Trois étapes, puis la troisième ramène à la première. Cette boucle constitue tout l’apprentissage.

  1. 1Programmer

    Déplacez des blocs, sans saisir de syntaxe

    Le mode Servo comporte trois blocs : angle absolu, attente et répétition. Cutter Grid ajoute six directions fixes et des distances entières, compilées en plan articulaire déterministe avant l’exécution.

    Angles de servo · mouvements Cutter Grid · attente (0–5000 ms) · répétition (1–20×)

  2. 2Vérifier

    Le jumeau numérique l’exécute d’abord

    Avant tout mouvement, le programme est testé sur un modèle géométrique de la tête. Tout mouvement qui y pénétrerait est refusé ; le bras garde sa dernière pose sûre et le bloc responsable est signalé.

    Contact par balayage continu · déterministe, sans moteur physique

  3. 3Noter

    Un score, pas une note

    Une erreur ne coûte qu’un nouvel essai. Le score mesure la fidélité à la coupe cible, la concision du programme et sa durée estimée.

    0.60 completion + 0.25 efficiency + 0.15 time

La garantie

Chaque défi peut réellement être terminé.

Dessiner d’abord la coupe cible en espérant que le bras puisse l’atteindre ne fonctionne pas. Un ancien défi demandait de couper 91 éléments alors que le bras n’en atteignait que 20. Il était impossible, sans que le niveau n’en avertisse l’apprenant.

Le solveur intervient désormais en premier. Chaque cible candidate est balayée dans l’espace articulaire sans collision, puis confiée à un solveur de référence ; si celui-ci ne peut pas la terminer, elle est rejetée dès la génération et ne sera jamais proposée. La solution fixe le coût et le temps de référence du niveau.

Un des premiers défis dessinés à la main

Cheveux demandés par le niveau91
Cheveux atteignables par le bras20

Le défi était impossible à terminer, mais l’écran ne le signalait pas. Un élève pouvait facilement prendre ce défaut de conception pour son propre échec.

Adaptation

Un niveau par élève, pas un niveau pour toute la classe

Après chaque essai, la plateforme réestime le niveau et choisit le défi suivant. Une réussite aisée augmente la difficulté ; une difficulté persistante la réduit.

Aptitude θ
Maîtrise de la programmation robotique sur une échelle logit, mise à jour après chaque programme rejoué.
2PL, et non 3PL
Une coupe correcte ne peut pas être obtenue au hasard : le paramètre de devinette est fixé à zéro au lieu d’estimer un troisième paramètre à partir du bruit.
Sélection des items
Les défis sont classés selon l’information de Fisher au θ actuel, puis leur exposition est plafonnée afin de ne pas servir toujours les mêmes items aux élèves de même niveau.
Crédit partiel
Les scores sont continus. Avant de mettre l’estimation à jour, le service remappe chaque score autour du seuil de maîtrise de l’item tout en conservant la valeur d’origine.
Étalonnage
Un nouveau défi débute avec un statut provisoire : son exposition est plafonnée et il ne compte pas dans la mise à jour de l’aptitude avant d’avoir assez de réponses pour réestimer sa difficulté.
Un seul θ pour l’instant
Cette version utilise une valeur d’aptitude composite unique et consigne des étiquettes dimensionnelles pour chaque réponse. Un véritable modèle multidimensionnel constitue une étape future, pas une fonctionnalité actuelle.

Participation

Choisissez de participer ou non avant de commencer

Le client ne crée aucune session du simulateur ni aucun identifiant de joueur tant que la personne n’a pas choisi de participer à l’étude.

Données nécessaires à l’étude

Blockly Program IR compilé, version du défi, score et identifiants techniques de session ou d’envoi nécessaires à la relecture et à l’analyse.

Contexte facultatif

La langue principale est enregistrée sous un code général tel que zh ou en, et le décalage UTC sous forme de minutes. Le bouton « Participer » active les deux ; « Plus de réglages » permet de les désactiver séparément.

Données non recueillies

Nous ne recueillons aucune empreinte du navigateur, aucun nom précis de fuseau IANA, aucune position déduite, aucun identifiant publicitaire et aucun profil de suivi intersites.

Comment nous décrivons les données

Nous ne présentons pas ces données comme entièrement anonymes. Les dossiers de l’étude peuvent conserver des identifiants de session et le serveur garde ses journaux de sécurité habituels ; nous parlons donc de données désidentifiées.

Modes

Entraînez-vous seul ou affrontez la salle

Entraînement individuel

Sans limite de temps : un atelier, un défi et autant d’essais que souhaité.

  • Vous pouvez exécuter, mettre en pause, reprendre, avancer commande par commande, arrêter ou réinitialiser. Le programme reste en place après la réinitialisation.
  • « Tester » évalue le programme sans affichage en quelques millisecondes, au lieu d’attendre son animation.
  • Affichez ou masquez l’aperçu de la coiffure cible pendant votre travail.

Manche en duel

Tous les participants de la salle reçoivent le même défi au même moment.

  • Une durée réelle fixe, mesurée par l’horloge du serveur et non celle des joueurs.
  • Personne ne voit les scores, même le sien, avant la fin de la manche.
  • Vous pouvez soumettre autant de fois que vous le souhaitez ; seul le meilleur essai compte.
  • Les programmes sont rejoués sur le serveur ; un ordinateur plus rapide n’apporte aucun avantage.

Sans backend configuré, le navigateur note les manches contre des bots scénarisés. Le menu, le salon et le tableau des scores les signalent clairement comme des entraînements. Le jeu hors ligne reste possible, mais un score local n’est jamais présenté comme résultat officiel.

Conçu avec Rust

Rust, du rejeu côté serveur au micrologiciel du robot

Rust n’est pas une simple étiquette dans HCR : il met en œuvre le service de notation, le moteur adaptatif, le protocole et la passerelle embarquée no_std.

Relecture côté serveurProtocoleMicrologiciel Rust (cible)
Découvrir Rust dans HCR

Architecture technique

Quatre composants, un protocole

Simulator

HCR_Simulator_Frontend

React · TypeScript · Vite · React Three Fiber · Blockly

Toute la démonstration s’exécute côté client. Sans backend configuré, aucune requête réseau n’est envoyée.

Service

hcr-backend

Rust · MQTT over WebSocket · HTTP binding

Rejoue les programmes côté serveur, exécute la banque adaptative et gère les échéances et classements des manches.

Protocole

hcr-backend/schema

hcr.v1 · JSON and CBOR

Chaque message utilise une enveloppe et est corrélé par ULID. Les versions mineures ne font qu’ajouter des champs ; les récepteurs ignorent ce qu’ils ne reconnaissent pas au lieu d’échouer.

Matériel

hcr-fw

Rust (no_std) · ESP8266 · Arduino C++ as a hardware library

Sur le bras physique à cinq servomoteurs, Rust gère le démarrage, le routage, HTTP/JSON et l’état des servos ; C++ reste derrière une ABI C orientée octets. MQTT n’est pas encore implémenté.

Essayer

Programmation adaptative, jeu, simulation et éducation sur une même plateforme.

Aucun robot à acheter. Toute la classe apprend en même temps, chacun à son niveau. Lisez les informations sur l’étude, choisissez de participer ou non, puis ouvrez le premier défi.