Descripción del software:
- * Python Idle: Esta es la plataforma de codificación utilizada en este proyecto. Todo el Robot está codificado en lenguaje Python en Python Idle.
- · Open Cv: Esta es una biblioteca de procesamiento de imágenes utilizada para darle a Robot la visión del tablero de ajedrez.
- · Pyfirmata: Se utiliza para codificar Arduino en lenguaje Python. Básicamente, esto conecta Arduino con Python Idle en lugar de Arduino Ide.
Concepts for Autonomous Chess playing Robotic Arm: Working of robotic Arm involves series of concepts and mechanisms:
1. Forward Kinematics : Dados los ángulos de la cinemática de avance del servomotor, se ocupa de encontrar la posición deseada del Efector final.(es decir, dados los ángulos servo como theta_1, theta_2 y theta_3, la cinemática directa ayuda a encontrar las coordenadas X, Y y Z o la posición del efector final).Esto también se usa para verificar si los ángulos obtenidos por cinemática inversa son correctos o no. El video se proporciona en la carpeta «Videos» de este archivo zip.
2. Cinemática inversa: Dadas las coordenadas X, Y Y Z del efector final, la cinemática inversa trata de encontrar los ángulos deseados de los Servos para alcanzar la ubicación deseada. (por ejemplo: Para elegir un objeto que se coloca en la posición (X, Y, Z), se puede usar cinemática inversa para alcanzar ese objeto en particular y agarrarlo. El video se proporciona en la carpeta «Videos» de este archivo zip.
3. Diagramas cinemáticos: Estos son los diagramas utilizados para derivar y resolver las ecuaciones de la cinemática directa e inversa. Resolví el diagrama cinemático para un manipulador articulado 3DOF.
4. Parámetros Denavit-Hartenberg: Este es un método para resolver cinemática directa fácilmente haciendo una tabla de parámetros.
5. Matrices de Rotación y Vectores de Desplazamiento : Estos se utilizan para encontrar una Matriz de Transformación homogénea y también para convertir coordenadas de cámara en coordenadas de bastidor base de robots.
6. Procesamiento de imágenes: Esto se usa para dar una visión robótica de lo que está sucediendo en el tablero de ajedrez, como si se juega o no movimiento o si el movimiento es jugado por blancos o negros.
Trabajo paso a paso del brazo robótico:
· Paso 1: Se da la primera entrada del jugador si quiere blanco o negro. Si el jugador elige el blanco, el brazo robótico toma el color negro y el color negro se da como entrada y viceversa si los jugadores eligen el negro supongamos que el jugador elige el blanco aquí
· Paso 2: Comienza el juego. Tan pronto como comienza el juego, el procesamiento de imágenes comienza a verificar si las blancas jugaron el movimiento. La detección de movimiento se detecta mediante la simple sustracción de dos imágenes, la primera es la imagen original y la segunda es la nueva imagen formada a los cambios de posición de las piezas a bordo. Si la resta no resulta en nada, significa que no se juega ningún movimiento. Si la resta resulta en una matriz distinta de cero, el movimiento se juega con blancas. Esto le permite al Robot entender si se juega o no move.
· * Paso 3: Supongamos que las blancas juegan el movimiento E4 aquí. El movimiento se detecta mediante el procesamiento de imágenes. Luego robot obtiene el movimiento de su diccionario de apertura de ajedrez que creé y luego juega el movimiento en consecuencia. El diccionario es como { «e5»:coordenadas }. A partir de esto, el Robot obtiene las coordenadas deseadas y luego, mediante Cinemática Inversa, recoge el peón de la casilla e7 y lo coloca en la casilla e5. Así es como funciona la recolección y colocación de piezas.
· Paso 4: Todo este proceso sigue repitiéndose a menos que el juego llegue a su conclusión. Todo el robot está controlado por Arduino pro mini, que controla y proporciona el PWM necesario a los motores.
Conclusión: El robot detecta con éxito los movimientos jugados y también recoge y coloca las piezas de ajedrez con precisión y precisión en el tablero de ajedrez mediante el procesamiento de imágenes.
WorkingVideo :Siéntase libre de revisar el video de trabajo de este proyecto a continuación):