Vizija#
Įvadas#
„VEX AIR“ dronas turi du regėjimo jutiklius, kurie aptinka ir seka „AprilTag“ ID. Jie leidžia dronui analizuoti aplinką, sekti objektus ir reaguoti pagal aptiktus vaizdinius duomenis.
Žemiau pateikiamas visų galimų blokų sąrašas:
Veiksmai – valdyti regėjimo srautą ir fiksuoti objekto duomenis.
gauti objekto duomenis — Fiksuoja „AprilTag“ ID duomenis.
Nustatymai – koreguokite, prie kurių aptiktų objektų galima prisijungti.
nustatyti regėjimo objekto elementą — Pasirenka konkretų objektą iš aptiktų objektų sąrašo.
Reikšmės – gauti objekto buvimą, klasifikaciją ir savybes.
Vision object is an — Praneša, ar objektas aptiktas.
Vision objektas yra AprilTag ID – tikrina, ar aptiktas AprilTag ID atitinka konkretų ID.
Vision object count – Pateikia aptiktų objektų skaičių.
Vision objekto savybė — Gauna tokią informaciją kaip:
centerX ir centerY — Centrinės padėties koordinatės jutiklio rodinyje.
pearing — Objekto kampas priekinio vaizdo jutiklio atžvilgiu arba laipsniai, reikalingi, kad dronas būtų atsuktas į objektą.
sukimas — Objekto orientacija.
originX ir originY — Viršutinio kairiojo kampo padėties koordinatės jutiklio rodinyje.
id – „AprilTag“ ID identifikacinis numeris.
Veiksmai#
gauti objekto duomenis#
Blokas „gauti objekto duomenis“ filtruoja duomenis iš regėjimo jutiklio kadro. Regėjimo jutikliai gali aptikti „AprilTag“ ID.
Duomenų rinkinyje objektai saugomi surūšiuoti nuo didžiausio iki mažiausio pagal plotį, pradedant nuo indekso 0. Kiekvieno objekto savybes galima pasiekti naudojant bloką Vision object property. Jei nerandama atitinkančių objektų, pateikiamas tuščias duomenų rinkinys.
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
Parametras |
Aprašymas |
|---|---|
parašas |
Filtruoja duomenų rinkinį, kad būtų įtraukti tik nurodyto parašo duomenys. Galimas parašas yra visi „AprilTags“. |
kamera |
Regėjimo jutiklis, skirtas duomenims gauti į priekį arba žemyn. |
Pavyzdys
kai pradėta
[Climb upward when an AprilTag ID is detected.]
pakilti iki [300] [mm v] ▶
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
jei <Vision objektas egzistuoja?> tada
kilti [aukštyn v] per [200] [mm v] ▶
Nustatymai#
nustatyti „Vision“ objekto elementą#
Steko blokas nustatyti „Vision“ objekto elementą nustato, kurį duomenų rinkinio elementą naudoti.
nustatyti Vision objekto elementą į [1]
Parametrai |
Aprašymas |
|---|---|
prekė |
Duomenų rinkinyje esančio elemento numeris, kuris bus naudojamas. |
Pavyzdys
kai pradėta
[Display the smallest-appearing AprilTag ID.]
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
išvalyti konsolę
jei <Vision objektas egzistuoja?> tada
nustatyti Vision objekto elementą į (Vision objektų skaičius)
spausdinti (Vision objektas [id v]) konsolėje ▶
Vertybės#
Regėjimo objektas egzistuoja#
Loginis blokas Vision objektas egzistuoja praneša, ar nurodytas regėjimo jutiklis šiuo metu aptinka kokių nors objektų.
Teisinga – nurodytas regėjimo jutiklis aptinka objektą.
Klaidinga – Nurodytas regėjimo jutiklis neaptinka objekto.
<Vision objektas egzistuoja?>
Parametras |
Aprašymas |
|---|---|
Šis blokas neturi parametrų. |
Pavyzdys
kai pradėta
[Climb upward when an AprilTag ID is detected.]
pakilti iki [300] [mm v] ▶
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
jei <Vision objektas egzistuoja?> tada
kilti [aukštyn v] per [200] [mm v] ▶
Vizijos objektas yra „AprilTag“ ID#
Vision objektas yra „AprilTag ID“. Loginis blokas praneša, ar „AprilTag ID“ yra konkretus ID numeris.
Teisinga – „AprilTag“ ID yra skaičius.
Klaidinga – „AprilTag“ ID nėra skaičius.
<Vision object is AprilTag ID [1]>
Parametrai |
Aprašymas |
|---|---|
AprilTag ID numeris |
Skaičius, kurį reikia palyginti su aptiktu „AprilTag“ ID numeriu nuo 0 iki 37. |
Pavyzdys
kai pradėta
[Display when the target AprilTag ID is detected.]
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
išvalyti konsolę
jei <Vision objektas egzistuoja?> tada
jei <Vision object is AprilTag ID [21]> tada
spausdinti [Target found!] konsolėje ▶
pabaiga
Regėjimo objektų skaičius#
Vizijos objektų skaičiaus reporterio blokas pateikia aptiktų objektų skaičių duomenų rinkinyje kaip sveikąjį skaičių.
(Vision objektų skaičius)
Parametrai |
Aprašymas |
|---|---|
Šis blokas neturi parametrų. |
Pavyzdys
kai pradėta
[Display how many AprilTag IDs are detected.]
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
išvalyti konsolę
spausdinti (Vision objektų skaičius) konsolėje ▶
laukti [0.2] sekundžių
Regėjimo objekto savybė#
Kiekvienam objektui (parodyta žemiau) priskiriamos kelios savybės, kurios saugomos panaudojus bloką get object data.
(Vision objektas [plotis v])
Visos ypatybių reikšmės, išskyrus id, apibūdina aptikto objekto padėtį, dydį, orientaciją arba kryptį tuo metu, kai buvo panaudotas blokas get object data. Šios reikšmės matuojamos pikseliais arba laipsniais. Kiekvienas regėjimo jutiklis turi skirtingą skiriamąją gebą:
Į priekį nukreipta: 640 x 480 pikselių
Nukreipta žemyn: 640 x 400 pikselių
Parametras |
Aprašymas |
|---|---|
nuosavybė |
Which property of the detected object to use: |
plotis#
Savybė plotis nurodo aptikto objekto plotį pikseliais kaip sveikąjį skaičių nuo 1 iki 640.
(Vision objektas [plotis v])
Pavyzdys
kai pradėta
[Show if the AprilTag ID appears large or small.]
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
išvalyti konsolę
jei <Vision objektas egzistuoja?> tada
jei <(Vision objektas [plotis v]) [math_greater_than v] [100]> tada
spausdinti [Large] konsolėje ▶
kitu atveju
spausdinti [Small] konsolėje ▶
pabaiga
pabaiga
laukti [0.2] sekundžių
aukštis#
Savybė aukštis nurodo aptikto objekto aukštį pikseliais kaip sveikąjį skaičių nuo 1 iki 480.
(Vision objektas [aukštis v])
Pavyzdys
kai pradėta
[Show if the AprilTag ID appears large or small.]
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
išvalyti konsolę
jei <Vision objektas egzistuoja?> tada
jei <(Vision objektas [aukštis v]) [math_greater_than v] [100]> tada
spausdinti [Large] konsolėje ▶
kitu atveju
spausdinti [Small] konsolėje ▶
pabaiga
pabaiga
laukti [0.2] sekundžių
centrasX#
Savybė centerX nurodo aptikto objekto centro x koordinatę pikseliais kaip sveikąjį skaičių nuo 1 iki 640.
(Vision objektas [centrasX v])
Pavyzdys
kai pradėta
[Show if an AprilTag ID is to the left or the right of the camera.]
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
išvalyti konsolę
jei <Vision objektas egzistuoja?> tada
jei <(Vision objektas [centrasX v]) [math_less_than v] [320]> tada
spausdinti [To the left] konsolėje ▶
kitu atveju
spausdinti [To the right] konsolėje ▶
pabaiga
pabaiga
laukti [0.2] sekundžių
centras Y#
Savybė centerY nurodo aptikto objekto centro y koordinatę pikseliais kaip sveikąjį skaičių nuo 1 iki 480.
(Vision objektas [centrasY v])
Pavyzdys
kai pradėta
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
pakilti iki [800] [mm v] ▶
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
jei <Vision objektas egzistuoja?> tada
jei <(Vision objektas [centrasY v]) [math_less_than v] [240]> tada
spausdinti [Below the target!] konsolėje ▶
kitu atveju
spausdinti [Above the target!] konsolėje ▶
pabaiga
kitu atveju
spausdinti [No target found!] konsolėje ▶
guolis#
Savybė pealing nurodo kampą, rodantį objekto padėtį drono atžvilgiu. Elgsena priklauso nuo to, kuris regėjimo jutiklis naudojamas.
0° reikšmė rodo, kad objekto centras ir jutiklis yra sulygiuoti. Teigiamos reikšmės reiškia, kad objektas yra dešinėje, o neigiamos reikšmės – kad objektas yra kairėje.
Jutiklis |
Grąžinimai |
|---|---|
Žemyn |
Laipsnių, kuriais drono priekis turi pasisukti, kad sulygiuotų su objekto centru, nuo –180º iki 180º. |
Pirmyn |
Laipsniai, kiek objektas yra paslinktas į kairę arba į dešinę nuo regėjimo jutiklio centro nuo –180º iki 180º. |
(Vision objektas [kryptis v])
Pavyzdžiai
kai pradėta
[Align the front of the drone to an AprilTag ID.]
nustatyti sukimosi greitį į (15)%
pakilti iki [500] [mm v] ▶
amžinai
gauti [visi AprilTag v] duomenis iš Vision [žemyn v] kameros
jei <Vision objektas egzistuoja?> tada
jei <[-20] [math_less_than v] (Vision objektas [kryptis v]) [math_less_than v] [20]> tada
[Hover once sensor is centered on the AprilTag ID.]
sklandyti
groti garsą [sėkmė v] ▶
kitu atveju jei <(Vision objektas [kryptis v]) [math_less_than v] [-21]> tada
sukti [kairėn v]
kitu atveju
sukti [dešinėn v]
rotacija#
Savybė rotation praneša aptikto „AprilTag“ ID orientaciją kaip sveikąjį skaičių laipsniais nuo 1 iki 359.
(Vision objektas [pasukimas v])
Pavyzdys
kai pradėta
[Turn left or right based on the rotation of an AprilTag ID.]
pakilti iki [1000] [mm v] ▶
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
jei <Vision objektas egzistuoja?> tada
jei <[240] [math_less_than v] (Vision objektas [pasukimas v]) [math_less_than v] [300]> tada
sukti [kairėn v] per [90] laipsnių ▶
kitu atveju jei <[60] [math_less_than v] (Vision objektas [pasukimas v]) [math_less_than v] [120]> tada
sukti [dešinėn v] per [90] laipsnių ▶
kitu atveju
sklandyti
kilmėX#
Savybė originX nurodo aptikto objekto ribojančio langelio viršutinio kairiojo kampo x koordinatę pikseliais kaip sveikąjį skaičių nuo 1 iki 640.
(Vision objektas [pradžiaX v])
Pavyzdys
kai pradėta
[Draw lines to the AprilTag ID origin from all corners.]
amžinai
išvalyti ekraną
get [all AprilTags v] data from vision [forward v] camera
jei <Vision objektas egzistuoja?> tada
piešti liniją [0] [0] (Vision objektas [pradžiaX v]) (Vision objektas [pradžiaY v]) ekrane
piešti liniją [0] [480] (Vision objektas [pradžiaX v]) (Vision objektas [pradžiaY v]) ekrane
piešti liniją [640] [0] (Vision objektas [pradžiaX v]) (Vision objektas [pradžiaY v]) ekrane
piešti liniją [640] [480] (Vision objektas [pradžiaX v]) (Vision objektas [pradžiaY v]) ekrane
pabaiga
laukti [0.2] sekundžių
kilmėY#
Savybė originY nurodo aptikto objekto ribojančio langelio viršutinio kairiojo kampo y koordinatę pikseliais kaip sveikąjį skaičių nuo 1 iki 480.
(Vision objektas [pradžiaY v])
Pavyzdys
kai pradėta
[Draw lines to the AprilTag ID origin from all corners.]
amžinai
išvalyti ekraną
get [all AprilTags v] data from vision [forward v] camera
jei <Vision objektas egzistuoja?> tada
piešti liniją [0] [0] (Vision objektas [pradžiaX v]) (Vision objektas [pradžiaY v]) ekrane
piešti liniją [0] [480] (Vision objektas [pradžiaX v]) (Vision objektas [pradžiaY v]) ekrane
piešti liniją [640] [0] (Vision objektas [pradžiaX v]) (Vision objektas [pradžiaY v]) ekrane
piešti liniją [640] [480] (Vision objektas [pradžiaX v]) (Vision objektas [pradžiaY v]) ekrane
pabaiga
laukti [0.2] sekundžių
id#
Ypatybė id nurodo aptikto „AprilTag“ ID identifikacinį numerį kaip sveikąjį skaičių.
(Vision objektas [id v])
Pavyzdys
kai pradėta
[Display the detected AprilTag ID.]
amžinai
gauti [visi AprilTag v] duomenis iš Vision [pirmyn v] kameros
išvalyti konsolę
jei <Vision objektas egzistuoja?> tada
spausdinti (Vision objektas [id v]) konsolėje ▶
pabaiga
laukti [0.2] sekundžių