Inhoudsopgave:

Schaakrobot Raspberry Pi Lynxmotion AL5D Arm - Ajarnpa
Schaakrobot Raspberry Pi Lynxmotion AL5D Arm - Ajarnpa

Video: Schaakrobot Raspberry Pi Lynxmotion AL5D Arm - Ajarnpa

Video: Schaakrobot Raspberry Pi Lynxmotion AL5D Arm - Ajarnpa
Video: Lynxmotion AL5D Robotic Arm Test 2024, November
Anonim
Image
Image

Bouw deze schaakrobot en zie hoe hij iedereen verslaat!

Het is vrij eenvoudig te bouwen als je de instructies voor het bouwen van de arm kunt volgen en als je op zijn minst een elementaire kennis hebt van computerprogrammering en Linux.

De wit spelende mens doet een zet. Dit wordt gedetecteerd door het visuele herkenningssysteem. De robot denkt dan na en maakt dan zijn beweging. Enzovoort …

Misschien wel het meest nieuwe aan deze robot is de code voor bewegingsherkenning. Deze vision-code is ook bruikbaar voor schaakrobots die op veel andere manieren zijn gebouwd (zoals mijn schaakrobot met LEGO build).

Omdat de beweging van de mens wordt herkend door een vision-systeem, is er geen speciale schaakbordhardware (zoals reed-schakelaars of wat dan ook) nodig.

Mijn code is beschikbaar voor persoonlijk gebruik.

Stap 1: Vereisten

De hardware-build
De hardware-build

Alle code is geschreven in Python, die onder andere op een Raspberry Pi zal draaien.

De Raspberry Pi is een kleine, goedkope (ongeveer $ 40) computer met één bord, ontwikkeld door de Raspberry Pi Foundation. Het originele model werd veel populairder dan verwacht en verkocht voor toepassingen zoals robotica

Mijn robot gebruikt een Raspberry Pi en de robotarm is opgebouwd uit een kit: Lynxmotion AL5D. De kit wordt geleverd met een servocontrollerkaart. (De link die ik zojuist heb gegeven is naar de Amerikaanse site van RobotShop; klik op een van de vlaggen in de rechterbovenhoek van hun sitepagina's voor uw land, bijvoorbeeld VK).

Je hebt ook een tafel, een camera, verlichting, een toetsenbord, scherm en aanwijsapparaat (bijvoorbeeld muis) nodig. En natuurlijk schaakstukken en een bord. Ik beschrijf al deze dingen in meer detail in de volgende stappen.

Stap 2: De hardware-build

De hardware-build
De hardware-build

Zoals ik eerder al aangaf, zal het hart van de vision-code werken met verschillende builds.

Deze build maakt gebruik van een robotarmkit van Lynxmotion, de AL5D. Inbegrepen bij de kit is een SSC-32U servocontrollerkaart, die wordt gebruikt om de motoren in de arm te besturen.

Ik heb voor de AL5D gekozen omdat de arm herhaaldelijk nauwkeurige bewegingen moet kunnen maken en niet afdrijft. De grijper moet tussen de stukken kunnen komen en de arm moet tot aan de andere kant van het bord kunnen reiken. Ik moest nog enkele wijzigingen aanbrengen, zoals hieronder beschreven.

De Raspberry Pi die ik gebruik is een Raspberry Pi 3 Model B+. Deze praat met het SSC-32U-bord via een USB-verbinding.

EDIT: De Raspberry Pi 4 is nu beschikbaar. Je hebt nodig:

  • Een 15 W USB-C-voeding - we raden de officiële Raspberry Pi USB-C-voeding aan
  • Een microSD-kaart geladen met NOOBS, de software die het besturingssysteem installeert (koop een vooraf geladen SD-kaart samen met je Raspberry Pi, of download NOOBS om zelf een kaart te laden)
  • Een toetsenbord en muis (zie later)
  • Een kabel om aan te sluiten op een beeldscherm via de micro HDMI-poort van een Raspberry Pi 4

Ik had meer reikwijdte op de robotarm nodig, dus heb ik er een paar kleine wijzigingen aan aangebracht, met behulp van extra Lynxmotion-onderdelen die kunnen worden gekocht bij RobotShop:

1. De 4,5 inch buis vervangen door een 6 inch buis - Lynxmotion onderdeel AT-04, productcode RB-Lyn-115.

2. Ik heb geprobeerd een extra set veren te gebruiken, maar ging terug naar één paar toen ik item 3 hieronder implementeerde

3. Vergroot de hoogte met een 1 inch spacer - Lynxmotion onderdeel HUB-16, productcode RB-Lyn-336.

4. Vergroot het bereik van de grijper met behulp van reserve grijperpads die zijn bevestigd door enkele reserve LEGO-stukken die ik had en elastische banden (!) Dit werkt heel goed, omdat het flexibiliteit introduceert bij het optillen van stukken.

Deze wijzigingen zijn te zien in de afbeelding hierboven aan de rechterkant.

Boven het schaakbord is een camera gemonteerd. Dit wordt gebruikt om de beweging van de mens te bepalen.

Stap 3: De software die de robot beweegt

Alle code is geschreven in Python 2. Inverse kinematica-code is nodig om de verschillende motoren correct te bewegen, zodat schaakstukken kunnen worden verplaatst. Ik gebruik bibliotheekcode van Lynxmotion die het verplaatsen van de motoren in twee dimensies ondersteunt en heb daaraan toegevoegd met mijn eigen code voor 3 dimensies, grijperhoek en grijperbekbeweging.

Dus we hebben dan code die stukken verplaatst, stukken neemt, kasteel, steun en passant, enzovoort.

De schaakengine is Stockfish - die elk mens kan verslaan! "Stockfish is een van de sterkste schaakmotoren ter wereld. Het is ook veel sterker dan de beste menselijke schaakgrootmeesters."

De code om de schaakengine aan te sturen, te valideren dat een zet geldig is, enzovoort, is ChessBoard.py

Ik gebruik een code van https://chess.fortherapy.co.uk om daarmee te communiceren. Mijn code (hierboven) koppelt daar dan aan!

Stap 4: De software die de beweging van de mens herkent

Ik heb dit in detail beschreven in de Instructable voor mijn schaakrobot Lego build - dus ik hoef het hier niet te herhalen!

Mijn "zwarte" stukken waren oorspronkelijk bruin, maar ik heb ze mat zwart geverfd (met "schoolbordverf"), waardoor het algoritme beter werkt onder meer variabele lichtomstandigheden.

Stap 5: Camera, verlichting, toetsenbord, tafel, display

Camera, verlichting, toetsenbord, tafel, display
Camera, verlichting, toetsenbord, tafel, display
Camera, verlichting, toetsenbord, tafel, display
Camera, verlichting, toetsenbord, tafel, display

Dit zijn dezelfde als in mijn Chess Robot Lego build, dus ik hoef ze hier niet te herhalen.

Alleen heb ik dit keer een andere en beduidend betere speaker gebruikt, een Lenrui Bluetooth speaker, die ik via USB op de RPi aansluit.

Verkrijgbaar bij amazon.com, amazon.co.uk en andere verkooppunten.

Ook gebruik ik nu een andere camera - een HP Webcam HD 2300, omdat ik de vorige camera niet betrouwbaar kon laten werken.

De algoritmen werken het beste als het schaakbord een kleur heeft die ver verwijderd is van de kleur van de stukken! In mijn robot zijn de stukken gebroken wit en bruin, en het schaakbord is met de hand gemaakt in kaart en is lichtgroen met weinig verschil tussen de "zwarte" en "witte" vierkanten.

De algoritmen hebben een bepaalde oriëntatie van de camera nodig om aan boord te gaan. Reageer hieronder als je een probleem hebt. De arm heeft een beperkte reikwijdte en daarom moet de vierkante maat 3,5 cm zijn.

Stap 6: De software verkrijgen

1. Stokvis

Als je Raspbian op je RPi draait, kun je de Stockfish 7-engine gebruiken - het is gratis. Ren gewoon:

sudo apt-get install stockfish

2. ChessBoard.py Haal dit hier vandaan.

3. Code gebaseerd op https://chess.fortherapy.co.uk/home/a-wooden-chess… Wordt geleverd met mijn code.

4. Python 2D Inverse Kinematics-bibliotheek -

5. Mijn code die alle bovenstaande code oproept en die de robot de bewegingen laat maken, en mijn visiecode. Krijg dit van mij door je eerst te abonneren op mijn YouTube-kanaal, vervolgens op de knop "Favorieten" bovenaan deze Instructable te klikken en vervolgens een reactie op deze Instructable te plaatsen, en ik zal reageren.

Aanbevolen: