Turinys:
- 1 žingsnis: medžiagos
- 2 veiksmas: įdiekite „Linaro“į „Dragonboard 410c“
- 3 veiksmas: 2 veiksmas: įdiekite bibliotekas ir atsisiųskite šaltinio kodą iš „GitHub“
- 4 veiksmas: nustatykite „AWS IoT Core“, „DynamoDB“
- 5 veiksmas: nustatykite „Twilio“ir „Dweet“API
- 6 žingsnis: iššūkiai
- 7 žingsnis: rezultatai ir būsimas darbas
- 8 žingsnis: nuorodos
Video: „Cambus“- duomenų rinkimo miesto autobusuose sistema: 8 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
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“
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“
„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“
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
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:
Miesto stogo kumpio radijo antena: 8 žingsniai (su nuotraukomis)
Miesto stogo kumpio radijo antena: Neseniai ant stogo uždėjau kumpio radijo anteną, kad galėčiau gauti geresnį signalą savo bute, kuris nėra aukštuose aukštuose. Kaip itin pradedančiajam be didelių investicijų į pomėgį, buvo visiškai priimtina, kad reikėjo užlipti ant stogo
Senovinis rotacinis telefono rinkimo kompiuterio garsumo valdymas: 7 žingsniai (su nuotraukomis)
„Vintage Rotary Phone Dial PC“garsumo valdymas: jei esate kažkas panašaus į mane, pastebite, kad gana dažnai keičiate kompiuterio garsumą. Kai kurie vaizdo įrašai yra garsesni už kitus, kartais norite, kad garsas jūsų kompiuteryje būtų išjungtas, kai klausotės transliacijų ar muzikos, ir gali tekti nutraukti
Naujasis Taipėjaus miesto turistinis žemėlapis !!!: 6 žingsniai
Naujojo Taipėjaus miesto turistinis žemėlapis !!!: Šiame projekte aš padarysiu langelį, o jo viršuje bus Naujojo Taipėjaus miesto žemėlapis. Šio projekto tikslas - leisti vaikams ir suaugusiems sužinoti apie 3 pagrindines Naujojo Taipėjaus miesto teritorijas. Dėžutės šone yra 3 mygtukai
Atsiliepimų rinkimo sistema: 4 žingsniai
Atsiliepimų rinkimo sistema: visada įdomu rinkti atsiliepimus po renginių ir seminarų. Norėdami išspręsti šią problemą, mes sukūrėme arduino pagrįstą grįžtamojo ryšio rinkimo sistemą. Šiame projekte mes pagaminsime elektronikos įrenginį, kuris surinks atsiliepimus, kaip paspaudžiamas mygtukas
3D spausdintas mirksintis LED rinkimo laikrodis: 7 žingsniai (su paveikslėliais)
3D spausdintas mirksintis LED skambinimo laikrodis: Sveiki atvykę į „Yantrah“nurodymus! Mes, „Yantrah“, orientuojamės į praktinį išsilavinimą, mokome 3D CAD projektavimo, programavimo, STEAM ir robotikos. Tai paprastas arduino pagrindu pagamintas 3D spausdintas laikrodis su mirksinčiais šviesos diodais, rodančiais valandą , praėjo minutės ir sekundės