Πίνακας περιεχομένων:
- Βήμα 1: Υλικά
- Βήμα 2: Εγκαταστήστε το Linaro στο Dragonboard 410c
- Βήμα 3: Βήμα 2: Εγκατάσταση Βιβλιοθηκών και Λήψη πηγαίου κώδικα από το GitHub
- Βήμα 4: Ρύθμιση του AWS IoT Core, DynamoDB
- Βήμα 5: Ρύθμιση API Twilio και Dweet
- Βήμα 6: Προκλήσεις
- Βήμα 7: Αποτελέσματα και μελλοντική εργασία
- Βήμα 8: Αναφορές
Βίντεο: Cambus - Σύστημα συλλογής δεδομένων σε αστικό λεωφορείο: 8 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Μεταξύ των προβλημάτων και των δυσκολιών που είναι γνωστά στις δημόσιες συγκοινωνίες, ο πληθυσμός στερείται πληροφοριών σε πραγματικό χρόνο και με τη μικρότερη δυνατή διεκδίκηση. Ο συνωστισμός των λεωφορείων με τα μέσα μαζικής μεταφοράς απομακρύνει τους χρήστες, οι οποίοι προτιμούν να χρησιμοποιούν τα δικά τους οχήματα, παρόλο που εξακολουθούν να βρίσκονται σε κίνηση για ώρες. Εάν οι πληροφορίες σε πραγματικό χρόνο, όπως ο αριθμός των λεωφορείων, είναι εύκολα διαθέσιμες σε έναν χρήστη, μπορεί να επιλέξει αν θα περιμένει το επόμενο λεωφορείο ή θα μετακινηθεί με λεωφορείο ή θα χρησιμοποιήσει δικό του όχημα. Η δύναμη της επιλογής καθιστά τα μέσα μαζικής μεταφοράς μια πιο ελκυστική επιλογή για τον χρήστη.
Η καταμέτρηση ή η εκτίμηση των ατόμων σε εσωτερικούς χώρους μπορεί να γίνει με πολλούς τρόπους, μεταξύ των οποίων οι πιο συχνά απασχολούμενοι είναι:
- Θερμικές εικόνες.
- Όραση υπολογιστή;
- Μετρητής προσώπου?
Μεταξύ των πολλών δυσκολιών για την εκτίμηση των ανθρώπων σε ένα περιβάλλον που χρησιμοποιούν όραση υπολογιστή, οι κυριότερες είναι:
- Αποφράξεις ανθρώπων.
- Αντιστροφή φωτισμού?
- Στατική απόφραξη, δηλαδή άτομα πίσω από αντικείμενα.
- Γωνία κάμερας στο περιβάλλον.
Μια πρόκληση για αυτό το έργο είναι να γνωρίζουμε τη σωστή γωνία της κάμερας που θα βοηθήσει καλύτερα στην αφαίρεση του φόντου της εικόνας, καθώς και στη μεταβλητή φωτεινότητα κατά τη διάρκεια της ημέρας μέσα στο δίαυλο.
Ο κύριος στόχος της πρότασης είναι η δημιουργία ενός ισχυρού και διαμορφώσιμου μοντέλου για την εκτίμηση του συνωστισμού και τη διάθεση των αποτελεσμάτων στον πληθυσμό μέσω smartphone.
Βήμα 1: Υλικά
Το υλικό που απαιτείται για το έργο είναι το ακόλουθο:
1 x Dragon Board 410c.
1 x κάμερα USB.
1 x Smartphone Android.
Βήμα 2: Εγκαταστήστε το Linaro στο Dragonboard 410c
Ακολουθώντας τις οδηγίες στον παρακάτω σύνδεσμο για να εγκαταστήσετε το Linaro 17.09 στο DragonBoard 410c. Σας συνιστούμε να εγκαταστήσετε το Linaro 17.09 για υποστήριξη πυρήνα για GPS.
www.96boards.org/documentation/consumer/dr…
Βήμα 3: Βήμα 2: Εγκατάσταση Βιβλιοθηκών και Λήψη πηγαίου κώδικα από το GitHub
Το Cambus έχει αρθρωτή αρχιτεκτονική και σχεδιασμό κώδικα. Είναι δυνατό να κωδικοποιήσετε τον δικό σας αλγόριθμο μηχανικής εκμάθησης, να αλλάξετε σε άλλη υπηρεσία cloud και να δημιουργήσετε τις δικές σας εφαρμογές χρήστη.
Για να εκτελέσετε το έργο cambus, πρέπει πρώτα να κατεβάσετε τον πηγαίο κώδικα από το github (https://github.com/bmonteiro00/cambus). Εγκαταστήστε python (το Cambus ήταν σε λειτουργία για verison 2.7 και> 3.x) και τις ακόλουθες βιβλιοθήκες που χρησιμοποιούσαν «pip» (sudo apt-get install python-pip). Θα χρειαστεί να εγκαταστήσετε μια δέσμη βιβλιοθηκών στο σύστημα Linaro (Επίσης, συνιστάται η δημιουργία ενός εικονικού περιβάλλοντος - pip install virtualenv - προκειμένου να απομονωθεί το σύστημα Cambus από το SO). Εγκαταστήστε τις ακόλουθες βιβλιοθήκες:
- pip εγκατάσταση paho-mqtt
- pip εγκατάσταση numpy
- pip εγκατάσταση opencv-python
- pip εγκατάσταση opencv-contrib-python
- pip εγκατάσταση twilio
- pip εγκατάσταση matplotlib
Το κύριο πρόγραμμα χωρίστηκε σε τάξεις:
- CamBus - η κύρια τάξη.
- Αισθητήρας - μια κλάση για τη λήψη δεδομένων όπως η θέση GPS, η θερμοκρασία, το Co2.
- Counter - class με αλγόριθμο επεξεργασίας εικόνας.
Βεβαιωθείτε ότι έχουν εγκατασταθεί όλες οι βιβλιοθήκες και εκτελέστε python CamBus_v1.py.
Βήμα 4: Ρύθμιση του AWS IoT Core, DynamoDB
Χρησιμοποιήσαμε τον πυρήνα AWS IoT ως μεσίτη MQTT με TLS και X509 και NoSQL και DynamoDB για καταγραφή δεδομένων. Θα πρέπει να δημιουργήσετε έναν λογαριασμό στη διεύθυνση https://aws.amazon.com/free.). Στη συνέχεια, θα πρέπει να ακολουθήσετε τα παρακάτω βήματα για να δημιουργήσετε ένα πράγμα και να ενσωματωθείτε στο Dynamo:
docs.aws.amazon.com/iot/latest/developergu…
Βήμα 5: Ρύθμιση API Twilio και Dweet
Δημιουργήθηκε επίσης η υπηρεσία Twilio SMS. Δείτε την παρακάτω διεύθυνση URL για οδηγίες για να ολοκληρώσετε αυτό το βήμα:
www.twilio.com/docs/iam/api/account
Η ενσωμάτωση μεταξύ της εφαρμογής android και του συστήματος έγινε μέσω REST χρησιμοποιώντας την πλατφόρμα Dweet. Δεν απαιτείται εγγραφή.
dweet.io/
Βήμα 6: Προκλήσεις
Κατά τη διάρκεια της ανάπτυξης μας αντιμετωπίσαμε πολλές προκλήσεις, ξεκινώντας από τις τεχνικές OpenCV έως την πλατφόρμα AWS. Αποφασίσαμε να κωδικοποιήσουμε με την Python προκειμένου να εξοικονομήσουμε χρόνο στην ανάπτυξη σε C/C ++. Κατά την ανάπτυξή μας μόνο οι βασικές μέθοδοι Opencv όπως:
• cv2. GaussianBlur (..)
• cv2.threshold (..)
• cv2.morphologyEx (..)
• cv2.contourArea (..)
• cv2.findContours (..)
Αυτές οι βασικές μέθοδοι δεν ήταν αρκετές για να επιτύχουν μια καλή ποιότητα στην ανίχνευση ανθρώπων. Χρησιμοποιήθηκαν σενάρια με τρανταχτό βίντεο ML (Machine Learning). Έτσι, αποφασίσαμε να χρησιμοποιήσουμε τη βιβλιοθήκη μηχανικής εκμάθησης OpenCV και αντιμετωπίσαμε ένα άλλο πρόβλημα επειδή η εύρεση μιας καλής εισαγωγής δεδομένων για τον αλγόριθμο ML ήταν ένα πρόβλημα που περάσαμε πολλές ημέρες. Έχουμε χρησιμοποιήσει αλγόριθμο OpenCV SVM αλλά δεν έχει λειτουργήσει. Χρησιμοποιήσαμε το OpenCV Naive Bayses και αυτό λειτούργησε ΟΚ. Προσπαθήσαμε να χρησιμοποιήσουμε τα νευρωνικά δίκτυα Tensorflow και CNN, ωστόσο δεν τα καταφέραμε προς το παρόν. Το CNN χρησιμοποιεί πολλή επεξεργαστική ισχύ, κάτι που δεν είχαμε. Η χρήση του OpenCV ML και των βασικών μεθόδων OpenCV μας βοήθησε να φτάσουμε σε ένα καλό ποσοστό ανίχνευσης ανθρώπων. Παρ 'όλα αυτά, για κάθε τύπο βίντεο πρέπει να προσαρμόσουμε τις παραμέτρους του OpenCV προκειμένου να επιτύχουμε ένα καλό ποσοστό ανίχνευσης ανθρώπων και αποφυγής ψευδώς θετικών. Στα μέσα αυτών των δύο μηνών εξελίξαμε την πρώτη μας ιδέα να κάνουμε ένα κέντρο συλλογής δεδομένων όχι μόνο τον αριθμό των επιβατών και τη θέση GPS. Αποφασίσαμε να συλλέξουμε όχι δεδομένα χρησιμοποιώντας άλλους αισθητήρες όπως θερμοκρασία και ούτω καθεξής. Δημιουργήσαμε ένα αρχείο.ini για να παραμετροποιήσουμε την εφαρμογή και να την κάνουμε διαμορφώσιμη. Στο αρχείο Cambus.ini μπορείτε να διαμορφώσετε την εφαρμογή με πολλούς τρόπους.
Βήμα 7: Αποτελέσματα και μελλοντική εργασία
Όπως μπορείτε να δείτε στο βίντεο, ο μετρητής λειτουργεί με ακρίβεια. Οι μπλε γραμμές σηματοδοτούν το όριο εισόδου και η κόκκινη γραμμή το όριο εξόδου. Σε αυτήν την περίπτωση, χρησιμοποιήθηκε ένα βίντεο για προσομοίωση επειδή δεν μπορούσαμε να το αναπτύξουμε σε ένα λεωφορείο.
Λάβετε υπόψη ότι πρέπει να γίνει κάποια αλλαγή στην κατάστασή σας σχετικά με το μέγεθος του βίντεο, τη γωνία της κάμερας, τη φωτεινότητα κ.λπ. Κάθε τύπος βίντεο πρέπει να είναι η προσαρμογή των παραμέτρων του, όπως το φόντο αναρρόφησης πυρήνα opencv και ούτω καθεξής.
Αλλάξτε επίσης μεταβλητές στο cambus.ini, υποδεικνύοντας μεσίτη MQTT και ούτω καθεξής.
Εξετάζουμε σε μελλοντικές εφαρμογές να προσθέσουμε αισθητήρες, για παράδειγμα, θερμοκρασία, υγρασία και CO2 στο σύστημα. Η ιδέα είναι να λάβουμε δεδομένα στις πόλεις, καθιστώντας τα διαθέσιμα στην κοινότητα.
Στη συνέχεια, απαριθμούμε τα επόμενα βήματα που μπορείτε να βελτιώσετε το έργο:
- Ξαναγράψτε τον κωδικό χρησιμοποιώντας C/C ++.
- Βελτίωση αλγορίθμου ML.
- Επαναπροσδιορισμός κώδικα python.
- Αποστολή σε λεωφορείο.
Θα θέλαμε να ευχαριστήσουμε την Embarcados και την Qualcomm για όλη την υποστήριξη που δόθηκε.
Συνεργάτες:
Μπρούνο Μοντέιρο - [email protected]
Kleber Drobowok - [email protected]
Vinicius de Oliveira - [email protected]
Βήμα 8: Αναφορές
[1]
[2]
[3]
[4]
[5]
Συνιστάται:
Ηλεκτρονικό διαστημικό λεωφορείο: 8 βήματα (με εικόνες)
Electronic Space Shuttle: Έφτιαξα αυτό το έργο που συνδέει δύο από τα αγαπημένα μου πεδία: το ηλεκτρονικό και το διάστημα. Αυτό το διαστημικό λεωφορείο είναι κατασκευασμένο εξ ολοκλήρου από την αρχή
Cloudy Cloud σας θεραπεύει (Εμπόδιο αποφυγής ρομπότ με λειτουργία συλλογής): 8 βήματα
Cloudy Cloud σας θεραπεύει (Εμπόδιο στην αποφυγή ρομπότ με λειτουργία συλλογής): Μια άχρηστη μηχανή - Arduino Robot
Ανάγνωση δεδομένων υπερηχητικού αισθητήρα (HC-SR04) Δεδομένων σε οθόνη LCD 128 × 128 και οπτικοποίηση χρησιμοποιώντας Matplotlib: 8 βήματα
Ανάγνωση δεδομένων υπερηχητικού αισθητήρα (HC-SR04) Δεδομένων σε LCD 128 × 128 και οπτικοποίηση χρησιμοποιώντας Matplotlib: Σε αυτό το διδακτικό, θα χρησιμοποιήσουμε το MSP432 LaunchPad + BoosterPack για την εμφάνιση δεδομένων υπερήχων αισθητήρων (HC-SR04) σε 128 × 128 LCD και στείλτε τα δεδομένα στον Η / Υ σειριακά και οπτικοποιήστε τα χρησιμοποιώντας το Matplotlib
Πώς να φτιάξετε μια μικρογραφία PowerTech (λεωφορείο δράκων): 11 βήματα
Πώς να χτίσετε μια μικρογραφία PowerTech (λεωφορείο δράκων): | ________ | ________ | ________ | ________ | ________ | __________ | ________ | _______ | __________ | _______ | ______ || ________ | ________ | ________ | ________ | ________ | __________ | ________ | _______ | __________ | _______ | ______ || ________ | ________ | ________ | ________ | ________ |
Λεωφορείο I2C για ATtiny και ATmega: 8 βήματα
I2C Bus για ATtiny και ATmega: Λατρεύω τους μικροελεγκτές Atmel AVR! Από τη δημιουργία του Συστήματος Ανάπτυξης Γκέτο που περιγράφεται στο παρόν Εγχειρίδιο, δεν έχω τελειώσει να διασκεδάζω να πειραματίζομαι με το AVR ATtiny2313 και το ATmega168 ειδικότερα. Έφτασα στο σημείο να γράψω ένα Instr