Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-23 14:39
Έτσι, σε αυτό, θα πω πώς να φτιάξετε ένα ρομπότ παρακολούθησης μπάλας που είναι ένα ρομπότ να αναγνωρίζει μια μπάλα και να την ακολουθεί. Είναι βασικά μια αυτοματοποιημένη τεχνική επιτήρησης που μπορεί να χρησιμοποιηθεί στον σύγχρονο κόσμο. Λοιπόν, αφήστε μας απλά να μπούμε μέσα και να αρχίσουμε να χτίζουμε…
ΣΗΜΕΙΩΣΗ: Αυτή είναι η εργασία που υποβλήθηκε στο Πανεπιστήμιο Deakin, School of IT, SIT-210 Embedded Systems Development
Προμήθειες
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Βήμα 1: Εισαγωγή
Η σημερινή επιτήρηση παρέχει ένα μεγάλο μειονέκτημα, το οποίο βασίζεται στη συμμετοχή των ανθρώπων, η οποία όπως όλοι γνωρίζουμε μπορεί να αποσπάται εύκολα, οπότε ήταν ύψιστης σημασίας να ανακαλύψουμε ένα σύστημα που θα μπορεί να παρακολουθεί τις περιοχές αυτόνομα και συνεχώς. Επίσης, θέλουμε να εντοπίσουμε αντιπαθητικά ή ανεπιθύμητα πράγματα και κινδύνους, ενώ ταυτόχρονα λαμβάνουμε αποφάσεις και ανταποκρινόμαστε ανάλογα. Έτσι, η παρακολούθηση αντικειμένων με τη χρήση ευφυών συστημάτων και υπολογιστών είναι απαραίτητη και καθοριστική για την επίτευξη αυτοματοποιημένης επιτήρησης.
Κάθε υπαίθριο σύστημα επιτήρησης πρέπει να είναι σε θέση να παρακολουθεί αντικείμενα που κινούνται στο οπτικό του πεδίο, να ταξινομεί αυτά τα αντικείμενα και να ανιχνεύει μερικές από τις δραστηριότητές τους. Έχω αναπτύξει μια μέθοδο παρακολούθησης και ταξινόμησης αυτών των αντικειμένων σε ρεαλιστικά σενάρια. Η παρακολούθηση αντικειμένων σε μία μόνο κάμερα εκτελείται με αφαίρεση φόντου, ακολουθούμενη από αντιστοιχία περιοχής. Αυτό λαμβάνει υπόψη πολλαπλές ενδείξεις, συμπεριλαμβανομένων των ταχυτήτων, των μεγεθών και των αποστάσεων των πλαισίων οριοθέτησης.
Βήμα 2: Υλικά και μαλακά είδη που χρησιμοποιούνται σε αυτό το έργο
Εξαρτήματα υλικού που χρησιμοποιούνται:
- Raspberry Pi (x1)
- Ενότητα κάμερας Raspberry Pi (x1)
- Αισθητήρας υπερήχων (x3)
- Πρόγραμμα οδήγησης κινητήρα SparkFun Dual H-Bridge L298 (x1)
- DC Motor (x1)
- Breadboard (x1)
- Σύνδεση καλωδίων
Λογισμικό που χρησιμοποιείται:
OpenCV
Εργαλεία χειρός:
Πύθων
Βήμα 3: Τι να κάνετε;
Κάθε υπαίθριο σύστημα επιτήρησης πρέπει να είναι σε θέση να παρακολουθεί αντικείμενα που κινούνται στο οπτικό του πεδίο, να ταξινομεί αυτά τα αντικείμενα και να ανιχνεύει μερικές από τις δραστηριότητές τους. Έχω αναπτύξει μια μέθοδο παρακολούθησης και ταξινόμησης αυτών των αντικειμένων σε ρεαλιστικά σενάρια. Η παρακολούθηση αντικειμένων σε μία μόνο κάμερα εκτελείται με αφαίρεση φόντου, ακολουθούμενη από αντιστοιχία περιοχής. Αυτό λαμβάνει υπόψη πολλαπλές ενδείξεις, συμπεριλαμβανομένων των ταχυτήτων, των μεγεθών και των αποστάσεων των πλαισίων οριοθέτησης.
Το πιο σημαντικό πράγμα κατά την ανίχνευση εικόνων καρέ προς καρέ ήταν να αποφύγουμε τυχόν πτώσεις καρέ καθώς τότε το bot μπορεί να μπει σε κατάσταση limbo εάν το bot δεν καταφέρει να παρατηρήσει την κατεύθυνση κίνησης της μπάλας λόγω πτώσεων πλαισίου. Εάν η μπάλα βγει εκτός εμβέλειας της κάμερας, θα μεταβεί σε αυτό που ονομάζουμε κατάσταση limbo, σε αυτή την περίπτωση, το bot κάνει μια στροφή 360 μοιρών για να δει το χώρο γύρω του μέχρι να επιστρέψει η μπάλα στο πλαίσιο την κάμερα και μετά ξεκινήστε να κινείστε προς την κατεύθυνσή της.
Για την ανάλυση εικόνας, παίρνω κάθε καρέ και στη συνέχεια το καλύπτω με το χρώμα που χρειάζεται. Στη συνέχεια βρίσκω όλα τα περιγράμματα και βρίσκω το μεγαλύτερο ανάμεσά τους και το δένω σε ορθογώνιο. Και δείξτε το ορθογώνιο στην κύρια εικόνα και βρείτε τις συντεταγμένες του κέντρου του ορθογωνίου.
Τέλος, το bot προσπαθεί να φέρει τις συντεταγμένες της μπάλας στο κέντρο του άξονα συντεταγμένων της. Έτσι λειτουργεί το ρομπότ. Αυτό μπορεί να ενισχυθεί περαιτέρω χρησιμοποιώντας μια συσκευή IoT όπως ένα σωματίδιο φωτονίου που μπορεί να σας ενημερώσει όταν ανιχνεύεται ένα πράγμα και ότι το ρομπότ το ακολουθεί ή όταν το ρομπότ έχει χάσει το ίχνος του και τώρα επιστρέφει στη βάση Το
Για σκοπούς επεξεργασίας εικόνας, πρέπει να εγκαταστήσετε λογισμικό OpenCV στο raspberry pi σας, το οποίο ήταν αρκετά δύσκολο για μένα.
Μπορείτε να λάβετε όλες τις απαιτούμενες πληροφορίες για την εγκατάσταση του OpenCV μέσω αυτού του συνδέσμου: κάντε κλικ εδώ
Βήμα 4: Διαγράμματα
Πάνω έχω παράσχει τα διαγράμματα για το έργο μου και μαζί με αυτό είναι το Printed Circuit Board (PCB).
Και εδώ είναι μερικές από τις κύριες συνδέσεις που πρέπει να κάνετε:
• Πρώτα απ 'όλα, η μονάδα Raspberry Pi Camera συνδέεται άμεσα με το Raspberry Pi.
• Οι αισθητήρες υπερήχων VCC συνδέονται με το κοινό τερματικό, όπως και με το GND (γείωση) και οι υπόλοιπες δύο θύρες του αισθητήρα υπερήχων συνδέονται με τις ακίδες GPIO στο Raspberry Pi.
• Τα μοτέρ συνδέονται χρησιμοποιώντας το H-Bridge.
• Το ρεύμα παρέχεται με τη χρήση της μπαταρίας.
Έχω προσθέσει επίσης το βίντεο που μπορεί να βοηθήσει στην κατανόηση της λειτουργίας του αισθητήρα υπερήχων και πώς λειτουργεί.
και επίσης μπορείτε να ακολουθήσετε αυτόν τον σύνδεσμο εάν δεν μπορείτε να βρείτε το παραπάνω βίντεο.
Βήμα 5: Πώς να το κάνετε;
Έφτιαξα αυτό το έργο που απεικονίζει ένα βασικό ρομπότ που μπορεί να παρακολουθεί μια μπάλα. Το ρομπότ χρησιμοποιεί μια κάμερα για να κάνει επεξεργασία εικόνας παίρνοντας καρέ και παρακολουθώντας την μπάλα. Για την παρακολούθηση της μπάλας χρησιμοποιούνται διάφορα χαρακτηριστικά όπως το χρώμα, το μέγεθος, το σχήμα της.
Το Ρομπότ βρίσκει ένα σκληρό κωδικοποιημένο χρώμα και στη συνέχεια ψάχνει για την μπάλα αυτού του χρώματος και το ακολουθεί. Έχω επιλέξει το Raspberry Pi ως μικροελεγκτή σε αυτό το έργο επειδή μας επιτρέπει να χρησιμοποιούμε τη μονάδα κάμερας και δίνει μεγάλη ευελιξία στον κώδικα καθώς χρησιμοποιεί γλώσσα python που είναι πολύ φιλική προς το χρήστη και επίσης μας επιτρέπει να χρησιμοποιούμε τη βιβλιοθήκη OpenCV για την ανάλυση των εικόνων.
Μια γέφυρα H έχει χρησιμοποιηθεί για να αλλάξει η κατεύθυνση περιστροφής των κινητήρων ή να τους σταματήσει.
Για την ανάλυση εικόνας, παίρνω κάθε καρέ και στη συνέχεια το καλύπτω με το χρώμα που χρειάζεται. Στη συνέχεια βρίσκω όλα τα περιγράμματα και βρίσκω το μεγαλύτερο ανάμεσά τους και το δένω σε ορθογώνιο. Και δείξτε το ορθογώνιο στην κύρια εικόνα και βρείτε τις συντεταγμένες του κέντρου του ορθογωνίου.
Τέλος, το bot προσπαθεί να φέρει τις συντεταγμένες της μπάλας στο κέντρο του άξονα συντεταγμένων της. Έτσι λειτουργεί το ρομπότ. Αυτό μπορεί να ενισχυθεί περαιτέρω χρησιμοποιώντας μια συσκευή IoT όπως ένα σωματίδιο φωτονίου που μπορεί να σας ενημερώσει όταν ανιχνεύεται ένα πράγμα και ότι το ρομπότ το ακολουθεί ή όταν το ρομπότ έχει χάσει το ίχνος του και τώρα επιστρέφει στη βάση Το Και για να το κάνουμε αυτό θα χρησιμοποιήσουμε μια διαδικτυακή πλατφόρμα λογισμικού που συνδέει τις συσκευές και τους επιτρέπει να εκτελούν ορισμένες ενέργειες σε συγκεκριμένους κανόνες ενεργοποίησης που είναι οι ενεργοποιητές IFTTT.
Βήμα 6: udευδοκώδικας
Εδώ είναι ο ψευδοκώδικας για το τμήμα ανίχνευσης χρησιμοποιώντας OpenCV όπου εντοπίζουμε μια μπάλα.
Βήμα 7: Κωδικός
Πάνω είναι τα αποσπάσματα του κώδικα και παρακάτω η λεπτομερής περιγραφή του κώδικα.
# εισαγωγή των απαραίτητων πακέτων
ΕΙΣΑΓΟΥΜΕ ΟΛΑ ΤΑ ΑΝΑΓΚΑΙΑ ΣΥΣΚΕΥΑΣΙΑ
από την εισαγωγή picamera.array PiRGBArray #Καθώς υπάρχει πρόβλημα επίλυσης στο raspberry pi, δεν θα είναι δυνατή η λήψη καρέ με το VideoCapture
από την εισαγωγή picamera PiCamera import RPi. GPIO ως GPIO time import time numpy as np
ΤΩΡΑ ΣΥΝΕΡΓΑΖΟΥΜΕ ΤΟ HARDWARE ΚΑΙ ΕΚΔΟΘΟΥΜΕ ΤΟΥΣ ΚΟΝΔΕΣ ΣΥΝΔΕΘΕΜΕΝΟΥΣ ΣΤΟ ΡΙ ΡΑΣΠΕΡΙ
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Αριστερός αισθητήρας υπερήχων
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Μπροστινός υπερηχητικός αισθητήρας
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Σωστός υπερηχητικός αισθητήρας
GPIO_ECHO3 = 35
MOTOR1B = 18 #Αριστερό μοτέρ
MOTOR1E = 22
MOTOR2B = 21 #Δεξί μοτέρ
MOTOR2E = 19
LED_PIN = 13 #Αν βρει την μπάλα, τότε θα φωτίσει το led
# Ορίστε καρφίτσες ως έξοδο και είσοδο
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO2 GPIO_TRIGGER3, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Ορίστε τη σκανδάλη σε False (Low)
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
ΑΥΤΗ Η ΛΕΙΤΟΥΡΓΙΑ ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΟΛΟΙ ΟΙ ΥΠΕΡΑΣΚΟΝΟΙ ΑΙΣΘΗΤΗΡΕΣ ΣΥΛΛΕΓΟΥΝ ΤΗΝ ΑΠΟΣΤΑΣΗ ΑΠΟ ΤΑ ΑΝΤΙΚΕΙΜΕΝΑ ΓΥΡΩ ΤΟΥ ΜΠΟΤ ΜΑΣ
# Αφήστε την ενότητα να εγκατασταθεί
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Ορίστε καρφίτσες ως έξοδο και είσοδο GPIO. (Χαμηλό) GPIO.output (GPIO_TRIGGER, False) #Αφήστε την ενότητα να ρυθμίσει το χρόνο. Ύπνος (0,01) #ενδιάμεση απόσταση> 5: #Αποστολή παλμού 10us για ενεργοποίηση GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. έξοδος (GPIO_TRIGGER, False) έναρξη = time.time () ενώ GPIO.input (GPIO_ECHO) == 0 και time.time ()
ΛΗΗ ΤΩΝ DC MOTORS ΓΙΑ ΝΑ ΔΟΥΛΕΥΟΥΝ ΜΕ ΤΟ PI RASPBERRY
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
ΟΡΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΩΝ ΛΕΙΤΟΥΡΓΙΑΣ ΤΟΥ ΡΟΜΠΟΤ ΚΑΙ ΚΑΝΤΕ ΤΗΝ ΚΙΝΗΣΗ ΣΕ ΔΙΑΦΟΡΕΣ ΟΔΗΓΙΕΣ
def forward ():
GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def reverse (): GPIO.output (MOTOR1, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGHT)
def stop ():
GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)
ΚΑΤΑΣΚΕΥΗ ΤΗΣ ΜΟΝΑΔΑΣ ΚΑΜΕΡΑΣ ΚΑΙ ΡΥΘΜΙΣΗ ΤΩΝ ΡΥΘΜΙΣΕΩΝ
#ΚΑΜΠΕΡΑ ΚΑΜΕΡΑ
# αρχικοποιήστε την κάμερα και πάρτε μια αναφορά στην ακατέργαστη κάμερα λήψης κάμερας = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (κάμερα, μέγεθος = (160, 120)) # επιτρέψτε την κάμερα για τον χρόνο προθέρμανσης. ύπνος (0,001)
ΤΩΡΑ ΕΦΑΡΜΟΓΗ ΤΟΥ ΚΥΡΙΟΥ ΠΟΥ ΑΚΟΛΟΥΘΕΙ ΤΟ ΜΠΑΛΟ ΚΑΙ ΑΠΟΦΥΓΕΤΕ ΟΠΟΙΟΔΗΠΟΤΕ ΕΜΠΟΔΙΟ ΜΕ ΤΟΝ ΤΡΟΠΟ
ενώ (1 <10): { #απόσταση που προέρχεται από τον μπροστινό αισθητήρα υπερηχητικών αποστάσεων C = σόναρ (GPIO_TRIGGER2, GPIO_ECHO2) #απόσταση που προέρχεται από τη δεξιά απόσταση αισθητήρα υπερήχων, GPIO_ECHO1) εάν (απόσταση C = 8: δεξιά στροφή () ώρα. Ύπνος (0,00625) στάση () ώρα. Ύπνος (0,0125) εμπρός () χρόνος. Ύπνος (0,00625) στάση () ώρα. Ύπνος (0,0125) #ενω βρέθηκε == 0: leftturn () time.sleep (0.00625) elif distanceL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #αλλιώς προχωρά μπροστά () time.sleep (0.00625) if (απόσταση C> 10): #φέρνει τις συντεταγμένες της μπάλας στο κέντρο του φανταστικού άξονα της κάμερας.) διακοπή () ώρα. ύπνος (0.00625) άλλο: διακοπή () ώρα. ύπνος (0.01)
αλλού:
#αν βρει την μπάλα και είναι πολύ κοντά φωτίζει το led. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # διαγράψτε τη ροή για προετοιμασία για επόμενο καρέ}
ΚΑΝΤΕ ΤΑ ΑΠΑΡΑΙΤΗΤΑ ΚΑΘΑΡΙΣΜΑΤΑ
GPIO.cleanup () #δωρεάν όλες τις καρφίτσες GPIO
Βήμα 8: Εξωτερικοί σύνδεσμοι
Σύνδεσμος για το βίντεο επίδειξης: κάντε κλικ εδώ (Youtube)
Σύνδεσμος προς τον Κώδικα στο Git-hub: κάντε κλικ εδώ (Git-Hub)
Συνιστάται:
Πώς να φτιάξετε PHIL - ένα ελαφρύ ρομπότ παρακολούθησης: 6 βήματα (με εικόνες)
Πώς να φτιάξετε PHIL - ένα ελαφρύ ρομπότ παρακολούθησης: Σε αυτό το Instructable θα σας δείξω πώς έφτιαξα αυτό το ρομπότ παρακολούθησης φωτός διπλού άξονα χρησιμοποιώντας ένα Arduino Uno. Θα συμπεριληφθεί όλο το CAD και ο κώδικας, ώστε να μπορείτε να το φτιάξετε μόνοι σας χωρίς να χρειάζεστε γνώσεις προγραμματισμού ή σχεδίασης. Το μόνο που θα χρειαστείτε
Αυτοματοποιημένος κύλινδρος μπάλας με Arduino και One Servo: 3 βήματα
Αυτοματοποιημένος κύλινδρος μπάλας με Arduino και One Servo: Αυτό είναι ένα απλό μικρό έργο Arduino και servo που διαρκεί περίπου δύο ώρες για να ολοκληρωθεί. Χρησιμοποιεί ένα σερβο για να σηκώσει το ένα άκρο του πώματος ενός βάζου έτσι ώστε να περιστρέψει μια χαλύβδινη μπάλα γύρω από την εσωτερική περιφέρεια. Ξεκινάει μόνος του, μπορεί να αλλάξει ταχύτητα και μπορεί να γυρίσει δύο
Ρομπότ παρακολούθησης χρώματος με βάση τον τροχό πολλαπλής κατεύθυνσης και το OpenCV: 6 βήματα
Ρομπότ παρακολούθησης χρωμάτων με βάση τον τροχό παντός κατεύθυνσης και το OpenCV: Χρησιμοποιώ ένα πάνελ κατεύθυνσης τροχών για την υλοποίηση της παρακολούθησης των χρωμάτων μου και χρησιμοποιώ ένα λογισμικό για κινητά που ονομάζεται OpenCVBot. Χάρη στους προγραμματιστές λογισμικού εδώ, ευχαριστούμε. Το OpenCV Bot ανιχνεύει ή παρακολουθεί οποιοδήποτε αντικείμενο σε πραγματικό χρόνο μέσω επεξεργασίας εικόνας
Ρομπότ εξισορρόπησης / ρομπότ 3 τροχών / ρομπότ STEM: 8 βήματα
Ρομπότ εξισορρόπησης / ρομπότ 3 τροχών / ρομπότ STEM: Έχουμε δημιουργήσει ένα συνδυασμένο ρομπότ εξισορρόπησης και 3 τροχών για εκπαιδευτική χρήση σε σχολεία και εκπαιδευτικά προγράμματα μετά το σχολείο. Το ρομπότ βασίζεται σε ένα Arduino Uno, μια προσαρμοσμένη ασπίδα (παρέχονται όλες οι λεπτομέρειες κατασκευής), μια μπαταρία ιόντων λιθίου (όλα κατασκευασμένα
Κάμερα παρακολούθησης μπάλας 180 °: 5 βήματα (με εικόνες)
Ball Tracking 180 ° Camera: Καλώς ορίσατε στο πρώτο μου έργο! Είμαι ενθουσιασμένος που μοιράζομαι αυτό που έφτιαξα και σας παρουσιάζω τα βήματα για να φτιάξετε τη δική σας κάμερα παρακολούθησης. Αυτό το έργο κατέστη δυνατό με τη χρήση της βιβλιοθήκης OpenCV σε συνδυασμό με την Python