PathFinding Lines!

December 6th, 2009

Πλέον μετά από το βασικό path planning το οποίο και έγινε πλήρως implemented το επόμενο layer ήταν η εξαγωγή primitive κινήσεων , δηλαδή ευθειών την οποία και προσέθεσα , βρισκόμαστε λοιπόν στο επίπεδο 1 και απομένουν τα 2 και 3 ..!

0 - A * Implementation
1 - Εξαγωγή ευθειών και στροφών της διαδρομής
2 - Εκκαθάριση περιττών κόμβων και πλήρης υπολογισμός ακτίνων στροφής
3 - Εξαγωγή high-level λίστας οδηγιών για τον “driver” των moter του GuardDog!

Στην παρακάτω εικόνα μπορείτε να δείτε την κόκκινη γραμμή που έχει γίνει plot ανάμεσα στα κίτρινα κουτιά και είναι η “πορεία του robot”

PathFinding Lines

Και μια επίδειξη του πως θα πρέπει να μετασχηματίζεται ο φυσικός κόσμος στην μνήμη του PathFinding!

PathFinding Simulation

PathPlanning Basics

December 1st, 2009

Το πιο βασικό layer του Path Planning είναι έτοιμο

ScreenShot 0

ScreenShot 0

ScreenShot 0

Linux Motor Programming :)

November 22nd, 2009

Τις τελευταίες 2 μέρες ασχολούμαι με το porting της βιβλιοθήκης που έχω γράψει για τα μοτέρ σε Linux! :p
Για άλλη μια φορά τα πράγματα είναι πιο εύκολα από ότι περίμενα και λογικά σε λίγα λεπτά θα είναι έτοιμο το USB -I2C - MD23 module του robot..!

Επίσης επειδή το GUI Shell του project είναι wxWidgets θα βάλω μάλλον και ένα wxJoystick για να οδηγώ το robot με το joypad μου :D:D:D

...

November 7th, 2009

Επίσης το προηγούμενο ASCII art είναι μάλλον λίγο αποτυχήμένο.. :roll:

InputVideo lib + VideoSubSytem Ported!

November 7th, 2009

Πλέον απομόνωσα το Video Input system σε μια στατική βιβλιοθήκη , ενώ πλέον μπορώ και κάνω compile το VideoSubsystem μετά από κάποιες μικρές αλλαγές στον κώδικα..!

Κατα πάσα πιθανότητα αύριο θα συνδυάσω τα 2 αυτά κομμάτια , έτσι ώστε πλέον το VideoSubsystem να εκκινεί από μόνο του και τις Webcams αντί για να πρέπει οι πληροφορίες να γίνονται switched από το GUI

Με ένα ( ASCII ) σχήμα η αρχιτεκτονική μέχρι τώρα ήταν η εξής :

| VIDEO INPUT | =======\ | ROBOVISION GUI | \=======\ | VIDEO SUBSYSTEM |
ενώ από εδώ και στο εξής θα είναι

| ROBOVISION GUI | \=======\ | VIDEO SUBSYSTEM | \======= | VIDEO INPUT

Τελικά με την απόσπαση του GUI θα έχω κάτι τέτοιο..

| ROBOVISION GUI | \=======\ | ROBOVISION SERVICE | \=======\ | VIDEO SUBSYSTEM | \======= | VIDEO INPUT

Να σημειώσω εδώ οτι τα επίπεδα robovision service , video subsystem και video input είναι όλα τοπικά το ένα στο άλλο καθότι είναι στατικές βιβλιοθήκες και όλες οι ανταλλαγές εικόνων ουσιαστικά γίνονται περνόντας pointers στην ίδια θέση μνήμης &#59;) ..!

Webcams working :D

November 6th, 2009

:)

Το direct input από τις Webcams με την χρήση της βιβλιοθήκης που ανέφερα παραπάνω , των kernel drivers του project microdia ( http://groups.google.com/group/microdia/web/project-status?hl=en , http://repo.or.cz/w/microdia.git ) και με το flag
LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so έτσι ωστε να γίνεται το conversion από V4L σε V4L2 transparently πλέον έχω κανονικό framerate από το application :D:D

Επίσης εδώ να προσθέσω οτι κατάφερα να το κάνω αυτό σε μια μέρα κατεβάζοντας συνολικά γύρω στα 500 kb extra κώδικα σε σύγκριση με τα 500MB και τις εβδομάδες που χρειάστηκαν για να κατεβάσω το directX sdk , να το καταλάβω και να γράψω έναν απλό frame grabber εκεί..! :|

GuardDog being ported to linux!

November 5th, 2009

Μετά το επιτυχές calibration των καμερών με τα καινούργια plexiglass plates , αποφάσισα πως η επόμενη αλλαγή που θα πρέπει να γίνει στο project είναι porting σε linux καθότι υπάρχουν αρκετά περιττά layers ( τρανταχτό παράδειγμα οι τραγικοί drivers των vx-6000 που εκκινούν στο boot άχρηστα services και ενεργοποιούν effects στα frames των webcams ενώ αλλάζουν τα settings φωτεινότητας αποφασίζοντας μόνες τους..

Επειδή από αρκετά νωρίς στο project προετοιμαζόμουν για αυτή την αλλαγή ο modular τρόπος με τον οποίο είναι γραμμένο το project σε συνδυασμό με τα σχετικά λίγα dependencies σε βιβλιοθήκες του συστήματος και την ISO-C++ που χρησιμοποιώ B) νομίζω οτι θα κάνουν σχετικά εύκολη την μετάβαση τουλάχιστων των βασικών λειτουργιών..

Από εκεί και εμπρός features όπως το Speech Recognition ούτως ή άλλως ήταν αρκετά επιβαρυντικά στο lite/ power efficient σύστημα από άποψη κατανάλωσης πόρων και σε κάθε περίπτωση δεν είναι ένας από τους πρωταρχικούς στόχους του project..

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

Ένας ακόμα λόγος για τον οποίο γίνεται η μετάβαση είναι καθώς σκοπεύω να κάνω implement την διαδικασία Stereo Match σε OpenCL/CUDA enabled GPU για να μπορέσω να ανεβάσω την ανάλυση των εισερχομένων video feeds και να έχω καλύτερης ποιότητας depth maps από τα αρκετά περιοριστικά 320x240!

Σχετικά με την πρόοδο μου τώρα ουσιαστικά ο “αντικαταστάτης” του direct X / direct input είναι το V4L2 ( Video 4 Linux 2 ) για το οποίο αρκετά εκτενώς γίνεται αναφορά εδώ ->
http://www.rubli.info/academia/projects/thesis/linux_webcam.pdf

Για τους δικούς μου σκοπούς θα χρησιμοποιήσω ένα wrapper της βιβλιοθήκης V4L2 για C++
http://staff.science.uva.nl/~bterwijn/Projects/V4L2/ που ουσιαστικά ενσωματώνει σε κλάσεις το default παράδειγμα του V4L2 extention του linux kernel ( http://v4l2spec.bytesex.org/spec/capture-example.html )

Επίσης το νέο local GUI της εφαρμογής θα είναι wxWidgets και πλέον το project θα είναι πλήρως αποσπώμενο από την γραφική διεπαφή..

Αυτά λοιπόν..

Robovision Linux