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:
- Mengonfigurasi Tanda Tangan Warna dengan Tanda Tangan AI Vision di VEXcode EXP
- Mengonfigurasi Kode Warna dengan Tanda Tangan AI Vision di VEXcode EXP
Sensor Penglihatan AI juga dapat mendeteksi Klasifikasi AI dan AprilTags. Untuk mempelajari cara mengaktifkan mode deteksi ini, kunjungi di sini:
- Klasifikasi AI dengan Sensor Penglihatan AI di VEXcode EXP
- AprilTags dengan Sensor Penglihatan AI di VEXcode EXP
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.
- Tanda Tangan Visual ini dimulai dengan nama AI Vision Sensor, garis bawah ganda, lalu nama Tanda Tangan Visual, misalnya:
-
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 mana 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.
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.
UntukKlasifikasi AI, properti id mewakili jenis Klasifikasi AI spesifik yang terdeteksi.
Mengidentifikasi Klasifikasi AI spesifikmemungkinkan 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.
Koordinat CenterX dan CenterY membantu navigasi dan penentuan posisi. Sensor Penglihatan AI memiliki resolusi 320 x 240 piksel.
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.
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.
Pengukuran lebar dan tinggi membantu mengidentifikasi objek yang berbeda. Misalnya, Buckyball akan memiliki tinggi lebih besar daripada Ring.
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
Properti sudut hanya tersedia untukKode Warna danAprilTags.
Ini menunjukkan jika Kode Warna yang terdeteksiatau AprilTag berorientasi berbeda.
Anda dapat melihat apakah robot berorientasi berbeda dalam kaitannya dengan Kode Warna atauAprilTag dan membuat keputusan navigasi berdasarkan itu.
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.
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.
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);
}