Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pengawasan Presisi: Pelacakan Objek dengan Arduino dan Servo

Komponen dan Perlengkapan

Pemrosesan Arduino
×1
Pengawasan Presisi: Pelacakan Objek dengan Arduino dan Servo
Arduino UNO
×1
Kamera (umum)
×1
Servo (Tower Pro MG996R)
×1

Aplikasi dan Layanan Online

Pengawasan Presisi: Pelacakan Objek dengan Arduino dan Servo
Arduino IDE

Tentang Proyek Ini

Pelacakan objek adalah tugas penting dalam bidang penglihatan komputer. Pertumbuhan komputer dengan daya tinggi, ketersediaan kamera video berkualitas tinggi dan terjangkau, serta kebutuhan yang meningkat untuk analisis video otomatis telah menghasilkan minat yang besar terhadap algoritma pelacakan objek. Tiga langkah kunci dalam analisis video adalah: deteksi objek bergerak yang menarik, pelacakan objek tersebut dari frame ke frame, dan analisis jejak objek untuk mengenali perilaku mereka. Oleh karena itu, penggunaan pelacakan objek relevan untuk tugas-tugas berikut:

1. Pengenalan berdasarkan gerakan, yaitu identifikasi manusia berdasarkan gerakan kaki, deteksi objek otomatis, dll.;

2. Pengawasan otomatis, yaitu memantau adegan untuk mendeteksi aktivitas mencurigakan atau peristiwa yang tidak mungkin.;

3. Pengindeksan video, yaitu anotasi dan pengambilan video otomatis dalam database multimedia.;

4. Interaksi manusia dan komputer, yaitu pengenalan gerakan, pelacakan gerakan mata untuk input data ke komputer, dll.;

5. Pemantauan lalu lintas, yaitu pengumpulan statistik lalu lintas secara real-time untuk mengarahkan aliran lalu lintas.

6. Navigasi kendaraan, yaitu perencanaan jalur dan kemampuan menghindari halangan berbasis video. Dalam bentuk paling sederhana, pelacakan dapat didefinisikan sebagai masalah estimasi trajetur objek di bidang citra saat objek bergerak di sekitar adegan. Dengan kata lain, pelacak memberikan label yang konsisten pada objek yang dilacak dalam berbagai frame video. Selain itu, tergantung pada domain pelacakan, pelacak juga dapat memberikan informasi yang berpusat pada objek, seperti orientasi, luas, atau bentuk objek.

Proyek ini tentang metode deteksi dan pelacakan objek waktu nyata di mana kita menggunakan kamera CCTV untuk mengidentifikasi dan melacak target dalam jangkauan pandang kamera dari ruang pengawasan. Serta pelacakan perangkat lunak, sistem juga akan melacak objek dalam adegan menggunakan lengan robot terpasang laser. Lengan robot bekerja dengan cara mencakup setiap koordinat dalam frame video dengan gerak pan-tilt-nya.

Tautan file CAD-

Kode

mouse_drag_fina_larduino_workinh_code.inoArduino
Ini adalah kode processing yang mentransfer koordinat mouse ke arduino dan menyesuaikan servo sesuai posisi pointer mouse
///////////////////// Processing Code ///////////////////////////////// import processing.serial.*; import processing.video.*; import java.awt.*; import gab.opencv.*; Capture video; OpenCV opencv; Serial Com7; float fpan,ftilt; int pan, tilt, x, y; int[] inBytes = new int[3]; void setup(){ size(500,500); String portName = Serial.list()[0]; Com7 = new Serial(this, portName, 9600); video = new Capture(this, 640/2, 480/2); opencv = new OpenCV(this, 640/2, 480/2); opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE); video.start(); //Com7 = new Serial(this, Serial.list()[1], 9600); background(0,0,0); ellipse(width/2,width/2,10,10); } void draw() { scale(2); opencv.loadImage(video); noFill(); stroke(0, 255, 0); strokeWeight(3); image(video, 0, 0 ); Rectangle[] faces = opencv.detect(); println(faces.length); for (int i = 0; i < faces.length; i++) { println(faces[i].x + "," + faces[i].y); rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height); } pan = int(mouseX*180/width); tilt = int(mouseY*180/height); pan = constrain(180 - pan,0,180); tilt = constrain(tilt,0,180); Com7.write(pan); Com7.write(tilt); Com7.write(255); while (Com7.available()>0) { inBytes[0] = inBytes[1]; inBytes[1] = inBytes[2]; inBytes[2] = Com7.read(); if(inBytes[2] == 255) { println(inBytes[0] + " , " + inBytes[1]); //background(0,0,0); //ellipse(width - inBytes[0]*width/180,inBytes[1]*width/180,10,10); } } } void captureEvent(Capture c) { c.read(); } 
facetracking_procesing_final_code.pdeArduino
Kode ini melacak wajah seseorang dalam jangkauan pandang
///////////////////// Processing Code ///////////////////////////////// import processing.serial.*; import processing.video.*; import java.awt.*; import gab.opencv.*; Capture video; OpenCV opencv; Serial Com7; float fpan,ftilt; int pan, tilt, x, y; int[] inBytes = new int[3]; void setup(){ size(500,500); String portName = Serial.list()[0]; Com7 = new Serial(this, portName, 9600); video = new Capture(this, 640/2, 480/2); opencv = new OpenCV(this, 640/2, 480/2); opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE); video.start(); //Com7 = new Serial(this, Serial.list()[1], 9600); background(0,0,0); ellipse(width/2,width/2,10,10); } void draw() { scale(2); opencv.loadImage(video); noFill(); stroke(0, 255, 0); strokeWeight(3); image(video, 0, 0 ); Rectangle[] faces = opencv.detect(); println(faces.length); for (int i = 0; i < faces.length; i++) { println(faces[i].x + "," + faces[i].y); rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height); pan = int(faces[i].x*180/width); tilt = int(faces[i].y*180/height);} pan = constrain(180 - pan,0,180); tilt = constrain(tilt,0,180); Com7.write(pan); Com7.write(tilt); Com7.write(255); while (Com7.available()>0) { inBytes[0] = inBytes[1]; inBytes[1] = inBytes[2]; inBytes[2] = Com7.read(); if(inBytes[2] == 255) { println(inBytes[0] + " , " + inBytes[1]); //background(0,0,0); //ellipse(width - inBytes[0]*width/180,inBytes[1]*width/180,10,10); } } } void captureEvent(Capture c) { c.read(); } 
mouse_drag_fina_larduino_workinh_code.inoArduino
Ini adalah kode arduino untuk gerakan servo
#include <Servo.h> byte inBytes[3]; Servo panservo; Servo tiltservo; int panangle = 90; int tiltangle = 90; void setup(){ Serial.begin(9600); panservo.attach(9); tiltservo.attach(11); } void loop() { if(Serial.available()> 0){ inBytes[0] = inBytes[1]; inBytes[1] = inBytes[2]; inBytes[2] = Serial.read(); if(inBytes[2] == 255) { Serial.write(inBytes,3); panangle = inBytes[0]; tiltangle = inBytes[1]; panservo.write(panangle); tiltservo.write(tiltangle); } } } 
Pustaka Open CV untuk Processing
Instal pustaka ini agar kode ini dapat bekerjahttps://github.com/atduskgreg/opencv-processing

Bagian dan Enclosure Khusus


Proses manufaktur

  1. Profiling Suhu Raspberry Pi yang Akurat dengan Python, SQLite, dan LabVIEW
  2. Pemantauan Cuaca Jarak Jauh dengan Raspberry Pi 3 dan PubNub
  3. Integrasikan TI SensorTag dengan Blynk melalui Node-RED di Raspberry Pi Zero
  4. Pelacakan Bola Tenis Meja Tingkat Lanjut dengan Raspberry Pi dan OpenCV
  5. Mengontrol LED dengan Sensor Gerak PIR pada Raspberry Pi
  6. Pelacakan Objek Berbasis Visi Otomatis dengan Raspberry Pi dan OpenCV
  7. Membangun Robot Cerdas dengan Bridge Shield – Integrasi Raspberry Pi & Arduino
  8. Membangun Robot Raspberry Pi Dikontrol Wi‑Fi dengan Python – Panduan Langkah demi Langkah
  9. Menguasai String dalam C#: Praktik Terbaik & Tips
  10. Mengukur Akurasi Pelacakan Objek Dinamis dalam Sistem Motion Capture