Πίνακας περιεχομένων:

Chess Robot Made With LEGO και Raspberry Pi: 6 βήματα
Chess Robot Made With LEGO και Raspberry Pi: 6 βήματα

Βίντεο: Chess Robot Made With LEGO και Raspberry Pi: 6 βήματα

Βίντεο: Chess Robot Made With LEGO και Raspberry Pi: 6 βήματα
Βίντεο: Σχεδιάζοντας και προγραμματίζοντας ένα robot: Τα πρώτα βήματα 2024, Ιούλιος
Anonim
Image
Image

Καταπλήξτε τους φίλους σας με αυτό το ρομπότ σκακιού!

Δεν είναι πολύ δύσκολο να κατασκευαστεί εάν έχετε κάνει ρομπότ LEGO στο παρελθόν και εάν έχετε τουλάχιστον στοιχειώδεις γνώσεις προγραμματισμού υπολογιστών και Linux.

Το ρομπότ κάνει τις δικές του κινήσεις και χρησιμοποιεί οπτική αναγνώριση για να καθορίσει την κίνηση του παίκτη.

Ένα από τα νέα πράγματα σε αυτό το ρομπότ είναι ο κώδικας για την αναγνώριση κινήσεων. Αυτός ο κωδικός όρασης μπορεί επίσης να χρησιμοποιηθεί για σκακιστικά ρομπότ που έχουν κατασκευαστεί με πολλούς άλλους τρόπους (όπως το ChessRobot μου χρησιμοποιώντας ρομποτικό βραχίονα Lynxmotion).

Δεν απαιτείται ειδική σκακιέρα, διακόπτες καλαμιών ή οτιδήποτε άλλο απαιτείται (καθώς η κίνηση του ανθρώπου καθορίζεται από την οπτική αναγνώριση).

Ο κωδικός μου είναι διαθέσιμος για προσωπική χρήση.

Βήμα 1: Απαιτήσεις

Φώτα, Κάμερα, Δράση!
Φώτα, Κάμερα, Δράση!

Όλος ο κώδικας είναι γραμμένος σε Python, ο οποίος θα λειτουργεί, μεταξύ άλλων, σε ένα Raspberry Pi.

Το Raspberry Pi είναι ένας υπολογιστής μεγέθους πιστωτικής κάρτας που μπορεί να συνδεθεί σε οθόνη και πληκτρολόγιο. Είναι ένας φθηνός (περίπου $ 40), ικανός μικρός υπολογιστής που μπορεί να χρησιμοποιηθεί σε ηλεκτρονικά έργα και ρομποτική, και για πολλά από τα πράγματα που κάνει ο επιτραπέζιος υπολογιστής σας.

Το ρομπότ μου χρησιμοποιεί Raspberry Pi και Lego. Η διασύνδεση υλικού μεταξύ των κινητήρων και αισθητήρων Lego Mindstorms EV3 παρέχεται από το BrickPi3 της Dexter Industries.

Η κατασκευή Lego βασίζεται στο "Charlie the Chess Robot", του Darrous Hadi, τροποποιημένο από εμένα, συμπεριλαμβανομένων των mods για τη χρήση RPi και όχι του επεξεργαστή Lego Mindstorms. Χρησιμοποιούνται κινητήρες και αισθητήρες Lego Mindstorms EV3.

Θα χρειαστείτε επίσης τραπέζι, κάμερα, φωτισμό, πληκτρολόγιο, οθόνη και συσκευή κατάδειξης (π.χ. ποντίκι).

Και φυσικά, κομμάτια σκακιού και μια σανίδα.

Περιγράφω όλα αυτά με περισσότερες λεπτομέρειες στα επόμενα βήματα.

Βήμα 2: Η κατασκευή υλικού

Image
Image

Όπως ανέφερα προηγουμένως, η καρδιά του κώδικα όρασης θα λειτουργήσει με μια ποικιλία κατασκευών.

Βάζω το ρομπότ μου στο "Charlie the Chess Robot" (έκδοση EV3) του Darrous Hadi, οι πληροφορίες σε αυτήν τη σελίδα λένε πώς να λάβετε τις οδηγίες κατασκευής. Η λίστα με τα μέρη είναι εδώ.

Τροποποίησα το ρομπότ με δύο τρόπους.

1. Ο αρπαχτής. Αυτό δεν λειτούργησε για μένα. Τα γρανάζια γλίστρησαν, οπότε πρόσθεσα επιπλέον κομμάτια Lego για να το αποτρέψω. Και όταν χαμηλώθηκε ο γερανός, θα έμπλεκε συχνά, οπότε πρόσθεσα μια σύνδεση Watt για να το αποτρέψω.

Πάνω είναι ο αρπαχτής σε δράση, που δείχνει τον τροποποιημένο σύνδεσμο.

2. Η αρχική κατασκευή χρησιμοποιεί τον επεξεργαστή Lego Mindstorms EV3, αλλά εγώ χρησιμοποιώ ένα Raspberry Pi, το οποίο διευκολύνει τη χρήση της Python.

3. Χρησιμοποιώ Raspberry Pi 3 Model B.

4. Για να διασυνδέσω το RPi με το Lego, χρησιμοποιώ το BrickPi3 από την Dexter Industries. Το BrickPi συνδέεται με το Raspberry Pi και μαζί αντικαθιστούν τα LEGO Mindstorms NXT ή EV3 Brick.

Όταν έχετε το αρχείο Lego Digital Designer, τότε τίθεται το ζήτημα της λήψης των κομματιών LEGO. Μπορείτε να πάρετε τούβλα απευθείας από το κατάστημα LEGO και αυτός είναι ο φθηνότερος τρόπος για να τα αποκτήσετε. Ωστόσο, δεν θα έχουν όλα όσα χρειάζεστε και τα τούβλα μπορεί να χρειαστούν μερικές εβδομάδες ή περισσότερο για να φτάσουν.

Μπορείτε επίσης να χρησιμοποιήσετε το Rebrickable: ανοίξτε έναν λογαριασμό, ανεβάστε το αρχείο LDD και από αυτό λάβετε μια λίστα πωλητών.

Μια άλλη καλή πηγή είναι το Bricklink.

Βήμα 3: Το λογισμικό που κάνει το ρομπότ να κινηθεί

Όλος ο κώδικας είναι γραμμένος σε Python 2.

  1. Η Dexter Industries παρέχει κώδικα για την υποστήριξη της μετακίνησης των κινητήρων EV3, κλπ. Αυτό συνοδεύεται από το BrickPi3.
  2. Παρέχω τον κωδικό για να κάνω τους κινητήρες να κινούνται με τέτοιο τρόπο ώστε να μετακινούν τα κομμάτια του σκακιού!
  3. Η σκακιστική μηχανή είναι Stockfish - που μπορεί να νικήσει κάθε άνθρωπο! "Το Stockfish είναι ένας από τους ισχυρότερους κινητήρες σκακιού στον κόσμο. Είναι επίσης πολύ ισχυρότερος από τους καλύτερους ανδρικούς σκακιστές".
  4. Ο κωδικός για την οδήγηση της σκακιστικής μηχανής, επιβεβαίωση ότι μια κίνηση είναι έγκυρη και ούτω καθεξής είναι το ChessBoard.py
  5. Χρησιμοποιώ κάποιον κώδικα από το https://chess.fortherapy.co.uk για διασύνδεση με αυτό.
  6. Ο κωδικός μου (στο 2 παραπάνω) στη συνέχεια διασυνδέεται με αυτό!

Βήμα 4: Το λογισμικό για την αναγνώριση της κίνησης του ανθρώπου

Αφού ο παίκτης κάνει την κίνησή του, η κάμερα τραβάει μια φωτογραφία. Ο κώδικας περικόπτει και περιστρέφεται έτσι ώστε η σκακιέρα να ταιριάζει ακριβώς στην επόμενη εικόνα. Τα τετράγωνα της σκακιέρας πρέπει να φαίνονται τετράγωνα !. Υπάρχει παραμόρφωση στην εικόνα επειδή οι άκρες του πίνακα είναι πιο μακριά από την κάμερα από ό, τι το κέντρο του πίνακα. Ωστόσο, η κάμερα είναι αρκετά μακριά ώστε, μετά την περικοπή, αυτή η παραμόρφωση να μην είναι σημαντική. Επειδή το ρομπότ γνωρίζει πού βρίσκονται όλα τα κομμάτια μετά την κίνηση του υπολογιστή, τότε το μόνο που πρέπει να γίνει αφού ο άνθρωπος κάνει μια κίνηση είναι ο κώδικας να μπορεί να διακρίνει τις ακόλουθες τρεις περιπτώσεις:

  • Ένα άδειο τετράγωνο
  • Ένα μαύρο κομμάτι κάθε είδους
  • Ένα λευκό κομμάτι κάθε είδους.

Αυτό καλύπτει όλες τις περιπτώσεις, συμπεριλαμβανομένων των castling και en passant.

Το ρομπότ ελέγχει ότι η κίνηση του ανθρώπου είναι σωστή και τον ενημερώνει αν δεν είναι! Η μόνη περίπτωση που δεν καλύπτεται είναι όταν ο παίκτης προωθεί ένα πιόνι σε μη βασίλισσα. Στη συνέχεια, ο παίκτης πρέπει να πει στο ρομπότ ποιο είναι το κομμάτι που προωθείται.

Μπορούμε τώρα να εξετάσουμε την εικόνα ως προς τα τετράγωνα της σκακιέρας.

Στο αρχικό στήσιμο του πίνακα γνωρίζουμε πού βρίσκονται όλα τα λευκά και μαύρα κομμάτια και πού είναι τα άδεια τετράγωνα.

Τα κενά τετράγωνα έχουν πολύ μικρότερη διαφορά χρώματος από ό, τι τα τετράγωνα που έχουν καταλάβει. Υπολογίζουμε την τυπική απόκλιση για καθένα από τα τρία χρώματα RGB για κάθε τετράγωνο σε όλα τα εικονοστοιχεία (εκτός από αυτά που βρίσκονται κοντά στα όρια του τετραγώνου). Η μέγιστη τυπική απόκλιση για οποιοδήποτε κενό τετράγωνο είναι πολύ μικρότερη από την ελάχιστη τυπική απόκλιση για κάθε κατεχόμενο τετράγωνο και αυτό μας επιτρέπει, μετά από μια μεταγενέστερη κίνηση παίκτη, να καθορίσουμε ποια τετράγωνα είναι κενά.

Έχοντας καθορίσει την τιμή κατωφλίου για κενά έναντι κατειλημμένων τετραγώνων, πρέπει τώρα να καθορίσουμε το χρώμα του τεμαχίου για τα κατεχόμενα τετράγωνα:

Στον αρχικό πίνακα υπολογίζουμε για κάθε λευκό τετράγωνο, για κάθε ένα από τα R, G, B, τη μέση (μέση) τιμή των εικονοστοιχείων του (εκτός εκείνων που βρίσκονται κοντά στα όρια του τετραγώνου). Το ελάχιστο από αυτά τα μέσα για κάθε λευκό τετράγωνο είναι μεγαλύτερο από το μέγιστο των μέσων σε οποιοδήποτε μαύρο τετράγωνο, και έτσι μπορούμε να καθορίσουμε το χρώμα του τεμαχίου για τα κατεχόμενα τετράγωνα. Όπως προαναφέρθηκε, αυτό είναι το μόνο που πρέπει να κάνουμε για να καθορίσουμε ποια ήταν η κίνηση του παίκτη.

Οι αλγόριθμοι λειτουργούν καλύτερα εάν η σκακιέρα έχει ένα χρώμα που απέχει πολύ από το χρώμα των κομματιών! Στο ρομπότ μου, τα κομμάτια είναι υπόλευκα και καφέ, και η σκακιέρα είναι χειροποίητη σε κάρτα και είναι ανοιχτό πράσινο με μικρή διαφορά μεταξύ των "μαύρων" και "λευκών" τετραγώνων.

Επεξεργασία 17 Οκτωβρίου 2018: Έχω βάψει τώρα τα καφέ κομμάτια σε μαύρο ματ χρώμα, γεγονός που κάνει τον αλγόριθμο να λειτουργεί υπό πιο μεταβλητές συνθήκες φωτισμού.

Βήμα 5: Φώτα, Κάμερα, Δράση

Φώτα

Χρειάζεστε μια ομοιόμορφη πηγή φωτός τοποθετημένη πάνω στον πίνακα. Χρησιμοποιώ αυτό, το οποίο είναι πραγματικά φθηνό, από το amazon.co.uk - και αναμφίβολα υπάρχει κάτι παρόμοιο στο amazon.com. Με τα φώτα του δωματίου σβηστά.

Ενημέρωση: Έχω τώρα δύο φώτα, για να δώσω μια πιο ομοιόμορφη πηγή φωτός

ΦΩΤΟΓΡΑΦΙΚΗ ΜΗΧΑΝΗ

Αναμφίβολα μπορείτε να χρησιμοποιήσετε την ειδική μονάδα κάμερας Raspberry Pi (με μακρύ καλώδιο), αλλά χρησιμοποιώ μια κάμερα USB - "Logitech 960-001064 C525 HD Webcam - Black" - η οποία λειτουργεί με το RPi. Πρέπει να διασφαλίσετε ότι η κάμερα δεν κινείται σε σχέση με την πλακέτα, χτίζοντας έναν πύργο ή κάπου για να το στερεώσετε σταθερά. Η κάμερα πρέπει να βρίσκεται αρκετά ψηλά πάνω από τον πίνακα, προκειμένου να μειωθεί η γεωμετρική παραμόρφωση. Έχω την κάμερά μου 58 εκατοστά πάνω από τον πίνακα.

Ενημέρωση: Προτιμώ τώρα την HP Webcam HD 2300, καθώς το θεωρώ πιο αξιόπιστο.

Τραπέζι

Χρειάζεσαι ένα γερό. Αγόρασα αυτό. Επιπλέον, μπορείτε να δείτε ότι έχω ένα τετράγωνο MDF, με μερικά πράγματα να σταματήσουν το ρομπότ να πηδάει όταν το καρότσι κινείται. Καλό είναι να κρατάτε την κάμερα στην ίδια θέση πάνω από τον πίνακα!

Πληκτρολόγιο

Το RPi χρειάζεται πληκτρολόγιο USB για την πρώτη του ρύθμιση. Και το χρησιμοποιώ για την ανάπτυξη του κώδικα. Το μόνο που χρειάζεται το ρομπότ πληκτρολόγιο είναι να ξεκινήσει το πρόγραμμα και να προσομοιώσει το χτύπημα του ρολογιού σκακιού. Πήρα ένα από αυτά. Αλλά πραγματικά, χρειάζεστε μόνο ένα ποντίκι ή ένα κουμπί GPIO συνδεδεμένο στο RPi

Απεικόνιση

Χρησιμοποιώ μια μεγάλη οθόνη για ανάπτυξη, αλλά το μόνο που χρειάζεται το ρομπότ είναι να σας πει ότι η κίνησή σας είναι άκυρη, ελέγξτε κλπ. Πήρα ένα από αυτά, επίσης διαθέσιμο στο amazon.com.

Αλλά αντί να απαιτεί οθόνη, το ρομπότ θα μιλά αυτές τις φράσεις! Το έκανα μετατρέποντας κείμενο σε ομιλία χρησιμοποιώντας κώδικα όπως περιγράφεται εδώ και προσαρτώντας ένα μικρό ηχείο. (Χρησιμοποιώ ένα "μίνι ηχείο Hamburger").

Φράσεις που λέει το ρομπότ:

  • Ελεγχος!
  • Ματ
  • Άκυρη κίνηση
  • Κέρδισες!
  • Αδιέξοδο
  • Σχεδιάστε με τριπλή επανάληψη
  • Κανόνας ισοπαλίας κατά 50 κινήσεις

Ο κανόνας των πενήντα κινήσεων στο σκάκι δηλώνει ότι ένας παίκτης μπορεί να διεκδικήσει την ισοπαλία εάν δεν έχει γίνει σύλληψη και δεν έχει μετακινηθεί πιόνι στις τελευταίες πενήντα κινήσεις (για το σκοπό αυτό μια "κίνηση" αποτελείται από έναν παίκτη που ολοκληρώνει τη σειρά του ακολουθούμενος από ο αντίπαλος ολοκληρώνει τη σειρά του).

Μπορείτε να ακούσετε το ρομπότ να μιλά στο σύντομο βίντεο "σύντροφος του ανόητου" παραπάνω (αν ανεβάσετε τον ήχο σας αρκετά ψηλά)!

Βήμα 6: Πώς να αποκτήσετε το λογισμικό

1. Κοντόψαρο

Εάν εκτελείτε το Raspbian στο RPi, μπορείτε να χρησιμοποιήσετε τον κινητήρα Stockfish 7 - είναι δωρεάν. Απλά τρέχα:

sudo apt-get install stockfish

2. ChessBoard.py

Αποκτήστε το εδώ.

3. Κώδικας βασισμένος στο

Έρχεται με τον κωδικό μου.

4. Προγράμματα οδήγησης Python για BrickPi3:

Πάρτε αυτά εδώ.

5. Ο κωδικός μου που επικαλείται όλο τον παραπάνω κώδικα και που κάνει το ρομπότ να κάνει τις κινήσεις, και τον κωδικό της όρασής μου.

Λάβετε αυτό από μένα δημοσιεύοντας ένα σχόλιο και θα απαντήσω.

Συνιστάται: