Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/04/2014, à 20:41

diabolos29

Résolveur de rubik's cube

Bonjour,

En marge du projet de jeu sur lequel je travaille (Action RPG type Zelda 3), j'ai aussi un autre projet un peu différent.
Il s'agit en fait de concevoir entièrement une machine capable de résoudre un rubik's cube de A à Z.
Les seules actions sont de poser le cube mélangé dans la machine et de cliquer sur un bouton pour lancer la résolution du cube.

Le soft est développé en C++ avec les libs Qt et OpenCV, sous GNU/Linux.
La machine est pilotées via un arduino.

Le développement a débuté en janvier 2013 (et s'est poursuivi par intermittences ensuite).
Voilà ce que ça donne maintenant que je l'ai quasi terminé :
http://youtu.be/Nl6sbZRm60s

Les sources (sous licence GPL) sont disponibles à l'adresse suivante : http://dev.sujets-libres.fr

Je n'ai pas encore terminé ce projet mais ça fonctionne.

[edit]
Et hop, nouvelle vidéo : http://youtu.be/XVA8TiN_8TE
La solution est générée ici par grâce à une appli externe que j'appelle depuis mon programme. Cette solution est quasi optimale.
[/edit]

Dernière modification par diabolos29 (Le 01/05/2014, à 12:57)

Hors ligne

#2 Le 13/04/2014, à 20:53

Madeba

Re : Résolveur de rubik's cube

Ça va, tu t'es bien amusé smile
Le plus pénible dans ce genre de projet, c'est l'usinage des pièces. Les pièces sont un peu trop grosses pour l'imprimante 3D. 
Quel genre de moteurs utilises tu ? Tu utilises une webcam basique avec opencv?

Hors ligne

#3 Le 13/04/2014, à 21:28

diabolos29

Re : Résolveur de rubik's cube

La machine est construite à partir de panneaux de médium (j'ai utilisé des chutes que j'avais chez moi). C'est assez facile à travailler, à la scie sauteuse ou avec de petites limes tout en étant suffisamment solide.
Une partie des pièces auraient pu être réalisées par une imprimante 3D je pense. Il n'est d'ailleurs pas impossible que j'en fasse refaire par ce biais plus tard.

Pour les moteurs, j'utilise deux servomoteurs basiques (HS311) et un moteur pas à pas 12V. C'est ce qui m'a coûté le plus cher en passant (60€ env pour les moteurs en tout).
Ils sont pilotés par un arduino et alimentés par une alim de PC.

J'ai d'abord utilisé une alim seule mais j'ai rencontré des comportements étranges (chutes de tension aléatoires). Deux hypothèses :
- Soit la charge sur l'alim était trop faible (environ 20W consommés théoriquement), ce qui fait que je ne devais pas me trouver dans la bonne plage de fonctionnement.
- Soit mon alim était foireuse à la base (possible car alim de récup et pas vraiment testée).

Bref, j'utilise temporairement un vieux PC sur lequel j'ai simplement déconnecté le disque dur. Je l'allume et je repique juste la 12V pour alimenter mon montage. Plus de comportements étranges depuis. Il faudra que je trouve une meilleure solution par la suite...

J'utilise une vieille webcam USB de recup. Du moment qu'elle est reconnue sous GNU/Linux, pas de soucis.

Dernière modification par diabolos29 (Le 13/04/2014, à 21:31)

Hors ligne

#4 Le 14/04/2014, à 08:33

moths-art

Re : Résolveur de rubik's cube

Chapeau l'artiste! vraiment sympa...

Pour la réponse à "Madeba" : c'est bien de l'openCV derrière : il suffisait de se plonger un peu dans les sources big_smile

Hors ligne

#5 Le 14/04/2014, à 08:51

MinecraftBreizh

Re : Résolveur de rubik's cube

Bravo à toi. Si j'ai bien compris, ça analyse les faces du cube puis ça exécute les mouvements nécessaires à la résolution ?


Un adminsys qui aime les galettes.

Hors ligne

#6 Le 14/04/2014, à 11:56

MinecraftBreizh

Re : Résolveur de rubik's cube

Une machine au même fonctionnement mais avec un langage et un matériau différent tongue : http://youtu.be/wm9_RRYTpys


Un adminsys qui aime les galettes.

Hors ligne

#7 Le 14/04/2014, à 13:48

Sibe

Re : Résolveur de rubik's cube

Très bon travail diabolos29 !


Pc port1: Core i7 2.4GHz | 16 Go ram | GeForce 650m GT | SSD 256 Go + 1 To HD + 5 To en EXT | Linux Mint 17 x64 (Cinnamon)
Pc port2 (old): Core2duo 2.2GHz | 4 Go ram | GeForce 9600m GT | 500 Go HD | Xubuntu 14.04 x64 (Xfce)
Pc bur famille: Core2duo 3.2GHz | 4Go ram | GeForce 405 | 1 To HD | Debian 7 x64 (Kde)
Pc bur trav: Core i5 | 4 Go ram | GeForce 7600 GS | 250 Go HD | Debian 7 x64 (Mate)

Hors ligne

#8 Le 14/04/2014, à 20:25

moths-art

Re : Résolveur de rubik's cube

MinecraftBreizh : l'idée d'utiliser des lego technique est tout bonnement fabuleux!

Hors ligne

#9 Le 14/04/2014, à 20:27

diabolos29

Re : Résolveur de rubik's cube

Merci big_smile ,

MinecraftBreizh a écrit :

Bravo à toi. Si j'ai bien compris, ça analyse les faces du cube puis ça exécute les mouvements nécessaires à la résolution ?

Oui, c'est bien ça.
A noter qu'entre l'analyse des faces du cube et sa résolution, il y a une grosse partie de recherche d'une solution. C'est cette partie là que je dois améliorer maintenant.

MinecraftBreizh a écrit :

Une machine au même fonctionnement mais avec un langage et un matériau différent tongue : http://youtu.be/wm9_RRYTpys

En fait, on trouve pas mal de machines construites en Lego et/ou utilisant le boîtier Lego Mindstorm (il doit même y avoir des kit tout fait, à vérifier). Du coup, tout est déjà conçu et ça perd un peu de son intérêt je trouve (mais ce n'est que mon point de vue).
Certaines sont tout de même très intéressantes et valent le coup d’œil.

Dernière modification par diabolos29 (Le 14/04/2014, à 20:28)

Hors ligne

#10 Le 14/04/2014, à 20:33

MinecraftBreizh

Re : Résolveur de rubik's cube

En effet on en trouve beaucoup, et j'ai eu l'occasion d'en manipuler une au collège (pas perso, à 300€ c'est pas donné ces trucs là...), il n'y a pas de kit enfin un : il permet de construire 3 petits robots et ne contient que les bases. Après il faut payer des pièces supplémentaires (Technic et Mindstorms). Mais là je pars en hors-sujet...
De toute façon ton projet ne peut que s'améliorer, il fonctionne, maintenant il faut le perfectionner wink (enfin je serais perso incapable d'en arriver là déjà... tongue)


Un adminsys qui aime les galettes.

Hors ligne

#11 Le 26/04/2014, à 18:41

diabolos29

Re : Résolveur de rubik's cube

Et hop, nouvelle vidéo : http://youtu.be/XVA8TiN_8TE
Cette fois-ci, l'algo utilisé permet de trouver une solution optimale en 20 coups. On arrive plus rapidement à la solution du coup...

Hors ligne

#12 Le 28/04/2014, à 10:43

MinecraftBreizh

Re : Résolveur de rubik's cube

Ah oui en effet, une minute environ, c'est bien plus rapide.
Bien joué !

Tu pense qu'on peux faire encore mieux ou c'est déjà assez optimisé ?


Un adminsys qui aime les galettes.

Hors ligne

#13 Le 28/04/2014, à 21:00

diabolos29

Re : Résolveur de rubik's cube

Merci.

Côté algo, il n'y a plus grand chose à améliorer puisqu'on est déjà quasiment à l'optimal.

Côté mécanique, j'ai encore réalisé quelques petite optimisations (ce qui me permet de grapiller quelques secondes sur le temps de résolution global tout en conservant une bonne précision) mais il va être difficile de faire mieux. A part remplacer les moteurs par des plus puissants, je ne vois pas.

Hors ligne

#14 Le 28/04/2014, à 23:30

MinecraftBreizh

Re : Résolveur de rubik's cube

Eh bien félicitations alors.
Reste plus qu'à commercialiser l'engin tongue !


Un adminsys qui aime les galettes.

Hors ligne

#15 Le 29/04/2014, à 00:00

Caribou22

Re : Résolveur de rubik's cube

Chapeau le fait maison ! big_smile

Une vidéo du genre (surement déjà ultra connue), mais pas du tout avec les mêmes moyens ^^ http://youtu.be/X0pFZG7j5cE

Hors ligne

#16 Le 29/04/2014, à 06:24

moko138

Re : Résolveur de rubik's cube

diabolos29 a écrit :

A noter qu'entre l'analyse des faces du cube et sa résolution, il y a une grosse partie de recherche d'une solution. C'est cette partie là que je dois améliorer maintenant.

Chapeau, de ma part aussi !

Dernière modification par moko138 (Le 29/04/2014, à 06:26)


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#17 Le 29/04/2014, à 11:31

cris22

Re : Résolveur de rubik's cube

Beau travail, félicitations !


Ubuntu 20.04 LTS - 64 bits
Mémoire : 3.9 Gio - Carte : GeForce 8600 GTS/PCIe/SSE2 / Mémoire 8 Gio GeForce rtx 2060
Processeur : Intel® Core™2 Quad CPU Q9550 @ 2.83GHz × 4 / Intel® Core™ i5-2500 CPU@ 3.30Ghz*4

Hors ligne

#18 Le 01/05/2014, à 13:07

diabolos29

Re : Résolveur de rubik's cube

MinecraftBreizh a écrit :

Eh bien félicitations alors.
Reste plus qu'à commercialiser l'engin tongue !

Si quelqu'un veut s'amuser à le faire, mes sources sont dispo sous licence GPLv3 (je doute quand même un peu de l'intérêt de la chose).
Un bémol cependant, l'utilisation du paquet Java n'est autorisée par son auteur que dans le cadre d'une utilisation non commerciale. Seule la partie permettant de trouver une solution non optimale (ma partie quoi) peut éventuellement être intégré dans une solution commerciale (et si cette solution respecte les termes de la GPLv3).

Caribou22 a écrit :

Chapeau le fait maison ! big_smile

Une vidéo du genre (surement déjà ultra connue), mais pas du tout avec les mêmes moyens ^^ http://youtu.be/X0pFZG7j5cE

Oui, c'est une vidéo qui tourne pas mal et c'est certain que je ne joue pas dans la même cour tongue .

Dernière modification par diabolos29 (Le 01/05/2014, à 13:09)

Hors ligne

#19 Le 01/05/2014, à 13:41

moko138

Re : Résolveur de rubik's cube

diabolos29 a écrit :

Une vidéo du genre (surement déjà ultra connue), mais pas du tout avec les mêmes moyens ^^ http://youtu.be/X0pFZG7j5cE

Oui, c'est une vidéo qui tourne pas mal et c'est certain que je ne joue pas dans la même cour tongue .

Sauf que le cube est déjà en place dans le video d'AMR, donnant à penser que l'analyse et la solution ont eu lieu - ou ont pu avoir lieu - avant le top chrono.
  Alors que dans ta video, on te voit modifier les faces et placer le cube dans ta bécane puis la démarrer.
De toute façon, ce qui est super c'est que tu aies fait toi-même les deux parties, logicielle et mécanique.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#20 Le 07/05/2014, à 16:20

cracolinux

Re : Résolveur de rubik's cube

Putain c'est superbe comme projet !

Bravo, je suis vraiment sous le charme!

cool

...allez, je la regarde encore une fois!


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne