Η Βιβλιοθήκη κίνησης επιτέλους έτοιμη ( σαν αρχιτεκτονική )

April 6th, 2009

Μου πήρε 2 εβδομάδες να την συμμαζέψω αλλά τελικά η βιβλιοθήκη κίνησης ( MotorLib ) είναι έτοιμη από αρχιτεκτονικής άποψης και σαν εκτελέσιμος κώδικας.

Αποτελείται από τρία layers

Στην κορυφή το DLL interface
||
\ /
Το Hardware Abstraction Layer
||
\ /
Και τα device specific
———– ———-
CPP NXT MD23
———– ———-

Σχετικά με την κίνηση παρότι είναι πλέον δυνατόν το main executable να δίνει εντολές στα μοτέρ και να κάνει poll τα πάντα με ενιαίο τρόπο , ωστόσο η λειτουργία τον μοτέρ πέρα από το οτι θα πρέπει να γίνεται με διαφανή τρόπο ( εξού και η βιβλιοθήκη αυτή ) θα πρέπει και να μπορεί να αντιδρά κατα την ίδια την κίνηση αναπροσαρμόζοντας την σε περίπτωση μικρο παρεκλήσεων ενώ επίσης οι εντολές υψηλού επιπέδου ( θέλουμε να φτάσουμε στο σημείο X,Z ) θα πρέπει πέρα από τον αλγόριθμο A* που έχω ετοιμάσει έτσι ωστε να κάνει resolve το μονοπάτι να σπάνε σε υπο κινήσεις μεγάλης ακρίβειας που να συνδυάζονται με την μέγιστη ταχύτητα..

Ενδιαφέρουσα έμπνευση για την κίνηση γενικά έχει αποτελέσει το νέο μου hamster :) καθώς και τα παρακάτω άρθρα!
To hamster ακόμα και σε απόλυτο σκοτάδι έχει πολύ καλή αίσθηση του προσανατολισμού με τα μουστάκια του ενώ ακολουθεί πάντα διαδρομές κοντά σε τοίχους χωρίς να βγαίνει εύκολα σε ανοιχτά μέρη. Κάπως έτσι θα λειτουργεί το Ultrasconic για τις πολύ κοντινές αποστάσεις ενώ το Depth Map θα χαρτογραφεί μεσαίες απόστασεις.. Η απόσταση που διανείεται θα είναι συνησταμένη των μοτέρ και του Visual κομματιού..

http://en.wikipedia.org/wiki/Motor_coordination
http://www.scholarpedia.org/article/Confabulation_theory

Νέες φωτογραφίες - Βιβλιοθήκη κίνησης

March 19th, 2009

Μέχρι το βράδυ σκοπεύω ( και ευελπιστώ ) οτι θα έχω ενοποιήσει την βιβλιοθήκη για το NXT και το RD02 έτσι ωστε να μπορεί να υπάρχει ένα Hardware Abstraction Layer και να παίζει το project και με τα 2 χωρίς να είναι εμφανές στο πρόγραμμα..

Bug Fixes

March 16th, 2009

Διόρθωσα αρκετά μικρόπροβλήματα και σήμερα , κυρίως από bug fixing στο VideoSubsystem.dll χρειάζεται κάποιος έλεγχος για οριακά Patches/Pixels τα οποία μέχρι τώρα επειδή αποτυγχάνουν στους ελέγχους για το αν ανήκουν στο surface της εικόνας αφήνουν artifacts όπως μπορείτε να δείτε στο DepthMap στα αριστερά και δεξιά..
Κατα τα άλλα στο Main PC που γίνεται develop το πρόγραμμα πετυχαίνω μέσο ρυθμό επεξεργασίας εικόνας 35-40ms (25fps PAL , σχεδόν και ανανεώνοντας depth map κάθε 100ms , face recognition κάθε 600ms και WebStreaming κάθε 1000ms).. Από αυτούς τους χρόνους “μεγάλο” χρονικό διάστημα παίρνει η ζωγραφική στην οθόνη αλλά ακόμα δεν έχω μετρήσει χρόνους χωρίς να είναι ενεργοποιημένη..
Σε περιπτώσεις πολύ έντονης κίνησης σε διεσπαρμένα σε ολο το οπτικό πεδίο δεν τρέχει το Movement Depth Map αλλά το full Depth Map που έχω κατασκευάσει το οποίο όμως παίρνει περίπου 1000ms για να τελειώσει σε σχέση με το Instant Depth Map..
Θα πρέπει μια από αυτές τις ημέρες να καθήσω και να καταγράψω τι ακριβώς κάνει ο ένας αλγόριθμος και τι ο άλλος και γιατί έχουν αυτή την διαφορά σε απόδοση!

Επίσης μια προσωπική παρατήρηση , κοιτώντας το ημερολόγιο πάνω δεξιά βλέπω ένα pattern σε σχέση με την προηγούμενη εβδομάδα.. Κυρίως το Σαββ/Κύριακο έχω χρόνο για να κάνω αλλαγές στο Project.. :'(
Αυτά για τώρα!

ScreenShots

March 16th, 2009

Attachments:

ScreenShots

March 16th, 2009

Attachments:

Speed/Bug Fixes

March 15th, 2009

Έχω εισάγει πολλά νέα precalculation tables για ακριβές υπολογιστικά πράξεις ενώ tweakαροντας το resolution του z-buffer για Instant Depth Maps πετυχαίνω περίπου 30ms delay για το extraction της πληροφορίας σε σχετικά low movement..

Ανακάλυψα επίσης και κάποια overflows μεταβλητών που γίνονται τα οποία είναι επόμενα στην λίστα διορθώσεων!

Αφαιρέσεων συνέχεια!

March 9th, 2009

Περίπου 400 επιπλέον γραμμές κώδικα αφαιρέθηκαν και βελτιώθηκαν τα transactions μεταξύ VisionSubsytem.dll και του Main exe της εφαρμογής τα οποία αυξάνουν το framerate επεξεργασίας της εφαρμογής!

Γενικά πέρα από τα τεχνικά θέματα τον τελευταίο καιρό με απασχολούν και ορισμένα φιλοσοφικά θέματα ,όπως το Moravec?s paradox ( http://en.wikipedia.org/wiki/Moravec%27s_paradox ). Είναι περίεργο πως πράγματα που για τον πιο έξυπνο άνθρωπο μπορεί να είναι δύσκολα όπως να κερδίσει σε έναν αγώνα σκακιού ή να ανακαλέσει από 10000000 τηλέφωνα μπορούν να γίνουν “εύκολα” από Η/Υ.. Ενώ αντιθέτως η όραση η ακοή και άλλα παρόμοια tasks μπορούν να εκτελεστούν χωρίς λάθη από το σύνολο σχεδόν των ανθρώπων χωρίς καμμία δυσκολία αλλά παρόλα αυτά απέχουμε πάρα πολύ από την έστω και borderline εφαρμογή τους σε μηχανές! Πράγμα που δείχνει πόσο έχουν βελτιστοποιηθεί στα 6 δισεκατομμύρια (?) χρόνια εξέλιξης της ζωής! Αναρωτιέμαι αν σε 6 δισεκατομμύρια χρόνια η τότε μορφή ζωής θα βρίσκει τόσο ενστικτωδώς απαντήσεις στα ερωτήματα που μας απασχολούν όσο εύκολο είναι για εμάς να αναπνέουμε και να περπατάμε και τι προκλήσεις μπορεί να αντιμετωπίζει ένας τόσο εξελιγμένος οργανισμός! Σίγουρα πράγματα που ούτε τα φανταζόμαστε!

Επιγραμματικά!
Humans, after 6 billion years of evolutions seem to have perfected vision on many different levels. If I only had 6 billion years.

Τέλος ένα video από το Instant Depth Map που προσθέτω τις τελευταίες μέρες στο Project!

Είναι σε πολύ προκατασκευαστική φάση αλλά ήδη δουλεύει αρκετά καλά!