Vue lecture

SARCASM - Ce robot résout un Rubik's Cube en vous insultant

En mai de cette année, des étudiants de Purdue ont battu le record du monde du robot résolveur de Rubik’s Cube grâce à leur machine, Purdubik’s Cube qui a torché un cube en 0.103 secondes !! Plus rapide que moi mais surtout plus rapide qu’un clin d’œil !

Et pendant ce temps, un autre passionné de Rubik’s Cube, Vindar , bossait tranquillement sur SARCASM , un autre robot qui résout aussi des Rubik’s Cubes, sauf que lui, il prend son temps ! Et surtout, il vous clashe pendant qu’il le fait. Il a une voix, des animations, un système d’humeur, et une personnalité de collègue insupportable ! Il est lent, il est sarcastique, il est inutilement compliqué, et c’est exactement pour ça qu’il est génial, vous allez voir !

SARCASM, ça veut dire Slightly Annoying Rubik’s Cube Automatic Solving Machine . Déjà rien que le nom c’est tout un programme. Et ce robot n’a qu’un seul objectif : résoudre des cubes en étant légèrement casse couilles. Pas hyper rapide, pas hyper efficace, juste chiant ce qu’il faut.

Le projet a démarré pendant COVID, quand tout le monde était enfermé chez soi à chercher des trucs à faire. Certains comme moi ont fait de la brioche, d’autres ont regardé Netflix en boucle et Vindar, lui, s’est dit qu’il allait créer un robot qui insulte les gens. Et nous voilà, 5 ans avec un robot qui vanne. Oui, Vindar est du genre persévérant !

Techniquement, SARCASM est un concentré de tech aussi cool qu’absurde. Le cerveau, c’est un Teensy 4.1, un microcontrôleur ARM Cortex-M7 qui tourne à 600 MHz. Pour la vision, il a utilisé une ESP32-CAM qui capture l’état du cubeet un écran ILI9341 pour afficher une tête avec des animations lip-sync. Des moteurs pas à pas (je crois que c’est comme ça qu’on dit ^^) et des servos pour manipuler le cube, des capteurs de position, un chouette éclairage RGBW, deux batteries 18650 Li-ion avec un port de charge USB-C et il a calé tout ça dans un boîtier imprimé en 3D avec un PCB custom.

Mais le logiciel les amis, c’est là que ça devient vraiment foufou car y’a du text-to-speech avec espeak-ng, des graphiques 2D et 3D custom, des animations qui bougent en temps réel et même comme je vous le disais, un système de dialogues basé sur l’humeur du robot, avec randomisation pour que chaque interaction soit différente.

Evidemment, SARCASM dispose aussi d’un algorithme de résolution du cube avec du décodage JPEG en temps réel pour la reconnaissance des couleurs, du multithreading avec gestion d’interruptions, bref, tout ce qu’il faut pour résoudre des Rubik’s Cube et créer une personnalité à cette machine.

Le robot détecte même quand vous vous foirez en manipulant le cube, juste pour pouvoir vous clasher dessus. Chaque détail technique sert un seul objectif qui est de rendre cette machine “vivante”.

Pour faire tenir tout ça, Vindar a dû modifier le noyau du Teensy. Parce que oui, même avec 600 MHz et un ARM Cortex-M7, il fallait optimiser pour que tout rentre dans la RAM et il a mis tout son code en open-source, sous licence GPL-3.0. Après, comme le précise le dev, son code est incomplet et bordélique mais bon, ça fonctionne…

Et surtout, le robot est autonome. Vous posez un cube standard dessus, il le scanne, il calcule, il résout, tout ça offline sans API ou service de cloud.

Le projet a été présenté en détails sur le forum PJRC , la communauté autour des cartes Teensy et les retours sont unanimement positifs ! Puis au moment, celui-là on s’en souviendra !

Merci à Lorenper pour le partage de cette découverte !

  •  

Rubik’s Cube Explorer · Stewart Smith

Une représentation numérique du Rubik's Cube d'Ernő Rubik, approuvée par Ernő lui-même. Mon Rubik's Cube Explorer a été inclus dans l'exposition itinérante « Beyond Rubik's Cube », a inspiré l'image de marque de cette exposition, a servi de base à la plateforme Chrome Cube Lab de Google et a été présenté comme « Doodle » sur la page d'accueil de Google Search, le site web le plus populaire de l'univers.


Permalien
  •  

Rubik's cube 2x2 méthode débutant - YouTube

Etapes de résolution du Rubik's cube 2x2

  • Compléter la face blanche avec les coins chacun à SA place
  • Permuter les coins de la face jaune pour que chacun soit à SA place
  • Orienter les facettes des coins de la face jaune

Couleur du cube terminé

Le rubik's cube 2x2 n'a pas de pièces centrale qui indique la couleur comme dans la version classique du 3x3. Ainsi il faut bien mémoriser les couleurs.

Faces opposées:

  • blanc - jaune. (qu'on positionne dessous et dessus pendant la résolution)
  • rouge - orange
  • vert - bleu

→ ça nous donne des coins de la 1ère couronne:

  • rouge - vert - blanc
  • vert - orange - blanc
  • orange - bleu - blanc
  • bleu - rouge - blanc

Compléter la face blanche

  • on positionne la face blanche dessous
  • à l'intuition on arrive passablement à faire la face, mais pas forcément dans le bon ordre.
  • pour positionner on utilise l'algo de base. → Droite Haut Droite2 Haut2
  • généralement on positionne le coin au dessus de là où on veut le poser et on pratique l'algo de base pour le positionner.
  • attention 3 cas possibles:
    -- facette blanche à gauche → algo de base version gauche → Gauche2 Haut2 Gauche Haut
    -- facette blanche à droite → algo de base version droite
    -- facette blanche en haut → algo de base, peu importe gauche ou droite, mais 3x
  • si le coin est mal orienté → 3x l'algo de base. → Droite Haut Droite2 Haut2
  • si le coin est pas à la bonne place:
    -- → on dégage le coin avec l'algo de base
    -- → on le positionne au dessus de sa vraie place et on le pose avec l'algo de base.
  • On a fini la 1ère couronne

Permuter les coins de la face jaune

Il est temps de poser les coins de la couronne supérieur avec sa face jaune. On pose les coins à chacun sa place, peu importe l'orientation.

3 cas possibles:

  • Déjà tout à la bonne place → on passe à la suite
  • deux coins adjacents à la mauvaise place → Tourner le cube entier pour placer les coins derrière. Et permutation avec l'algo de permutation. → H D H2 G2 H D2 H2 G
  • deux coins opposés à la mauvaise place → Algo de permutation.
  • on recommence tant que l'on a pas les 4 coins chacun à SA place.

Orienter les facettes des coins de la face jaune.

Ici chacun des coins est à sa place, mais on a pas encore forcément les facettes orientées correctement, avec une belle face jaune opposée à la face blanche.

  • on positionne le cube avec ce qui doit être la face blanche en haut
  • le coin à changer d'orientation se positionne face à soi en bas à droite
    -- Si la facette jaune est à droite → 2x l'algo de base: D H D2 H2
    -- Si la facette jaune est à gauche → 4x l'algo de base
  • On fait hyper attention de ne pas bouger le cube (comme je l'ai fait grrrr). ...car là on est dans un état instable. On a les faces qui sont défaites. Elle ne reviendrons dans l'ordre qu'après avoir orienté chaque face.
  • On tourne la couronne du bas pour trouver un autre coin à orienter
  • on répète jusqu'à ce que tous les coins soient orientés..
  • tout à coup la magie opère !!! wouah...

Voilà c'est gagné !


Permalien
  •