Spisu treści:

Cambus - System zbierania danych w autobusie miejskim: 8 kroków
Cambus - System zbierania danych w autobusie miejskim: 8 kroków

Wideo: Cambus - System zbierania danych w autobusie miejskim: 8 kroków

Wideo: Cambus - System zbierania danych w autobusie miejskim: 8 kroków
Wideo: Efektywna i zrównoważona mobilność pracowników biurowych - webinar 2024, Listopad
Anonim
Cambus - System Gromadzenia Danych o Autobusach Miejskich
Cambus - System Gromadzenia Danych o Autobusach Miejskich

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

Zainstaluj Linaro w Dragonboard 410c
Zainstaluj Linaro w Dragonboard 410c
Zainstaluj Linaro w Dragonboard 410c
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

Krok 2: Zainstaluj biblioteki i pobierz kod źródłowy z GitHub
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

Konfigurowanie rdzenia AWS IoT, DynamoDB
Konfigurowanie rdzenia AWS IoT, DynamoDB
Konfigurowanie rdzenia AWS IoT, DynamoDB
Konfigurowanie rdzenia AWS IoT, DynamoDB
Konfigurowanie rdzenia AWS IoT, DynamoDB
Konfigurowanie rdzenia AWS IoT, 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

Skonfiguruj interfejsy API Twilio i Dweet
Skonfiguruj interfejsy API Twilio i Dweet
Skonfiguruj interfejsy API Twilio i Dweet
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: