สารบัญ:
- ขั้นตอนที่ 1: วัสดุ
- ขั้นตอนที่ 2: ติดตั้ง Linaro ใน Dragonboard 410c
- ขั้นตอนที่ 3: ขั้นตอนที่ 2: ติดตั้งไลบรารี่และดาวน์โหลดซอร์สโค้ดจาก GitHub
- ขั้นตอนที่ 4: การตั้งค่า AWS IoT Core, DynamoDB
- ขั้นตอนที่ 5: ตั้งค่า Twilio และ Dweet API
- ขั้นตอนที่ 6: ความท้าทาย
- ขั้นตอนที่ 7: ผลลัพธ์และการทำงานในอนาคต
- ขั้นตอนที่ 8: การอ้างอิง
วีดีโอ: Cambus - ระบบการเก็บรวบรวมข้อมูลบนรถโดยสารประจำทางในเมือง: 8 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
ท่ามกลางปัญหาและความยุ่งยากที่พบในระบบขนส่งสาธารณะ ประชากรขาดข้อมูลตามเวลาจริงและมีความกล้าแสดงออกน้อยที่สุด ความแออัดของรถโดยสารสาธารณะทำให้ผู้ใช้ต้องออกไปที่ต้องการใช้ยานพาหนะของตนเอง แม้จะอยู่ในการจราจรเป็นเวลาหลายชั่วโมงก็ตาม หากข้อมูลตามเวลาจริง เช่น จำนวนรถประจำทาง เข้าถึงได้ง่ายสำหรับผู้ใช้ เขาสามารถเลือกได้ว่าจะรอรถบัสคันต่อไปหรือจะเดินทางโดยรถประจำทางหรือใช้ยานพาหนะของตนเอง พลังแห่งการเลือกทำให้การขนส่งสาธารณะเป็นตัวเลือกที่น่าสนใจยิ่งขึ้นสำหรับผู้ใช้
การนับหรือประมาณการคนในบ้านสามารถทำได้หลายวิธี โดยวิธีที่นิยมใช้กันมากที่สุด ได้แก่
- ภาพความร้อน
- วิสัยทัศน์คอมพิวเตอร์;
- เคาน์เตอร์ใบหน้า;
ในบรรดาปัญหาหลายประการในการประมาณค่าผู้คนในสภาพแวดล้อมโดยใช้คอมพิวเตอร์วิทัศน์ ปัญหาหลักคือ:
- การบดบังของผู้คน;
- แสงกลับด้าน;
- การบดเคี้ยวแบบสถิต นั่นคือ คนที่อยู่เบื้องหลังวัตถุ
- มุมกล้องกับสิ่งแวดล้อม
ความท้าทายสำหรับโครงการนี้คือต้องรู้มุมกล้องที่ถูกต้องซึ่งจะช่วยลบแบ็คกราวด์ของภาพได้ดีที่สุด รวมถึงความส่องสว่างที่เปลี่ยนแปลงได้ในระหว่างวันภายในรถบัส
วัตถุประสงค์หลักของข้อเสนอคือการสร้างแบบจำลองที่แข็งแกร่งและกำหนดค่าได้เพื่อประเมินความแออัดยัดเยียดและทำให้ประชากรเข้าถึงผลลัพธ์ได้ผ่านสมาร์ทโฟน
ขั้นตอนที่ 1: วัสดุ
วัสดุที่จำเป็นสำหรับโครงการคือ:
1 x กระดานมังกร 410c;
1 x กล้อง USB;
1 x สมาร์ทโฟน Android;
ขั้นตอนที่ 2: ติดตั้ง Linaro ใน Dragonboard 410c
ทำตามคำแนะนำบนลิงค์ด้านล่างเพื่อติดตั้ง Linaro 17.09 บน DragonBoard 410c เราแนะนำให้ติดตั้ง Linaro 17.09 เพื่อรองรับเคอร์เนลสำหรับ GPS
www.96boards.org/documentation/consumer/dr…
ขั้นตอนที่ 3: ขั้นตอนที่ 2: ติดตั้งไลบรารี่และดาวน์โหลดซอร์สโค้ดจาก GitHub
Cambus มีสถาปัตยกรรมแบบแยกส่วนและการออกแบบโค้ด เป็นไปได้ที่จะเขียนโค้ดอัลกอริธึมการเรียนรู้ของเครื่อง เปลี่ยนเป็นบริการคลาวด์อื่น และสร้างแอปพลิเคชันผู้ใช้ของคุณเอง
ในการรันโครงการ cambus ก่อนอื่นคุณต้องดาวน์โหลดซอร์สโค้ดจาก github (https://github.com/bmonteiro00/cambus) ติดตั้ง python (Cambus เป็นโหมดที่ทำงานบนเวอร์ชัน 2.7 และ > 3.x) และไลบรารีต่อไปนี้โดยใช้ 'pip' (sudo apt-get install python-pip) จำเป็นต้องติดตั้งไลบรารี่จำนวนมากในระบบ Linaro (นอกจากนี้ยังแนะนำให้สร้างสภาพแวดล้อมเสมือน - pip install virtualenv - เพื่อแยกระบบ Cambus ออกจาก SO) โปรดติดตั้งไลบรารีต่อไปนี้:
- pip ติดตั้ง paho-mqtt
- pip ติดตั้ง numpy
- pip ติดตั้ง opencv-python
- pip ติดตั้ง opencv-contrib-python
- pip ติดตั้ง twilio
- pip ติดตั้ง matplotlib
โปรแกรมหลักแบ่งออกเป็นชั้นเรียน:
- CamBus - คลาสหลัก;
- Sensor - คลาสรับข้อมูล เช่น ตำแหน่ง GPS อุณหภูมิ Co2
- ตัวนับ - คลาสพร้อมอัลกอริธึมการประมวลผลภาพ
ตรวจสอบให้แน่ใจว่าไลบรารีทั้งหมดได้รับการติดตั้งและรัน python CamBus_v1.py หรือไม่
ขั้นตอนที่ 4: การตั้งค่า AWS IoT Core, DynamoDB
เราใช้ AWS IoT core เป็นนายหน้า MQTT กับ TLS และ X509 และ NoSQL และ DynamoDB เพื่อบันทึกข้อมูล คุณจะต้องสร้างบัญชีที่ https://aws.amazon.com/free) ถัดไป คุณจะต้องทำตามขั้นตอนด้านล่างเพื่อสร้างสิ่งต่างๆ และผสานรวมกับ Dynamo:
docs.aws.amazon.com/iot/latest/developergu…
ขั้นตอนที่ 5: ตั้งค่า Twilio และ Dweet API
บริการ Twilio SMS ก็ถูกตั้งค่าเช่นกัน ดู URL ด้านล่างสำหรับคำแนะนำในการดำเนินการขั้นตอนนี้:
www.twilio.com/docs/iam/api/account
การรวมระหว่างแอพ android และระบบทำได้โดย REST ใช้แพลตฟอร์ม Dweet ไม่จำเป็นต้องลงทะเบียน
dweet.io/
ขั้นตอนที่ 6: ความท้าทาย
ในระหว่างการพัฒนา ความท้าทายมากมายที่เราเผชิญ เริ่มตั้งแต่เทคนิค OpenCV ไปจนถึงแพลตฟอร์ม AWS เราตัดสินใจเขียนโค้ดด้วย Python เพื่อประหยัดเวลาในการพัฒนา C/C++ ในระหว่างการพัฒนาของเรา เฉพาะวิธีการพื้นฐานของ Opencv เช่น:
• cv2. GaussianBlur(..)
• cv2.threshold(..)
• cv2.morphologyEx(..)
• cv2.contourArea(..)
• cv2.findContours(..)
วิธีการพื้นฐานเหล่านี้ไม่เพียงพอที่จะตรวจจับคนได้อย่างมีคุณภาพ ใช้สถานการณ์จำลองที่มี ML วิดีโอสั่นคลอน (แมชชีนเลิร์นนิง) ดังนั้นเราจึงตัดสินใจใช้ไลบรารีการเรียนรู้ของเครื่อง OpenCV และพบปัญหาอื่นเนื่องจากการค้นหาข้อมูลที่ดีสำหรับอัลกอริธึม ML เป็นปัญหาที่เราใช้เวลาหลายวัน เราใช้อัลกอริธึม OpenCV SVM แล้ว แต่ไม่ได้ผล เราใช้ OpenCV Naive Bayses และอันนี้ก็ใช้ได้ เราได้พยายามใช้เครือข่ายประสาท Tensorflow และ CNN แต่เราไม่ได้ทำให้มันเกิดขึ้นในตอนนี้ CNN ใช้พลังในการประมวลผลเป็นจำนวนมาก ซึ่งเป็นสิ่งที่เราไม่มี การใช้ OpenCV ML และวิธีการพื้นฐานของ OpenCV ช่วยให้เราตรวจจับผู้คนได้ในอัตราที่ดี อย่างไรก็ตาม สำหรับวิดีโอแต่ละประเภท เราต้องปรับพารามิเตอร์ของ OpenCV เพื่อให้ได้อัตราการตรวจจับผู้คนที่ดีและหลีกเลี่ยงผลบวกที่ผิดพลาด ในช่วงกลางของสองเดือนนี้ เราได้พัฒนาแนวคิดแรกของเราที่จะเป็นศูนย์กลางของการรวบรวมข้อมูล เฉพาะจำนวนผู้โดยสารและตำแหน่ง GPS เราตัดสินใจที่จะไม่เก็บรวบรวมข้อมูลโดยใช้เซ็นเซอร์อื่นๆ เช่น อุณหภูมิ และอื่นๆ เราสร้างไฟล์.ini เพื่อกำหนดพารามิเตอร์ของแอปพลิเคชันและทำให้สามารถกำหนดค่าได้ ในไฟล์ Cambus.ini คุณสามารถกำหนดค่าแอปพลิเคชันได้หลายวิธี
ขั้นตอนที่ 7: ผลลัพธ์และการทำงานในอนาคต
ดังที่คุณเห็นในวิดีโอ ตัวนับทำงานอย่างถูกต้อง เส้นสีน้ำเงินทำเครื่องหมายขีด จำกัด อินพุตและเส้นสีแดงคือขีด จำกัด เอาต์พุต ในกรณีนี้ มีการใช้วิดีโอเพื่อจำลองเนื่องจากเราไม่สามารถปรับใช้กับบัสได้
โปรดทราบว่าจะต้องทำการเปลี่ยนแปลงบางอย่างกับสภาพของคุณเกี่ยวกับขนาดวิดีโอ มุมกล้อง ความส่องสว่าง ฯลฯ วิดีโอทุกประเภทจะต้องมีการปรับพารามิเตอร์ของตัวเอง เช่น พื้นหลังการดูดเคอร์เนล opencv และอื่นๆ
โปรดเปลี่ยนตัวแปรที่ cambus.ini โดยระบุโบรกเกอร์ MQTT และอื่นๆ
เราพิจารณาการใช้งานในอนาคตเพื่อเพิ่มเซ็นเซอร์ เช่น อุณหภูมิ ความชื้น และ CO2 ในระบบ แนวคิดคือการรับข้อมูลรอบเมืองเพื่อให้ชุมชนเข้าถึงได้
ต่อไปนี้ เราจะระบุขั้นตอนถัดไปที่คุณสามารถปรับปรุงโครงการได้:
- เขียนโค้ดใหม่โดยใช้ C/C++;
- ปรับปรุงอัลกอริทึม ML;
- รหัสหลามปัจจัยใหม่;
- การติดตั้งบนรถบัส;
เราขอขอบคุณ Embarcados และ Qualcomm สำหรับการสนับสนุนทั้งหมดที่ได้รับ
ผู้ทำงานร่วมกัน:
บรูโน่ มอนเตโร - [email protected]
Kleber Drobowok - [email protected]
Vinicius de Oliveira - [email protected]
ขั้นตอนที่ 8: การอ้างอิง
[1]
[2]
[3]
[4]
[5]
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง