Back to top

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és 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.

L’injection de dépendances est gérée avec Koin, et d’autres outils sont utilisés ponctuellement au sein du projet.

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.