Présentation
But du projet
CubeSolver est un programme dédié à la résolution de Rubik’s Cubes. Il est possible de choisir les algorithmes qui sont utilisées pour les résolutions, et de manipuler de véritables cubes à l’aide d’un robot.
Le robot que j’utilise pour le moment est le robot de OTVINTA, qui est imprimé en 3D.
Le code du projet est disponible ici.
Vidéo de démonstration
Outils utilisés
Ce projet a été développé intégralement en Kotlin.
L’interaction avec les servomoteurs se fait grâce à une carte Pololu Maestro 12. Faute de JDK adapté, le driver permettant d’interagir avec cette carte a été développé à partir de la librairie IAmContent de Greg Elderfield.
La partie computer vision du projet est gérée grâce à OpenCV.
Un modèle TensorFlow est par exemple utilisé dans une des méthodes d’interprétation de couleurs, et une base de données embarquée est parfois utilisée pour certaines opérations simples.
Structure du projet
Ce projet est constitué de plusieurs parties :
- Le modèle, étant une représentation abstraite du Rubik’s cube et des concepts associés. (Mouvements, orientations, positions, …)
- Les services, permettant d’interagir avec ce modèle.
- Les algorithmes de résolution, permettant d’obtenir une solution à partir d’un cube mélangé.
- La robotique, permettant d’interagir avec de véritables cubes.
- La gestion de l’interface utilisateur.
- Les utilitaires (de fichiers, de recherche de solutions, …)
Les services, les utilitaires, et l’interface utilisateur ne sont pas présentés sur ce site.