PostHeaderIcon Computer Vision truck robot

Ευρετήριο Άρθρου
Computer Vision truck robot
EZtruck constraction
Power supply
programming
conclusion
Όλες οι Σελίδες

Eztruck front

Εισαγωγή

Πρόκειται για μια ρομποτική κατασκευή η οποία χρησιμοποιεί τεχνικές οπτικής αναγνώρισης για να “καταλαβαίνει” χρώματα ή αντικείμενα και να αλληλεπιδρά μαζί τους. Μπορεί δηλαδή να αναγνωρίσει κάποιο συγκεκριμένο σχήμα-χρώμα, ακόμα και πρόσωπο, και να κινηθεί προς το μέρος του ή να κάνει κάποια συγκεκριμένη ενέργεια. Διαθέτει περιμετρικά αισθητήρες μέτρησης αποστάσεων για την αποφυγή εμποδίων καθώς και για την μέτρηση της απόστασης από τον στόχο.

.

Ο “εγκέφαλος” του οχήματος δεν βρίσκεται πάνω στο όχημα, αλλά όλα τα δεδομένα που λαμβάνει από τους αισθητήρες καθώς και από την κάμερα στέλνονται με streaming μέσω ασυρμάτου δικτύου wi-fi στον κεντρικό υπολογιστή ο οποίος αναλαμβάνει να αξιολογήσει τα δεδομένα και να ενεργήσει ανάλογα

Ο χειρισμός γίνεται χρησιμοποιώντας ένα χειριστήριο παιχνιδομηχανής (τύπου PS2) συνδεδεμένο στη USB θύρα του υπολογιστή μας. Με το χειριστήριο έχουμε τη δυνατότητα να κινήσουμε χειροκίνητα το όχημα και βλέποντας ότι βλέπει μέσω της κάμερας και των αισθητήρων να περιηγηθούμε ελευθέρα στο χώρο. Φυσικά με το πάτημα ενός κουμπιού περνάμε στην αυτόματη λειτουργία όπου το όχημα αναλαμβάνει χωρίς ανθρώπινη καθοδήγηση (αυτόνομα) να φτάσει στον προορισμό-στόχο του.

Για τον οπτικό εντοπισμό των αντικειμένων χρησιμοποίει τον μηχανισμό που περιγράφεται πιο αναλυτικά στο άρθρο «Οπτική αναγνώριση και παρακολούθηση αντικείμενων σε πραγματικό χρόνο». (link)

 

 

Ας δούμε όμως πιο αναλυτικά τη χρειάζεται μια τέτοια κατασκευή.

Υλικά

Η κατασκευή απαιτεί τα εξής υλικά:

  1. 1χ PhidgetSBC

    SBC

    http://www.futurehouse.gr/index.php?main_page=product_info&cPath=47&products_id=266

    Το PhidgetSBC είναι πλήρως λειτουργική ενιαία μονάδα με ενσωματωμένο υπολογιστή που τρέχει Linux με Java και C libraries. Μπορείτε να συνθέσετε τα δικά σας προγράμματα ή να προσαρμόσετε το OS, και να τα τρέξετε στην ενσωματωμένη μνήμη του ή απομακρυσμένα μέσω.

    • Διαθέτει εύκολο περιβάλλον διαμόρφωσης.
    • 4 USB θύρες μέγιστης ταχύτητας συμβατές με δικτυακές κάμερες και Phidget USB συσκευές.
    • Ενσωματωμένο το PhidgetInterfaceKit 8/8/8.
    • Θύρα Ethernet και ενσωματωμένος USB αντάπτορας ασύρματου δικτύου.
    • Χρήση απομακρυσμένη με Phidgets από έναν άλλο υπολογιστή οπουδήποτε στο δίκτυο.

    Το SBC αναλαμβάνει να πάρει όλες τις μετρήσεις των αισθητήρων και την εικόνα της usb κάμερας και να τα στείλει μέσω του usb WI-FI dongle που χρησιμοποιεί στον κεντρικό υπολογιστή. Επίσης επάνω του είναι συνδεδεμένο, μέσω usb, και το PhidgetAdvancedServo 8-Motor.

  2. 1χ Sonar Sensor
  3. SonarSensor

    http://www.futurehouse.gr/index.php?main_page=product_info&cPath=49_27&products_id=271

    Αισθητήρας μέτρησης αποστάσεων με υπέρηχους. Η ικανότητα μέτρησης είναι από 0 έως 6,45 μέτρα με ακρίβεια 2,5cm.

    Η βασική διαφορά του ultrasonic από τον αισθητήρα υπερύθρων (IR) είναι ότι ο ultra sonic μπορεί να «βλέπει» αντικείμενα με μικρή επιφάνεια (όπως τα πόδια μιας καρέκλας) αλλά είναι ποιο ευπαθής στις λάθος μετρήσεις καθώς επηρεάζεται έντονα από φαινόμενα ανάκλασης (όπως του πατώματος) και ηχούς.

  4. 3χ IR Distance Sensor
  5. IRSensor

    http://www.futurehouse.gr/index.php?main_page=product_info&cPath=49_27&products_id=226

    Αισθητήρας μέτρησης αποστάσεων με υπέρυθρες. Ικανότητα μέτρησης από 10cm έως 80cm. H ακρίβεια του είναι μεγαλύτερη από αυτήν των ultrasonic αλλά δεν εντοπίζει μικρές επιφάνειες. Επίσης η απόσταση που μπορεί να μετρήσει είναι σημαντικά περιορισμένη.

  6. 2χ Hitec HS-1425CR Continuous Rotation Servo
  7. HS-1425CR

    http://www.futurehouse.gr/index.php?main_page=product_info&cPath=50_66&products_id=330

    Δυο servo συνεχούς περιστροφής χρησιμοποιήθηκαν για την κίνηση του robot.

    Η δυνατότητα ελέγχου της κατεύθυνσης και ταχύτητας του κάθε servo ξεχωριστά μας επιτρέπει να κινηθούμε όπου και με όποιο τρόπο θέλουμε.

  8. 1χ Παιχνίδι Wall-e (από κατάστημα παιχνιδιών)
  9. wall-e

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

    Οι αλλαγές πάνω του ήταν τόσες που ίσως να ήταν προτιμότερη η κατασκευή ενός πλαισίου ξεκινώντας από το μηδέν. ;)

  10. Μπαταρία 11,1V LiPo 3S 5200mAh (από ebay)
  11. LiPo3S

    Ανάλυση για την τροφοδοσία θα βρείτε παρακάτω.


Κατασκευή

Η κατασκευή ξεκινά με την αποσυναρμολόγηση του wall-e και την αφαίρεση όλων των κομματιών του.

Το μόνο που χρειαζόμαστε και κρατάμε είναι οι ερπύστριες με την βάση στήριξης

track_with_sbc
(εδώ βλέπετε την βάση με το SBC και τον servo controller βιδωμένα)

Η κίνηση του παιχνιδιού γινόταν από έναν μόνο κινητήρα και ένα ειδικό διαφορικό το οποίο έδινε τη δυνατότητα να κινείται ευθεία μπροστά ή να κάνει δεξιόστροφη κίνηση. Για να μπορούμε να κινηθούμε προς όλες τις κατευθύνσεις και να έχουμε τον απόλυτο έλεγχο, προσαρμόστηκαν στο κάτω μέρος δυο servo συνεχούς περιστροφής. Προκειμένου να γίνει αυτό, έπρεπε να βιδωθούν «ανάποδα» οι ερπύστριες (αλλαγή η δεξιά με την αριστερή) ώστε να δημιουργηθεί ο απαιτούμενος χώρος και να γίνει μια βάση με αλουμίνιο oπου θα στηριχτούν.

EZtruck_botom

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

plastic_coupler

Το πρόβλημα ήταν όμως ότι μετά από κάποια χρήση έχαναν την σταθερότητα τους και έβγαιναν από τον άξονα των servo (ήταν πολύ μικρή η επιφάνεια του άξονα των servo).  Η μονή εταιρία που πουλούσε couplers για να χρησιμοποιήσω ήταν out of stock για 2 μήνες και έπρεπε να είμαι έτοιμος για το Athens Digital week 2010 που ήταν σε 2 εβδομάδες.

Πηρά λοιπόν ένα πλαστικό γρανάζι (από αυτά που αφαίρεσα από το παιχνίδι) και το τρύπησα τόσο ώστε να σφηνώνει πάνω στον άξονα της ερπύστριας. Από την άλλη μεριά χρησιμοποίησα ένα από τα X-horn για να τα βιδώσω μεταξύ τους και να δημιουργήσω την σύνδεση.

Gear_coupler

track_alone

servo_coupler

Είμαστε έτοιμοι να προσθέσουμε τα πρώτα ηλεκτρονικά εξαρτήματα και να κάνουμε τις πρώτες δόκιμες. Οι ηλεκτρονικές πλακέτες μπαίνουν η μια πάνω στην άλλη χρησιμοποιώντας αποστάτες.

EZtruck_back1

Πίσω όψη.

side_tracks

Πλαϊνή όψη

EZtruck_angle

Αφού τελειώσαμε με το κομμάτι της μετάδοσης της κίνησης προχωράμε στο πάνω μέρος και στην ενσωμάτωση των αισθητήρων.

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

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

sensors_angle

IR_sensor_left

IR sensor front

sensors_up

Ο αισθητήρας υπερήχων έχει τοποθετηθεί πάνω στη βάση της κάμερας στοχεύοντας όπου στοχεύει και η κάμερα.

Με αυτό τον τρόπο μπορούμε να έχουμε εκτίμηση της απόστασης του οχήματος από τον στόχο και καλύτερο υπολογισμό της πορείας που θέλουμε να ακολουθήσει.

Sonar_sensor


Τροφοδοσία

Ένα πολύ σημαντικό κομμάτι της κατασκευής είναι και η τροφοδοσία της.

Μια εκτίμηση της κατανάλωσης δείχνει ότι σε ένα από τα χειρότερα σενάρια η κατανάλωση θα είναι περίπου 2.5Ah.

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

Η χωρητικότητα της ήταν 5.2 Ah το οποίο μεταφράζεται σε πάνω από δυο ώρες συνεχόμενης χρήσης στο μέγιστο. Πρακτικά και σε κανονικές συνθήκες ξεπέρασε τις 4,5 ώρες.

Η τάση της μπαταρίας είναι 11,1V ( 12.6V σε πλήρη φόρτιση και 9V όταν είναι άδεια). Η συγκεκριμένη τάση επιλέχτηκε με βάση τα datasheet του SBC και του AdvancedServoController όπου απαιτούν τάση εισόδου 6V-15V.

Η μπαταρία διαστάσεων 16χ5χ2cm τοποθετήθηκε στο πάνω μέρος του σασί χρησιμοποιώντας μια ειδική αυτοκόλλητη ταινία που χρησιμοποιείται στην ραπτική, το γνωστό «σκρατς», δε ξέρω το κανονικό όνομα του. Το βλέπουμε σε μπουφάν και παιδικά παπούτσια. Η μια μεριά κολλάει σαν αυτοκόλλητο ενώ η άλλη κολλαει μεταξύ τους μόνο, έτσι η μπαταρία ήταν στερεωμένη αλλά μπορούσε να αφαιρεθεί για αλλαγή πανεύκολα και στη συνέχεια να «ξανακολληθεί».

LiPo_holder

Ως γνωστόν οι μπαταρίες LiPo καταστρέφονται αν η τάση τους γίνει πολύ χαμηλή (κάτω από 3V ανά cell). Για τον λόγο αυτό πάνω στην μπαταρία προστέθηκε ένα module μέτρησης τάσης του κάθε cell ξεχωριστά, όπου με ένα ενσωματωμένο buzzer ειδοποιεί ηχητικά τον χρήστη όταν αδειάσει η μπαταρία.

LiPoAlarm

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

eztruck_back

Eztruck_front


Προγραμματισμός

Για τον προγραμματισμό του οχήματος χρησιμοποιήθηκε το LabVIEW σε συνδυασμό με το δωρεάν API που υπήρχε μαζί με τα υλικά της Phidget.

Πρέπει να τονίσω εδώ ξανά ότι όλη η επεξεργασία και ότι αφορά τον προγραμματισμό έγιναν πάνω στον υπολογιστή και όχι στο SBC.

Interface

Το interface του προγράμματος  χωρίζεται σε τρεις περιοχές.

main2

Περιοχή 1

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

Για κάθε IR αισθητήρα έχουμε αριθμητική ένδειξη αλλά και χρωματική. Ανάλογα με την απόσταση που μετράμε το χρώμα μεταβάλλεται σταδιακά σε πράσινο-κίτρινο-κόκκινο για απόσταση >80cm - 30cm - <15cm αντίστοιχα.

Επίσης το χρώμα των ερπυστριών μεταβάλλεται από μαύρο (σταματημένο) σε πράσινο(κίνηση εμπρός) και κόκκινο (κίνηση προς τα πίσω) με την ένταση του χρώματος να υποδηλώνει την ταχύτητα.

Στο μέσο του οχήματος ο δείκτης μας δείχνει την κατεύθυνση-γωνια που κοιτάζει εκείνη την στιγμή η κάμερα, βλέπουμε δηλαδή την γωνία που σχηματίζεται μεταξύ του άξονα που βλέπει η κάμερα σε σχέση με τον άξονα του αμαξώματος.  Ενώ ακριβώς από πάνω του βλέπουμε την μέτρηση από τον αισθητήρα απόστασης SONAR που βρίσκετε πάνω στην κάμερα.

Περιοχή 2

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

Περιοχή 3

Στην περιοχή αυτή βρίσκεται ότι αφορά την επεξεργασία των εικόνων.

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

Επίσης βλέπουμε το frame Rate του βίντεο καθώς και τον χρόνο που απαιτείται για επεξεργασία του κάθε frame.

Παρατηρούμε ότι στην εικόνα που λαμβάνουμε από την κάμερα υπάρχουν δυο μικροί σταυροί. Ο ένας κίτρινος, μας δείχνει το κέντρο της κάμερας-εικονας ενώ ο δεύτερος, κόκκινος, μας δείχνει το σημείο του αντικειμένου που έχει αναγνωριστεί. Κατά την αυτόματη λειτουργία το όχημα προσπαθεί να μηδενίσει την απόσταση μεταξύ κόκκινου και κίτρινου σταυρού καθώς και του άξονα περιστροφής της κάμερας και του ιδίου του οχήματος(βλ. Περιοχή 1).

Το κυρίως Πρόγραμμα

Το κυρίως πρόγραμμα περιλαμβάνει 3 εισόδους. Το χειριστήριο (gamepad), τους αισθητήρες και την εικόνα. Ενώ σαν έξοδο δίνει τις κατάλληλες τιμές στις ερπύστριες και στους κινητήρες pan-tilt της κάμερας.

Το χειριστήριο

PS2 gamepad

Πρόκειται για ένα απλό τύπου PlayStation χειριστήριο με σύνδεση USB που χρησιμοποιείται με τρόπο που δίνει την αίσθηση στον χρήστη πως παίζει κάποιο ηλεκτρονικό παιχνίδι με αυτοκίνητα:

  1. X button -> κίνηση εμπρός
  2. [] button -> κίνηση προς τα πίσω
  3. < > (αριστερό δεξί βελάκι) -> σε συνδυασμό με το Χ ή το [] για να κινηθούμε αριστερά ή δεξιά
  4. Right analοg stick -> αλλάζει την θέση της κάμερας (για έλεγχο του περιβάλλοντα χώρου)
  5. L2 -> αριστερόστροφη επιτόπια κίνηση (στροφή γύρο από τον άξονα του)
  6. R2 -> δεξιόστροφη επιτόπια κίνηση
  7. L1->  image tracking. Το όχημα κινείται από τον χρήστη αλλά η κάμερα ανιχνεύει και παρακολουθεί αυτόνομα.
  8. R1-> Πλήρης αυτόνομη κίνηση με  χρήση όλων των αισθητήρων και των δεδομένων από την κάμερα. Το όχημα αναλαμβάνει αυτόνομα να φτάσει στο αντικείμενο προς αναγνώριση-στοχο αποφεύγοντας εμπόδια και σταματήσει όταν φτάσει σε μια συγκεκριμένη απόσταση από τον στόχο.

Οι αισθητήρες

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

Όλες οι τιμές των αισθητήρων χρησιμοποιούν ένα φίλτρο kalman (LINK)

Για να απορρίψουν τιμές που προκαλούνται από «θόρυβο».

Η τιμή του αισθητήρα απόστασης της κάμερας (SONAR) χρησιμοποιείται μόνο κατά την αυτόνομη λειτουργία ώστε να κρατεί μια σταθερή απόσταση από το αντικείμενο προς αναγνώριση. Έτσι γνωρίζει ποτέ να σταματήσει κατά την αυτόνομη λειτουργία.

Από τις τιμές των υπέρυθρων αισθητήρων IR χρησιμοποιώντας τον τύπο

w=75/(x-20)2 όπου x η τιμή του αισθητήρα.

Προκύπτει ένα «βάρος» w με το οποίο μεταβάλλεται η ταχύτητα της κάθε ερπύστριας.

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

Απόσταση – ποσοστό μείωσης.

Προσοχή πρέπει να δοθεί στο σημείο «ασυνέχειας» καθώς και στις τιμές <25 όπου το w πρέπει να παραμένει στο μέγιστο και όχι να μικραίνει όπως φαίνετε στην γραφική παράσταση.

Πρακτικά δηλαδή καθώς το όχημα κινείται εμπρός η απόσταση x, μεταξύ τοίχου και ΑΡΙΣΤΕΡΟΥ αισθητήρα, μειώνετε συνεχώς. Για τιμές του x μεγάλες το όχημα δεν αποκλίνει της πορείας του (w μικρό)  όσο όμως το x μικραίνει (w μεγάλο) με βάση την εκθετική σχέση που χρησιμοποιείτε η ταχύτητα του ΔΕΞΙΟΥ κινητήρα όλο και πιο απότομα θα μειώνεται κάνοντας το όχημα να στριβεί όλο και πιο πολύ δεξιά αποφεύγοντας τελικά το εμπόδιο. Το ίδιο ισχύει και για τον ΔΕΞΙ αισθητήρα.

Η χρήση μια τέτοιας προσέγγισης όπου ανάλογα την τιμή των IR αλλάζει δυναμικά η κατεύθυνση έχει πολλά πλεονεκτήματα με κυριότερο ότι δεν χρειάζεται να δημιουργούμε συνθήκες για κάθε δυνατή περίπτωση που μπορεί να συναντήσουμε.

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

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

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

Η κάμερα

Η εικόνα έπαιζε το σημαντικότερο ρόλο στην κατασκευή καθώς αυτό ήταν και το κυρίως αντικείμενο. Η κάμερα όπως ήδη αναφέρθηκε ήταν μια απλή webcamera Logitech C500 με σύνδεση USB. Ιδιαίτερο χαρακτηριστικό της είναι η υποστήριξη USB video class ή UVC.

Αυτό είναι ένα πρότυπο που χρησιμοποιείτε από τα περισσότερα Unix-like συστήματα για να χειρίζονται βιντεοκάμερες. Προτέρημα αποτελεί το γεγονός ότι η συμπίεση του βίντεο γίνετε πάνω στην κάμερα και ΟΧΙ στον υπολογιστή ελευθερώνοντας έτσι πολύτιμους πόρους σε ισχύ και bandwidth.

Το SBC με την σειρά του δίνει την δυνατότητα να λάβουμε την εικόνα μέσω δικτύου tcp/ip (και ασύρματα μέσω wi-fi) με δυο τρόπους.

  1. Χρησιμοποιώντας ένα MJPEG stream το οποίο πρόκειται στην ουσία για απλές εικόνες JPEG οι οποίες στέλνονται πολύ γρήγορα και διαδοχικά δίνοντας την αίσθηση στον χρήστη ότι παρακολουθεί ένα ενιαίο βίντεο.
  2. http://PhidgetSBC:81/?action=stream

  3. Ή με στατική εικόνα που την στέλνει μέσω της διεύθυνσης Ηttp://phidgetsbc.local:81/?action=snapshot. Το πρόβλημα με αυτή την μέθοδο είναι ότι πρέπει να κάνουμε συνέχεια POST-GET για να λαμβάνουμε το κάθε frame πράγμα το οποίο οδηγεί σε υπερβολική καθυστέρηση και πολύ χαμηλό frame Rate.

Για την λήψη της εικόνας λοιπόν φτιάχτηκε ένα ξεχωριστό thread το οποίο δουλεύει παράλληλα με το κυρίως πρόγραμμα και που συνεχώς κάνει parse τα δεδομένα που λαμβάνει από την κάμερα ψάχνοντας τα καινούργια frames και κάνοντας τα διαθέσιμα για επεξεργασία όσο το δυνατό γρηγορότερα χωρίς όμως να επηρεάζει ή να καθυστέρει τις υπόλοιπες λειτουργιές.

To frame rate δυστυχώς ακόμα και έτσι δεν ήταν ιδιαίτερα υψηλό καθώς η usb 1.0 έκδοση του SBC αποδείχτηκε ότι δεν είχε αρκετό bandwidth για χρήση.

Για ανάλυση 800χ600 το frame rate κυμαινόταν από 2 έως 5 FPS.

Ενώ η σημαντικότερη παράμετρος η καθυστέρηση ήταν περίπου 1sec πράγμα που δυσκόλευε αρκετά το σύστημα μας.

Δυστυχώς αυτοί ήταν περιορισμοί του hardware USB1.0 και wi-fi και δεν κατάφερα να βγάλω περισσότερα FPS με πιο μικρό delay.

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


Επιλογος

Το EZtruck δεν είναι παιχνίδι.

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

Η κατασκευή φτιάχτηκε για το Athens Digital week 2010 που έλαβε χώρα στην τεχνόπολις στο Γκάζι στις 7 με 10 Οκτωβρίου 2010.

eztruck ADW10

Eztruck_ADW10_stadium

grobot_team_1

    

  


 

Παρακαλώ κάντε πρώτα login για να μπορείτε να κανετε σχολια.