สารบัญ:

Cambus - ระบบการเก็บรวบรวมข้อมูลบนรถโดยสารประจำทางในเมือง: 8 ขั้นตอน
Cambus - ระบบการเก็บรวบรวมข้อมูลบนรถโดยสารประจำทางในเมือง: 8 ขั้นตอน

วีดีโอ: Cambus - ระบบการเก็บรวบรวมข้อมูลบนรถโดยสารประจำทางในเมือง: 8 ขั้นตอน

วีดีโอ: Cambus - ระบบการเก็บรวบรวมข้อมูลบนรถโดยสารประจำทางในเมือง: 8 ขั้นตอน
วีดีโอ: CANBUS เบื้องต้น 2024, พฤศจิกายน
Anonim
Cambus - ระบบการเก็บรวบรวมข้อมูลบนรถโดยสารประจำทางในเมือง
Cambus - ระบบการเก็บรวบรวมข้อมูลบนรถโดยสารประจำทางในเมือง

ท่ามกลางปัญหาและความยุ่งยากที่พบในระบบขนส่งสาธารณะ ประชากรขาดข้อมูลตามเวลาจริงและมีความกล้าแสดงออกน้อยที่สุด ความแออัดของรถโดยสารสาธารณะทำให้ผู้ใช้ต้องออกไปที่ต้องการใช้ยานพาหนะของตนเอง แม้จะอยู่ในการจราจรเป็นเวลาหลายชั่วโมงก็ตาม หากข้อมูลตามเวลาจริง เช่น จำนวนรถประจำทาง เข้าถึงได้ง่ายสำหรับผู้ใช้ เขาสามารถเลือกได้ว่าจะรอรถบัสคันต่อไปหรือจะเดินทางโดยรถประจำทางหรือใช้ยานพาหนะของตนเอง พลังแห่งการเลือกทำให้การขนส่งสาธารณะเป็นตัวเลือกที่น่าสนใจยิ่งขึ้นสำหรับผู้ใช้

การนับหรือประมาณการคนในบ้านสามารถทำได้หลายวิธี โดยวิธีที่นิยมใช้กันมากที่สุด ได้แก่

  • ภาพความร้อน
  • วิสัยทัศน์คอมพิวเตอร์;
  • เคาน์เตอร์ใบหน้า;

ในบรรดาปัญหาหลายประการในการประมาณค่าผู้คนในสภาพแวดล้อมโดยใช้คอมพิวเตอร์วิทัศน์ ปัญหาหลักคือ:

  • การบดบังของผู้คน;
  • แสงกลับด้าน;
  • การบดเคี้ยวแบบสถิต นั่นคือ คนที่อยู่เบื้องหลังวัตถุ
  • มุมกล้องกับสิ่งแวดล้อม

ความท้าทายสำหรับโครงการนี้คือต้องรู้มุมกล้องที่ถูกต้องซึ่งจะช่วยลบแบ็คกราวด์ของภาพได้ดีที่สุด รวมถึงความส่องสว่างที่เปลี่ยนแปลงได้ในระหว่างวันภายในรถบัส

วัตถุประสงค์หลักของข้อเสนอคือการสร้างแบบจำลองที่แข็งแกร่งและกำหนดค่าได้เพื่อประเมินความแออัดยัดเยียดและทำให้ประชากรเข้าถึงผลลัพธ์ได้ผ่านสมาร์ทโฟน

ขั้นตอนที่ 1: วัสดุ

วัสดุที่จำเป็นสำหรับโครงการคือ:

1 x กระดานมังกร 410c;

1 x กล้อง USB;

1 x สมาร์ทโฟน Android;

ขั้นตอนที่ 2: ติดตั้ง Linaro ใน Dragonboard 410c

ติดตั้ง Linaro ใน Dragonboard 410c
ติดตั้ง Linaro ใน Dragonboard 410c
ติดตั้ง Linaro ใน Dragonboard 410c
ติดตั้ง Linaro ใน Dragonboard 410c

ทำตามคำแนะนำบนลิงค์ด้านล่างเพื่อติดตั้ง Linaro 17.09 บน DragonBoard 410c เราแนะนำให้ติดตั้ง Linaro 17.09 เพื่อรองรับเคอร์เนลสำหรับ GPS

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

ขั้นตอนที่ 3: ขั้นตอนที่ 2: ติดตั้งไลบรารี่และดาวน์โหลดซอร์สโค้ดจาก GitHub

ขั้นตอนที่ 2: ติดตั้งไลบรารี่และดาวน์โหลดซอร์สโค้ดจาก GitHub
ขั้นตอนที่ 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, DynamoDB
การตั้งค่า AWS IoT Core, DynamoDB
การตั้งค่า AWS IoT Core, DynamoDB
การตั้งค่า AWS IoT Core, DynamoDB
การตั้งค่า AWS IoT Core, DynamoDB
การตั้งค่า 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 และ Dweet APIs
ตั้งค่า Twilio และ Dweet APIs
ตั้งค่า Twilio และ Dweet APIs
ตั้งค่า Twilio และ Dweet APIs

บริการ 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]

แนะนำ: