Pages : 1
#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é
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
Site : https://mothsart.github.io Dépôts Git : https://github.com/mothsart PPAs : https://launchpad.net/~jerem-ferry
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 : 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!
Site : https://mothsart.github.io Dépôts Git : https://github.com/mothsart PPAs : https://launchpad.net/~jerem-ferry
Hors ligne
#9 Le 14/04/2014, à 20:27
- diabolos29
Re : Résolveur de rubik's cube
Merci ,
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.
Une machine au même fonctionnement mais avec un langage et un matériau différent : 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 (enfin je serais perso incapable d'en arriver là déjà... )
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 !
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 !
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
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 24.04 LTS - 64 bits
Mémoire : 32GiB - Carte : NVIDIA GeForce RTX™ 2060 SUPER
Processeur : Intel(R) Core(TM) i7-14700KF
carte mère : ASRock Z790 Pro RS/D4
Hors ligne
#18 Le 01/05/2014, à 13:07
- diabolos29
Re : Résolveur de rubik's cube
Eh bien félicitations alors.
Reste plus qu'à commercialiser l'engin !
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).
Chapeau le fait maison !
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 .
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
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 .
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!
...allez, je la regarde encore une fois!
Hors ligne
Pages : 1