Innehållsförteckning:

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

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

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

Bygg den här schackroboten och se den slå alla!

Det är ganska enkelt att bygga om du kan följa instruktionerna om hur du bygger armen, och om du har åtminstone en grundläggande kunskap om datorprogrammering och Linux.

Människan, som spelar vitt, gör ett drag. Detta detekteras av det visuella igenkänningssystemet. Roboten funderar sedan och gör sedan sitt drag. Och så vidare …

Kanske det mest nya i denna robot är koden för flyttigenkänning. Denna visionskod är också användbar för schackrobotar byggda på många andra sätt (som min schackrobot med LEGO build).

Eftersom människans drag känns igen av ett visionssystem, behövs ingen speciell schackbräda (t.ex. vibrytare eller vad som helst).

Min kod är tillgänglig för personligt bruk.

Steg 1: Krav

Hårdvarubyggnaden
Hårdvarubyggnaden

All kod är skriven i Python, som körs på bland annat en Raspberry Pi.

Raspberry Pi är en liten, billig (cirka $ 40) enkelbräda dator utvecklad av Raspberry Pi Foundation. Den ursprungliga modellen blev mycket mer populär än väntat och sålde för användning som robotik

Min robot använder en Raspberry Pi, och robotarmen är byggd av ett kit: Lynxmotion AL5D. Satsen levereras med ett servokontrollkort. (Länken jag just gav är till RobotShops amerikanska webbplats; klicka på en av flaggorna högst upp till höger på deras webbplatser för ditt land, t.ex. Storbritannien).

Du behöver också ett bord, en kamera, belysning, ett tangentbord, skärm och pekdon (t.ex. mus). Och naturligtvis schackpjäser och en bräda. Jag beskriver alla dessa saker mer detaljerat i de efterföljande stegen.

Steg 2: Maskinvarubyggnaden

Hårdvarubyggnaden
Hårdvarubyggnaden

Som jag tidigare har angett kommer hjärtat i visionskoden att fungera med en mängd olika byggnader.

Denna konstruktion använder ett robotarmsats från Lynxmotion, AL5D. I satsen ingår ett SSC-32U servokontrollkort, som används för att styra motorerna i armen.

Jag valde AL5D eftersom armen måste kunna göra upprepade exakta rörelser och inte glida av. Griparen måste kunna ta sig mellan bitarna och armen måste kunna nå till den andra sidan av brädet. Jag behövde fortfarande göra några ändringar enligt beskrivningen nedan.

Raspberry Pi jag använder är en Raspberry Pi 3 Model B+. Detta talar till SSC-32U-kortet via en USB-anslutning.

EDIT: Raspberry Pi 4 är nu tillgänglig. Du behöver:

  • En 15 W USB-C strömförsörjning-vi rekommenderar den officiella Raspberry Pi USB-C strömförsörjningen
  • Ett microSD-kort laddat med NOOBS, programvaran som installerar operativsystemet (köp ett förinstallerat SD-kort tillsammans med din Raspberry Pi, eller ladda ner NOOBS för att ladda ett kort själv)
  • Ett tangentbord och en mus (se senare)
  • En kabel för anslutning till en skärm via en Raspberry Pi 4: s mikro -HDMI -port

Jag behövde ytterligare räckvidd på robotarmen, så jag gjorde några mindre ändringar på den med hjälp av ytterligare Lynxmotion -delar som kan köpas från RobotShop:

1. Byt ut 4,5-tums röret mot ett 6-tums ett-Lynxmotion-del AT-04, produktkod RB-Lyn-115.

2. Försökte använda en extra uppsättning fjädrar, men gick tillbaka till ett par när jag implementerade artikel 3 nedan

3. Förlängde höjden med en 1 tums distans-Lynxmotion del HUB-16, produktkod RB-Lyn-336.

4. Förlängde greppens räckvidd med hjälp av extra gripdynor som fästs med några extra LEGO -bitar som jag hade och elastiska band (!) Detta fungerar mycket bra, eftersom det introducerar flexibilitet när man lyfter bitar.

Dessa ändringar kan ses i bilden ovan till höger.

Det finns en kamera monterad ovanför schackbrädet. Detta används för att bestämma människans rörelse.

Steg 3: Programvaran som flyttar roboten

All kod är skriven i Python 2. Invers kinematisk kod behövs för att kunna flytta de olika motorerna korrekt så att schackpjäser kan flyttas. Jag använder bibliotekskod från Lynxmotion som stöder förflyttning av motorerna i två dimensioner och har lagt till det med min egen kod för 3 dimensioner, gripvinkel och gripkäksrörelse.

Så, vi har sedan kod som kommer att flytta bitar, ta bitar, slott, support en passant, och så vidare.

Schackmotorn är Stockfish - som kan slå vilken människa som helst! "Stockfish är en av de starkaste schackmotorerna i världen. Den är också mycket starkare än de bästa mästarna i schack."

Koden för att driva schackmotorn, validera att ett drag är giltigt och så vidare är ChessBoard.py

Jag använder lite kod från https://chess.fortherapy.co.uk för att ansluta till det. Min kod (ovan) gränsar sedan till det!

Steg 4: Programvaran som känner igen människans rörelse

Jag har beskrivit detta i detalj i Instructable för min Chess Robot Lego -byggnad - så jag behöver inte upprepa det här!

Mina "svarta" bitar var ursprungligen bruna, men jag målade dem matt svarta (med "tavelfärg"), vilket gör att algoritmen fungerar bättre under mer varierande ljusförhållanden.

Steg 5: Kamera, lampor, tangentbord, bord, display

Kamera, lampor, tangentbord, bord, display
Kamera, lampor, tangentbord, bord, display
Kamera, lampor, tangentbord, bord, display
Kamera, lampor, tangentbord, bord, display

Dessa är desamma som i min Chess Robot Lego -byggnad, så jag behöver inte upprepa dem här.

Förutom att jag den här gången använde en annorlunda och betydligt bättre högtalare, en Lenrui Bluetooth -högtalare, som jag ansluter till RPi via USB.

Tillgänglig från amazon.com, amazon.co.uk och andra butiker.

Jag använder nu också en annan kamera - en HP Webcam HD 2300, eftersom jag inte kunde få den tidigare kameran att bete sig pålitligt.

Algoritmerna fungerar bäst om schackbrädet har en färg som är långt från bitarnas färg! I min robot är bitarna benvita och bruna, och schackbrädan är handgjorda i kort och är en ljusgrön med liten skillnad mellan de "svarta" och "vita" rutorna.

Algoritmerna behöver en särskild orientering av kameran för att gå ombord. Kommentera nedan om du har problem. Armen har begränsad räckvidd, och därför bör kvadratstorleken vara 3,5 cm.

Steg 6: Skaffa programvaran

1. Torrfisk

Om du kör Raspbian på din RPi kan du använda Stockfish 7 -motorn - det är gratis. Bara spring:

sudo apt-get install stockfish

2. ChessBoard.py Få det här härifrån.

3. Kod baserad på https://chess.fortherapy.co.uk/home/a-wooden-chess… Levereras med min kod.

4. Python 2D Inverse Kinematics -bibliotek -

5. Min kod som åberopar all kod ovan och som får roboten att göra rörelserna, och min visionskod. Få detta från mig genom att först prenumerera på min YouTube -kanal, klicka sedan på knappen "Favorit" nära toppen av denna instruktionsbok och sedan lägga upp en kommentar till denna instruktionsbok, så svarar jag.

Rekommenderad: