GRobot.gr Το χόμπι της Ρομποτικής στην Ελλάδα

Δύο ρομπότ με νευρωνικό δίκτυο PDF Εκτύπωση E-mail

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

Στο πρώτο ρομπότ, χρησιμοποίησα έναν arduino mega, 2 servo για τους 2 τροχούς, έναν αναλογικό Sharp αισθητήρα υπερύθρων που κάθεται πάνω σε ένα τρίτο servo που κινείται δεξιά και αριστερά και σκανάρει 5 περιοχές σαν ραντάρ. Ήταν λύση ανάγκης γιατί δεν είχα παραπάνω αισθητήρες sharp. Στους τροχούς έχω τοποθετήσει δύο encoders από έναν printer. Στο μπροστινό μέρος υπάρχουν δύο «μουστάκια» από σύρμα κολλημένα πάνω σε δύο επαφές και στο πίσω μέρος άλλο ένα, και όλα λειτουργούν σαν αισθητήρες σύγκρουσης.

Στον προγραμματισμό τώρα, έστησα ένα νευρωνικό δίκτυο (με σιγμοειδής συνάρτηση παντού) με 5 εισόδους τις 5 περιοχές του ραντάρ, 7 cells στο 1ο layer και 2 outputs που αντιστοιχούν στην ταχύτητα και κατεύθυνση των 2 σέρβο για τις ρόδες.
Ο γενετικός αλγόριθμος φτιάχνει την πρώτη φορά 15 τυχαία χρωμοσώματα τα οποία δοκιμάζονται ένα-ένα και αξιολογούνται ξεχωριστά με βάση την fitness function.
Αφού δοκιμαστούν και τα 15 χρωμοσώματα, επιλέγονται τα καλύτερα, διασταυρώνονται και μεταλλάσσονται (βάση ποσοστών που του έχουμε ορίσει), δημιουργώντας 15 νέα βελτιωμένα χρωμοσώματα, που έχουν κάποια από τα χαρακτηριστικά των γονέων τους, ή είναι εντελώς διαφορετικά (λόγω μετάλλαξης).

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

Η fitness function είναι αυτή που ορίζει τον σκοπό του ρομπότ. Στην συγκεκριμένη περίπτωση λέει στο ρομπότ, ότι πρέπει να προχωράει όσο το δυνατόν γρηγορότερα, ευθεία και αποφεύγοντας τα εμπόδια. Αυτό μπορούμε να του το πούμε με πολλούς τρόπους. Εγώ χρησιμοποίησα την παρακάτω fitness function:
Fitness(chromo)=Fitness(chromo)+V*(1-sqrt(Du))*(1-i)
Όπου Fitness(chromo) είναι το «score» του εκάστοτε χρωμοσώματος, V είναι η μέση ταχύτητα των τροχών, Du είναι η διαφορά της ταχύτητα μεταξύ των τροχών και το i είναι η απόσταση του κοντινότερου αντικειμένου μέσα στο οπτικό πεδίο. Αν το ρομπότ συγκρουστεί με τοίχο, μειώνεται η τιμή της Fitness κατά 0.2

Στο βίντεο που ακολουθεί θα δείτε την εξέλιξη για 12 περίπου γενιές.


Στο δεύτερο ρομπότ, χρησιμοποίησα πάλι την ίδια λογική. Υπάρχουν 2 servo για το «πόδι», μία ρόδα με έναν high resolution encoder πάλι από printer, μία επαφή στη βάση για να νιώθει πότε το σώμα ακουμπάει το έδαφος, και μία επαφή στην άκρη του ποδιού για να ξέρει πότε το πόδι ακουμπά το έδαφος.
Στις εισόδους του νευρωνικού δικτύου έχουμε τη θέση του κάθε servo, τις δύο επαφές και ένα ημίτονο, ενώ στις εξόδους παίρνουμε τις θέσεις των δύο servo.
Εδώ η fitness function είναι πολύ απλή: Μετράει την συνολική απόσταση που διένυσε το ρομπότ.


Τα αποτελέσματα μπορείτε να τα δείτε στο παρακάτω βίντεο:

JavaScript is disabled!
To display this content, you need a JavaScript capable browser.



Απο τον Γιάννη Μεϊτανίδη (Planmix)

Σχόλια (12)add comment

minas11 said:

Συγχαρητηρια Γιάννη... ανυπομωνουσα πολυ καιρο να δημοσιευτει αυτη η παρουσιαση... Πολλη καλη δουλεια... Keep Walking
Φεβρουάριος 08, 2010

Paulos said:

Γιαννη καταπληκτικο!!!
πρεπει να ειναι πολυ ωραιο να παρακολουθεις το ρομποτ σου να μαθαινει να κινηται!!
Φεβρουάριος 08, 2010

giannis said:

Mπραβο ρε Γιαννη ..Δεν ξερω πολλα απο ρομποτικη αλλα εμεινα εντυπωσιασμενος........... smilies/wink.gif
Φεβρουάριος 09, 2010

flokos said:

Μπραβο Γιαννη ειχα δει το βιντεο οταν ειχες πρωτοφτιαξει ο πρωτο ρομποτ και με το δευτερο μο κινησε το ενδιαφερον παραπανω...
Φεβρουάριος 09, 2010

planmix said:

Ευχαριστώ πολύ παιδιά. Ελπίζω να παρότρυνα έστω και έναν από εσάς να ασχοληθεί με τα νευρωνικά δίκτυα. Σας εγγυώμαι ότι θα δείτε από άλλη πλευρά τη ρομποτική και το πώς σκέφτεται ένα ρομπότ.
Για όσους θέλουν να ασχοληθούνε με τα νευρωνικά δίκτυα, ειδικά αν είστε από αυτούς που ακούνε νευρωνικά δίκτυα και πανικοβάλονται όπως έκανα εγώ, να έχουν υπόψιν τους ότι είναι πολύ πιο εύκολα από όσο δείχνει το όνομά τους (τουλάχιστον η απλή μορφή τους σαν κι αυτή που χρησιμοποίησα). Όλη η ιστορία είναι να καταλάβεις τη λογική, γιατί από πλευράς προγραμματισμού, κάποιος που έχει βασικές γνώσεις πινάκων θα το βρεί πολύ εύκολο.
Αυτό που με ενθουσίασε πολύ είναι το μεγάλο πλεονέκτημά τους σε μεγάλα συστήματα, όπου έχεις να διαχειριστείς πολλά inputs-outputs. Με το προγραμματισμό, θα πρέπει να προβλέψεις όλες τις πιθανότητες και να προγραμματίσεις την κάθε λειτουργία, πράγμα που οδηγεί σε bugs κλπ, ενώ σε ένα νευρωνικό δίκτυο, πετάς τα inputs και τα outputs, όπου θέλεις, χωρίς καν να χρειάζεται να του πεις τί είναι το κάθετι, και του "λες", μάθε να κάνεις αυτό, δεν με νοιάζει πώς θα το βρεις. Μετά όλα είναι θέμα χρόνου. Το πιο μαγικό είναι, ότι αφού ένα δίκτυο εκπαιδευτεί σε κάτι, έχει την ικανότητα να δίνει λύση σε παρόμοια προβλήματα, που ποτέ δεν έχει ξανασυναντήσει, όπως πχ. ένα πρόγραμμα αναγνώρισης προσώπου. Αν το δίκτυο εκπαιδευτεί να σε αναγνωρίζει, μετά μπορεί να σε αναγνωρίσει, αφήνοντας πχ. μούσι, ή φορώντας γυαλιά κλπ., κάτι που δεν επιτυγχάνεται με απλό προγραμματισμό με τίποτα.
Φεβρουάριος 10, 2010

minas11 said:

Γιαννη αυτην την εποχη εχω πολλη ορεξη να ασχοληθω με τα νευρωνικα δυκτια (αν και εχω λιγο χρονο τελευτεα) .... εχω διαβασει λιγα πραγματα για τα ναυρωνικα δυκτια και τους γενετικους αλγοριθμους (βλεπε φορουμ -> ebook ) ... βεβαια δεν εχω και πολλες γνωσεις προγραμματισμου τωρα ξεκινω και εγω με το arduino... smilies/cool.gif
Φεβρουάριος 10, 2010

flokos said:

Χμ και εγω ο λογος που δεν εχω ασχοληθει μεχρι τωρα ειναι επειδη νομιζα οτι ειναι πανδισκολο και επισης δεν ξερω καν τι χρειαζεται απο υλικα ...
Φεβρουάριος 11, 2010

Tronic said:

Αναρωτιεμαι το αποτελεσμα αν βαζαμε κωδικα για νευρωνικο δικτυο σε ενα εξαποδο... σαν αυτο:
http://www.trossenrobotics.com...t-kit.aspx

Αντε στο επομενο ADW μας βλεπω με κανενα τετοιο, αν ολα πανε καλα με την οργανωση του!!

Θανος
Φεβρουάριος 11, 2010

robodim said:

Μπράβο Μπράβο Μπράβο Γιάννη.
Συγχαρητήρια.
Δημήτρης
Φεβρουάριος 11, 2010

nick-themachine said:

!!!RESPECT!!!
Φεβρουάριος 12, 2010

Γίαννης said:

Για αρχη ενα μπραβο και απομενα smilies/wink.gif smilies/wink.gif
8α μπορουτσα να κανο μια εροτηση με εναν adruino απλο μπορεις να κανει ενα παρομιο project??
Φεβρουάριος 13, 2010

planmix said:

Δεν γνωρίζω αρκετά για τους arduino. Είναι ο πρώτος μου arduino και τυχαίνει να είναι ο mega.
Το βασικό είναι να γνωρίζεις πώς θα χρειαστείς ταχύτητα, δυνατοτητα για πράξεις με δεκαδικούς και μπόλικη μνήμη. Αν τα διαθέτει αυτά ο δικός σου arduino δεν νομίζω να έχεις πρόβλημα.
Φεβρουάριος 14, 2010

Γράψτε σχόλιο
Πρέπει να συνδεθείτε για να στείλετε ένα σχόλιο. Παρακαλώ καταχωρήστε λογαριασμό εάν δεν έχετε έναν.

busy
 

Online...

Έχουμε 6 επισκέπτες και 4 μέλη συνδεδεμένους
  • Tricky Nekro
  • Paulos
  • efrag
  • orfeus

Πρόσφατα σχόλια…

GRoboduino - Ολοκληρωμένη Μ...
Aν και δεν το δοκίμασα ...
SOLON 328 K.R.S (ARDUINO BASED ROBOT)
Εσύ έχεις βαλθεί όλουͮ..
Athens Digital Week 2010
Θα υπάρχουν πίστες κα̮..
Athens Digital Week 2010
α και εγω ειμαι μεσα
Athens Digital Week 2010
τελικά έκλεισε για line ...
Athens Digital Week 2010
Παιδιά αν και δεν προλ...
Athens Digital Week 2010
Μανώλη σε ευχαριστούμ...
Athens Digital Week 2010
ΕΠΕΙΓΟΝ Θα ήθε...
Athens Digital Week 2010
...κάτι μου λέει ότι θα ...
Athens Digital Week 2010
+1, και line-follower και sumo
Athens Digital Week 2010
Μέσα! +1
Athens Digital Week 2010
Παιδες τους διαγωνισμ...
GRoboduino - Ολοκληρωμένη Μ...
Το δοκίμασα και ενθουͮ..
Athens Digital Week 2010
Ο νικητής του ADW'08 (line-fo...
Athens Digital Week 2010
aheha ετσι! +1 άντε να μαζ̮..

Επισκεφτείτε…


Δείτε στο Forum...





Βρίσκεστε εδώ  : Κεντρική Σελίδα Κατασκευές Δύο ρομπότ με νευρωνικό δίκτυο

Επικοινωνία

info@grobot.gr

fax: 2105200006