[en] The following project describes the design and implementation of a system consisting of a Yumi collaborative robot and an artificial vision camera, for the resolution of both the 3x3 and 2x2 rubik´s cubes. The project englobes all phases of the process, starting from the camera selection to the final implementation, including the design of the necessary auxiliary elements and the programming and communication of the different components that take part in the project. The robot is part of an assembly cell used with the purpose of teaching in the department of systems and automation engineering of the Bilbao engineering school and should be able to solve the rubik´s cube without interference with the elements that compose it, in addition to maintaining a high level of security. Once the cell distribution is designed, the RobotStudio program will be used to simulate the process. This way it will be verified that the movements and programmed paths are correct and that the robot is capable of carrying them out. Hereunder, the real station will be implemented. For this, the design, 3D printing and assembly of the necessary auxiliary elements will be carried out, which will allow to place the artificial vision camera in position. With the camera fixed in its place, the image processing will be programed using the Matlab tool. Thus obtaining information about the cube necessary to solve it, that is to say, the type of cube we are working with, its position on the table (since the user can deposit it randomly in any position) and the way that the cube its undone (the way the colors of the different pieces that make up the cube faces are positioned). Starting from the information collected from the camera and following on Matlab, an algorithm will be programmed to calculate the movements that will solve any configuration of rubik´s cubes in an efficient way. Done this, a TCP/IP connection will be established between the robot and Matlab through which the movements to be carried out for the resolution of the cube will be sent. Finally, the real robot will be programmed, implementing the movements programmed through the simulator and validating the correct operation of the entire system.

[es] El presente proyecto describe el diseño e implantación de un sistema formado por un robot colaborativo Yumi y una cámara de visión artificial, para la resolución de cubos de rubik de 3x3 y 2x2. El proyecto abarca todas las fases del proceso. partiendo de la selección de la cámara hasta la implantación final, incluyendo el diseño de los elementos auxiliares necesarios y la programación y comunicación de los distintos componentes que toman parte en el proyecto. El robot forma parte de una célula de montaje utilizada para la docencia en el departamento de Ingeniería de Sistemas y Automática de la Escuela de Ingeniería de Bilbao, y deberá de ser capaz de resolver el cubo de rubik sin interferir con los elementos que la componen, además de mantener un alto nivel de seguridad. Una vez diseñada la distribución de la célula, se utilizará el programa RobotStudio para simular el proceso. De esta forma se comprobará que los movimientos y trayectorias programadas son correctos y que el robot es capaz de realizarlos. A continuación, se implementará la estación real. Para ello, se realiza el diseño, impresión 3D y montaje de los elementos auxiliares necesarios, que permitirán colocar la cámara de visión artificial en posición. Con la cámara fijada, se programará el procesamiento de imágenes mediante la herramienta Matlab. De esta forma se podrá obtener la información del cubo necesaria para resolverlo, es decir, el tipo de cubo con el que se trabaja, su posición en la mesa (ya que el usuario puede depositarlo aleatoriamente en cualquier posición) y la manera en la que está desecho (es decir, cómo de desordenados están los colores de las piezas que conforman las caras del cubo). Partiendo de la información aportada por la cámara y siguiendo en Matlab, se programará un algoritmo que calcule los movimientos que resolverán cualquier configuración de los cubos de rubik de una forma eficiente. Hecho esto, se establecerá una conexión TCP/IP entre el robot y Matlab mediante la cual se le enviarán los movimientos a realizar para la resolución del cubo. Por último, se programará el robot real, implementando los movimientos programados mediante el simulador y validando el correcto funcionamiento de todo el sistema.