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

NAIN 1.0 - το βασικό ανθρωποειδές ρομπότ που χρησιμοποιεί Arduino: 6 βήματα
NAIN 1.0 - το βασικό ανθρωποειδές ρομπότ που χρησιμοποιεί Arduino: 6 βήματα

Βίντεο: NAIN 1.0 - το βασικό ανθρωποειδές ρομπότ που χρησιμοποιεί Arduino: 6 βήματα

Βίντεο: NAIN 1.0 - το βασικό ανθρωποειδές ρομπότ που χρησιμοποιεί Arduino: 6 βήματα
Βίντεο: New Groundbreaking Research, Anthrobots, Hyper-Embryos | Michael Levin 2024, Δεκέμβριος
Anonim
NAIN 1.0 - το βασικό ανθρωποειδές ρομπότ που χρησιμοποιεί Arduino
NAIN 1.0 - το βασικό ανθρωποειδές ρομπότ που χρησιμοποιεί Arduino

Το Nain 1.0 θα έχει βασικά 5 αποσπώμενες μονάδες-

1) Βραχίονας - ο οποίος μπορεί να ελεγχθεί μέσω servos.

2) Τροχοί - οι οποίοι μπορούν να ελεγχθούν με μοτέρ dc.

3) Πόδι - Το Nain θα μπορεί να αλλάζει μεταξύ τροχών ή ποδιών για κίνηση.

4) Κεφάλι - Το κεφάλι του μπορεί να ελεγχθεί για διάφορα νεύματα.

5) Μονάδα κάμερας- η οποία μπορεί να διασυνδεθεί για πρόσβαση αναγνώρισης προσώπου.

Μαζί με αυτό το NAIN θα μπορεί να μιλά και να αλληλεπιδρά με τους χρήστες και μπορεί να σας δείξει την ώρα με το ενσωματωμένο ρολόι του. Θα έχει ασύρματο χειριστήριο χρησιμοποιώντας Wi-Fi /Bluetooth.

Βήμα 1: Απαιτούνται εξαρτήματα

Απαραίτητα εξαρτήματα
Απαραίτητα εξαρτήματα
Απαραίτητα εξαρτήματα
Απαραίτητα εξαρτήματα
Απαραίτητα εξαρτήματα
Απαραίτητα εξαρτήματα
  1. Servo Motors -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. USB κάμερα -1
  5. Ηχείο -1
  6. DC Motors -2
  7. L293D -1
  8. Μπαταρία - 1
  9. Τροχοί -2
  10. Ρόδες Castor - 2

Μαζί με αυτά θα χρειαστείτε τετράγωνες λωρίδες αλουμινίου για να φτιάξετε το σώμα και βίδες και παξιμάδια για να ταιριάζουν σωστά.

Βήμα 2: Δομή σώματος

Δομή σώματος
Δομή σώματος

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

Από τώρα συναρμολογήστε τα όπως φαίνεται στο σχήμα και κόψτε επίσης τους κατάλληλους χώρους για να τοποθετηθούν οι σερβοκινητήρες στους βραχίονες.

Συνδέστε μια εξαγωνική ξύλινη βάση στο κάτω μέρος.

Κάτω από την ξύλινη βάση, συνδέστε κινητήρες και τροχούς DC όπως κάνουμε σε οποιοδήποτε ρομπότ που ακολουθεί γραμμές.

Είναι ενδιαφέρον ότι προσθέστε δύο τροχούς- έναν στο μπροστινό και έναν στο πίσω μέρος του ρομπότ.

Βήμα 3: Καλωδίωση και κωδικοποίηση

Καλωδίωση και κωδικοποίηση
Καλωδίωση και κωδικοποίηση
Καλωδίωση και κωδικοποίηση
Καλωδίωση και κωδικοποίηση

Για να συνδέσετε τις διάφορες μονάδες, ανατρέξτε στους κωδικούς που επισυνάπτονται σε αυτό το μέρος.

Αρχικά δοκιμάσαμε κάθε ενότητα χρησιμοποιώντας αυτόνομους κωδικούς και στη συνέχεια τα συνδυάσαμε όλα σε ένα και ελέγξαμε την κίνηση των τροχών και των βραχιόνων χρησιμοποιώντας μια μονάδα bluetooth.

Βήμα 4: Raspberry Pi και αναγνώριση εικόνας

Raspberry Pi και αναγνώριση εικόνας
Raspberry Pi και αναγνώριση εικόνας
Raspberry Pi και αναγνώριση εικόνας
Raspberry Pi και αναγνώριση εικόνας

Η αναγνώριση εικόνας πραγματοποιείται με χρήση κάμερας USB και Raspberry Pi.

Για αυτό, θα χρειαστεί να εγκαταστήσετε τη βιβλιοθήκη OPEN CV στο Pi σας.

Μπορείτε να το κάνετε από εδώ-https://github.com/jabelone/OpenCV-for-Pi

Στη συνέχεια, θα χρειαστεί να εκτελέσετε αναγνώριση εικόνας χρησιμοποιώντας καταρράκτη haar.

Μπορείτε να το κάνετε από εδώ -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Μετά τη μελέτη του παραπάνω συνδέσμου και μετά από αυτό, έκανα μερικές αλλαγές στον τελικό κώδικα που χρησιμοποίησα και επικολλώνω παρακάτω -

ΓΕΝΝΗΤΗΣ ΔΕΔΟΜΕΝΩΝ:

importcv2

cam = cv2. VideoCapture (0)

ανιχνευτής = cv2. CascadeClassifier ('Classifiers/face.xml')

i = 0

offset = 50

όνομα = raw_input ("εισαγάγετε το αναγνωριστικό σας")

ενώ True:

ret, im = cam.read ()

γκρι = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

πρόσωπα = detector.detectMultiScale (γκρι, scaleFactor = 1,2, minNeighbors = 5, minSize = (100, 100), σημαίες = cv2. CASCADE_SCALE_IMAGE)

για (x, y, w, h) στα πρόσωπα:

i = i+1

cv2.imwrite ("dataSet/face."+όνομα+'.'+str (i)+".jpg", γκρι [y-offset: y+h+offset, x-offset: x+w+offset])

cv2. ορθογώνιο (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

cv2.imshow ('im', im [y-offset: y+h+offset, x-offset: x+w+offset])

εάν cv2.waitKey (100) & 0xFF == ord ('q'):

Διακοπή

# διάλειμμα εάν ο αριθμός δείγματος είναι περισσότερος από 20

elif (i> 20):

Διακοπή

cam.release ()

cv2.destroyAllWindows ()

Θα δημιουργήσει ένα σύνολο δεδομένων από τις φωτογραφίες σας που θα χρησιμοποιηθεί για έλεγχο ταυτότητας.

ΕΚΠΑΙΔΕΥΤΗΣ:

importcv2, os

εισαγωγή numpy ως np

από εικόνα εισαγωγής PIL

αναγνωριστής = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Ταξινομητές/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

διαδρομή = 'dataSet'

def get_images_and_labels (διαδρομή):

image_paths = [os.path.join (διαδρομή, f) για f στο os.listdir (διαδρομή)]

# εικόνες θα περιέχουν εικόνες προσώπου

εικόνες =

# labels will περιέχει την ετικέτα που έχει εκχωρηθεί στην εικόνα

ετικέτες =

για image_path σε image_paths:

# Διαβάστε την εικόνα και μετατρέψτε την σε κλίμακα του γκρι

image_pil = Image.open (image_path).convert ('L')

# Μετατρέψτε τη μορφή εικόνας σε αριθμημένο πίνακα

image = np.array (image_pil, 'uint8')

# Αποκτήστε την ετικέτα της εικόνας

nbr = int (os.path.split (image_path) [-1].split (".") [1]. αντικατάσταση ("face-", ""))

#nbr = int (''. join (str (ord (c)) for c in nbr))

εκτύπωση nbr

# Εντοπίστε το πρόσωπο στην εικόνα

πρόσωπα = faceCascade.detectMultiScale (εικόνα)

# Εάν εντοπιστεί πρόσωπο, προσαρτήστε το πρόσωπο στις εικόνες και την ετικέτα στις ετικέτες

για (x, y, w, h) στα πρόσωπα:

images.append (εικόνα [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow ("Προσθήκη προσώπων στο σύνολο μετάβασης …", εικόνα [y: y + h, x: x + w])

cv2.waitKey (10)

# επιστροφή της λίστας εικόνων και της λίστας ετικετών

επιστροφή εικόνων, ετικετών

εικόνες, ετικέτες = get_images_and_labels (path)

cv2.imshow («δοκιμή», εικόνες [0])

cv2.waitKey (1)

αναγνωριστικό. τρένο (εικόνες, np.array (ετικέτες))

αναγνωριστικό.αποθήκευση ("trainer/trainer.yml")

cv2.destroyAllWindows ()

ΑΝΙΧΝΕΥΤΗΣ

importcv2

εισαγωγή numpy ως np

εισαγωγή os

c = 0

αναγνωριστής = cv2.face.createLBPHFaceRecognizer ()

αναγνωριστικό.φόρτωση ('trainer/trainer.yml')

cascadePath = "Ταξινομητές/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

fontcolor = (255, 255, 255)

ενώ True:

ret, im = cam.read ()

γκρι = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

πρόσωπα = faceCascade.detectMultiScale (γκρι, 1,2, 5)

για (x, y, w, h) στα πρόσωπα:

cv2. ορθογώνιο (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

Id = αναγνωριστικό. Πρόβλεψη (γκρι [y: y+h, x: x+w])

εάν (Id <70):

εάν (Id == 1):

Id = "Shashank"

elif (Id == 2):

αν (c == 0):

Id = "Shivam"

c = c+1

os.system ("espeak 'Welcome Shivam Access Granted'")

αλλού:

Id = "Shivam"

αλλού:

Id = "Άγνωστο"

cv2.putText (im, str (Id), (x, y+h), fontface, fontscale, fontcolor)

cv2.imshow ('im', im)

εάν cv2.waitKey (10) & 0xFF == ord ('q'):

Διακοπή

cam.release ()

cv2.destroyAllWindows ()

Βήμα 5: LCD και ηχείο

Έχω χρησιμοποιήσει επίσης μια οθόνη LED I2C και ένα ηχείο.

Το LED ελέγχεται μέσω Arduino Mega και ο κωδικός του δίνεται στον τελικό κωδικό.

Για το Speaker, συνδέεται με το Raspberry Pi και χρησιμοποιεί το βοηθητικό πρόγραμμα eSpeak.

Μπορείτε να βρείτε την αναφορά του εδώ-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Βήμα 6: Τελικά βήματα

Συγκεντρώστε τα πάντα και ετοιμαστείτε για το χτύπημα.

Συνιστάται: