Bloki specyficzne dla robotów#
Wstęp#
Bohaterski robot Flop zawiera IntakeMotor, ArmMotor i czujnik wizyjny IQ AI.
Wszystkie standardowe bloki VEXcode VR są dostępne do użycia na placu zabaw IQ 26-27 Level Up.
Poniżej znajduje się lista wszystkich dostępnych bloków specyficznych dla robotów:
Ruch – poruszaj i śledź silniki robota.
Akcje
silnik obrotowy – Silnik obraca się w jednym z kierunków w nieskończoność.
obróć silnik o – Obrót silnika o określoną odległość w stopniach lub obrotach.
obróć silnik do pozycji – Obrót silnika do określonej pozycji.
stop silnik – Zatrzymuje obracający się silnik.
Ustawienia
ustaw prędkość silnika – Informuje silnik, jak szybko ma się kręcić.
ustaw limit czasu silnika – Ustawia, jak długo silnik będzie próbował zakończyć ruch.
Pozycja
pozycja silnika – Raportuje aktualną pozycję silnika.
ustaw pozycję silnika – Zmienia aktualną pozycję silnika na nową wartość.
Wartości
silnik zakończony – Raportuje, czy silnik zakończył ruch.
silnik się kręci – Raportuje, czy silnik się kręci.
prędkość silnika – Raportuje, jak szybko obraca się silnik, w procentach od -100% do 100%.
AI Vision — przechwytuj i analizuj obiekty za pomocą czujnika IQ AI Vision.
Akcje
pobierz dane obiektu - Przechwytuje dane dla określonego podpisu, np. wykrytą klasyfikację sztucznej inteligencji.
Ustawienia
ustaw element obiektu - Wybiera konkretny obiekt z listy.
Wartości
obiekt istnieje - Zwraca informację, czy wykryto jakąkolwiek klasyfikację.
object is - Zwraca informację, czy wykryto określoną klasyfikację.
object is AprilTag – Zwraca informację, czy wykryty obiekt jest obiektem AprilTag pasującym do określonego identyfikatora.
liczba obiektów - Zwraca liczbę wykrytych obiektów.
właściwość obiektu - Zwraca szerokość, wysokość, środekX, środekY, początekX lub początekY.
Przykłady na tej stronie wykorzystują domyślną pozycję startową placu zabaw.
Ruch#
Flop używa silnika wlotowego do zbierania i wyrzucania elementów gry. Silnik ramienia podnosi i opuszcza ramię.
Każdy silnik ma własne opcje kierunku. Nazwy kierunków opisują, jak silnik porusza się na Flopie.
Akcje#
silnik wirowy#
Blok stosu Spin Motor obraca silnik w jednym z dwóch kierunków w nieskończoność. Silnik będzie się obracał, dopóki nie zostanie mu przydzielona inna czynność, np. obrót w innym kierunku lub zatrzymanie.
obracaj [IntakeMotor v] [wlot v]
Parametry |
Opis |
|---|---|
silnik |
Silnik do obracania: IntakeMotor lub ArmMotor. |
kierunek |
Kierunek obrotu silnika:
|
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
obracaj [ArmMotor v] [w górę v] przez (1) [obroty v] ▶
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
silnik wirowy do#
Blok Silnik obrotowy dla stosu obraca silnik o określoną odległość. Obrót jest względny do aktualnej pozycji silnika. Projekt będzie czekał, aż silnik zakończy obrót, zanim zostanie uruchomiony kolejny blok w stosie.
obracaj [ArmMotor v] [w górę v] przez (500) [stopnie v] ▶
Parametry |
Opis |
|---|---|
silnik |
Silnik do obracania: IntakeMotor lub ArmMotor. |
kierunek |
Kierunek obrotu silnika:
|
dystans |
Odległość, jaką pokonuje silnik. Stopnie wyrażane są w liczbach całkowitych. Obroty wyrażane są w liczbach całkowitych lub dziesiętnych. |
jednostka |
Jednostka odległości: stopnie lub obroty. |
i nie czekaj |
Wybierz strzałkę (▶), aby rozwinąć blok i napisać i nie czekaj, dzięki czemu następny blok w stosie zostanie uruchomiony natychmiast. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
obracaj [ArmMotor v] [w górę v] przez (1) [obroty v] ▶
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
obróć silnik do pozycji#
Blok stosu obróć silnik do pozycji obraca silnik do określonej pozycji.
Pozycja silnika to odległość, o jaką się obrócił, mierzona w stopniach lub obrotach. Jeden obrót to 360 stopni. Na początku projektu położenie silnika jest ustawione na 0 stopni. Położenie silnika można również ustawić za pomocą bloku set motor position.
Wartości położenia są bezwzględne. Oznacza to, że kierunek obrotu zależy od aktualnego położenia silnika.
Na przykład, jeśli silnik zaczyna od 0 stopni i obraca się do pozycji 720 stopni, wykona dwa obroty do przodu. Jeśli następnie obraca się do pozycji 360 stopni, wykona jeden obrót do tyłu, ponieważ 360 stopni jest mniejsze niż 720 stopni.
obracaj [ArmMotor v] do pozycji (500) [stopnie v] ▶
Parametry |
Opis |
|---|---|
silnik |
Silnik do obracania: IntakeMotor lub ArmMotor. |
pozycja |
Wartość położenia, do którego obróci się silnik. Stopnie są wyrażone w liczbach całkowitych. Obroty mogą być wyrażone w liczbach całkowitych lub dziesiętnych. |
jednostka |
Jednostka położenia: stopnie lub obroty. |
i nie czekaj |
Wybierz strzałkę (▶), aby rozwinąć blok i napisać i nie czekaj, dzięki czemu następny blok w stosie zostanie uruchomiony natychmiast. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
obracaj [ArmMotor v] do pozycji (1) [obroty v] ▶
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
zatrzymaj silnik#
Blok stosu stop motor zatrzymuje wybrany silnik.
zatrzymaj [IntakeMotor v]
Parametry |
Opis |
|---|---|
silnik |
Silnik do zatrzymania: IntakeMotor lub ArmMotor. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
obracaj [ArmMotor v] [w górę v] przez (1) [obroty v] ▶
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
czekaj (1) sekund
zatrzymaj [IntakeMotor v]
Ustawienia#
ustaw prędkość silnika#
Blok stosu ustaw prędkość silnika informuje silnik, jak szybko ma się obracać. Wyższy procent powoduje, że silnik obraca się szybciej, a niższy procent powoduje, że obraca się wolniej.
Każdy projekt rozpoczyna się od ustawienia silników tak, aby domyślnie kręciły się z prędkością 50%.
Uwaga: Wyższa prędkość sprawia, że silnik obraca się szybciej, ale może być mniej precyzyjny. Niższa prędkość sprawia, że silnik obraca się wolniej, ale może być bardziej precyzyjny.
ustaw prędkość [IntakeMotor v] na [50] [% v]
Parametry |
Opis |
|---|---|
silnik |
Silnik do ustawiania prędkości: IntakeMotor lub ArmMotor. |
prędkość |
Prędkość, z jaką będzie się kręcił silnik. Procent to liczby całkowite od 0% do 100%. |
jednostka |
Jednostka prędkości: %. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
obracaj [ArmMotor v] [w górę v] przez (1) [obroty v] ▶
jedź [do przodu v] przez (40) [cale v] ▶
ustaw prędkość [IntakeMotor v] na [100] [% v]
obracaj [IntakeMotor v] [odrzut v]
ustaw limit czasu silnika#
Blok stosu set motor timeout ustawia, ile czasu silnik będzie próbował zakończyć ruch. Jeśli silnik nie zdoła zakończyć ruchu w tym czasie, przerwie próby i przejdzie do następnego bloku w stosie. Zapobiega to zablokowaniu silnika podczas ruchu.
ustaw limit czasu [ArmMotor v] na [1] sekund
Parametry |
Opis |
|---|---|
silnik |
Silnik, dla którego należy ustawić limit czasu: IntakeMotor lub ArmMotor. |
czas |
Liczba sekund, przez które silnik może próbować zakończyć ruch. Może to być liczba całkowita lub dziesiętna. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
ustaw limit czasu [ArmMotor v] na [2] sekund
obracaj [ArmMotor v] [w górę v] przez (1) [obroty v] ▶
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
Pozycja#
pozycja silnika#
Pozycja silnika to odległość, o jaką się obrócił, mierzona w stopniach lub obrotach. Jeden obrót to 360 stopni. Blok raportujący położenie silnika raportuje aktualną pozycję silnika.
Na początku projektu położenie silnika jest ustawione na 0 stopni. Jeśli silnik wykona jeden pełny obrót do przodu, położenie będzie wynosić 360 stopni, czyli 1 obrót. Jeśli silnik obróci się w przeciwnym kierunku, położenie będzie ujemne.
(pozycja [ArmMotor v] w [stopnie v])
Parametry |
Opis |
|---|---|
silnik |
Silnik służący do raportowania położenia: IntakeMotor lub ArmMotor. |
jednostka |
Jednostka służąca do raportowania położenia silnika w: stopniach lub obrotach. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
dopóki <(pozycja [ArmMotor v] w [stopnie v]) [math_less_than v] [360]>
obracaj [ArmMotor v] [w górę v]
czekaj (0.002) sekund
koniec
zatrzymaj [ArmMotor v]
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
ustaw pozycję silnika#
Pozycja silnika to odległość, o jaką się obrócił, mierzona w stopniach lub obrotach. Jeden obrót to 360 stopni. Blok stosu ustaw pozycję silnika zmienia bieżącą pozycję silnika na nową wartość.
Na przykład, jeśli silnik obrócił się o 180 stopni, ustawienie pozycji na 0 stopni spowoduje zresetowanie tej pozycji ze 180 do 0 stopni. Następnie silnik może obracać się do pozycji opartych na tej nowej wartości.
ustaw pozycję [ArmMotor v] na (0) [stopnie v]
Parametry |
Opis |
|---|---|
silnik |
Silnik do ustawiania pozycji: IntakeMotor lub ArmMotor. |
pozycja |
Wartość pozycji do ustawienia. Stopnie są wyrażone w liczbach całkowitych. Obroty mogą być wyrażone w liczbach całkowitych lub dziesiętnych. |
jednostka |
Jednostka położenia: stopnie lub obroty. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
ustaw pozycję [ArmMotor v] na [0] [stopnie v]
obracaj [ArmMotor v] [w górę v] przez (1) [obroty v] ▶
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
Wartości#
silnik jest gotowy#
Blok logiczny „silnik jest gotowy” informuje, czy silnik zakończył ruch. Można go użyć do sterowania czasem innych zachowań na podstawie ruchu silnika.
Prawda — Silnik przestał się poruszać.
Fałsz — Silnik nadal się porusza.
Ten blok współpracuje z następującymi blokami ruchu, które mają parametr i nie czekają: obróć silnik do i obróć silnik do pozycji.
<[ArmMotor v] zakończył?>
Parametry |
Opis |
|---|---|
silnik |
Silnik informujący o zakończeniu ruchu: IntakeMotor lub ArmMotor. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
obracaj [ArmMotor v] do pozycji (1) [obroty v] ◀ i nie czekaj
czekaj dopóki <[ArmMotor v] zakończył?>
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
silnik się kręci#
Blok logiczny „Silnik się kręci” informuje, czy silnik się kręci. Można go użyć do sterowania czasem innych zachowań na podstawie ruchu silnika.
Prawda — Silnik się kręci.
Fałsz — Silnik się nie obraca.
Ten blok współpracuje z następującymi blokami ruchu, które mają parametr i nie czekają: obróć silnik do i obróć silnik do pozycji.
<[IntakeMotor v] obraca się?>
Parametry |
Opis |
|---|---|
silnik |
Silnik informujący o tym, czy się obraca: IntakeMotor lub ArmMotor. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
obracaj [ArmMotor v] [w górę v] przez (1) [obroty v] ▶
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
czekaj dopóki <nie <[IntakeMotor v] obraca się?>>
zatrzymaj [IntakeMotor v]
prędkość silnika#
Blok reporterowy prędkości silnika raportuje, jak szybko obraca się silnik, w procentach od -100% do 100%.
(prędkość [IntakeMotor v] w [% v] :: custom-motion)
Parametry |
Opis |
|---|---|
silnik |
Silnik do raportowania prędkości: IntakeMotor lub ArmMotor. |
jednostka |
Jednostka służąca do raportowania prędkości silnika w: %. |
Przykład
gdy uruchomiony
[Score a Bean Bag in a Blue Goal.]
skręć [w lewo v] o (90) stopni ▶
jedź [do przodu v] przez (35) [cale v] ▶
skręć [w prawo v] o (90) stopni ▶
obracaj [ArmMotor v] [w górę v] przez (1) [obroty v] ▶
jedź [do przodu v] przez (40) [cale v] ▶
obracaj [IntakeMotor v] [odrzut v]
czekaj [0.2] sekund
wydrukuj (prędkość [IntakeMotor v] w [% v] :: custom-motion) ▶
Wizja AI#
Akcje#
pobierz dane obiektu#
Blok pobierz dane obiektu filtruje dane z ramki czujnika IQ AI Vision do pojedynczego podpisu — zapisanego opisu czegoś, co czujnik może rozpoznać, na przykład elementu gry na boisku.
Zbiór danych przechowuje obiekty uporządkowane od największego do najmniejszego według szerokości, zaczynając od indeksu 0. Dostęp do właściwości każdego obiektu można uzyskać za pomocą bloku właściwość obiektu. Jeśli nie zostaną wykryte żadne pasujące obiekty, zwracany jest pusty zbiór danych.
pobierz dane [Klasyfikacje AI v] z [AIVision v]
Parametr |
Opis |
|---|---|
podpis |
Filtruje zbiór danych, aby zawierał tylko dane o podanym podpisie. Dostępne podpisy to:
|
Przykład
gdy uruchomiony :: hat events
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Find and face the nearest red Bean Bag.]
ustaw prędkość obrotu na (30) [% v]
ustaw [object_counter v] na [1]
pobierz dane [Klasyfikacje AI v] z [AIVision v]
powtórz (liczba obiektów [AIVision v])
ustaw element obiektu [AIVision v] na (object_counter)
jeśli <obiekt [AIVision v] to [RedBeanBag v]?> to
if <(obiekt [AIVision v] [centerX v]) < (140)> then
skręć [w lewo v]
else if <([AIVision v] object [centerX v]) > (180)> then
skręć [w prawo v]
w przeciwnym razie
zatrzymaj jazdę
koniec
przerwij
koniec
zmień [object_counter v] o [1]
koniec
Ustawienia#
ustaw element obiektu#
Blok set object item ustawia, który element zestawu danych ma zostać użyty.
ustaw element obiektu [AIVision v] na [1]
Parametry |
Opis |
|---|---|
przedmiot |
Numer elementu w zestawie danych, który ma zostać użyty. |
Przykład
gdy uruchomiony :: hat events
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Find the index of the nearest red Bean Bag.]
ustaw [object_counter v] na [1]
pobierz dane [Klasyfikacje AI v] z [AIVision v]
powtórz (liczba obiektów [AIVision v])
ustaw element obiektu [AIVision v] na (object_counter)
jeśli <obiekt [AIVision v] to [RedBeanBag v]?> to
wydrukuj (połącz [Nearest Red Bean Bag is ] (object_counter)) ▶
przerwij
w przeciwnym razie
zmień [object_counter v] o [1]
koniec
koniec
Wartości#
obiekt istnieje#
Blok object exists zwraca wartość logiczną wskazującą, czy w zestawie danych wykryto jakikolwiek obiekt.
Prawda – zbiór danych zawiera wykryty obiekt.
Fałsz — zbiór danych nie zawiera żadnych wykrytych obiektów.
<obiekt [AIVision v] istnieje?>
Parametry |
Opis |
|---|---|
Ten blok nie ma żadnych parametrów. |
Przykład
gdy uruchomiony :: hat events
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Turn until a Bean Bag is detected.]
ustaw prędkość obrotu na (30) [% v]
skręć [w prawo v]
powtarzaj dopóki <obiekt [AIVision v] istnieje?>
pobierz dane [Klasyfikacje AI v] z [AIVision v]
koniec
zatrzymaj jazdę
obiekt jest#
Blok object is zwraca wartość logiczną wskazującą, czy wykryty obiekt pasuje do określonej klasyfikacji.
Prawda — elementem zestawu danych jest konkretny obiekt.
Fałsz — element w zestawie danych nie jest konkretnym obiektem.
<obiekt [AIVision v] to [RedBeanBag v]?>
Parametr |
Opis |
|---|---|
obiekt |
Z którym obiektem porównać przedmiot: RedBeanBag, BlueBeanBag lub YellowBeanBag. |
Przykład
gdy uruchomiony :: hat events
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Find the index of the nearest red Bean Bag.]
ustaw [object_counter v] na [1]
pobierz dane [Klasyfikacje AI v] z [AIVision v]
powtórz (liczba obiektów [AIVision v])
ustaw element obiektu [AIVision v] na (object_counter)
jeśli <obiekt [AIVision v] to [RedBeanBag v]?> to
wydrukuj (połącz [Nearest Red Bean Bag is ] (object_counter)) ▶
przerwij
w przeciwnym razie
zmień [object_counter v] o [1]
koniec
koniec
obiekt jest AprilTag#
Blok object is AprilTag zwraca wartość logiczną wskazującą, czy wykryty obiekt jest obiektem AprilTag pasującym do określonego identyfikatora.
Prawda - wykryty obiekt to AprilTag o podanym identyfikatorze.
Fałsz — wykryty obiekt nie jest obiektem AprilTag o podanym identyfikatorze.
<obiekt [AIVision v] to AprilTag [0]?>
Parametr |
Opis |
|---|---|
Identyfikator AprilTag |
Numer ID do porównania z wykrytym AprilTag. |
Przykład
gdy uruchomiony :: hat events
[Stop when you see the Red Goal!]
ustaw prędkość obrotu na (30) [% v]
skręć [w prawo v]
powtarzaj dopóki <obiekt [AIVision v] to AprilTag [1]?>
pobierz dane [AprilTags v] z [AIVision v]
koniec
zatrzymaj jazdę
wydrukuj [Found the Red Goal!] ▶
liczba obiektów#
Blok liczba obiektów zwraca liczbę wykrytych obiektów w zestawie danych jako liczbę całkowitą.
(liczba obiektów [AIVision v])
Parametry |
Opis |
|---|---|
Ten blok nie ma żadnych parametrów. |
Przykład
gdy uruchomiony :: hat events
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Print how many Bean Bags are detected.]
pobierz dane [Klasyfikacje AI v] z [AIVision v]
wydrukuj (liczba obiektów [AIVision v]) ▶
właściwość obiektu#
Każdy obiekt ma sześć właściwości, które są uwzględniane po użyciu bloku get object data.
(obiekt [AIVision v] [szerokość v])
Wszystkie wartości właściwości opisują położenie i rozmiar wykrytego obiektu w polu widzenia czujnika IQ AI Vision w momencie użycia bloku pobierz dane obiektu. Wartości te są mierzone w pikselach, w oparciu o rozdzielczość czujnika 320 na 240 pikseli.
Parametr |
Opis |
|---|---|
nieruchomość |
Którą właściwość wykrytego obiektu należy wykorzystać: szerokość, wysokość, środekX, środekY, pochodzenieX lub pochodzenieY. |
szerokość#
Właściwość szerokość raportuje szerokość wykrytego obiektu w pikselach jako liczbę całkowitą od 1 do 320.
(obiekt [AIVision v] [szerokość v])
Przykład
gdy uruchomiony
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Approach the Bean Bag, then pick it up.]
ustaw prędkość jazdy na (30) [% v]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision v]
jeśli <obiekt [AIVision v] istnieje?> to
ustaw element obiektu [AIVision v] na [1]
jeśli <obiekt [AIVision v] to [RedBeanBag v]?> to
if <([AIVision v] object [width v]) > (180)> then
jedź [do przodu v] przez [50] [mm v] ▶
obracaj [IntakeMotor v] [wlot v] przez [90] [stopnie v] ▶
przerwij
w przeciwnym razie
jedź [do przodu v]
koniec
koniec
koniec
koniec
wysokość#
Właściwość height raportuje wysokość wykrytego obiektu w pikselach jako liczbę całkowitą od 1 do 240.
(obiekt [AIVision v] [wysokość v])
Przykład
gdy uruchomiony
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Approach the Bean Bag, then pick it up.]
ustaw prędkość jazdy na (30) [% v]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision v]
jeśli <obiekt [AIVision v] istnieje?> to
ustaw element obiektu [AIVision v] na [1]
jeśli <obiekt [AIVision v] to [RedBeanBag v]?> to
if <([AIVision v] object [height v]) > (100)> then
jedź [do przodu v] przez [50] [mm v] ▶
obracaj [IntakeMotor v] [wlot v] przez [90] [stopnie v] ▶
przerwij
w przeciwnym razie
jedź [do przodu v]
koniec
koniec
koniec
koniec
środekX#
Właściwość centerX raportuje współrzędną x środka wykrytego obiektu w pikselach jako liczbę całkowitą od 0 do 320.
(obiekt [AIVision v] [centerX v])
Przykład
gdy uruchomiony
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Steer to keep the Bean Bag centered while approaching.]
ustaw prędkość obrotu na (30) [% v]
ustaw prędkość jazdy na (30) [% v]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision v]
jeśli <obiekt [AIVision v] istnieje?> to
ustaw element obiektu [AIVision v] na [1]
jeśli <obiekt [AIVision v] to [RedBeanBag v]?> to
if <(obiekt [AIVision v] [centerX v]) < (140)> then
skręć [w lewo v] o (5) stopni ▶
w przeciwnym razie
jedź [do przodu v] przez (150) [mm v] ▶
obracaj [IntakeMotor v] [wlot v]
przerwij
koniec
koniec
koniec
koniec
środek Y#
Właściwość centerY raportuje współrzędną y środka wykrytego obiektu w pikselach jako liczbę całkowitą od 0 do 240.
(obiekt [AIVision v] [centerY v])
Przykład
gdy uruchomiony
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Print the y-position of the Bean Bag.]
pobierz dane [Klasyfikacje AI v] z [AIVision v]
jeśli <obiekt [AIVision v] istnieje?> to
ustaw element obiektu [AIVision v] na [1]
jeśli <obiekt [AIVision v] to [RedBeanBag v]?> to
wydrukuj (obiekt [AIVision v] [centerY v]) ▶
koniec
koniec
pochodzenieX#
Właściwość originX raportuje współrzędną x lewego górnego rogu pola ograniczającego wykryty obiekt w pikselach jako liczbę całkowitą od 0 do 320.
(obiekt [AIVision v] [originX v])
Przykład
gdy uruchomiony
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Steer to keep the left edge centered.]
ustaw prędkość obrotu na (30) [% v]
ustaw prędkość jazdy na (30) [% v]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision v]
jeśli <obiekt [AIVision v] istnieje?> to
ustaw element obiektu [AIVision v] na [1]
jeśli <obiekt [AIVision v] to [RedBeanBag v]?> to
if <(obiekt [AIVision v] [originX v]) < (100)> then
skręć [w lewo v] o (5) stopni ▶
w przeciwnym razie
jedź [do przodu v] przez (150) [mm v] ▶
obracaj [IntakeMotor v] [wlot v]
przerwij
koniec
koniec
koniec
koniec
pochodzenieY#
Właściwość originY raportuje współrzędną y lewego górnego rogu pola ograniczającego wykryty obiekt w pikselach jako liczbę całkowitą od 0 do 240.
(obiekt [AIVision v] [originY v])
Przykład
gdy uruchomiony
[Drop the preloaded Bean Bag.]
obracaj [IntakeMotor v] [odrzut v] przez (180) [stopnie v] ▶
skręć [w lewo v] o (90) stopni ▶
[Print the y-position of the Bean Bag's top edge.]
pobierz dane [Klasyfikacje AI v] z [AIVision v]
jeśli <obiekt [AIVision v] istnieje?> to
ustaw element obiektu [AIVision v] na [1]
jeśli <obiekt [AIVision v] to [RedBeanBag v]?> to
wydrukuj (obiekt [AIVision v] [originY v]) ▶
koniec
koniec