Innholdsfortegnelse:

Cambus - System for datainnsamling på bybuss: 8 trinn
Cambus - System for datainnsamling på bybuss: 8 trinn

Video: Cambus - System for datainnsamling på bybuss: 8 trinn

Video: Cambus - System for datainnsamling på bybuss: 8 trinn
Video: Session Sensation: An IT Admin's Guide to OSI Layer 5 2024, November
Anonim
Cambus - System for datainnsamling på bybuss
Cambus - System for datainnsamling på bybuss

Blant problemene og vanskelighetene som er kjent i offentlig transport, mangler befolkningen informasjon i sanntid og med minst selvsikkerhet. Overbefolkningen av kollektivbusser driver brukere bort, som foretrekker å bruke egne kjøretøyer, selv om de fremdeles er i trafikk i flere timer. Hvis sanntidsinformasjon, for eksempel antall busser, er lett tilgjengelig for en bruker, kan han velge om han skal vente på neste buss eller komme seg rundt med buss eller bruke et eget kjøretøy. Valgmakten gjør offentlig transport til et mer attraktivt alternativ for brukeren.

Å telle eller estimere mennesker innendørs kan gjøres på mange måter, blant dem er de mest brukte:

  • Termiske bilder;
  • Datamaskin syn;
  • Ansiktsteller;

Blant de mange vanskelighetene med å estimere mennesker i et miljø som bruker datasyn, er de viktigste:

  • Okklusjoner av mennesker;
  • Inverterende belysning;
  • Statisk okklusjon, det vil si mennesker bak gjenstander;
  • Kameravinkel til miljø;

En utfordring for dette prosjektet er å kjenne den riktige vinkelen på kameraet som best vil hjelpe til med å trekke bakgrunnen til bildet, så vel som den variable lysstyrken i løpet av dagen inne i bussen.

Hovedformålet med forslaget er å lage en robust og konfigurerbar modell for å estimere overbefolkning og gjøre resultatene tilgjengelige for befolkningen gjennom smarttelefoner.

Trinn 1: Materialer

Materialet som trengs for prosjektet er det neste:

1 x Dragon Board 410c;

1 x USB -kamera;

1 x smarttelefon Android;

Trinn 2: Installer Linaro i Dragonboard 410c

Installer Linaro i Dragonboard 410c
Installer Linaro i Dragonboard 410c
Installer Linaro i Dragonboard 410c
Installer Linaro i Dragonboard 410c

Følg instruksjonene på lenken nedenfor for å installere Linaro 17.09 på DragonBoard 410c. Vi anbefaler å installere Linaro 17.09 for kjernestøtte for GPS.

www.96boards.org/documentation/consumer/dr…

Trinn 3: Trinn 2: Installer biblioteker og last ned kildekoden fra GitHub

Trinn 2: Installer biblioteker og last ned kildekoden fra GitHub
Trinn 2: Installer biblioteker og last ned kildekoden fra GitHub

Cambus har en modulær arkitektur og kodedesign. Det er mulig å kode din egen maskinlæringsalgoritme, bytte til andre skytjenester og lage dine egne brukerprogrammer.

For å kjøre cambus -prosjektet må du først laste ned kildekoden fra github (https://github.com/bmonteiro00/cambus). Installer python (Cambus var modus for å kjøre på versjon 2.7 og> 3.x) og følgende biblioteker ved hjelp av 'pip' (sudo apt-get install python-pip). Det vil være nødvendig å installere en haug med biblioteker i Linaro -systemet (Det anbefales også å lage et virtuelt miljø - pip install virtualenv - for å isolere Cambus -systemet fra SO). Vennligst installer følgende biblioteker:

  • pip installer paho-mqtt
  • pip installer numpy
  • pip installer opencv-python
  • pip installer opencv-contrib-python
  • pip installere twilio
  • pip installer matplotlib

Hovedprogrammet ble delt inn i klasser:

  • CamBus - hovedklassen;
  • Sensor - en klasse for å skaffe data som GPS -posisjon, temperatur, Co2.
  • Motklasse med bildebehandlingsalgoritme.

Kontroller om alle bibliotekene er installert og kjør python CamBus_v1.py.

Trinn 4: Konfigurere AWS IoT Core, DynamoDB

Sette opp AWS IoT Core, DynamoDB
Sette opp AWS IoT Core, DynamoDB
Sette opp AWS IoT Core, DynamoDB
Sette opp AWS IoT Core, DynamoDB
Sette opp AWS IoT Core, DynamoDB
Sette opp AWS IoT Core, DynamoDB

Vi brukte AWS IoT -kjernen som en MQTT -megler med TLS og X509 og NoSQL og DynamoDB for å logge data. Du må opprette en konto på https://aws.amazon.com/free.). Deretter må du følge trinnene nedenfor for å lage en ting og integrere med Dynamo:

docs.aws.amazon.com/iot/latest/developergu…

Trinn 5: Sett opp Twilio og Dweet APIer

Sett opp Twilio og Dweet APIer
Sett opp Twilio og Dweet APIer
Sett opp Twilio og Dweet APIer
Sett opp Twilio og Dweet APIer

Twilio SMS -tjenesten ble også satt opp. Se nettadressen nedenfor for instruksjoner for å fullføre dette trinnet:

www.twilio.com/docs/iam/api/account

Integrasjonen mellom Android -appen og systemet ble gjort ved hjelp av REST ved bruk av Dweet -plattformen. Ingen registrering nødvendig.

dweet.io/

Trinn 6: Utfordringer

Under utviklingen stod vi overfor mange utfordringer, fra OpenCV -teknikker til AWS -plattform. Vi bestemte oss for å kode med Python for å spare tid på utvikling i C/C ++. Under vår utvikling bare de grunnleggende Opencv -metodene som:

• cv2. GaussianBlur (..)

• cv2.terskel (..)

• cv2.morphologyEx (..)

• cv2.contourArea (..)

• cv2.findContours (..)

Disse grunnleggende metodene var ikke nok til å oppnå en god kvalitet på å oppdage mennesker. Scenarier med rystende video ML (Machine Learning) ble brukt. Så vi bestemte oss for å bruke OpenCV -maskinlæringsbiblioteket, og vi fikk et annet problem, for å finne en god datainngang for ML -algoritmen var et problem vi brukte mange dager. Vi har brukt OpenCV SVM -algoritme, men har ikke fungert. Vi brukte OpenCV Naive Bayses, og denne fungerte OK. Vi har prøvd å bruke Tensorflow og CNN nevrale nettverk, men vi fikk det ikke til nå. CNN bruker mye prosessorkraft, noe vi ikke hadde. Ved å bruke OpenCV ML og grunnleggende OpenCV -metoder hjalp vi oss med å nå en god hastighet for å oppdage mennesker. Likevel må vi for hver type vídeo tilpasse parameterne til OpenCV for å nå en god hastighet for å oppdage mennesker og unngå falske positiver. I midten av disse to månedene utviklet vi vår første idé om å gjøre et senter for datainnsamling ikke bare antall passasjerer og GPS -posisjon. Vi bestemte oss for å ikke samle inn data ved hjelp av andre sensorer som temperatur og så videre. Vi opprettet en.ini -fil for å parameterisere applikasjonen og gjøre den konfigurerbar. På filen Cambus.ini kan du konfigurere programmet på mange måter.

Trinn 7: Resultater og fremtidig arbeid

Som du kan se i videoen, fungerer telleren nøyaktig. De blå linjene markerer inngangsgrensen og den røde linjen utgangsgrensen. I dette tilfellet ble en video brukt til å simulere fordi vi ikke kunne distribuere den til en buss.

Husk at det må gjøres noen endringer i tilstanden din om videostørrelse, kameravinkel, lysstyrke osv. Hver type video må være dens egne parametere tilpasning, slik som opencv -kjernesugningsbakgrunn og så videre.

Endre også variabler på cambus.ini, som angir MQTT -megler og så videre.

Vi vurderer i fremtidige implementeringer å legge til sensorer, for eksempel temperatur, fuktighet og CO2 i systemet. Tanken er å få data rundt byene som gjør dem tilgjengelige for samfunnet.

Følgende oppregner vi de neste trinnene du kan gjøre for å forbedre prosjektet:

  • Skriv koden på nytt med C/C ++;
  • Forbedre ML -algoritmen;
  • Re-faktor python-kode;
  • Distribusjon i buss;

Vi vil takke Embarcados og Qualcomm for all støtten som er gitt.

Samarbeidspartnere:

Bruno Monteiro - [email protected]

Kleber Drobowok - [email protected]

Vinicius de Oliveira - [email protected]

Trinn 8: Referanser

[1]

[2]

[3]

[4]

[5]

Anbefalt: