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

Rocky Rover: Bangun Sistem Visi Robotik dengan PixyCam dan Arduino 101

Komponen dan Perlengkapan

Aplikasi dan Layanan Online

Tentang Proyek

Acara Hackster Live sangat luar biasa! Intel menyponsori acara Hackster Dallas kami dan mengirim beberapa Arduino 101 Intel untuk membangun Rover. Terima kasih Intel, terima kasih Arduino. Inilah Rover yang saya bangun untuk acara tersebut.

Saya membangun perangkat ini mengikuti tutorial dari Johnathan Hottell. Dia membuat beberapa video untuk membangun Rover BLE. Dan mudah untuk diikuti! Lihat di sini. Inilah video dari Johnathan Hottell.

Saya memiliki Rover dengan 4 motor jadi saya mengikuti ini.

Setelah membangun Rover dan menghubungkannya dengan Blynk, saya memutuskan untuk meningkatkan pembangunan dan menambahkan PixyCam. Saya memindahkan tempat baterai ke depan sehingga saya dapat memasang kamera pan/tilt.

PixyCam

PixyCam membuat visi robotik menjadi mudah. Pixy adalah sensor visi cepat untuk robotika DIY, mudah untuk mengajari Pixy sebuah objek hanya dengan menekan tombol. Itu mampu melacak ratusan objek secara bersamaan dan hanya menyediakan data yang sedang dilacak.

Saya memutuskan untuk melacak Labu Oranye.

Saya terkejut seberapa mudah untuk menjalankannya. Inilah tautan untuk petunjuk menghubungkan PixyCam ke Arduino. Klik di sini untuk petunjuk pemasangan mekanisme Pan/Tilt. Saya senang karena memiliki banyak gambar, sangat mudah diikuti. Saya mengikuti petunjuk pengaturan dan pembangunan, cara mengintegrasikan dengan Arduino. Saya menguji contoh-contoh mereka.

Inilah yang saya temukan tentang API.

API Arduino PixyCam

Menggunakan Pixy dengan Arduino sangat sederhana. Cukup sertakan header SPI dan Pixy:

#include <SPI.h>
#include <Pixy.h>

Dan buat instance global Pixy dengan menempatkan hal kecil ini di luar fungsi setup() dan loop():

Pixy pixy;

Metode terpenting dalam pustaka Arduino adalah getBlocks(), yang mengembalikan jumlah objek yang terdeteksi Pixy. Anda kemudian dapat melihat di array pixy.blocks[] untuk informasi tentang setiap objek yang terdeteksi (satu anggota array untuk setiap objek yang terdeteksi.) Setiap anggota array (i) berisi field berikut:

Jadi mudah untuk berkomunikasi dengan Pixy dengan Arduino Anda! Untuk informasi lebih lanjut tentang Pustaka dan API Arduino, kunjungi di sini. Inilah kode yang digunakan untuk Rover. Saya memodifikasi kode BLE asli dan menambahkan pelacakan objek. Saat penyiapan:

void setup() { ..... pixy.init(); .... }

Loop utama terlihat seperti ini:

void loop() { ...... // baca data pixy dan dapatkan blok
static int i = 0;
int j;
uint16_t blocks;
char buf[32];
int32_t panError, tiltError;
blocks = pixy.getBlocks();
//jika ada blok
if (blocks) {
  panError = X_CENTER-pixy.blocks[0].x;
  tiltError = pixy.blocks[0].y-Y_CENTER;
  panLoop.updatePan(panError);
  tiltLoop.update(tiltError);
  pixy.setServos(panLoop.m_pos, tiltLoop.m_pos);
  i++;
  // frame akan memberatkan Arduino
  if (i%10==0) {
    int trackedBlock = 0;
    sprintf(buf, "Detected %d:\n", blocks);
    Serial.print(buf);
    long maxSize = 0;
    for (j=0; j<blocks; j++) {
      sprintf(buf, " block %d: ", j);
      Serial.print(buf);
      pixy.blocks[j].print();
      long newSize = pixy.blocks[j].height * pixy.blocks[j].width;
      if (newSize > maxSize) {
        trackedBlock = j;
        maxSize = newSize;
      }
    }
    int32_t followError = RCS_CENTER_POS - panLoop.m_pos;
    // Ukuran adalah luas objek.
    // Kami menjaga rata-rata berjalan dari 8 terakhir.
    size += pixy.blocks[trackedBlock].width * pixy.blocks[trackedBlock].height;
    size -= size >> 3;
    int forwardSpeed = constrain(400 - (size/256), -100, 400);
    int32_t differential = (followError + (followError * forwardSpeed))>>8;
    int leftSpeed = constrain(forwardSpeed + differential, -400, 400);
    int rightSpeed = constrain(forwardSpeed - differential, -400, 400);
    motor1->setSpeed(leftSpeed);
    motor3->setSpeed(leftSpeed);
    motor2->setSpeed(rightSpeed);
    motor4->setSpeed(rightSpeed);
    double width = pixy.blocks[trackedBlock].width;
    if (width <= 5) {
    } else if (width < 20 && !running) {
      Serial.println("running");
      motor1->run(FORWARD);
      motor3->run(FORWARD);
      motor2->run(FORWARD);
      motor4->run(FORWARD);
      running = true;
    } else if (width > 80 && !running) {
      Serial.println("running");
      motor1->run(BACKWARD);
      motor3->run(BACKWARD);
      motor2->run(BACKWARD);
      motor4->run(BACKWARD);
      running = true;
    } else if (width >= 20 && width <= 80 && running) {
      motor1->setSpeed(128);
      motor2->setSpeed(128);
      motor3->setSpeed(128);
      motor4->setSpeed(128);
      motor2->run(RELEASE);
      motor4->run(RELEASE);
      motor1->run(RELEASE);
      motor3->run(RELEASE);
      running = false;
    }
  }
}

Agar Blynk dapat berjalan tanpa dikontrol oleh PixyCam, tutup kacap lensa. Ini akan memastikan PixyCam tidak mengganggu pengendalian bot. Jika proyek ini membuat Anda tertarik untuk pemrograman Arduino atau menggunakan PixyCam dalam proyek Anda berikutnya, silakan klik tombol "Hormati Proyek" dan ikuti saya.

Jangan ragu untuk bertanya.

Kode

Rocky Rover

Proses manufaktur

  1. Jam POV Arduino: Buat Tampilan LED Persistensi Penglihatan
  2. SERENA: Sistem Alarm Kustom Arduino Mega 2560 dengan Layar Sentuh TFT LCD
  3. Buat Lengan Robot Berbasis Arduino dan Cetak 3D – Panduan Langkah demi Langkah
  4. Solusi Daya Teroptimasi untuk Proyek Arduino
  5. Kit Lengan Robot 6-DoF Berbasis Arduino dengan Pengendali Nunchuk
  6. Robot Tank Bluetooth Terkontrol dengan Arduino 101 BLE dan Blynk
  7. Membuat Kacamata Match-Making Cerdas dengan Arduino 101 dan tinyTILE BLE
  8. Membuat Tampilan Persistence of Vision Portabel dengan Arduino UNO dan ATtiny85
  9. Jam Tangan Pintar DIY Arduino: Buat Jam Tangan Gaya Apple Watch Sendiri
  10. Mengoptimalkan Desain Penerangan untuk Sistem Visi Bedah Robotik