CubeSolver - Presentation
Project Goal
CubeSolver is a program dedicated to solving Rubik's Cubes. You can choose the algorithms used for solving, and manipulate real cubes using a robot.
The robot I currently use is the OTVINTA robot, which is 3D printed.
The project code is available here.
Tools Used
This project was developed entirely in Kotlin.
Interaction with the servomotors is done through a Pololu Maestro 12 board. Due to the lack of an adapted JDK, the driver for interacting with this board was developed using Greg Elderfield's IAmContent library.
The computer vision part of the project is managed using OpenCV.
A TensorFlow model is used for example in one of the color interpretation methods, and an embedded database is sometimes used for certain simple operations.

Project Structure
This project consists of several parts:
- The model, being an abstract representation of the Rubik's cube and associated concepts (Movements, orientations, positions, …)
- The services, allowing interaction with this model.
- The solving algorithms, providing a solution from a scrambled cube.
- The robotics, enabling interaction with real cubes.
- The user interface management.
- The utilities (file handling, solution search, …)
The services, utilities, and user interface are not presented on this site.