Kazalo:

Spremljanje ceste: 15 korakov
Spremljanje ceste: 15 korakov

Video: Spremljanje ceste: 15 korakov

Video: Spremljanje ceste: 15 korakov
Video: ТОЛЬКО не СМОТРЕТЬ на голодный желудок!! Одесские Пельмени Посылка от Липован 2024, Julij
Anonim
Spremljanje cest
Spremljanje cest

Danes vam bomo pokazali, kako smo na podlagi merilnikov pospeška, LoRaWAN -a, spletnih storitev Amazon in API -ja Google Cloud API vzpostavili sistem za spremljanje nepravilnosti na cestah.

1. korak: Zahteve

  • Plošča DISCO-L072CZ-LRWAN1
  • Razširitveni modul X-NUCLEO-IKS01A2 (za merilnik pospeška)
  • X-NUCLEO-GNSS1A1 (za lokalizacijo)
  • Račun AWS
  • Račun za Google Cloud Platform

2. korak: izdelava in utripanje vdelane programske opreme senzorja

Povežite IKS01A2 in GNSS1A1 na vrhu plošče prek zatičev GPIO. Prenesite kodo vdelane programske opreme z GitHub -a. Ustvarite (če ga še nimate) račun na ARM Mbed in uvozite kodo v repo na spletnem prevajalniku. Ciljno platformo nastavite na DISCO-L072CZ-LRWAN1 in shranite projekt. Zdaj pojdite na The Things Network in ustvarite račun, če ga še nimate. Ustvarite aplikacijo, v aplikaciji ustvarite novo napravo in nastavite način povezave na OTAA. Zberite ustrezne parametre, da izpolnite naslednja polja v datoteki mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".

Tipalo bo občasno snemalo merilnike pospeška in podatke GNSS ter jih prek povezave LoRa pošiljalo do najbližjega prehoda, ki jih bo posredoval naši aplikaciji v omrežju The Things Network. Naslednji korak je nastavitev strežnika v oblaku in integracija HTTP v TTN.

3. korak: Nastavitev oblaka

Nastavitev oblaka
Nastavitev oblaka

Zdaj smo pripravljeni postaviti infrastrukturo v oblaku, ki bo zbirala in združevala podatke z vseh razporejenih plošč. Ta infrastruktura je prikazana na spodnji sliki in jo sestavljajo:

  • Kinesis, za obravnavo dohodnega podatkovnega toka;
  • Lambda za filtriranje in predhodno obdelavo podatkov pred shranjevanjem;
  • S3, za shranjevanje vseh podatkov;
  • EC2, za analizo podatkov in gostovanje našega vmesnika.

4. korak: Nastavite AWS Lambda

Nastavite AWS Lambda
Nastavite AWS Lambda

Prikazali bomo korake, potrebne za vzpostavitev te infrastrukture, začenši z Lambdo.

  1. Prijavite se s svojim računom AWS in z glavne strani konzole pojdite na Lambda
  2. Kliknite Ustvari funkcijo
  3. V zgornjem delu strani je treba iz avtorja izbrati avtorja. Nato izpolnite druga polja, kot je na sliki, in kliknite Ustvari funkcijo
  4. Zdaj, ko ste ustvarili funkcijo AWS Lambda, pojdite na https://github.com/roadteam/data-server in kopirajte vsebino datoteke aws_lambda.py v urejevalnik, ki ga najdete v drugi polovici strani. Vaša funkcija Lambda je zdaj pripravljena:)

5. korak: Nastavite podatkovni tok AWS Kinesis Firehose

Nastavite podatkovni tok AWS Kinesis Firehose
Nastavite podatkovni tok AWS Kinesis Firehose
  1. Vrnite se zdaj na glavno stran konzole AWS in v Storitve pojdite na Kinesis
  2. Zdaj ste na glavni strani Kinesis. Na desni strani pod »Kinesis Firehose dotoki dostave« izberite »Ustvari nov tok dostave«
  3. V "Ime dostavnega toka" napišite "cestni nadzorni tok". Ostala polja pustite privzete in kliknite Naprej
  4. Zdaj v razdelku »Pretvori izvorne zapise z AWS Lambda« izberite Omogočeno in kot funkcija Lambda kliknite na novo ustvarjeno »spremljanje ceste-lambda«. Ne skrbite, če se prikaže opozorilo glede časovne omejitve funkcije, saj operacija, ki jo izvajamo, ni računsko draga. Ostala polja pustite privzete in kliknite Naprej
  5. Kot cilj izberite Amazon S3 in kot cilj S3 izberite Ustvari novo. Kot ime vedra vnesite 'road-monitoring-bucket' in pojdite. Zdaj pustite druga polja privzeta in kliknite Naprej
  6. Velikost medpomnilnika lahko nastavite na 1 MB, interval vmesnega pomnilnika pa na 60 sekund. Medpomnilnik se izprazni na S3, kadar je izpolnjen eden od dveh pogojev. Ne zapustite strani, glejte naslednji korak

Korak 6: Nastavite vlogo IAM za kinezo

Nastavite vlogo IAM za kinezo
Nastavite vlogo IAM za kinezo

Zdaj smo nastavili varnostna dovoljenja za Kinesis, saj mora za predhodno obdelavo poklicati funkcijo Lambda, nato pa bo pisala na S3

  1. Na dnu strani, v kateri ste v vlogi IAM, izberite »Ustvari novo po izbiri«, ustvarite novo vlogo IAM, kot je na sliki, in kliknite Dovoli
  2. Zdaj ste nazaj na prejšnjo stran, kliknite Naprej. Zdaj boste morda želeli dvakrat preveriti vse parametre. Ko končate, kliknite »Ustvari tok dostave«

Cevovod Kinesis-Lambda-S3 deluje in deluje!

7. korak: Nastavite AWS EC2

Nastavite AWS EC2
Nastavite AWS EC2

Zdaj bomo vzpostavili primerek EC2 z nekaterimi API -ji, ki nam bodo omogočali potiskanje in pobiranje podatkov iz oblaka AWS in tudi strežnika, kjer bomo gostili našo aplikacijo. V proizvodnem okolju boste morda želeli objaviti API z uporabo bolj razširljivega prehoda API AWS.

  1. Na glavni strani konzole AWS pojdite na storitev EC2
  2. Kliknite Zaženi zagon
  3. V zgornjo iskalno vrstico prilepite to kodo: „ami-08935252a36e25f85“, to je identifikacijsko kodo vnaprej konfiguriranega navideznega stroja za uporabo. Na desni kliknite Izberi
  4. V stolpcu »Vrsta« izberite t2.micro in kliknite »Preglej in zaženi«. Še ne zaženite primerka, pojdite na naslednji korak

8. korak: Nastavite varnostno vlogo IAM za EC2

Nastavite varnostno vlogo IAM za EC2
Nastavite varnostno vlogo IAM za EC2
  1. Pred zagonom želimo spremeniti varnostno skupino našega primerka. Če želite to narediti, na skrajni desni strani razdelka »Varnostne skupine« kliknite »Uredi varnostne skupine« Nastavite novo varnostno skupino na naslednji način. To v bistvu konfigurira požarni zid vašega primerka, ki izpostavlja vrata 22 za povezavo SSH in vrata 80 za storitve
  2. Znova kliknite »Preglej in zaženi«. Zdaj preverite, ali so vsi parametri nastavljeni. Ko končate, kliknite Zaženi
  3. Ob kliku se prikaže novo okno za nastavitev para ključev za povezavo ssh do primerka. Izberite 'Ustvari nov par ključev' in kot ime vnesite 'ec2-road-monitoring'. Kliknite Prenesi par ključev. Izjemno pomembno je, da se ta datoteka izgubi ali (kar je še huje), da je varno shranjena: ključa ne boste mogli več prenesti. Ko prenesete ključ.pem, je primerek pripravljen za zagon

9. korak: dostopajte do primerka EC2

Dostop do primerka EC2
Dostop do primerka EC2

Vaš sveži primerek EC2 je v oblaku AWS. Z njim se lahko povežete s ključno datoteko, ki ste jo že prenesli (za to vadnico predvidevamo, da poznate osnove ssh). IP primerka lahko pridobite tako, da ga izberete na nadzorni plošči v razdelku »Opis« na naslednji način: Uporabite lahko svoj javni IP ali javni DNS, ki je enak. S odjemalcem ssh zdaj vnesite ukaz:

ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-OR-DNS

kjer je ec2-road-monitoring.pem vaš ključ, ustvarjen prej.

Zdaj nadaljujte s potegom kode na strani strežnika

git clone --recursive

10. korak: Pridobite API za Google Zemljevide

Pridobite API za Google Zemljevide
Pridobite API za Google Zemljevide

Skoraj smo že končali. Zdaj moramo na naši strani html nastaviti google maps API, da uporabniku prikažemo zemljevid s točkami poti:

  1. Prijavite se v svoj Google Račun in pojdite na
  2. Kliknite na »Začni« na levi strani
  3. V meniju izberite »Zemljevidi« in kliknite »Nadaljuj«
  4. Kot ime projekta vnesite 'nadzor ceste' in kliknite Naprej
  5. Vnesite podatke za obračun in kliknite Nadaljuj
  6. Zdaj je vaš projekt pripravljen in ključ API dobimo s klikom na API -ji in storitve -> poverilnice

11. korak: Zaženite strežnik

Zaženi strežnik
Zaženi strežnik

In tam je vaš ključ API. Zadnja stvar, ki jo morate storiti, je, da obiščete data_visualization/anomalies_map.html in tako kopirate svoj ključ na konec datoteke, pri čemer zamenjate »VAŠ KLJUČ-TUKAJ«

Zdaj je vse pripravljeno in pripravljeno! Če želite, da se začne izvajati v primerku EC2: ‘cd data-server’ ‘python flask_app.py’

V brskalnik vnesite naslov ip ali dns vašega primerka EC2, prikazali bi se zemljevid nepravilnosti z nekaj lažnimi podatki

12. korak: Izvedite integracijo HTTP v omrežju Things

Izvedite integracijo HTTP v omrežju Things
Izvedite integracijo HTTP v omrežju Things

Zdaj, ko imamo vklopljeno vso zaledno infrastrukturo, lahko obdelamo izvedbo integracije

  1. Ustvarite novo aplikacijo in registrirajte svojo napravo. Predpostavljamo osnovno znanje o TTN, če se ne nanašamo na vodnik za hiter začetek
  2. V meniju aplikacije izberite »Integracije« in nato »dodajte integracijo«
  3. Izberite integracijo
  4. Vnesite polja, ki sledijo sliki in jih zamenjajte z vašim EC2 ip ali javnim DNS

Korak: Obdelava podatkov

Za vsak niz podatkov T, zbranih s senzorja, morate izvesti naslednje korake:

  1. Pridobite nabor naborov, ki imajo GPS -koordinate na lokalnem območju T. Lokalno območje so vse torbice, ki so 100 metrov okoli T.
  2. Za vsak najbližji nabor N izračunajte kvadratno sredino osi merilnika pospeška osi Z v N. V psevdokodi: povprečje = vsota ([x. Z_accel ** 2 za x v bližini]) / blizu. Velikost
  3. Izračunajte kvadratni standardni odklon. V psevdo kodi: std = vsota ([(x. Z_accel ** 2 - povprečje) ** 2 za x v bližini])
  4. Izhod v tej obliki: lat, long, Z_accel ** 2, mean, std

Za izračun lokalnega območja uporabite razdaljo GPS v metrih. V C ++:

#define D2R (M_PI / 180.0)

#define EARTH_RAY 6371 dvojna razdalja (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; dvojni dlat = (lat2 - lat1) * D2R; dvojni a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); dvojno c = 2 * atan2 (sqrt (a), sqrt (1-a));

Zdaj z vmesnimi podatki, ustvarjenimi v prejšnjem koraku, odkrijte nepravilnosti in naredite naivno klasifikacijo z uporabo tega izreza, ki se uporablja za vsako vrstico:

vrstica = zemljevid (float, line.split (","))

v = vrstica [2] povprečje = vrstica [3] std = vrstica [4] če v (povprečje + std*3): če v (povprečje + std*2): če v (povprečje + std): o.append ([1, vrstica [0], vrstica [1]) drugo: o.append ([2, vrstica [0], vrstica [1]) drugo: o.append ([3, vrstica [0], vrstica [1])

Anomalije so razvrščene po pravilu 68–95–99,7

Zdaj imate zbirko s to obliko zapisa [vrsta, lat, dolga].

Pomen vrste je naslednji:

  1. Rahla anomalija, verjetno nepomembna
  2. Srednja anomalija
  3. Kritična anomalija

14. korak: Vizualizacija

Vizualizacija
Vizualizacija

Če želimo razumeti in morda spremeniti del vizualizacije, se moramo naučiti uporabljati označevalce po meri, to je funkcija API -ja za Google Zemljevide

Najprej je treba zemljevid inicializirati pri povratnem klicu:

funkcija initMap () {

data = queryData (); map = nov google.maps. Map (document.getElementById ('map'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); opomba (); }

Določite ime tega povratnega klica v urlu (tukaj smo ga vstavili pred ključem API -ja) v oznaki HTML:

script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"

Ko je objekt ustvarjen, lahko na zemljevid vstavite oznako:

nov google.maps. Marker ({position: {lat: LATITUDE, lng: LONGITUDE}, map: map, icon: “/path/to/icon.png”})

V kodi lahko vidite, da je za vsak podatek v nizu anomalij vstavljen marker (glej funk opombe ()), ikona pa temelji na razredu anomalije. Ko to zaženete v brskalnik, lahko raziščete zemljevid, v katerem je mogoče anomalije filtrirati s potrditvenimi polji, kot je prikazano na sliki.

Korak 15: Krediti in zunanje povezave

Ta projekt so izdelali Giovanni De Luca, Andrea Fioraldi in Pietro Spadaccino, prvi letnik magisterija inženirstva študentov računalništva na Univerzi Sapienza v Rimu.

  • Diapozitivi, ki so jih avtorji uporabili za predstavitev tega dokaza koncepta:

    www.slideshare.net/PietroSpadaccino/road-m…

  • GitHub repo z vso kodo:

    github.com/roadteam

Priporočena: