Innholdsfortegnelse:

Chess Robot Raspberry Pi Lynxmotion AL5D Arm: 6 trinn
Chess Robot Raspberry Pi Lynxmotion AL5D Arm: 6 trinn

Video: Chess Robot Raspberry Pi Lynxmotion AL5D Arm: 6 trinn

Video: Chess Robot Raspberry Pi Lynxmotion AL5D Arm: 6 trinn
Video: Lynxmotion AL5D Robotic Arm Playing Chess 2024, November
Anonim
Image
Image

Bygg denne sjakkroboten og se den slå alle!

Det er ganske enkelt å bygge hvis du kan følge instruksjonene om hvordan du bygger armen, og hvis du har minst en elementær kunnskap om dataprogrammering og Linux.

Mennesket, som spiller hvitt, gjør et trekk. Dette oppdages av det visuelle gjenkjenningssystemet. Roboten tenker deretter over og gjør deretter et trekk. Og så videre …

Den kanskje mest nye tingen i denne roboten er koden for bevegelsesgjenkjenning. Denne visjonskoden er også brukbar for sjakkroboter bygget på mange andre måter (for eksempel sjakkroboten min med LEGO build).

Fordi menneskets trekk gjenkjennes av et visjonssystem, er det ikke nødvendig med noen spesiell sjakkbrettmaskinvare (for eksempel sivbrytere eller hva som helst).

Koden min er tilgjengelig for personlig bruk.

Trinn 1: Krav

Maskinvarebygningen
Maskinvarebygningen

All koden er skrevet i Python, som blant annet skal kjøres på en Raspberry Pi.

Raspberry Pi er en liten, billig (rundt $ 40) enkelbrett-datamaskin utviklet av Raspberry Pi Foundation. Den opprinnelige modellen ble langt mer populær enn forventet, og solgte til bruk som robotikk

Min robot bruker en Raspberry Pi, og robotarmen er bygget av et sett: Lynxmotion AL5D. Settet leveres med et servokontrollerkort. (Koblingen jeg nettopp har gitt er til RobotShops amerikanske nettsted; klikk på et av flaggene øverst til høyre på sidene for deres land, for eksempel Storbritannia).

Du trenger også et bord, et kamera, belysning, et tastatur, skjerm og pekeenhet (f.eks. Mus). Og selvfølgelig sjakkbrikker og et brett. Jeg beskriver alle disse tingene mer detaljert i de påfølgende trinnene.

Trinn 2: Maskinvarebygningen

Maskinvarebygningen
Maskinvarebygningen

Som jeg tidligere antydet, vil hjertet i visjonskoden fungere med en rekke bygninger.

Denne bygningen bruker et robotarmsett fra Lynxmotion, AL5D. Inkludert i settet er et SSC-32U servokontrollerkort, som brukes til å kontrollere motorene i armen.

Jeg valgte AL5D fordi armen må kunne gjøre gjentatte nøyaktige bevegelser og ikke gli av. Griperen må være i stand til å komme mellom brikkene og armen må kunne nå til den andre siden av brettet. Jeg trengte fortsatt å gjøre noen endringer som beskrevet nedenfor.

Raspberry Pi jeg bruker er en Raspberry Pi 3 Model B+. Dette snakker til SSC-32U-kortet via en USB-tilkobling.

EDIT: Raspberry Pi 4 er nå tilgjengelig. Du trenger:

  • En 15W USB-C strømforsyning-vi anbefaler den offisielle Raspberry Pi USB-C strømforsyningen
  • Et microSD-kort lastet med NOOBS, programvaren som installerer operativsystemet (kjøp et forhåndsinstallert SD-kort sammen med Raspberry Pi, eller last ned NOOBS for å laste inn et kort selv)
  • Et tastatur og mus (se senere)
  • En kabel for å koble til en skjerm via en Raspberry Pi 4s mikro -HDMI -port

Jeg trengte ytterligere rekkevidde på robotarmen, så jeg gjorde noen mindre endringer på den ved å bruke flere Lynxmotion -deler som kan kjøpes fra RobotShop:

1. Erstatt 4,5 tommers rør med en 6 tommers-Lynxmotion del AT-04, produktkode RB-Lyn-115.

2. Prøvde å bruke et ekstra sett med fjærer, men gikk tilbake til ett par da jeg implementerte element 3 nedenfor

3. Utvid høyden med en 1 tommers avstandsstykke-Lynxmotion del HUB-16, produktkode RB-Lyn-336.

4. Forlenget griperens rekkevidde ved hjelp av ekstra gripeputer festet med noen ekstra LEGO -brikker jeg hadde og elastikkbånd (!) Dette fungerer veldig bra, da det introduserer fleksibilitet når du løfter brikker.

Disse endringene kan sees på bildet ovenfor til høyre.

Det er et kamera montert over sjakkbrettet. Dette brukes til å bestemme menneskets bevegelse.

Trinn 3: Programvaren som flytter roboten

All koden er skrevet i Python 2. Invers kinematikk -kode er nødvendig for å flytte de forskjellige motorene riktig slik at sjakkbrikkene kan flyttes. Jeg bruker bibliotekskode fra Lynxmotion som støtter flytting av motorene i to dimensjoner og har lagt til det med min egen kode for 3 dimensjoner, gripevinkel og gripekje bevegelse.

Så, vi har da kode som vil flytte brikker, ta stykker, slott, støtte en passant, og så videre.

Sjakkmotoren er tørrfisk - som kan slå ethvert menneske! "Tørrfisk er en av de sterkeste sjakkmotorene i verden. Den er også mye sterkere enn de beste menneskelige sjakkmestrene."

Koden for å drive sjakkmotoren, validere at et trekk er gyldig, og så videre er ChessBoard.py

Jeg bruker noen kode fra https://chess.fortherapy.co.uk for å koble til det. Koden min (ovenfor) grensesnittes deretter med det!

Trinn 4: Programvaren som gjenkjenner menneskets bevegelse

Jeg har beskrevet dette i detalj i Instructable for min Chess Robot Lego -konstruksjon - så jeg trenger ikke å gjenta det her!

Mine "svarte" brikker var opprinnelig brune, men jeg malte dem matt svart (med "tavlemaling"), noe som får algoritmen til å fungere bedre under mer varierende lysforhold.

Trinn 5: Kamera, lys, tastatur, bord, skjerm

Kamera, lys, tastatur, bord, skjerm
Kamera, lys, tastatur, bord, skjerm
Kamera, lys, tastatur, bord, skjerm
Kamera, lys, tastatur, bord, skjerm

Disse er de samme som i min Chess Robot Lego -konstruksjon, så jeg trenger ikke gjenta dem her.

Bortsett fra at jeg denne gangen brukte en annen og betydelig bedre høyttaler, en Lenrui Bluetooth -høyttaler, som jeg kobler til RPi via USB.

Tilgjengelig fra amazon.com, amazon.co.uk og andre utsalgssteder.

Jeg bruker nå også et annet kamera - et HP Webcam HD 2300, da jeg ikke kunne få det forrige kameraet til å oppføre seg pålitelig.

Algoritmene fungerer best hvis sjakkbrettet har en farge som er langt fra fargen på brikkene! I roboten min er brikkene off-white og brune, og sjakkbrettet er håndlaget i kort, og er en lysegrønn med liten forskjell mellom de "svarte" og "hvite" rutene.

Algoritmene trenger en spesiell orientering mellom kameraet og kortet. Kommenter nedenfor hvis du har et problem. Armen har begrenset rekkevidde, og derfor bør kvadratstørrelsen være 3,5 cm.

Trinn 6: Skaff deg programvaren

1. Tørrfisk

Hvis du kjører Raspbian på din RPi kan du bruke Stockfish 7 -motoren - det er gratis. Bare løp:

sudo apt-get install tørrfisk

2. ChessBoard.py Få dette herfra.

3. Kode basert på https://chess.fortherapy.co.uk/home/a-wooden-chess… Følger med koden min.

4. Python 2D Inverse Kinematics -bibliotek -

5. Koden min som påkaller all koden ovenfor og som får roboten til å gjøre bevegelsene, og visjonskoden min. Få dette fra meg ved først å abonnere på YouTube -kanalen min, deretter klikke på "Favoritt" -knappen nær toppen av denne instruksjonsboken og deretter legge ut en kommentar til denne instruksen, så svarer jeg.

Anbefalt: