Δευτέρα 19 Δεκεμβρίου 2011

Ρομπότ αναγνώρισης φωνής με χρήση του μικροελεγκτή Parallax Propeller από το Νίκο Γιαννακόπουλο


Το project αυτό περιλαμβάνει τη κατασκευή ενός ρομπότ δύο τροχών (που ελέγχονται από σερβοκινητήρες) και ενός τρίτου βοηθητικού τροχού (two-wheeled differential drive robot) το οποίο έχει τη δυνατότητα να μαθαίνει τη φωνή του χρήστη και να υπακούει σε φωνητικές εντολές όπως : «Μπροστά», «Πίσω», «Δεξιά» και «Αριστερά»


Ο «εγκέφαλος» του ρομπότ είναι ο Parallax Propeller ο οποίος φιλοξενείται πάνω στο Propeller Demo Board το οποίο μεταξύ των άλλων συνδέσεων για εξωτερικές συσκευές διαθέτει ένα ενσωματωμένο μικρόφωνο ικανό να «ακούει» τους ήχους του περιβάλλοντος.
Το ρομπότ είναι εξαιρετικά εύκολης και απλής κατασκευής και σαν hardware το μόνο που απαιτεί είναι ένα απλό σασί ικανό να μεταφέρει το Propeller Demo Board.

Το software είναι γραμμένο σε γλώσσα προγραμματισμού SPIN η οποία είναι ένα λογισμικό ανοικτού κώδικα. Ο αρχικός κώδικας αναγνώρισης φωνής στον οποίο βασίστηκα και τροποποίησα προκειμένου να το χρησιμοποιήσω σε αυτό το ρομπότ είναι το “Goertzel Speech Recognition demo” γραμμένος από τον κ. Phil Pilgrim.
Στη συνέχεια παρουσιάζω δύο εκδοχές του ρομπότ. Η μία με χειροποίητο σασί επαναφορτιζόμενη μπαταρία και η άλλη με το έτοιμο σασί που παρέχει η Parallax στο γνωστό ρομπότ της το διάσημο Boe-Bot
A. Κατασκευή με χειροποίητο σασί

Όπως μπορεί κανείς να δει χρησιμοποιούνται δύο κομμάτια από plexiglas με μία τετράγωνη οπή εσωτερικά για να στηρίζεται η μπαταρία και δύο εξίσου χειροποίητα στηρίγματα για τους δύο σερβοκινητήρες (servo adapters).Επίσης θα χρειαστούν μερικές βίδες και παξιμάδια δύο τροχοί που να εφαρμόζουν σε servo motors και ένας βοηθητικός τροχός ελεύθερης περιστροφής. (δείτε το σχετικό video κατασκευής και λειτουργίας:
Propeller speech recognition robot
)
B. Για την κατασκευή με το έτοιμο σασί του (Boe-Bot) (προτείνεται) το ρομπότ περιλαμβάνει:


ΥΛΙΚΑ ΚΑΤΑΣΚΕΥΉΣ:
Propeller Demo Board
Boe Bot Chassis
Polyethylene Ball 1"2 X Boe-Bot/SumoBot Wheel & Tire
2 X Parallax (Futaba) Continuous Rotation Servo
4AA Battery Holder
1 X Green LED
1 X Red LED
1 X Yellow LED
2 X 1K ohm, 1/4 watt resistor
3 X 220 ohm, 1/4 watt resistor
Υλοποίηση κυκλώματος

Το κύκλωμα που υλοποιούμε πάνω στην breadboard είναι ένα κύκλωμα που εκτός από τους δύο σερβοκινητήρες διαθέτει και τρία LEDs (κόκκινο πράσινο και κίτρινο) που παίζουν το ρόλο της διεπαφής του ρομπότ με το χρήστη . Το Κόκκινο LED ανάβει όταν το ρομπότ «ακούει» μία εντολή δηλαδή όταν αρχικά «μαθαίνει» το σετ εντολών και κατόπιν όταν δέχεται μία φωνητική εντολή προς εκτέλεση. Το Πράσινο LED δείχνει ότι το ρομπότ έχει καταλάβει την εντολή και προχωρά στο επόμενο βήμα εκτέλεσης του προγράμματος. Το κίτρινο LED δείχνει ότι το ρομπότ άκουσε κάτι ακαθόριστο το οποίο δεν κατάλαβε και θα μας ζητήσει να το ξαναπούμε (θα ξανα-ανάψει αυτόματα το κόκκινο LED για νέα εισαγωγή της φωνητικής εντολής).
Το project μπορεί να προσαρμοστεί ανάλογα με τις ανάγκες του χρήστη και να δεχθεί διαφορετικό πλήθος φωνητικών εντολών που φυσικά ο προγραμματιστής πρέπει να προσθέσει τον κατάλληλο κώδικα.
Τον κώδικα μπορείτε να βρείτε στην ακόλουθη σύνδεση που παραπέμπει στο Forum της Parallax όπου δημοσιεύτηκε αρχικά το Project και κέρδισε και τον τίτλο του Project της εβδομάδας.

Το project παρουσιάστηκε στις 14 Δεκ. 2011 στην 5η Ημερίδα εκπαιδευτικών Πληροφορικής στην Πάτρα.