Π ΑΝΕΠΙΣΤΗΜΙΟ Π ΑΤΡΩΝ Π ΟΛΥΤΕΧΝΙΚΗ Σ ΧΟΛΗ Τ ΜΗΜΑ Μ ΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ Π ΛΗΡΟΦΟΡΙΚΗΣ Κ ΑΤΑΝΕΜΗΜΕΝΑ Σ ΥΣΤΗΜΑΤΑ ΙΙ Αδάμ Γιώργος Γκορτσίλας Δημήτρης Οικονομίδης Γιάννης 2009
TARIFA Project 1. Περιγραφή προβλήματος-αρχιτεκτονική Σκοπός του συστήματος Traffic and Abnormality Road Instructor For Anyone(T.A.R.I.F.A), είναι η καταγραφή της κίνησης σε οδικό δίκτυο καθώς επίσης και η ανίχνευση ανωμαλιών σε αυτό. Η γενική ιδέα του συστήματος είναι ότι τα αυτοκίνητα που κινούνται σε κάποιο δρόμο είναι αυτά που με κατάλληλο εξοπλισμό καταγράφουν την κίνηση και τις λακκούβες που συναντούν. Αυτές τις καταγράφουν ώστε οι πληροφορίες να είναι διαθέσιμες τελικά μέσω διαδικτύου Διάγραμμα Συστήματος: Το διάγραμμα του συνολικού συστήματος δείχνει την διασύνδεση των επιμέρους συστημάτων έτσι ώστε να προκύψει το επιθυμητό αποτέλεσμα. Το αυτοκίνητο, το οποίο περιλαμβάνει τον φορητό υπολογιστή πάνω στον οποίο είναι συνδεδεμένο το gps αλλά και το basestation, συνδέεται ασύρματα μέσω του Διαδικτύου με τον server μας όπου φιλοξενείται η κύρια βάση δεδομένων μας. Ο χρήστης μπορεί μέσω του διαδικτύου να αποκτήσει πρόσβαση στις πληροφορίες αυτές. 2. Συλλογή Δεδομένων από Spots Εδώ υπάρχει μια λογική sever-client όπου client είναι το sunspot και το basestation έχει το ρόλο του server. Στο sunspot τρέχει μια εφαρμογή που δίνει πληροφορίες για την επιτάχυνση(telemetryonspot), οι οποίες χρησιμοποιούνται για την ανίχνευση λακκούβας. Οι πληροφορίες αυτές στέλνονται στο basestation μέσω ασύρματης σύνδεσης(αν και λόγω της περιορισμένης διάρκειας ζωής της μπαταρίας, μπορεί να συνδεθεί και μέσω usb). Το spot τοποθετείται σε σταθερή θέση ώστε ο Ζ να ναι κάθετος στο επίπεδο του δρόμου και να μην λαμβάνουμε έτσι λανθασμένη υπόδειξη για ανωμαλίες του εδάφους. Το spot κάνει τις μετρήσεις και τις στέλνει στο basestation. Στο basestation τρέχει η εφαρμογή TelemetryOnDesktop όπου είναι υλοποιημένοι ο accelerometerlistener και ο gpslistener, οι δύο κλάσεις που λαμβάνουν τα δεδομένα απ το spot και τα επεξεργάζονται. Η ανίχνευση της λακκούβας γίνεται στο basestation(βάση των μετρήσεων που έλαβε απ το spot)μέσω ενός flag το οποίο τίθεται ίσο με ένα κάθε φορά που η επιτάχυνση στον άξονα
ενδιαφέροντος ξεπερνάει ένα κατώφλι. Το κατώφλι αυτό προέκυψε εμπειρικά και η τιμή του είναι αρκετά ικανοποιητική αν και μπορεί να τροποποιηθεί, αλλάζοντας έτσι την ευαισθησία του μετρητή. 3. Συλλογή Δεδομένων από GPS Η καταγραφή της κίνησης γίνεται παρατηρώντας την θέση και την ταχύτητα του οχήματος, μέσω ενός δέκτη GPS, ο οποίος είναι συνδεδεμένος σε μια θύρα USB του φορητού υπολογιστή. Η επικοινωνία με αυτή τη συσκευή γίνεται με τη χρήση του gpsd 1, ο οποίος είναι ένας ανοιχτού κώδικα daemon που συλλέγει πληροφορίες από GPS δέκτες. Η ανάγνωση της εξόδου του gpsd πραγματοποιείται με τη χρήση μιας TCP σύνδεσης στη θύρα 2947. Μετά την εγκαθίδρυση της σύνδεσης επιλέγουμε να λαμβάνουμε τα μηνύματα του daemon σε streaming mode. Τα μηνύματα του gpsd αποστέλλονται σε συγκεκριμένη μορφή: GPSD,O=MID2 1243538903.000 0.005 38.210157 21.070104-82.93 12.80 24.34 0.0000 0.000 0.000? 25.60? 3 Οι συντεταγμένες, που αποτελούν τη χρήσιμη πληροφορία και εμφανίζονται στην 4η και 5η στήλη, εξάγονται και αποθηκέυονται στις αντίστοιχες μεταβλητές του διαχειριστή GPS της εφαρμογής μας. Για την εξαγωγή της ταχύτητας υπολογίζεται η ευκλείδεια απόσταση διαιρεμένη με τη χρονική διαφορά των διαδοχικών μετρήσεων. 4. Αποθήκευση δεδομένων στην τοπική βάση Η τοπική βάση αποτελείται από τα εξής πεδία: ID, lat, lon, lak, tstamp που είναι το id (κλειδί) που μεταφράζονται σε γεωγραφικό μήκος, γεωγραφικό πλάτος, λακκούβα και tstamp που κρατάει το χρόνο. Το πεδίο lak είναι ένας χαρακτήρας που αν έχει τιμή 1 σημαίνει ότι υπάρχει λακκούβα ενώ αν έχει την τιμή 0 τότε δεν υπάρχει. Οι τιμές των lat,lon έρχονται από το gps και τον gpslistener του basestation ενώ για την λακκούβα έρχονται από τον accelometer που βρίσκεται στο basestation..η καταγραφή των τιμών γίνεται κάθε ένα δευτερόλεπτο και είναι ανεξάρτητη από τους listeners( gps listener, accelometer listener). Σύμφωνα με τις δοκιμές μας οι μετρήσεις καταλαμβάνουν χώρο 30bytes η κάθε μία, επομένως έχουμε 105 kb/hour μέγεθος μετρήσεων. Για την σύνδεση της εφαρμογής μας με την βάση χρησιμοποιήθηκε το jar αρχείο mysql-connectorjava 5. Αποστολή δεδομένων στον TARIFA server Η αποστολή των δεδομένων της τοπικής βάσης του laptop στην κεντρική βάση του tarifa server απαιτεί την ύπαρξη μιας ενεργής σύνδεσης δικτύου. Η δικτύωση του laptop υποθέτουμε οτι δε θα είναι ενσύρματη και χρησιμοποιούμε ένα bash script για ανίχνευση ασυρμάτου δικτύου, το οποίο κάνει χρήση των iwlist και iwconfig του linux. Έτσι, αφού ανιχνευθούν τα διαθέσιμα ασύρματα δίκτυα και αποκλειστούν τα προστατευμένα δίκτυα, τελικά επιλέγεται εκείνο με το καλύτερο σήμα. Η εφαρμογή του laptop επιχειρεί (περιοδικά) την εγκαθίδρυση μιας σύνδεσης με τον απομακρυσμένο κεντρικό server ανα καθορισμένα χρονικά διαστήματα, ενώ γίνεται και η χρήση timeouts. Εφόσον επιτύχει η σύνδεση, αποστέλλεται ένα αναγνωριστικό (ID) του laptop και στη συνέχεια λαμβάνει το unix timestamp της πιο πρόσφατης μέτρησης του που υπάρχει ήδη αποθηκευμένη στον tarifa server. Για εξοικονόμηση χώρου στο laptop, τα δεδομένα που είναι παλαιότερα από αυτό το timestamp, διαγράφονται, ενώ στέλνονται όλες οι νεότερες μετρήσεις. Ο κεντρικός server, ορίζεται να περιμένει για νέες συνδέσεις σε καθορισμένη θύρα (2500). Για κάθε νέα σύνδεση, αρχικά διαβάζει το ID του laptop και στη συνέχεια βρίσκει στη βάση δεδομένων το timestamp της τελευταίας μέτρησης και το αποστέλλει. Ύστερα, εισέρχεται σε κατάσταση μόνιμης 1 http://gpsd.berlios.de/
ανάγνωσης δεδομένων (μετρήσεων) και αναλαμβάνει την αποθήκευση τους στην βάση. Η διαδικασία ανάγνωσης τελειώνει με το κλείσιμο της σύνδεσης από τη μεριά του client. 6.Εξαγωγή Δεδομένων Τα δεδομένα μας αναπαρίστανται ως εξής: κάθε λακούβα αναπαρίσταται στο google maps ως ένας marker. Οι markers είναι στοιχεία του google maps api και το default τους format είναι ένας κύκλος με μια τελεία μέσα του. Η κίνηση αναπαρίσταται με polylines που είναι και αυτές στοιχεία του google maps api. Με πράσινο ο δρόμος δεν έχει κίνηση, με κίτρινο η κίνηση είναι αρκετή ενώ με κόκκινο η κίνηση είναι μεγάλη. Παρέχουμε 2 τρόπους αποθήκευσης των δεδομένων με kml files, ή με απευθείας εκτέλεση με javascript ενσωματωμένη στο html αρχείο. Ακολουθήθηκαν και οι 2 προσεγγίσεις γιατί: το kml είναι συμβατό και με google earth και με google maps κάτι που το καθιστά ιδιαίτερα χρήσιμο. Όμως θα πρέπει το kml αρχείο να είναι ανεβασμένο σε ένα πραγματικό server (δε μπορει να ειναι localhost). Έτσι χρησιμοποιήσαμε τον χώρο στο http://students.ceid.upatras.gr/~gkortsilas/ για την αποθήκευση των αρχείων μας και αλλάξαμε και τα δικαιώματα για να μπορούν να προσπελαστούν. Για αυτό το λόγο χρησιμοποιήθηκε και η προσέγγιση με την javascript. Επίσης για την χρησιμοποίηση του google maps api απαιτείται η χρήση ενός κλειδιού που δίνεται από την google. Το kml είναι ένα format της google για την αναπαράσταση δεδομένων. Είναι σαν το xml αλλά έχει τα tags είναι δεσμευμένα και δεν μπορεί να βάλει ο χρήστης ότι θέλει. Εμείς χρησιμοποιήσαμε τα <name><placemark><point><coordinates><style><linestyle><color><width> τα οποία χρησιμοποιούνται για όνομα, το placemark είναι για marker το point είναι για ποιο είδος marker θα χρησιμοποιηθεί το coordinates είναι οι συντεταγμένες που θέλουμε τα <Style><LineStyle> χρησιμοποιούνται για τα polylines το color για το χρώμα της γραμμής και το width το πάχος της. 7. Σύνοψη Αποτελεσμάτων Το σύστημα T.A.R.I.F.A δουλεύει αρκετά ικανοποιητικά, δεδομένου ότι εκπληρώνεται ο αρχικός σκοπός που είχε τεθεί, η αναπαράσταση της κίνησης και των ανωμαλιών κατά μήκος του οδικού δικτύου. Ένα παράδειγμα μιας τέτοιας αναπαράστασης για μια διαδρομή που πραγματοποιήθηκε είναι η εξής:
Ο χρήστης έχει την επιλογή να ενεργοποιήσει την εμφάνιση λακούβων, κίνησης ανάλογα με τις ανάγκες του. Οι γραμμές αναπαράστασης της κίνησης δεν πέφτουν ακριβώς πάνω στους δρόμους αλλά αυτό είναι κάτι που σχετίζεται με τις μετρήσεις του gps και το googlemap api. Είναι επίσης αρκετά ικανοποιητικό το μέγεθος της μνήμης που απαιτείται για την αποθήκευση των δεδομένων αφού μιλάμε για τάξη των kbytes όσων αφορά την τοπική βάση δεδομένων του φορητού υπολογιστή και μάλιστα για την μέση διαδρομή. Το γεγονός ότι τα μέρη που απαρτίζουν το σύστημα είναι λειτουργικά ανεξάρτητα μεταξύ τους κάνει σχετικά εύκολη την επέκταση του συστήματος έτσι ώστε τα δεδομένα να προκύπτουν από πολλούς χρήστες των οποίων τα οχήματα είναι εφοδιασμένα με τα κατάλληλα όργανα. Αυτό είναι κάτι που αποκτά ιδιαίτερη βαρύτητα καθώς οι απαραίτητες μετρήσεις και συνδέσεις είναι διαδικασίες που μπορούν να γίνουν από τις συσκευές τηλεφωνίας 3ης και πολύ περισσότερο 4ης γενιάς. Άρα, ακόμα και κάποιο όχημα δεν φέρει τις συσκευές που απαιτούνται, αρκεί ο χρήστης του οχήματος να έχει στην κατοχή του ένα τέτοιο κινητό τηλέφωνο με εγκατεστημένο το κατάλληλο λογισμικό!