Spisu treści:
- Krok 1: Materiały
- Krok 2: Zainstaluj Linaro w Dragonboard 410c
- Krok 3: Krok 2: Zainstaluj biblioteki i pobierz kod źródłowy z GitHub
- Krok 4: Konfigurowanie AWS IoT Core, DynamoDB
- Krok 5: Skonfiguruj interfejsy API Twilio i Dweet
- Krok 6: Wyzwania
- Krok 7: Wyniki i przyszła praca
- Krok 8: Referencje
Wideo: Cambus - System zbierania danych w autobusie miejskim: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Wśród problemów i trudności znanych w transporcie publicznym ludności brakuje informacji w czasie rzeczywistym i najmniej asertywności. Przepełnienie autobusów komunikacji miejskiej odstrasza użytkowników, którzy wolą korzystać z własnych pojazdów, mimo że są w korku godzinami. Jeśli informacje w czasie rzeczywistym, takie jak liczba autobusów, są łatwo dostępne dla użytkownika, może on wybrać, czy czekać na następny autobus, czy jeździć autobusem lub korzystać z własnego pojazdu. Siła wyboru sprawia, że transport publiczny jest dla użytkownika bardziej atrakcyjną opcją.
Liczenie lub szacowanie osób w pomieszczeniach można wykonać na wiele sposobów, wśród których najczęściej stosowane są:
- Obrazy termiczne;
- Wizja komputerowa;
- Licznik twarzy;
Wśród kilku trudności w ocenie ludzi w środowisku za pomocą wizji komputerowej, główne z nich to:
- Okluzja ludzi;
- Oświetlenie odwracające;
- Okluzja statyczna, czyli ludzie za przedmiotami;
- Kąt kamery do otoczenia;
Wyzwaniem dla tego projektu jest poznanie odpowiedniego kąta kamery, który najlepiej pomoże w odjęciu tła obrazu, a także zmiennej jasności w ciągu dnia wewnątrz autobusu.
Głównym celem wniosku jest stworzenie solidnego i konfigurowalnego modelu do oszacowania przeludnienia i udostępnienia wyników społeczeństwu za pośrednictwem smartfonów.
Krok 1: Materiały
Materiał potrzebny do projektu to kolejny:
1 x tablica smoka 410c;
1 x kamera USB;
1 x smartfon z systemem Android;
Krok 2: Zainstaluj Linaro w Dragonboard 410c
Postępuj zgodnie z instrukcjami podanymi w poniższym łączu, aby zainstalować Linaro 17.09 na DragonBoard 410c. Zalecamy zainstalowanie Linaro 17.09 do obsługi jądra dla GPS.
www.96boards.org/documentation/consumer/dr…
Krok 3: Krok 2: Zainstaluj biblioteki i pobierz kod źródłowy z GitHub
Cambus ma modułową architekturę i projekt kodu. Możliwe jest zakodowanie własnego algorytmu uczenia maszynowego, przejście na inną usługę w chmurze oraz tworzenie własnych aplikacji użytkownika.
Aby uruchomić projekt cambus, musisz najpierw pobrać kod źródłowy z github (https://github.com/bmonteiro00/cambus). Zainstaluj pythona (Cambus był w trybie do uruchamiania w wersji 2.7 i > 3.x) i następujących bibliotekach przy użyciu „pip” (sudo apt-get install python-pip). Konieczne będzie zainstalowanie kilku bibliotek w systemie Linaro (Zaleca się również stworzenie środowiska wirtualnego - pip install virtualenv - w celu odizolowania systemu Cambus od SO). Proszę zainstalować następujące biblioteki:
- pip zainstaluj paho-mqtt
- pip zainstaluj numpy
- pip zainstaluj opencv-python
- pip zainstaluj opencv-contrib-python
- pip zainstaluj twilio
- pip zainstaluj matplotlib
Program główny został podzielony na zajęcia:
- CamBus - klasa główna;
- Sensor - klasa do pozyskiwania danych takich jak pozycja GPS, temperatura, Co2.
- Licznik - klasa z algorytmem przetwarzania obrazu.
Upewnij się, że wszystkie biblioteki zostały zainstalowane i uruchom python CamBus_v1.py.
Krok 4: Konfigurowanie AWS IoT Core, DynamoDB
Użyliśmy rdzenia AWS IoT jako brokera MQTT z TLS i X509 oraz NoSQL i DynamoDB do rejestrowania danych. Będziesz musiał utworzyć konto na https://aws.amazon.com/free.). Następnie będziesz musiał wykonać poniższe kroki, aby stworzyć coś i zintegrować z Dynamo:
docs.aws.amazon.com/iot/latest/developergu…
Krok 5: Skonfiguruj interfejsy API Twilio i Dweet
Uruchomiono również usługę SMS Twilio. Zobacz poniższy adres URL, aby uzyskać instrukcje, jak wykonać ten krok:
www.twilio.com/docs/iam/api/account
Integracja aplikacji na Androida z systemem została wykonana poprzez REST z wykorzystaniem platformy Dweet. Rejestracja nie jest wymagana.
dweet.io/
Krok 6: Wyzwania
Podczas naszego rozwoju napotkaliśmy wiele wyzwań, począwszy od technik OpenCV po platformę AWS. Zdecydowaliśmy się na kodowanie w Pythonie, aby zaoszczędzić czas na programowaniu w C/C++. Podczas naszego rozwoju tylko podstawowe metody Opencv takie jak:
• cv2. Rozmycie Gaussa(..)
• cv2.próg(..)
• cv2.morfologiaEx(..)
• cv2.contourArea(..)
• cv2.findContours(..)
Te podstawowe metody nie wystarczyły do osiągnięcia dobrej jakości wykrywania ludzi. Wykorzystano scenariusze z chwiejnym wideo ML (uczenie maszynowe). Zdecydowaliśmy się więc na użycie biblioteki uczenia maszynowego OpenCV i pojawił się kolejny problem, ponieważ znalezienie dobrego wejścia danych dla algorytmu ML było problemem, na który spędziliśmy wiele dni. Użyliśmy algorytmu OpenCV SVM, ale nie działało. Użyliśmy OpenCV Naive Bayses i ten działał OK. Próbowaliśmy wykorzystać sieci neuronowe Tensorflow i CNN, jednak na razie nie udało się. CNN używa dużej mocy obliczeniowej, której nie mieliśmy. Korzystanie z OpenCV ML i podstawowych metod OpenCV pomogło nam osiągnąć dobry wskaźnik wykrywania ludzi. Niemniej jednak dla każdego typu wideo musimy dostosować parametry OpenCV, aby osiągnąć dobry wskaźnik wykrywania ludzi i uniknąć fałszywych alarmów. W połowie tych dwóch miesięcy rozwinęliśmy nasz pierwszy pomysł, aby zrobić centrum gromadzenia danych, a nie tylko liczba pasażerów i lokalizacja GPS. Zdecydowaliśmy się zbierać dane, a nie za pomocą innych czujników, takich jak temperatura itp. Stworzyliśmy plik.ini, aby sparametryzować aplikację i uczynić ją konfigurowalną. W pliku Cambus.ini możesz konfigurować aplikację na wiele sposobów.
Krok 7: Wyniki i przyszła praca
Jak widać na filmie, licznik działa dokładnie. Niebieskie linie oznaczają limit wejścia, a czerwona linia limit wyjścia. W tym przypadku do symulacji użyto wideo, ponieważ nie mogliśmy go wdrożyć na magistrali.
Pamiętaj, że musisz wprowadzić pewne zmiany w twoich warunkach dotyczących rozmiaru wideo, kąta kamery, jasności itp. Każdy typ wideo musi mieć własne parametry, takie jak tło ssące jądra opencv i tak dalej.
Proszę również zmienić zmienne na cambus.ini, wskazując brokera MQTT i tak dalej.
Rozważamy w przyszłych wdrożeniach dodanie czujników, na przykład temperatury, wilgotności i CO2 w systemie. Chodzi o to, aby dane dotyczące miast były dostępne dla społeczności.
Poniżej wyliczamy kolejne kroki, które możesz ulepszyć projekt:
- Przepisz kod używając C/C++;
- Popraw algorytm ML;
- Refaktoryzacja kodu Pythona;
- Wdrożenie do autobusu;
Dziękujemy Embarcados i Qualcomm za udzielone wsparcie.
Współpracownicy:
Bruno Monteiro - [email protected]
Kleber Drobowok - [email protected]
Winicjusz de Oliveira - [email protected]
Krok 8: Referencje
[1]
[2]
[3]
[4]
[5]
Zalecana:
Jak podłączyć NodeMCU ESP8266 do bazy danych MySQL: 7 kroków
Jak połączyć NodeMCU ESP8266 z bazą danych MySQL: MySQL to szeroko stosowany system zarządzania relacyjnymi bazami danych (RDBMS), który wykorzystuje ustrukturyzowany język zapytań (SQL). W pewnym momencie możesz chcieć przesłać dane czujnika Arduino/NodeMCU do bazy danych MySQL. W tej instrukcji zobaczymy, jak się połączyć
Wizualizacja danych z Magicbit w AWS: 5 kroków
Wizualizacja danych z Magicbit w AWS: Dane zebrane z czujników podłączonych do Magicbit zostaną opublikowane w rdzeniu AWS IOT za pośrednictwem MQTT w celu wizualizacji graficznej w czasie rzeczywistym. Używamy magicbit jako płytki rozwojowej w tym projekcie, który jest oparty na ESP32. Dlatego każdy ESP32 d
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD - Symulacja rejestratora danych DHT11 w Proteus: 5 kroków
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD | Symulacja rejestratora danych DHT11 w Proteus: Wstęp: cześć, tu Liono Maker, tutaj link do YouTube. Tworzymy kreatywne projekty z Arduino i pracujemy na systemach wbudowanych.Data-Logger: Rejestrator danych (również rejestrator danych lub rejestrator danych) to urządzenie elektroniczne, które rejestruje dane w czasie w
Pochmurna chmura Cię leczy (robot unikający przeszkód z funkcją zbierania): 8 kroków
Cloudy Cloud Cię leczy (robot unikający przeszkód z funkcją zbierania): bezużyteczna maszyna - Arduino Robot
Maszyna do zbierania zabawek: 6 kroków
Maszyna do zbierania zabawek: Wprowadzenie maszyny: Jest to maszyna do zbierania zabawek. Jeśli umieścisz zabawkę w pudełku z zabawkami. Automat nagrody wyczuje, że coś jest włożone do pudełka, a następnie poda informację zwrotną dotyczącą oświetlenia i dźwięku w celu uzyskania nagrody. Dzieci byłyby inspirowane