Turinys:

„Cambus“- duomenų rinkimo miesto autobusuose sistema: 8 žingsniai
„Cambus“- duomenų rinkimo miesto autobusuose sistema: 8 žingsniai

Video: „Cambus“- duomenų rinkimo miesto autobusuose sistema: 8 žingsniai

Video: „Cambus“- duomenų rinkimo miesto autobusuose sistema: 8 žingsniai
Video: MCP2515 CAN Controller Demo CAN BUS Protocol Diagnostic Tool 2024, Lapkritis
Anonim
„Cambus“- duomenų rinkimo miesto autobusuose sistema
„Cambus“- duomenų rinkimo miesto autobusuose sistema

Tarp problemų ir sunkumų, žinomų viešajame transporte, gyventojams trūksta informacijos realiuoju laiku ir jie yra mažiausiai įtikinami. Viešojo transporto autobusų perpildymas atstumia vartotojus, kurie nori naudotis savo transporto priemonėmis, nors ir toliau eina kelias valandas. Jei naudotojui lengvai prieinama informacija realiuoju laiku, pvz., Autobusų skaičius, jis gali pasirinkti, ar laukti kito autobuso, ar keliauti autobusu, ar naudotis savo transporto priemone. Dėl pasirinkimo galios viešasis transportas tampa patrauklesnis vartotojui.

Skaičiuoti ar įvertinti žmones patalpose galima įvairiais būdais, tarp kurių dažniausiai naudojami:

  • Šiluminiai vaizdai;
  • Kompiuterinis matymas;
  • Veido skaitiklis;

Tarp keleto sunkumų vertinant žmones aplinkoje naudojant kompiuterinį matymą, pagrindiniai yra šie:

  • Žmonių okliuzijos;
  • Apverstas apšvietimas;
  • Statinis okliuzija, tai yra žmonės už objektų;
  • Kameros kampas į aplinką;

Šio projekto iššūkis yra žinoti teisingą kameros kampą, kuris geriausiai padės atimti vaizdo foną, taip pat kintantį dienos šviesą autobuso viduje.

Pagrindinis pasiūlymo tikslas yra sukurti patikimą ir konfigūruojamą modelį, kuriuo būtų galima įvertinti perpildymą ir padaryti rezultatus prieinamus gyventojams per išmaniuosius telefonus.

1 žingsnis: medžiagos

Projektui reikalinga medžiaga yra tokia:

1 x drakono lenta 410c;

1 x USB kamera;

1 x išmanusis telefonas „Android“;

2 veiksmas: įdiekite „Linaro“į „Dragonboard 410c“

Įdiekite „Linaro“į „Dragonboard 410c“
Įdiekite „Linaro“į „Dragonboard 410c“
Įdiekite „Linaro“į „Dragonboard 410c“
Įdiekite „Linaro“į „Dragonboard 410c“

Vadovaukitės toliau pateiktos nuorodos instrukcijomis, kad įdiegtumėte „Linaro 17.09“į „DragonBoard 410c“. Rekomenduojame įdiegti „Linaro 17.09“, kad palaikytų GPS branduolį.

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

3 veiksmas: 2 veiksmas: įdiekite bibliotekas ir atsisiųskite šaltinio kodą iš „GitHub“

2 veiksmas: įdiekite bibliotekas ir atsisiųskite šaltinio kodą iš „GitHub“
2 veiksmas: įdiekite bibliotekas ir atsisiųskite šaltinio kodą iš „GitHub“

„Cambus“turi modulinę architektūrą ir kodinį dizainą. Galima koduoti savo mašininio mokymosi algoritmą, pakeisti į kitą debesies paslaugą ir kurti savo vartotojo programas.

Norėdami paleisti „Cambus“projektą, pirmiausia turite atsisiųsti šaltinio kodą iš „github“(https://github.com/bmonteiro00/cambus). Įdiekite „python“(„Cambus“buvo režimas, skirtas paleisti 2.7 ir> 3.x versijose) ir šias bibliotekas naudodami „pip“(sudo apt-get install python-pip). Reikės įdiegti daugybę bibliotekų „Linaro“sistemoje (taip pat rekomenduojama sukurti virtualią aplinką - „pip install virtualenv“, kad „Cambus“sistema būtų izoliuota nuo PAS). Prašome įdiegti šias bibliotekas:

  • pip įdiegti paho-mqtt
  • pip install numpy
  • pip įdiegti opencv-python
  • pip įdiegti opencv-contrib-python
  • pip install twilio
  • pip įdiegti matplotlib

Pagrindinė programa buvo suskirstyta į klases:

  • CamBus - pagrindinė klasė;
  • Jutiklis - klasė, skirta gauti tokius duomenis kaip GPS padėtis, temperatūra, CO2.
  • Skaitliuko klasė su vaizdo apdorojimo algoritmu.

Įsitikinkite, kad visos bibliotekos buvo įdiegtos, ir paleiskite „python CamBus_v1.py“.

4 veiksmas: nustatykite „AWS IoT Core“, „DynamoDB“

„AWS IoT Core“, „DynamoDB“, nustatymas
„AWS IoT Core“, „DynamoDB“, nustatymas
„AWS IoT Core“, „DynamoDB“, nustatymas
„AWS IoT Core“, „DynamoDB“, nustatymas
„AWS IoT Core“, „DynamoDB“, nustatymas
„AWS IoT Core“, „DynamoDB“, nustatymas

Mes naudojome „AWS IoT“branduolį kaip MQTT tarpininką su TLS ir X509 bei „NoSQL“ir „DynamoDB“duomenims registruoti. Turėsite susikurti paskyrą adresu https://aws.amazon.com/free.). Tada atlikite toliau nurodytus veiksmus, kad sukurtumėte daiktą ir integruotumėte jį į „Dynamo“:

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

5 veiksmas: nustatykite „Twilio“ir „Dweet“API

Nustatykite „Twilio“ir „Dweet“API
Nustatykite „Twilio“ir „Dweet“API
Nustatykite „Twilio“ir „Dweet“API
Nustatykite „Twilio“ir „Dweet“API

Taip pat buvo sukurta „Twilio“SMS paslauga. Žemiau esančiame URL rasite instrukcijas, kaip atlikti šį veiksmą:

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

„Android“programos ir sistemos integracija buvo atlikta naudojant REST, naudojant „Dweet“platformą. Nereikia registruotis.

dweet.io/

6 žingsnis: iššūkiai

Vystydamiesi mes susidūrėme su daugybe iššūkių, pradedant „OpenCV“metodais ir baigiant AWS platforma. Mes nusprendėme koduoti su „Python“, kad sutaupytume laiko kuriant „C/C ++“. Kurdami tik pagrindinius „Opencv“metodus, tokius kaip:

• cv2. GaussianBlur (..)

• cv2. riba (..)

• cv2.morphologyEx (..)

• cv2.contourArea (..)

• cv2.findContours (..)

Šių pagrindinių metodų nepakako norint pasiekti gerą žmonių aptikimo kokybę. Buvo naudojami scenarijai su drebančiu vaizdo įrašu ML (mašininis mokymasis). Taigi, mes nusprendėme naudoti „OpenCV“mašinų mokymosi biblioteką ir gavome dar vieną problemą, nes rasti gerą duomenų įvestį ML algoritmui buvo problema, kurią praleidome daug dienų. Mes naudojome „OpenCV SVM“algoritmą, bet neveikėme. Mes naudojome „OpenCV Naive Bayses“ir šis veikė gerai. Mes bandėme naudoti „Tensorflow“ir CNN neuronų tinklus, tačiau kol kas to nepadarėme. CNN naudoja daug apdorojimo galios, ko neturėjome. Naudodami „OpenCV ML“ir pagrindinius „OpenCV“metodus padėjome pasiekti gerą žmonių aptikimo greitį. Nepaisant to, kiekvienam vaizdo įrašo tipui turime pritaikyti „OpenCV“parametrus, kad pasiektume gerą žmonių aptikimo greitį ir išvengtume klaidingų teigiamų rezultatų. Šių dviejų mėnesių viduryje mes sukūrėme savo pirmąją idėją, kad duomenų rinkimo centras nebūtų tik keleivių skaičius ir GPS vieta. Mes nusprendėme rinkti ne duomenis naudodami kitus jutiklius, tokius kaip temperatūra ir pan. Mes sukūrėme.ini failą, kad parametrizuotume programą ir padarytume ją konfigūruojamą. Cambus.ini faile galite konfigūruoti programą įvairiais būdais.

7 žingsnis: rezultatai ir būsimas darbas

Kaip matote vaizdo įraše, skaitiklis veikia tiksliai. Mėlynos linijos žymi įvesties ribą, o raudona - išvesties ribą. Šiuo atveju buvo imituojamas vaizdo įrašas, nes negalėjome jo įdiegti į autobusą.

Atminkite, kad reikia šiek tiek pakeisti jūsų būklę, susijusią su vaizdo įrašu, kameros kampu, šviesumu ir tt Kiekvieno tipo vaizdo įrašai turi būti pritaikyti pagal savo parametrus, pvz., „Opencv“branduolio ištraukimo fonas ir pan.

Taip pat pakeiskite kintamuosius svetainėje cambus.ini, nurodydami MQTT brokerį ir pan.

Ateityje planuojame įdiegti jutiklius, pavyzdžiui, temperatūrą, drėgmę ir CO2 sistemoje. Idėja yra gauti duomenis apie miestus, kad jie būtų prieinami bendruomenei.

Toliau išvardijame kitus žingsnius, kuriuos galite padaryti norėdami patobulinti projektą:

  • Iš naujo parašykite kodą naudodami C/C ++;
  • Pagerinti ML algoritmą;
  • Iš naujo nustatykite python kodą;
  • Diegimas į autobusą;

Norime padėkoti „Embarcados“ir „Qualcomm“už visą suteiktą paramą.

Bendradarbiai:

Bruno Monteiro - [email protected]

Kleberis Drobowokas - [email protected]

Vinicius de Oliveira - [email protected]

8 žingsnis: nuorodos

[1]

[2]

[3]

[4]

[5]

Rekomenduojamas: