Coding dengan AI Vision Sensor di VEXcode V5 C++

Pastikan Anda memiliki Tanda Tangan Warna dan Kode Warna yang dikonfigurasi dengan Sensor Penglihatan AI Anda sehingga dapat digunakan dengan blok Anda. Untuk mempelajari lebih lanjut tentang cara mengonfigurasinya, Anda dapat membaca artikel di bawah ini:

Sensor Penglihatan AI juga dapat mendeteksi Klasifikasi AI dan AprilTags. Untuk mempelajari cara mengaktifkan mode deteksi ini, kunjungi di sini:

Untuk mempelajari lebih detail tentang perintah-perintah individual ini dan cara menggunakannya dalam VEXcode, kunjungi situs API.


Dapatkan Data Visual dengan Sensor Penglihatan AI

Setiap perintah AI Vision Sensor akan dimulai dengan nama AI Vision Sensor yang dikonfigurasi. Untuk semua contoh dalam artikel ini, nama AI Vision Sensor yang digunakan adalah AIVision.

ambil Snapshot

Metode takeSnapshot mengambil gambar dari apa yang sedang dilihat oleh AI Vision Sensor dan menarik data dari snapshot tersebut yang kemudian dapat digunakan dalam suatu proyek. Saat snapshot diambil, Anda perlu menentukan jenis objek apa yang harus dikumpulkan datanya oleh AI Vision Sensor:

  • Tanda Tangan Warna atauKode Warna
    • Tanda Tangan Visual ini dimulai dengan nama AI Vision Sensor, garis bawah ganda, lalu nama Tanda Tangan Visual, misalnya: AIVision1__Blue.
  • Klasifikasi AI - aivision::ALL_AIOBJS
  • AprilTags- aivision::ALL_TAGS

Mengambil snapshot akan membuat serangkaian objek terdeteksi yang Anda tentukan. Misalnya, jika Anda ingin mendeteksi Tanda Warna "Biru" , dan Sensor Penglihatan AI mendeteksi 3 objek biru yang berbeda, data dari ketiganya akan dimasukkan ke dalam array.

Dalam contoh ini, snapshot diambil dari Tanda Warna "Biru" dari Sensor Penglihatan AI yang diberi nama AIVision1. Menampilkan jumlah objek yang terdeteksi dalam array dan menangkap snapshot baru setiap 0,5 detik.

sementara (benar) {
// Dapatkan snapshot dari semua objek Warna Biru.
AIVision.takeSnapshot(AIVision1__Blue);

// Periksa untuk memastikan suatu objek terdeteksi dalam snapshot sebelum menarik data.
jika (AIVision.objectCount > 0) {

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
tunggu(5, msec);
}

benda-benda

Setiap objek dari snapshot memiliki properti berbeda yang dapat digunakan untuk melaporkan informasi tentang objek tersebut. Metode objek memungkinkan Anda mengakses properti ini.

Properti yang tersedia adalah sebagai berikut:

  • pengenal
  • pusatX dan pusatY
  • originX dan originY
  • lebar
  • tinggi
  • sudut
  • ada
  • skor

Untuk mengakses properti objek, gunakan nama AI Vision Sensor, diikuti dengan metode objek, lalu indeks objek.

Indeks objek menunjukkan properti objek spesifik yang ingin Anda ambil. Setelah mengambil gambar, Sensor Penglihatan AI secara otomatis mengurutkan objek berdasarkan ukuran. Objek terbesar diberi indeks 0, sedangkan objek yang lebih kecil diberi nomor indeks lebih tinggi.

Misalnya, memanggil lebar objek terbesar akan menjadi AIVision1.objects[0].width.

pengenal

Properti id hanya tersedia untuk AprilTags dan Klasifikasi AI.

Tiga penanda identifikasi persegi berlabel ID 0, 9, dan 3, masing-masing dengan koordinat dan ukuran yang sesuai ditampilkan dalam teks putih. ID 0 ada di sebelah kiri, ID 9 ada di sebelah kanan, dan ID 3 ada di tengah bawah. Setiap penanda memiliki pola hitam-putih yang unik di dalam kotak.

UntukAprilTag, properti id mewakili nomor IDAprilTag yang terdeteksi.

Mengidentifikasi AprilTags tertentu memungkinkan navigasi selektif. Anda dapat memprogram robot Anda untuk bergerak menuju tag tertentu dan mengabaikan tag lain, secara efektif menggunakannya sebagai penunjuk arah untuk navigasi otomatis.

Dua bola dan dua cincin teridentifikasi dalam gambar, dengan label yang menunjukkan posisi, ukuran, dan skornya. Bola merah berada di sebelah kiri, bola biru berada di sebelah kanan, cincin hijau berada di kiri bawah, dan cincin merah berada di kanan bawah. Setiap objek diberi garis kotak putih, dan detail seperti koordinat X, Y, lebar, tinggi, dan skor 99% ditampilkan dalam teks putih.

UntukKlasifikasi AI, properti id mewakili jenis Klasifikasi AI spesifik yang terdeteksi.

Mengidentifikasi Klasifikasi AI tertentumemungkinkan robot untuk hanya fokus pada objek tertentu, seperti hanya ingin menavigasi ke arah Buckyball merah, bukan yang biru.

Kunjungi artikel ini untuk informasi lebih lanjut tentang AprilTags dan Klasifikasi AI dan cara mengaktifkan deteksinya di AI Vision Utility.

pusatX dan pusatY

Ini adalah koordinat pusat objek yang terdeteksi dalam piksel.

Buckyball biru dilacak oleh sistem penglihatan komputer. Objek tersebut diberi garis luar berupa persegi putih, dan di dalam garis luar tersebut terdapat persegi merah yang lebih kecil yang mengelilingi tanda silang putih di tengahnya. Di sudut kiri atas gambar, label menunjukkan objek tersebut berwarna biru, dengan koordinat X:176, Y:117, dan dimensi L:80, T:78.

Koordinat CenterX dan CenterY membantu navigasi dan penentuan posisi. Sensor Penglihatan AI memiliki resolusi 320 x 240 piksel.

Dua objek kubik biru dilacak oleh sistem penglihatan. Objek di atas diberi label koordinat X:215, Y:70, dan dimensi L:73, T:84, dengan garis luar putih dan tanda silang putih di tengah. Objek di bagian bawah diberi label koordinat X:188, Y:184, dan dimensi L:144, T:113, juga diberi garis tepi putih dengan tanda silang putih di tengah.

Anda dapat melihat bahwa objek yang lebih dekat ke AI Vision Sensor akan memiliki koordinat CenterY yang lebih rendah daripada objek yang lebih jauh.

Dalam contoh ini, karena pusat pandangan AI Vision Sensor adalah (160, 120), robot akan berbelok ke kanan hingga koordinat centerX objek yang terdeteksi lebih besar dari 150 piksel, tetapi kurang dari 170 piksel.

while (true) {
  // Dapatkan snapshot semua objek Warna Biru.
  AIVision.takeSnapshot(AIVision__Blue);

  // Periksa untuk memastikan suatu objek terdeteksi dalam snapshot sebelum menarik data.
  jika (AIVision.objectCount > 0) {

    jika (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Drivetrain.belok(kanan);
    } yang lain {
      Drivetrain.berhenti();
    }
  }
  tunggu(5, msec);
}

asalX dan asalY

OriginX dan OriginY adalah koordinat di sudut kiri atas objek yang terdeteksi dalam piksel.

Buckyball biru dilacak oleh sistem penglihatan. Garis luar berwarna putih mengelilingi objek, dengan tanda silang putih di bagian tengah dalam garis luar tersebut. Label kiri atas menunjukkan warna objek sebagai biru, bersama dengan koordinat X:176, Y:117, dan dimensi L:80, T:78. Kotak merah kecil menyorot sudut kiri atas objek.

Koordinat OriginX dan OriginY membantu navigasi dan penentuan posisi. Dengan menggabungkan koordinat ini dengan Lebar dan Tinggi objek, Anda dapat menentukan ukuran kotak pembatas objek. Ini dapat membantu melacak objek yang bergerak atau menavigasi antar objek.

lebar dan tinggi

Ini adalah lebar atau tinggi objek yang terdeteksi dalam piksel.

Gambar tersebut menunjukkan Buckyball biru dengan garis persegi putih yang mengikutinya. Sudut kiri atas memiliki label yang menunjukkan bahwa itu adalah objek biru, dengan koordinat X:176, Y:117, dan dimensi L:80, T:78. Panah merah menyorot lebar dan tinggi objek.

Pengukuran lebar dan tinggi membantu mengidentifikasi objek yang berbeda. Misalnya, Buckyball akan memiliki tinggi lebih besar daripada Ring.

Dua objek kubik biru dilacak oleh sistem pengenalan visual. Kubus atas memiliki garis luar putih dengan label yang menunjukkan posisinya sebagai X:215, Y:70 dan dimensi L:73, T:84. Kubus bagian bawah memiliki garis luar putih serupa dengan label yang menampilkan X:188, Y:184, dan dimensi L:144, T:113. Setiap kubus memiliki tanda silang putih di tengahnya, kemungkinan menunjukkan titik fokus pelacakan. Label menyoroti pengukuran dan data pelacakan untuk setiap objek.

Lebar dan tinggi juga menunjukkan jarak objek dari AI Vision Sensor. Pengukuran yang lebih kecil biasanya berarti objek tersebut lebih jauh, sedangkan pengukuran yang lebih besar menunjukkan objek tersebut lebih dekat.

Dalam contoh ini, lebar objek digunakan untuk navigasi. Robot akan mendekati objek hingga lebarnya mencapai ukuran tertentu sebelum berhenti.

while (true) {
  // Dapatkan snapshot semua objek Biru.
  AIVision.takeSnapshot(AIVision1__Blue);

  // Periksa untuk memastikan suatu objek terdeteksi dalam snapshot sebelum menarik data.
  jika (AIVision.objectCount > 0) {

    jika (AIVision.objects[0].width < 250.0) {
      Drivetrain.drive(maju);
    } yang lain {
      Drivetrain.stop();
    }
  }
  tunggu(5, msec);
}

sudut

Gif berputar yang menunjukkan blok merah dan hijau. Bila balok-balok tersebut diposisikan secara horizontal sempurna dari merah ke hijau, maka balok-balok tersebut akan terlihat bersudut 0 derajat. Jika balok merah berada di atas balok hijau secara vertikal, maka sudutnya adalah 90 derajat. Bila balok-balok tersebut berwarna hijau ke merah secara horizontal, maka sudutnya adalah 180 derajat. Jika balok hijau berada di atas balok merah secara vertikal, sudutnya adalah 20 derajat.

Properti sudut hanya tersedia untukKode Warna danAprilTags.

Ini menunjukkan jika Kode Warna yang terdeteksiatau AprilTag berorientasi berbeda.

Tumpukan dua kubus, satu hijau di atas dan satu biru di bawah, dilacak oleh sistem penglihatan. Garis putih mengelilingi kedua kubus, dengan tanda silang putih di tengah kubus hijau. Label di bagian bawah gambar menampilkan Hijau_Biru A:87°, yang menunjukkan warna yang terdeteksi dan pengukuran sudut. Di bawahnya, koordinat disusun sebagai X:117, Y:186, dengan dimensi L:137, T:172, yang mewakili posisi dan ukuran kubus yang ditumpuk dalam bingkai.

Anda dapat melihat apakah robot berorientasi berbeda dalam kaitannya dengan Kode Warna atauAprilTag dan membuat keputusan navigasi berdasarkan itu.

Dua kubus, satu hijau dan satu biru, ditempatkan berdampingan dan dilacak oleh sistem penglihatan. Garis putih mengelilingi kedua kubus dengan tanda silang putih di tengahnya. Label kiri atas menunjukkan Hijau_Biru A:0°, merujuk pada warna yang terdeteksi dan pengukuran sudut. Di bawahnya, koordinat ditunjukkan sebagai X:150, Y:102, dengan dimensi W:179, H:109, yang mewakili posisi dan ukuran kubus di dalam bingkai.

Misalnya, jika Kode Warna tidak terdeteksi pada sudut yang tepat, maka objek yang diwakilinya mungkin tidak dapat ditangkap dengan baik oleh robot.

skor

Properti skor digunakan saat mendeteksiKlasifikasi AI dengan Sensor Penglihatan AI.

Gambar menunjukkan empat objek yang dilacak oleh sistem penglihatan: dua bola dan dua cincin. Bola merah diberi label koordinat X:122, Y:84, W:67, H:66, dan skor 99%. Bola biru memiliki X:228, Y:86, W:70, H:68, dengan skor 99%. Cincin hijau memiliki koordinat X:109, Y:186, W:98, H:92, dan skor 99%. Cincin merah diberi label X:259, Y:187, W:89, H:91, dengan skor 99%. Setiap objek diberi garis putih, yang menunjukkan keakuratan pelacakan.

Skor keyakinan menunjukkan seberapa yakin AI Vision Sensor dalam mendeteksinya. Pada gambar ini, 99% keyakinan dalam mengidentifikasi Klasifikasi AI keempat objek ini. Anda dapat menggunakan skor ini untuk memastikan robot Anda hanya berfokus pada deteksi yang sangat meyakinkan.

ada

Properti exists digunakan untuk mendeteksi apakah Tanda Visual yang ditentukan telah terdeteksi pada cuplikan terakhir yang diambil.

Dengan ini Anda dapat memeriksa apakah ada objek yang terdeteksi pada snapshot sebelumnya. Properti ini akan mengembalikan True jika objek tersebut ada, dan False jika objek tersebut tidak ada.


jumlah objek

Metode objectCount mengembalikan jumlah objek yang terdeteksi dalam snapshot terakhir.

Antarmuka AI Vision Utility dengan dua kubus biru terdeteksi di sisi kiri, masing-masing ditandai dengan koordinat dan dimensi X dan Y. Sistem terhubung, dan AprilTags diaktifkan, sementara Klasifikasi AI dinonaktifkan. Di sebelah kanan, pengaturan warna Biru ditampilkan dengan rentang rona dan saturasi yang dapat disesuaikan, masing-masing ditetapkan pada 22 dan 0,34. Ada opsi untuk menambahkan atau mengatur warna dan membekukan video. Firmwarenya sudah yang terbaru, menjalankan versi 1.0.0.b16, dan tombol tutup tersedia di bagian bawah.

Dalam contoh ini, dua objek telah dideteksi dengan Tanda Tangan Warna "Biru". Keduanya akan dimasukkan ke dalam array ketika metode takeSnapshot digunakan.

Potongan kode ini terus memperbarui EXP Brain dengan jumlah objek yang terdeteksi. Berdasarkan contoh yang diberikan, ia akan berulang kali mengirimkan nilai 2, yang menunjukkan bahwa dua objek telah terdeteksi.

while (true) {
// Dapatkan snapshot semua objek Biru.
AIVision.takeSnapshot(AIVision__Blue);

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Periksa untuk memastikan objek terdeteksi dalam snapshot sebelum menarik data.
jika (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
tunggu(5, msec);
}

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: