Penglihatan#
Perkenalan#
Drone VEX AIR memiliki dua sensor penglihatan yang mendeteksi dan melacak ID AprilTag. Sensor ini memungkinkan drone untuk menganalisis lingkungan sekitarnya, mengikuti objek, dan bereaksi berdasarkan data visual yang terdeteksi.
Berikut adalah daftar semua blok yang tersedia:
Aksi — Mengontrol umpan Vision dan menangkap data objek.
mendapatkan data objek — Mengambil data untuk ID AprilTag.
Pengaturan — Sesuaikan objek mana yang terdeteksi yang dapat diakses.
set Vision object item — Memilih objek tertentu dari daftar objek yang terdeteksi.
Nilai — Mengambil keberadaan objek, klasifikasi, dan properti.
Objek visi ada — Melaporkan apakah suatu objek terdeteksi.
Objek Vision adalah ID AprilTag — Memeriksa apakah ID AprilTag yang terdeteksi cocok dengan ID tertentu.
Jumlah objek yang terlihat — Melaporkan jumlah objek yang terdeteksi.
Properti objek Vision — Mengambil detail seperti:
centerX & centerY — Koordinat posisi tengah dalam pandangan sensor.
arah — Sudut objek relatif terhadap Sensor Penglihatan depan atau derajat yang dibutuhkan agar drone menghadap objek.
rotasi — Orientasi objek.
originX & originY — Koordinat posisi sudut kiri atas dalam tampilan sensor.
id — Nomor identifikasi dari ID AprilTag.
Tindakan#
mendapatkan data objek#
Blok tumpukan get object data menyaring data dari bingkai Sensor Penglihatan. Sensor Penglihatan dapat mendeteksi ID AprilTag.
Dataset ini menyimpan objek yang diurutkan dari yang terbesar hingga terkecil berdasarkan lebar, dimulai dari indeks 0. Properti setiap objek dapat diakses menggunakan blok Properti objek Vision. Dataset kosong akan dilaporkan jika tidak ada objek yang cocok yang terdeteksi.
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
Parameter |
Keterangan |
|---|---|
tanda tangan |
Memfilter dataset agar hanya menyertakan data dengan tanda tangan yang diberikan. Tanda tangan yang tersedia adalah semua AprilTags. |
kamera |
Sensor penglihatan untuk mengambil data, baik ke depan atau ke bawah. |
Contoh
saat dimulai
[Climb upward when an AprilTag ID is detected.]
terbang ke ketinggian [300] [mm v] ▶
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
jika <objek Vision ada?> maka
naik/turun [naik v] sejauh [200] [mm v] ▶
Pengaturan#
atur item objek Visi#
Blok tumpukan set Vision object item menentukan item mana dalam dataset yang akan digunakan.
atur item objek Vision ke [1]
Parameter |
Keterangan |
|---|---|
barang |
Nomor item dalam dataset yang akan digunakan. |
Contoh
saat dimulai
[Display the smallest-appearing AprilTag ID.]
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
bersihkan konsol
jika <objek Vision ada?> maka
atur item objek Vision ke (jumlah objek Vision)
cetak (objek Vision [id v]) di konsol ▶
Nilai-nilai#
Objek visi ada#
Blok Boolean Objek Visi ada melaporkan apakah Sensor Visi yang ditentukan saat ini mendeteksi objek apa pun.
Benar — Sensor Penglihatan yang ditentukan mendeteksi suatu objek.
Salah — Sensor Penglihatan yang ditentukan tidak mendeteksi objek.
<objek Vision ada?>
Parameter |
Keterangan |
|---|---|
Blok ini tidak memiliki parameter. |
Contoh
saat dimulai
[Climb upward when an AprilTag ID is detected.]
terbang ke ketinggian [300] [mm v] ▶
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
jika <objek Vision ada?> maka
naik/turun [naik v] sejauh [200] [mm v] ▶
Objek visi adalah AprilTag ID#
Blok Boolean Vision object is AprilTag ID melaporkan apakah AprilTag ID adalah nomor ID tertentu.
Benar — ID AprilTag adalah angkanya.
Salah — ID AprilTag bukanlah angka.
<Vision object is AprilTag ID [1]>
Parameter |
Keterangan |
|---|---|
Nomor ID AprilTag |
Angka yang akan dibandingkan dengan nomor ID AprilTag yang terdeteksi, dari 0 hingga 37. |
Contoh
saat dimulai
[Display when the target AprilTag ID is detected.]
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
bersihkan konsol
jika <objek Vision ada?> maka
jika <Vision object is AprilTag ID [21]> maka
cetak [Target found!] di konsol ▶
selesai
penghitungan objek penglihatan#
Blok pelapor Vision object count melaporkan jumlah objek yang terdeteksi dalam dataset sebagai bilangan bulat.
(jumlah objek Vision)
Parameter |
Keterangan |
|---|---|
Blok ini tidak memiliki parameter. |
Contoh
saat dimulai
[Display how many AprilTag IDs are detected.]
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
bersihkan konsol
cetak (jumlah objek Vision) di konsol ▶
tunggu [0.2] detik
Properti objek visi#
Terdapat beberapa properti yang disertakan dengan setiap objek (ditunjukkan di bawah) yang disimpan setelah blok get object data digunakan.
(objek Vision [lebar v])
Semua nilai properti kecuali id menjelaskan posisi, ukuran, orientasi, atau arah objek yang terdeteksi pada saat blok get object data digunakan. Nilai-nilai ini diukur dalam piksel atau derajat. Setiap Sensor Visi memiliki resolusi yang berbeda:
Tampilan depan: 640 x 480 piksel
Menghadap ke bawah: 640 x 400 piksel
Parameter |
Keterangan |
|---|---|
milik |
Properti objek yang terdeteksi mana yang akan digunakan: |
lebar#
Properti width melaporkan lebar objek yang terdeteksi dalam piksel sebagai bilangan bulat dari 1 hingga 640.
(objek Vision [lebar v])
Contoh
saat dimulai
[Show if the AprilTag ID appears large or small.]
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
bersihkan konsol
jika <objek Vision ada?> maka
jika <(objek Vision [lebar v]) [math_greater_than v] [100]> maka
cetak [Large] di konsol ▶
lainnya
cetak [Small] di konsol ▶
selesai
selesai
tunggu [0.2] detik
tinggi#
Properti height melaporkan tinggi objek yang terdeteksi dalam piksel sebagai bilangan bulat dari 1 hingga 480.
(objek Vision [tinggi v])
Contoh
saat dimulai
[Show if the AprilTag ID appears large or small.]
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
bersihkan konsol
jika <objek Vision ada?> maka
jika <(objek Vision [tinggi v]) [math_greater_than v] [100]> maka
cetak [Large] di konsol ▶
lainnya
cetak [Small] di konsol ▶
selesai
selesai
tunggu [0.2] detik
pusatX#
Properti centerX melaporkan koordinat x dari pusat objek yang terdeteksi dalam piksel sebagai bilangan bulat dari 1 hingga 640.
(objek Vision [centerX v])
Contoh
saat dimulai
[Show if an AprilTag ID is to the left or the right of the camera.]
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
bersihkan konsol
jika <objek Vision ada?> maka
jika <(objek Vision [centerX v]) [math_less_than v] [320]> maka
cetak [To the left] di konsol ▶
lainnya
cetak [To the right] di konsol ▶
selesai
selesai
tunggu [0.2] detik
pusatY#
Properti centerY melaporkan koordinat y dari pusat objek yang terdeteksi dalam piksel sebagai bilangan bulat dari 1 hingga 480.
(objek Vision [centerY v])
Contoh
saat dimulai
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
terbang ke ketinggian [800] [mm v] ▶
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
jika <objek Vision ada?> maka
jika <(objek Vision [centerY v]) [math_less_than v] [240]> maka
cetak [Below the target!] di konsol ▶
lainnya
cetak [Above the target!] di konsol ▶
selesai
lainnya
cetak [No target found!] di konsol ▶
bantalan#
Properti bearing melaporkan sudut yang menunjukkan posisi suatu objek relatif terhadap drone. Perilakunya bergantung pada Sensor Penglihatan yang digunakan.
Nilai 0° menunjukkan bahwa pusat objek dan sensor sejajar. Nilai positif berarti objek berada di sebelah kanan, sedangkan nilai negatif berarti objek berada di sebelah kiri.
Sensor |
Pengembalian |
|---|---|
Ke bawah |
Derajat putaran bagian depan drone agar sejajar dengan pusat objek, dari –180º hingga 180º. |
Maju |
Derajat pergeseran objek ke kiri atau ke kanan dari pusat Sensor Penglihatan, dari –180º hingga 180º. |
(objek Vision [bearing v])
Contoh
saat dimulai
[Align the front of the drone to an AprilTag ID.]
atur kecepatan belok ke (15)%
terbang ke ketinggian [500] [mm v] ▶
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [ke bawah v]
jika <objek Vision ada?> maka
jika <[-20] [math_less_than v] (objek Vision [bearing v]) [math_less_than v] [20]> maka
[Hover once sensor is centered on the AprilTag ID.]
melayang
putar suara [berhasil v] ▶
lainnya jika <(objek Vision [bearing v]) [math_less_than v] [-21]> maka
belok [kiri v]
lainnya
belok [kanan v]
rotasi#
Properti rotasi melaporkan orientasi ID AprilTag yang terdeteksi sebagai bilangan bulat dalam derajat dari 1 hingga 359.
(objek Vision [rotasi v])
Contoh
saat dimulai
[Turn left or right based on the rotation of an AprilTag ID.]
terbang ke ketinggian [1000] [mm v] ▶
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
jika <objek Vision ada?> maka
jika <[240] [math_less_than v] (objek Vision [rotasi v]) [math_less_than v] [300]> maka
belok [kiri v] sejauh [90] derajat ▶
lainnya jika <[60] [math_less_than v] (objek Vision [rotasi v]) [math_less_than v] [120]> maka
belok [kanan v] sejauh [90] derajat ▶
lainnya
melayang
asalX#
Properti originX melaporkan koordinat x dari sudut kiri atas kotak pembatas objek yang terdeteksi dalam piksel sebagai bilangan bulat dari 1 hingga 640.
(objek Vision [originX v])
Contoh
saat dimulai
[Draw lines to the AprilTag ID origin from all corners.]
selamanya
bersihkan layar
get [all AprilTags v] data from vision [forward v] camera
jika <objek Vision ada?> maka
gambar garis [0] [0] (objek Vision [originX v]) (objek Vision [originY v]) di layar
gambar garis [0] [480] (objek Vision [originX v]) (objek Vision [originY v]) di layar
gambar garis [640] [0] (objek Vision [originX v]) (objek Vision [originY v]) di layar
gambar garis [640] [480] (objek Vision [originX v]) (objek Vision [originY v]) di layar
selesai
tunggu [0.2] detik
asalY#
Properti originY melaporkan koordinat y dari sudut kiri atas kotak pembatas objek yang terdeteksi dalam piksel sebagai bilangan bulat dari 1 hingga 480.
(objek Vision [originY v])
Contoh
saat dimulai
[Draw lines to the AprilTag ID origin from all corners.]
selamanya
bersihkan layar
get [all AprilTags v] data from vision [forward v] camera
jika <objek Vision ada?> maka
gambar garis [0] [0] (objek Vision [originX v]) (objek Vision [originY v]) di layar
gambar garis [0] [480] (objek Vision [originX v]) (objek Vision [originY v]) di layar
gambar garis [640] [0] (objek Vision [originX v]) (objek Vision [originY v]) di layar
gambar garis [640] [480] (objek Vision [originX v]) (objek Vision [originY v]) di layar
selesai
tunggu [0.2] detik
pengenal#
Properti id melaporkan nomor identifikasi dari ID AprilTag yang terdeteksi sebagai bilangan bulat.
(objek Vision [id v])
Contoh
saat dimulai
[Display the detected AprilTag ID.]
selamanya
dapatkan data [semua AprilTag v] dari Vision kamera [maju v]
bersihkan konsol
jika <objek Vision ada?> maka
cetak (objek Vision [id v]) di konsol ▶
selesai
tunggu [0.2] detik