Taula de continguts:
- Pas 1: requisits
- Pas 2: la construcció del maquinari
- Pas 3: el programari que fa moure el robot
- Pas 4: el programari per reconèixer el moviment humà
- Pas 5: llums, càmera, acció
- Pas 6: Com obtenir el programari
Vídeo: Robot d'escacs fabricat amb LEGO i Raspberry Pi: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
Sorprèn als teus amics amb aquest robot d'escacs!
No és massa difícil de construir si ja heu creat robots LEGO i si teniu almenys un coneixement elemental de programació i Linux.
El robot fa els seus propis moviments i utilitza el reconeixement visual per determinar el moviment del jugador humà.
Una de les novetats d’aquest robot és el codi per al reconeixement de moviments. Aquest codi de visió també es pot utilitzar per a robots d'escacs construïts de moltes altres maneres (com ara el meu robot d'escacs que utilitza el braç robòtic Lynxmotion).
No es requereix cap tauler d'escacs especial, interruptors de canya o el que sigui necessari (ja que el reconeixement visual determina el moviment de l'ésser humà).
El meu codi està disponible per a ús personal.
Pas 1: requisits
Tot el codi està escrit en Python, que funcionarà, entre altres coses, amb un Raspberry Pi.
Raspberry Pi és un ordinador de mida de targeta de crèdit que es pot connectar a una pantalla i un teclat. És un petit equip econòmic (al voltant de 40 dòlars), que es pot utilitzar en projectes electrònics i robòtica, i per a moltes de les coses que fa el vostre PC d'escriptori.
El meu robot utilitza un Raspberry Pi i un Lego. La interfície de maquinari entre els motors i sensors RPi i Lego Mindstorms EV3 és proporcionada per BrickPi3 de Dexter Industries.
La versió de Lego es basa en "Charlie the Chess Robot", de Darrous Hadi, modificat per mi, que inclou modificacions per utilitzar un RPi, en lloc del processador Lego Mindstorms. S’utilitzen motors i sensors Lego Mindstorms EV3.
També necessitareu una taula, una càmera, una il·luminació, un teclat, una pantalla i un dispositiu de senyalització (per exemple, el ratolí).
I, per descomptat, peces d’escacs i un tauler.
Descric totes aquestes coses amb més detall en els passos següents.
Pas 2: la construcció del maquinari
Com he indicat anteriorment, el nucli del codi de visió funcionarà amb diverses versions.
Vaig basar el meu robot en "Charlie the Chess Robot" (versió EV3) de Darrous Hadi, la informació d'aquesta pàgina explica com obtenir les instruccions de construcció. La llista de peces és aquí.
Vaig modificar el robot de dues maneres.
1. L’agafador. Això no va funcionar per a mi. Els engranatges es van relliscar, així que vaig afegir peces de Lego addicionals per evitar-ho. I després, quan es baixava la grua, sovint s’encallava, de manera que he afegit un enllaç de Watt per evitar-ho.
A la part superior hi ha l’agafador en acció, que mostra l’enllaç modificat.
2. La versió original utilitza el processador Lego Mindstorms EV3, però jo faig servir un Raspberry Pi, que facilita l’ús de Python.
3. Faig servir un Raspberry Pi 3 Model B.
4. Per connectar el RPi amb el Lego, faig servir BrickPi3 de Dexter Industries. El BrickPi s’uneix al Raspberry Pi i junts substitueixen el LEGO Mindstorms NXT o EV3 Brick.
Quan teniu el fitxer Lego Digital Designer, hi ha la qüestió d’obtenir les peces de LEGO. Podeu obtenir maons directament a la botiga LEGO, i aquesta és la forma més barata d’obtenir-los. No obstant això, no tindran tot el que necessiteu i els maons poden trigar un parell de setmanes o més a arribar.
També podeu utilitzar Rebrickable: obriu un compte, pengeu el fitxer LDD i obteniu una llista de venedors.
Una altra bona font és Bricklink.
Pas 3: el programari que fa moure el robot
Tot el codi està escrit a Python 2.
- Dexter Industries subministra codi per donar suport al moviment dels motors EV3, etc. Això ve amb el BrickPi3.
- Proporciono el codi perquè els motors es moguin de manera que es moguin les peces d'escacs.
- El motor dels escacs és Stockfish, que pot vèncer a qualsevol ésser humà. "Stockfish és un dels motors d'escacs més forts del món. També és molt més fort que els millors grans mestres d'escacs humans".
- El codi per conduir el motor d'escacs, validar que un moviment és vàlid, i així successivament és ChessBoard.py
- Faig servir un codi de https://chess.fortherapy.co.uk per relacionar-me amb això.
- Aleshores, el meu codi (a la part 2 anterior) s’interface amb això.
Pas 4: el programari per reconèixer el moviment humà
Després que el jugador hagi fet el moviment, la càmera fa una foto. El codi retalla i gira de manera que el tauler d'escacs s'adapti exactament a la imatge posterior. Els quadres d’escacs han de semblar quadrats !. Hi ha distorsió a la imatge perquè les vores del tauler estan més allunyades de la càmera que el centre del tauler. Tanmateix, la càmera es troba prou lluny perquè, després de retallar, aquesta distorsió no sigui significativa. Com que el robot sap on es troben totes les peces després del moviment de l’ordinador, tot el que s’ha de fer després que l’ésser humà faci un moviment és que el codi pugui diferenciar els tres casos següents:
- Una plaça buida
- Una peça negra de qualsevol tipus
- Una peça blanca de qualsevol tipus.
Això abasta tots els casos, inclosos els enreixos i els passants.
El robot comprova que el moviment humà és correcte i els informa si no ho és. L'únic cas que no es tracta és que el jugador humà promou un peó en una no reina. El jugador ha de dir al robot quina és la peça promocionada.
Ara podem considerar la imatge en termes de quadres d’escacs.
A la configuració inicial del tauler sabem on es troben totes les peces blanques i negres i on són les caselles buides.
Els quadrats buits tenen molta menys variació de color que els quadrats ocupats. Calculem la desviació estàndard per a cadascun dels tres colors RGB de cada quadrat de tots els seus píxels (diferents dels propers a les vores del quadrat). La desviació estàndard màxima per a qualsevol casella buida és molt inferior a la desviació estàndard mínima per a qualsevol casella ocupada, i això ens permet, després d’un moviment posterior de jugador, determinar quines caselles estan buides.
Després d’haver determinat el valor llindar de les caselles buides o ocupades, ara hem de determinar el color de la peça per a les caselles ocupades:
Al tauler inicial calculem per a cada quadrat blanc, per a cadascun de R, G, B, el valor mitjà (mitjà) dels seus píxels (que no siguin els propers a les vores del quadrat). El mínim d’aquests mitjans per a qualsevol quadrat blanc és superior al màxim de la mitjana de qualsevol quadrat negre i, per tant, podem determinar el color de la peça per als quadrats ocupats. Com s'ha dit anteriorment, això és tot el que hem de fer per determinar quina va ser la jugada del jugador humà.
Els algoritmes funcionen millor si el tauler d’escacs té un color que s’allunya del color de les peces. Al meu robot, les peces són de color blanc trencat i marró, i el tauler d’escacs està fet a mà en cartolina i és de color verd clar, amb poca diferència entre els quadrats "negre" i "blanc".
Edició 17 d'octubre de 2018: ara he pintat les peces marrons de negre mat, cosa que fa que l'algorisme funcioni en condicions d'il·luminació més variables.
Pas 5: llums, càmera, acció
Llums
Necessiteu una font uniforme de llum sobre el tauler. Jo faig servir aquest, realment barat, d’amazon.co.uk i, sens dubte, hi ha alguna cosa similar a amazon.com. Amb els llums de l'habitació apagats.
Actualització: ara tinc dues llums, per donar una font de llum més uniforme
Càmera
Sens dubte, podeu utilitzar el mòdul de càmera Raspberry Pi especial (amb un cable llarg), però jo faig servir una càmera USB - "Càmera web Logitech 960-001064 C525 HD - Negre" - que funciona amb el RPi. Heu d’assegurar-vos que la càmera no es mogui respecte al tauler, construint una torre o tenint algun lloc per fixar-la fermament. La càmera ha d’estar força alta per sobre del tauler, per tal de reduir la distorsió geomètrica. Tinc la meva càmera a 58 cm sobre el tauler.
Actualització: ara prefereixo l'HP Webcam HD 2300, ja que considero que és més fiable.
Taula
Necessiteu un de robust. He comprat aquest. A més, es pot veure que tinc un quadrat de MDF, amb algunes coses per evitar que el robot salti quan es mou el carro. És una bona idea mantenir la càmera en la mateixa posició sobre el tauler.
Teclat
El RPi necessita un teclat USB per a la seva primera configuració. I ho faig servir per desenvolupar el codi. L’únic que necessita un teclat per al robot és iniciar el programa i simular el cop del rellotge d’escacs. Tinc un d’aquests. Però, realment, només necessiteu un ratolí o un botó GPIO connectat al RPi
Visualització
Utilitzo una pantalla gran per al desenvolupament, però l’únic que necessita el robot és dir-vos que el vostre moviment no és vàlid, comproveu-ho, etc. En tinc un, també disponible a amazon.com.
Però en lloc de requerir una pantalla, el robot pronunciarà aquestes frases. Ho he fet convertint text a veu mitjançant el codi que es descriu aquí i adjuntant un petit altaveu. (Faig servir un "mini altaveu Hamburger").
Frases que diu el robot:
- Comprovar!
- Escac i mat
- Moviment no vàlid
- Vas guanyar!
- Estancament
- Dibuixa per triple repetició
- Dibuixa per 50 moviments la regla
La regla dels cinquanta moviments als escacs estableix que un jugador pot reclamar un empat si no s’ha fet cap captura i no s’ha mogut cap peó en els darrers cinquanta moviments (per a aquest propòsit, un "moviment" consisteix en que un jugador completa el seu torn seguit del oponent completant el seu torn).
Podeu escoltar el robot parlant al breu vídeo "El company del ximple" que apareix més amunt (si augmenteu el so bastant alt).
Pas 6: Com obtenir el programari
1. Stockfish
Si feu servir Raspbian al vostre RPi, podeu utilitzar el motor Stockfish 7: és gratuït. Només cal executar:
sudo apt-get install stockfish
2. ChessBoard.py
Aconsegueix això aquí.
3. Codi basat en
Ve amb el meu codi.
4. Controladors de Python per a BrickPi3:
Aconsegueix-los aquí.
5. El meu codi que invoca tot el codi anterior i que fa que el robot faci els moviments i el meu codi de visió.
Obtingueu-ho publicant un comentari i us respondré.
Recomanat:
Robot d'escacs Raspberry Pi Lynxmotion AL5D Braç: 6 passos
Robot d'escacs Raspberry Pi Lynxmotion AL5D Arm: construïu aquest robot d'escacs i observeu que guanya a tothom. És bastant fàcil de construir si podeu seguir les instruccions sobre com construir el braç i si teniu almenys un coneixement elemental de programació d'ordinadors i Linux. . L’humà, jugant de blanc, fa
Rellotge despertador intel·ligent: un despertador intel·ligent fabricat amb Raspberry Pi: 10 passos (amb imatges)
Rellotge despertador intel·ligent: un rellotge despertador intel·ligent fet amb Raspberry Pi: Heu volgut mai un rellotge intel·ligent? Si és així, aquesta és la solució per a vosaltres. He creat Smart Alarm Clock (Rellotge despertador intel·ligent), aquest és un rellotge que permet canviar l’hora de l’alarma segons el lloc web. Quan l’alarma s’activi, hi haurà un so (brunzidor) i 2 llums
Escacs digitals: feu un seguiment del vostre joc d'escacs en línia: 5 passos
Escacs digitals: feu un seguiment del vostre joc d'escacs en línia: des de jove he jugat a molts escacs i, ja que la web té una gran quantitat de llocs web per jugar a escacs contra ordinadors o oponents en directe, mai no he trobat un lloc web que fa un seguiment del vostre joc d'escacs al qual realment jugueu
Casc de bicicleta amb aire condicionat (fabricat amb ordinadors reciclats): 5 passos (amb imatges)
Casc per a bicicletes amb aire condicionat (fabricat amb ordinadors reciclats): aquest casc amb ventiladors sobre els forats xucla l’aire del cap i es pot sentir pujar per la cara i baixar pels costats del cap. Molt bo per anar en bicicleta els dies de sol amb molta calor. Els LED també ajuden amb la bicicleta nocturna. Les parts totes
Combinador de càmera-microscopi fabricat amb Lego: 12 passos (amb imatges)
Combinador de càmera-microscopi fabricat amb Lego: Hola a tothom, avui us mostraré com fer un combinador de càmera a microscopi (fet amb peces de Lego) per poder capturar els detalls del microscopi més fàcilment. Comencem