Zapoznaj się z naszymimateriałami na stronie

🚩 Programowanie: AlphAI sterowany zdalnie


Potrzebne materiały:

  • 1 komputer/robot
  • Co najmniej 1 robot lub symulacja w oprogramowaniu
  • Opcjonalna arena do zajęć (wyścigi robotów)

Konfiguracja oprogramowania:

  • przykładowa konfiguracja: zależy od kontekstu kodu

Czas trwania:

1–2 godziny

Wiek:

od 14 lat

Zalety tej aktywności:

  • Można to wykonać za pomocą symulatora
  • Świetne wprowadzenie do programowania

W ramach tego zadania z programowania w języku Python uczniowie uczą się wysyłać polecenia do robota w zależności od naciśniętych klawiszy, a następnie organizować wyścig robotów.

Pierwsze kroki z robotem

Moduł alphai.py umożliwia wysyłanie do robota poleceń napisanych w języku Python.

Aby moduł działał, należy uruchomić oprogramowanie „AlphAI”. Można połączyć się z robotem AlphAI (lub jego wersją symulowaną).

W swoim ulubionym edytorze języka Python utwórz nowy projekt w wybranej lokalizacji i skonfiguruj środowisko Python tak, aby zawierało moduł alphai, wpisując w konsoli IPython lub terminalu:

pip install alphai-api

To polecenie spowoduje pobranie i zainstalowanie modułu wraz z jego zależnościami.

Otwórz nowy plik w języku Python lub uruchom ponownie konsolę, wklej do niego poniższy kod, a następnie go uruchom:

import * z modułu alphai

motor(30, -30, 5)

Jeśli pierwsza linijka programu powoduje błąd, oznacza to, że biblioteka alphai nie została poprawnie zainstalowana. Jeśli linijka motor(30, -30, 5) powoduje błąd, prawdopodobnie oznacza to, że oprogramowanie AlphAI nie zostało uruchomione.

Jeśli nie wystąpił żaden błąd, zobaczysz, jak robot (lub jego symulacja w programie) obraca się wokół własnej osi przez 5 sekund.

Polecenie motor(left, right, duration) wysyła wartości left i right do lewego i prawego silnika robota przez czas określony w parametrze duration, po czym zatrzymuje się. Wartości left i right muszą mieścić się w przedziale od -50 do +50. Jeśli czas działania nie zostanie określony, robot kontynuuje jazdę do następnego wywołania motor(0,0).

⚠️ Możliwe, a czasem nawet wskazane jest nawiązanie połączenia w skrypcie w języku Python zamiast poprzez kliknięcie przycisku „Połącz” w oprogramowaniu, korzystając z funkcji connect_bluetooth (n) (zastępując n numerem robota) lub connect_wifi (), a także disconnect() w celu rozłączenia.
Kod w tym przypadku wygląda następująco:

import * z modułu alphai

connect_bluetooth(n)
motor(30, -30, 5)

disconnect()


Po prawej stronie tej strony, w sekcji załączników do pobrania, znajduje się dokumentacja biblioteki alphai-api, zawierająca wszystkie funkcje dostępne w bibliotece alphai . Zachęcamy do zapoznania się z nią już teraz.

Pierwszy skrypt

Teraz utworzysz skrypt w języku Python w swoim ulubionym środowisku programistycznym.

Utwórz nowy plik w języku Python i wklej do niego poniższy kod:

import * z modułu alphai


if _ _name_ _ == '_ _main_ _':
connect_bluetooth(n)
motor(30,30,1)
disconnect()

Następnie uruchom go: robot porusza się przez sekundę, a potem zatrzymuje się.

Polecenie `motor(left, right, duration)` wysyła wartości `left` i `right` do lewego i prawego silnika. Wartości te muszą mieścić się w przedziale od -40 do +40. Oczywiście robota zatrzymuje się za pomocą polecenia `motor(0, 0)`.

Po prawej stronie tej strony, w sekcji załączników do pobrania, znajduje się dokumentacja biblioteki alpha-api, zawierająca wszystkie funkcje zawarte w bibliotece alphai . Zachęcamy do zapoznania się z nią już teraz.

Programowanie sekwencji

Aby ułatwić sobie dalsze pisanie kodu, zdefiniuj pięć poniższych funkcji. Niech będą to bardzo proste funkcje: każda z nich powinna jedynie wywoływać funkcję motor.

forward()

Sprawia, że robot jedzie prosto.

backward()

Sprawia, że robot cofa się.

stop()

Wyłącz robota.

left()

Obraca robota w lewo.

right()

Obraca robota w prawo.

Na koniec utwórz funkcję walk_around(), która sprawia, że robot wykonuje sekwencję czynności przy użyciu tych pięciu funkcji. Przetestuj ją, wywołując ją w bloku main.

Programowanie zdalnego sterowania

Odczyt naciśniętych klawiszy

Za pomocą funkcji API `wait_for_key` (zobacz wyjaśnienia na ostatniej stronie) oraz pętli `while` w funkcji ` main`, wyświetl w konsoli za pomocą funkcji `print` klawisze naciśnięte na klawiaturze. Aby uniknąć napisania pętli nieskończonej, należy przewidzieć specjalny klawisz, który pozwala wyjść z pętli, na przykład klawisz „Esc” (ang. „esc”):

keys = []

dopóki „esc” nie znajduje się wśród klawiszy:

    # nie zapomnij o wcięciach

Programowanie zdalnego sterowania

Wciąż korzystając z funkcji `wait_for_key` i pętli `while`, utwórz funkcję `remote_control()`, która reaguje na klawisze kierunkowe w taki sposób, aby robot poruszał się zgodnie z poleceniami wprowadzanymi z klawiatury. Aby pobrać ostatni naciśnięty klawisz, wybierz ostatni element listy, używając indeksu -1. Uwaga: lista może czasami być pusta!

Pamiętaj, aby zatrzymać robota, gdy nie zostanie naciśnięty żaden przycisk. Przetestuj swój kod, sterując robotem zdalnie!

Więcej informacji

Będziemy mogli zorganizować wyścigi między waszymi zdalnie sterowanymi robotami, ale warto też ulepszyć wasz program, dodając nowe polecenia, tak jak sugerowano poniżej… Te ulepszenia to tylko propozycje, więc nie wahajcie się tworzyć własnych!

Różne zakręty

Utwórz dwie nowe funkcje, z których będziesz mógł korzystać, gdy funkcja `wait_for_key` zwróci listę kilku klawiszy:

forward_left()

Powoduje, że robot porusza się w lewo po jednoczesnym naciśnięciu strzałek w górę i w lewo. Dzięki temu można sprawić, by robot wykonywał zarówno ostre zakręty za pomocą funkcji left() (tylko strzałka w lewo), jak i szerokie zakręty za pomocą funkcji forward_left() (strzałki w górę i w lewo).

forward_right()

Podobnie, robot porusza się w prawo, gdy jednocześnie naciśnie się strzałki w górę i w prawo.

Hamowanie i doładowanie

Dodaj zmienne wejściowe do wszystkich funkcji, aby móc regulować prędkość robota lub siłę skrętu w zależności od innych naciśniętych przycisków.

Na przykład dodaj do wszystkich swoich funkcji zmienną wejściową „speed” (np. forward(speed)), a następnie wywołuj te funkcje z mniejszą prędkością, gdy jednocześnie naciśnięta jest spacja (hamowanie), oraz z większą prędkością, gdy jednocześnie naciśnięty jest klawisz „x” („boost”).

Steruj robotem i dostosowuj ustawienia prędkości, aby zapewnić mu jak największą zwrotność i jak największą prędkość. Nie zapomnij też poćwiczyć wyprzedzania rywali!

Programowanie sekwencji

Wybierz dowolny przycisk i poproś robota, by wykonał krótki układ taneczny, na przykład aby uczcić zwycięstwo!

Podsumowanie i wnioski

W programowaniu lista funkcji dostępnych w programie nazywa się API, co oznacza Application Programming Interface(interfejs programowania aplikacji). Programiści korzystają z niej, aby dowiedzieć się, w jaki sposób można współpracować z programem. API modułu python alphai można znaleźć pod tym linkiem: https://drive.google.com/file/d/1C4ovPW_eH5KFz5Y9JvSrzLhtmdOpcp6-/view

Powiązane kierunki studiów