Kambus - shahar avtobuslarida ma'lumotlarni yig'ish tizimi: 8 qadam
Kambus - shahar avtobuslarida ma'lumotlarni yig'ish tizimi: 8 qadam
Anonim
Kambus - shahar avtobuslarida ma'lumotlarni yig'ish tizimi
Kambus - shahar avtobuslarida ma'lumotlarni yig'ish tizimi

Jamoat transportida ma'lum bo'lgan muammolar va qiyinchiliklar orasida aholi real vaqtda ma'lumotga ega emas va eng kam ishonch bilan. Jamoat transporti avtobuslarining haddan tashqari ko'pligi foydalanuvchilarni haydab yuboradi, ular o'z transport vositalaridan foydalanishni afzal ko'rishadi, garchi ular soatlab tirbandlikda bo'lishsa ham. Agar real vaqt rejimida, masalan, avtobuslar soni, foydalanuvchiga osonlikcha taqdim etilsa, u keyingi avtobusni kutish yoki avtobusda aylanib o'tish yoki o'z transportidan foydalanishni tanlashi mumkin. Tanlov kuchi jamoat transportini foydalanuvchi uchun yanada jozibali variantga aylantiradi.

Uy ichidagi odamlarni hisoblash yoki baholash ko'p jihatdan amalga oshirilishi mumkin, ular orasida eng ko'p ishlatiladiganlar:

  • Termal tasvirlar;
  • Kompyuter ko'rish qobiliyati;
  • Yuz hisoblagichi;

Atrofdagi odamlarni kompyuter ko'rish yordamida baholashning bir qancha qiyinchiliklari orasida asosiylari:

  • Odamlarning yopilishi;
  • Teskari yorug'lik;
  • Statik okklyuziya, ya'ni ob'ektlar ortidagi odamlar;
  • Kameraning atrof -muhitga burchagi;

Loyihaning asosiy vazifasi - bu kameraning to'g'ri burchagini bilish, bu tasvirning fonini olib tashlashga yordam beradi, shuningdek, avtobus ichidagi kunduzgi yorug'likni o'zgartiradi.

Taklifning asosiy maqsadi - gavjumlikni taxmin qilish uchun kuchli va konfiguratsiya qilinadigan model yaratish va natijalarni smartfonlar orqali aholiga etkazish.

1 -qadam: materiallar

Loyiha uchun quyidagi materiallar kerak bo'ladi:

1 x Dragon Board 410c;

1 x USB kamera;

1 x Android smartfoni;

2 -qadam: Linaro -ni Dragonboard 410c -ga o'rnating

Linaro -ni Dragonboard 410c -ga o'rnating
Linaro -ni Dragonboard 410c -ga o'rnating
Linaro -ni Dragonboard 410c -ga o'rnating
Linaro -ni Dragonboard 410c -ga o'rnating

Linaro 17.09 -ni DragonBoard 410c -ga o'rnatish uchun quyidagi havoladagi ko'rsatmalarga amal qiling. GPS uchun yadro qo'llab -quvvatlash uchun Linaro 17.09 ni o'rnatishni tavsiya etamiz.

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

3 -qadam: 2 -qadam: Kutubxonalarni o'rnating va GitHub -dan manba kodini yuklab oling

2 -qadam: Kutubxonalarni o'rnating va GitHub -dan manba kodini yuklab oling
2 -qadam: Kutubxonalarni o'rnating va GitHub -dan manba kodini yuklab oling

Cambus modulli arxitektura va kod dizayniga ega. Siz o'zingizning mashinani o'rganish algoritmini kodlashingiz, boshqa bulutli xizmatlarga o'tishingiz va o'zingizning shaxsiy ilovalaringizni yaratishingiz mumkin.

Kambus loyihasini ishga tushirish uchun avval github -dan manba kodini yuklab olishingiz kerak (https://github.com/bmonteiro00/cambus). Python-ni o'rnating (Cambus 2.7 va> 3.x-da ishlaydigan rejim edi) va quyidagi kutubxonalar 'pip' (sudo apt-get install python-pip) yordamida. Linaro tizimiga ko'plab kutubxonalarni o'rnatish kerak bo'ladi (Bundan tashqari, Cambus tizimini SOdan ajratish uchun virtual muhit yaratish tavsiya etiladi - pip install virtualenv). Iltimos, quyidagi kutubxonalarni o'rnating:

  • paho-mqtt ni o'rnatish
  • pip o'rnatish numpy
  • opencv-python-ni o'rnatish
  • opencv-Contrip-python-ni o'rnatish
  • pip o'rnatish twilio
  • pip o'rnatish matplotlib

Asosiy dastur sinflarga bo'lingan:

  • CamBus - asosiy sinf;
  • Sensor - GPS holati, harorat, Co2 kabi ma'lumotlarni olish uchun mo'ljallangan sinf.
  • Tasvirni qayta ishlash algoritmiga ega hisoblagich.

Barcha kutubxonalar o'rnatilganligiga ishonch hosil qiling va CamBus_v1.py python -ni bajaring.

4 -qadam: AWS IoT Core, DynamoDB ni sozlash

AWS IoT Core, DynamoDB ni sozlash
AWS IoT Core, DynamoDB ni sozlash
AWS IoT Core, DynamoDB ni sozlash
AWS IoT Core, DynamoDB ni sozlash
AWS IoT Core, DynamoDB ni sozlash
AWS IoT Core, DynamoDB ni sozlash

Biz AWS IoT yadrosini TLS va X509, NoSQL va DynamoDB bilan MQTT vositachisi sifatida ishlatamiz. Siz https://aws.amazon.com/free saytida hisob yaratishingiz kerak bo'ladi.) Keyinchalik, biror narsa yaratish va "Dinamo" bilan birlashish uchun siz quyidagi amallarni bajarishingiz kerak bo'ladi.

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

5 -qadam: Twilio va Dweet API -larini o'rnating

Twilio va Dweet API -ni sozlash
Twilio va Dweet API -ni sozlash
Twilio va Dweet API -ni sozlash
Twilio va Dweet API -ni sozlash

Twilio SMS xizmati ham o'rnatildi. Ushbu bosqichni bajarish bo'yicha ko'rsatmalar uchun quyidagi URL manziliga qarang:

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

Android ilovasi va tizim o'rtasidagi integratsiya DEST platformasidan foydalangan holda REST orqali amalga oshirildi.

dweet.io/

6 -qadam: qiyinchiliklar

Rivojlanish jarayonida biz OpenCV texnikasidan tortib AWS platformasiga qadar ko'plab qiyinchiliklarga duch keldik. Biz C/C ++ da vaqtni tejash maqsadida Python bilan kod yozishga qaror qildik. Bizning rivojlanish jarayonida faqat asosiy Opencv usullari, masalan:

• cv2. GaussianBlur (..)

• cv2.tosh chegarasi (..)

• cv2.morphologyEx (..)

• cv2.contourArea (..)

• cv2.findContours (..)

Bu asosiy usullar odamlarni aniqlashda yaxshi sifatga erishish uchun etarli emas edi. ML (Machine Learning) titroq videoli ssenariylar ishlatilgan. Shunday qilib, biz OpenCV mashinasini o'rganish kutubxonasidan foydalanishga qaror qildik va yana bir muammoga duch keldik, chunki ML algoritmi uchun yaxshi ma'lumotlarni kiritish biz ko'p kunlar davomida o'tkazgan muammo edi. Biz OpenCV SVM algoritmidan foydalandik, lekin ishlamadi. Biz OpenCV Naive Bayses -dan foydalandik va bu yaxshi ishladi. Biz Tensorflow va CNN neyron tarmoqlaridan foydalanishga harakat qildik, ammo hozircha buni amalga oshirmadik. OpenCV ML va OpenCV -ning asosiy usullaridan foydalanish bizga odamlarni aniqlashning yaxshi tezligiga erishishga yordam berdi. Shunday bo'lsa -da, har bir video turi uchun biz OpenCV parametrlarini odamlarni aniqlashning yaxshi tezligiga erishish va yolg'on pozitsiyalardan qochish uchun moslashtirishimiz kerak. Shu ikki oyning o'rtalarida biz ma'lumotlarni yig'ish markazini emas, balki birinchi fikrimizni ishlab chiqdik. faqat yo'lovchilar soni va GPS joylashuvi. Biz haroratni va hokazo kabi boshqa sensorlar yordamida ma'lumotlarni yig'maslikka qaror qildik. Dasturni parametrlash va uni sozlash uchun.ini faylini yaratdik. Cambus.ini faylida siz dasturni ko'p jihatdan sozlashingiz mumkin.

7 -qadam: natijalar va kelajakdagi ishlar

Videoda ko'rib turganingizdek, hisoblagich aniq ishlaydi. Ko'k chiziqlar kirish chegarasini, qizil chiziq esa chiqish chegarasini belgilaydi. Bunday holda, biz uni avtobusga joylashtira olmaganimiz uchun simulyatsiya qilish uchun video ishlatilgan.

Shuni yodda tutingki, sizning vaziyatingizga video o'lchamlari, kamera burchagi, yorqinligi va boshqalar haqida o'zgartirishlar kiritilishi kerak. Har bir turdagi video o'z parametrlarini moslashtirishi kerak, masalan, yadroni tortishish fonida va boshqalar.

Iltimos, cambus.ini saytidagi o'zgaruvchilarni o'zgartiring, MQTT brokerini va boshqalarni ko'rsatib.

Kelgusida biz tizimga harorat, namlik va CO2 datchiklarini qo'shishni o'ylaymiz. Maqsad - shaharlar atrofidagi ma'lumotlarni jamoatchilikka taqdim etish.

Loyihani takomillashtirish uchun quyidagi qadamlarni sanab o'tamiz:

  • C/C ++ yordamida kodni qayta yozing;
  • ML algoritmini takomillashtirish;
  • Python kodini qayta faktorlash;
  • Avtobusga joylashtirish;

Biz Embarcados va Qualcommga ko'rsatgan barcha yordamlari uchun minnatdorchilik bildiramiz.

Hamkorlar:

Bruno Monteyro - [email protected]

Kleber Drobovok - [email protected]

Vinisius de Oliveyra - [email protected]

8 -qadam: Adabiyotlar

[1]

[2]

[3]

[4]

[5]