PrésentationAutour du cubeConventions de notationModèle de donnéesAlgorithmes de résolutionLe robotLa vision

CubeSolver - 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.


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.

Technologies utilisées sur le projet


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.