Niestandardowy kod kontrolera w VEXcode V5

Korzystanie z kontrolera może ułatwić prowadzenie i przemieszczanie robota w celu wykonania zadania. Istnieją jednak ograniczenia w korzystaniu z programu Drive i w zależności od budowy robota lub wykonywanego zadania możesz potrzebować różnych elementów sterujących. Kodowanie kontrolera pozwala zoptymalizować kontroler, aby lepiej pasował do robota i wykonywanego zadania. Istnieje kilka sposobów kodowania kontrolera w VEXcode V5. Każda z nich ma swoje zalety i ograniczenia, a niektóre metody są lepiej dostosowane do określonych sytuacji, w zależności od pożądanego rezultatu.

W tym artykule opisano trzy różne opcje niestandardowego kodowania kontrolera w VEXcode V5. Każda metoda zostanie opisana wraz z jej zaletami, ograniczeniami i przykładowym przypadkiem użycia, który pomoże Ci wybrać metodę. Na potrzeby tego artykułu wszystkie pokazane przykłady kodu zostały utworzone dla Clawbota. Jednakże te same koncepcje można zastosować do wielu innych kompilacji znalezionych na builds.vex.comoraz kompilacji niestandardowych.

Opcja 1: Przypisywanie przycisków w konfiguracji urządzenia

Ta opcja jest świetna, jeśli używasz standardowej wersji, takiej jak Speedbot lub Clawbot, i chcesz szybko zacząć działać.

Ta opcja umożliwia przypisanie silników, układu napędowego lub grup silników do przycisków na kontrolerze w konfiguracji urządzenia. Aby uzyskać więcej informacji na temat przypisywania przycisków do kontrolera w konfiguracji urządzenia, zobacz ten artykuł.

Schemat ilustrujący bloki programowania V5, prezentujący różne typy bloków i ich połączenia w formie wizualnej, co ułatwia zrozumienie samouczków dotyczących kodowania opartego na blokach.

Podsumowanie opcji 1: Przypisywanie przycisków w konfiguracji urządzenia

Zalety

Ograniczenia

Przykładowa sytuacja

  • Szybka konfiguracja bez konieczności kodowania
  • Najprostsza metoda
  • Łatwo regulowany
  • Można przypisać poszczególne silniki, standardowy układ napędowy i grupy silników do przycisków
  • Przypisanie przycisków jest ograniczone do liczby przycisków na kontrolerze
  • Układ napędowy nie może przekraczać 4 silników ani nie może być dostosowywany (obsługiwany jest tylko napęd standardowy, a nie napęd H, holonomic lub inny niestandardowy układ napędowy)
  • Manipulowanie standardową konfiguracją, taką jak Speedbot, Clawbot, lub prosta modyfikacja tych standardowych kompilacji. Na przykład Speedbot z wlotem przymocowanym z przodu, sterowanym przez grupę silników.
  • Szybkie manipulowanie przyciskami odpowiadającymi różnym zachowaniom robota, bez konieczności kodowania

Opcja 2: Używanie pętli Forever

Jeśli używasz niestandardowej kompilacji zamiast standardowej kompilacji lub chcesz mieć więcej możliwości dostosowania swojego kontrolera, ta opcja jest dobra. Korzystanie z pętli Forever to świetne wprowadzenie do tworzenia niestandardowego kodu dla kontrolera.

Ta opcja umieszcza wszystkie warunki kontrolera i powiązanych z nim przycisków w pętli Forever. Zapewnia to większą elastyczność, szczególnie w przypadku niestandardowych projektów kompilacji, ale wymaga również pewnego doświadczenia w kodowaniu. Jednak przy korzystaniu z tej opcji należy wziąć pod uwagę długość i złożoność projektu. Im więcej warunków zostanie dodanych, tym dłuższy może być stos kodu. Oznacza to, że należy wykonać wiele bloków w określonej kolejności, a gdy jest ich dużo, może to spowolnić realizację projektu. Wolniejsze wykonanie projektu może spowodować opóźnienie pomiędzy naciśnięciem przycisków kontrolera a wyświetleniem zachowania robota.

Konkretny przykład pokazany poniżej to jeden ze sposobów użycia pętli Forever z robotem o niestandardowej konstrukcji (takim jak robot z niestandardowym układem napędowym) do kierowania robotem oraz manipulowania pazurami i ramionami w celu interakcji z obiektami.

Schemat ilustrujący samouczki dotyczące bloków V5, prezentujący różne typy bloków i ich połączenia w przejrzystym i uporządkowanym układzie, co pozwala na lepsze zrozumienie programowania robotyki VEX.

Pobierz plik projektu „Opcja 2” VEXcode V5 >

Wyjaśnienie kodu opcji 2.

Część kodu

Wyjaśnienie

Schemat ilustrujący komponenty bloku V5 i ich funkcje w formie samouczka, prezentujący różne typy bloków i połączenia w celach edukacyjnych.

W tym przykładzie kodu użyto Clawbota. Kiedy przyciski kontrolera służą do podnoszenia i opuszczania ramienia, natychmiast po zwolnieniu przycisku ramię opadnie z powodu grawitacji. Ustawienie ramienia i pazura w pozycji „przytrzymaj” zapewni, że zarówno ramię, jak i pazur pozostaną na swoim miejscu nawet po zwolnieniu przycisków na kontrolerze.

Schemat ilustrujący komponenty bloku V5 i ich funkcjonalności, wykorzystany w sekcji Blocks Tutorials w Bazie wiedzy VEX, prezentujący różne typy bloków i ich połączenia w celach edukacyjnych. Schemat ilustrujący bloki V5 z opisanymi komponentami i połączeniami, używany w samouczkach służących zrozumieniu programowania blokowego w robotyce VEX.

W tym przykładzie kodu użyto Clawbota. Kiedy przyciski kontrolera służą do podnoszenia i opuszczania ramienia, natychmiast po zwolnieniu przycisku ramię opadnie z powodu grawitacji. Ustawienie ramienia i pazura w pozycji „przytrzymaj” zapewni, że zarówno ramię, jak i pazur pozostaną na swoim miejscu nawet po zwolnieniu przycisków na kontrolerze.

Pętla Forever służy do ciągłego sprawdzania, które przyciski na kontrolerze są wciskane.

Bloki [Ustaw prędkość silnika] służą do ustawienia prędkości silnika zgodnie z bieżącym położeniem sterownika wzdłuż osi 2 i 3. Jest to równoznaczne z uruchomieniem samochodu. To niekoniecznie wprawia samochód w ruch, po prostu go ustawia.

Każda oś joysticka zwraca wartość z zakresu od -100 do +100, a po wyśrodkowaniu zwraca wartość zero. Oznacza to, że oś joysticka po naciśnięciu wynosi -100% do 100%. Im dalej w kierunku 100 lub -100 osie zostaną przesunięte, tym szybciej silnik będzie się obracał.

Blok [Spin] jest następnie używany do faktycznego poruszania silnikiem. Jest to równoznaczne z wciśnięciem gazu w samochodzie po ustawieniu kierunku. Dzięki temu każdy silnik może być sterowany przez jedną z czterech osi sterownika.

Schemat ilustrujący bloki V5 do samouczków programowania, prezentujący różne typy bloków i ich połączenia, mający na celu ułatwienie zrozumienia koncepcji kodowania w kontekście edukacyjnym.

W tym przykładzie kodu użyto Clawbota. Kiedy przyciski kontrolera służą do podnoszenia i opuszczania ramienia, natychmiast po zwolnieniu przycisku ramię opadnie z powodu grawitacji. Ustawienie ramienia i pazura w pozycji „przytrzymaj” zapewni, że zarówno ramię, jak i pazur pozostaną na swoim miejscu nawet po zwolnieniu przycisków na kontrolerze.

Blok [If then else if then else] służy do mapowania określonych zachowań na wciskane lub zwalniane przyciski na kontrolerze. W tej sekcji kodu ustawione warunki dotyczą naciśnięcia przycisków W górę lub W dół. Jeśli tak, wystąpią pewne zachowania, takie jak podnoszenie i opuszczanie ramion. Istnieje również druga część warunku, jeśli żaden przycisk nie zostanie naciśnięty, ramię przestanie się poruszać.

Zwróć uwagę, że następująca sekcja kodu w projekcie Claw ma to samo wyjaśnienie.

Podsumowanie opcji 2: Korzystanie z pętli Forever

Zalety

Ograniczenia

Przykładowa sytuacja

  • Może pomieścić niestandardowe konstrukcje, zwłaszcza układy napędowe z więcej niż 4 silnikami
  • Można przypisać wiele zachowań do jednego przycisku
  • Można przypisywać zachowania do różnych osi kontrolera (w przeciwieństwie do jedynych opcji Left Arcade, Right Arcade, Split Arcade i Tank Drive w konfiguracji urządzenia)
  • Wymaga pewnej wiedzy na temat kodowania (warunki warunkowe, pętle i znajomość przycisków/joysticków na kontrolerze)
  • Możliwość wolniejszej realizacji projektu lub opóźnienia w czasie reakcji przycisku. Ponieważ wszystkie polecenia są zawarte w jednej pętli Forever, wykonanie kodu może przebiegać powoli w zależności od ustawionych warunków i długości kodu.
  • Używanie kontrolera z robotem zbudowanym na zamówienie, szczególnie z niestandardowym układem napędowym
  • Gdy chcesz przypisać wiele zachowań do jednego przycisku. Na przykład, po naciśnięciu przycisku w górę, Claw może się otworzyć, pojechać do przodu, a następnie zamknąć wokół obiektu.

Opcja 3: Korzystanie z wydarzeń

Jeśli chcesz dużo dostosować swój kontroler, Korzystanie ze zdarzeń jest dla Ciebie najlepszą opcją. Jedno naciśnięcie przycisku może wywołać wiele zachowań robota, np. naciśnięcie przycisku w celu otwarcia pazura, podniesienia ramienia i przejechania do przodu na określoną odległość. Próba zakodowania wielu zachowań na przycisk w pętli Forever spowodowałaby dramatyczne spowolnienie realizacji projektu – użycie Zdarzeń pozwala zrobić to bardziej efektywnie.

Ta opcja wykorzystuje zdarzenia do rozbicia przepływu projektu. Przypomina to użycie pętli Forever, ale pozwala na lepszą organizację kodu, dzięki czemu wykonanie przycisku ma szybszy czas reakcji. Krótszy czas reakcji oznacza, że ​​nie zobaczysz opóźnienia pomiędzy naciśnięciem przycisków kontrolera a wyświetleniem zachowania robota. Ten przykład pokazuje te same zachowania, co w poprzednim projekcie, ale wykonano przy użyciu zdarzeń zamiast pętli Forever.

Ilustracja bloków V5 używanych w samouczkach, prezentująca różne typy bloków i ich połączenia, pokazująca, jak budować i programować przy użyciu robota VEX V5.

Pobierz plik projektu „Opcja 3” VEXcode V5 >

Wyjaśnienie kodu opcji 3.

Część kodu

Wyjaśnienie

Schemat ilustrujący różne bloki V5 wykorzystywane w samouczkach robotyki, prezentujący ich funkcje i połączenia w celach edukacyjnych.

W tym przykładzie kodu użyto Clawbota. Kiedy przyciski kontrolera służą do podnoszenia i opuszczania ramienia, natychmiast po zwolnieniu przycisku ramię opadnie z powodu grawitacji. Ustawienie ramienia i pazura w pozycji „przytrzymaj” zapewni, że zarówno ramię, jak i pazur pozostaną na swoim miejscu nawet po zwolnieniu przycisków na kontrolerze.

Schemat ilustrujący bloki V5 w samouczku robotyki, prezentujący różne typy bloków i ich połączenia w celu realizacji zadań programistycznych. Schemat ilustrujący bloki V5 z opisanymi komponentami i połączeniami, używany w samouczkach służących zrozumieniu programowania blokowego w robotyce VEX.

W tym przykładzie kodu użyto Clawbota. Kiedy przyciski kontrolera służą do podnoszenia i opuszczania ramienia, natychmiast po zwolnieniu przycisku ramię opadnie z powodu grawitacji. Ustawienie ramienia i pazura w pozycji „przytrzymaj” zapewni, że zarówno ramię, jak i pazur pozostaną na swoim miejscu nawet po zwolnieniu przycisków na kontrolerze.

{When controller axis} Bloki zdarzeń służą do wyzwalania określonych zachowań w przypadku zmiany jednej z czterech osi sterownika za pomocą joysticków.

Bloki [Ustaw prędkość silnika] służą do ustawienia prędkości silnika zgodnie z bieżącym położeniem sterownika wzdłuż osi A i D. Jest to równoznaczne z uruchomieniem samochodu. To niekoniecznie wprawia samochód w ruch, po prostu go ustawia.

Każda oś joysticka zwraca wartość z zakresu od -100 do +100, a po wyśrodkowaniu zwraca wartość zero. Oznacza to, że oś joysticka po naciśnięciu wynosi -100% do 100%. Im dalej w kierunku 100 lub -100 osie zostaną przesunięte, tym szybciej silnik będzie się obracał.

Blok [Spin] jest następnie używany do faktycznego poruszania silnikiem. Jest to równoznaczne z wciśnięciem gazu w samochodzie po ustawieniu kierunku. Dzięki temu każdy silnik może być sterowany przez jedną z czterech osi sterownika.

Schemat ilustrujący bloki V5 wykorzystywane w samouczkach programowania, prezentujący różne typy bloków i ich funkcje w systemie VEX Robotics.

W tym przykładzie kodu użyto Clawbota. Kiedy przyciski kontrolera służą do podnoszenia i opuszczania ramienia, natychmiast po zwolnieniu przycisku ramię opadnie z powodu grawitacji. Ustawienie ramienia i pazura w pozycji „przytrzymaj” zapewni, że zarówno ramię, jak i pazur pozostaną na swoim miejscu nawet po zwolnieniu przycisków na kontrolerze.

{When controller axis} Bloki zdarzeń służą do mapowania określonych zachowań na naciskane lub zwalniane przyciski na kontrolerze. W tej sekcji kodu ustawione warunki dotyczą naciśnięcia przycisków W górę lub W dół. Jeśli tak, wystąpią pewne zachowania, takie jak podnoszenie, opuszczanie lub zatrzymywanie ramienia.

Zwróć uwagę, że ostatnia sekcja kodu w projekcie Claw ma to samo wyjaśnienie.

Podsumowanie opcji 3: Korzystanie z wydarzeń

Zalety

Ograniczenia

Przykładowa sytuacja

  • Może pomieścić niestandardowe konstrukcje, zwłaszcza układy napędowe z więcej niż 4 silnikami
  • Można przypisać wiele zachowań do jednego przycisku
  • Można przypisywać zachowania do różnych osi kontrolera (w przeciwieństwie do jedynych opcji Left Arcade, Right Arcade, Split Arcade i Tank Drive w konfiguracji urządzenia)
  • Szybsze wykonanie kodu, a co za tym idzie, responsywność przycisku (ponieważ każdy warunek jest wywoływany osobno i nie jest osadzony w jednym stosie kodu)
  • Wymaga największej wiedzy na temat kodowania opcji (warunki warunkowe, pętle, zdarzenia i znajomość przycisków/joysticków na kontrolerze)
  • Używanie kontrolera z robotem zbudowanym na zamówienie, szczególnie z niestandardowym układem napędowym
  • Gdy chcesz przypisać wiele zachowań do jednego przycisku bez opóźnień. Na przykład, po naciśnięciu przycisku w górę, Claw może się otworzyć, pojechać do przodu, a następnie zamknąć wokół obiektu.

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

Last Updated: