Pierwsze kroki - zdalne sterowanie robotem: Różnice pomiędzy wersjami

Z Wiki Mistrzowie Kodowania
Skocz do: nawigacji, wyszukiwania
 
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 30: Linia 30:
 
Jeżeli zastanowimy się nad budową i pracą silnika, dosyć szybko dojdziemy do wniosku, że każdy silnik posiada możliwość obrotu do przodu i do tyłu. W przypadku trójkołowca, do każdego z silników zamocowane jest koło. Tak więc aby nasz pojazd poruszał się do przodu, oba silniki powinny obracać się również do przodu (obrót w tym samym kierunku).  
 
Jeżeli zastanowimy się nad budową i pracą silnika, dosyć szybko dojdziemy do wniosku, że każdy silnik posiada możliwość obrotu do przodu i do tyłu. W przypadku trójkołowca, do każdego z silników zamocowane jest koło. Tak więc aby nasz pojazd poruszał się do przodu, oba silniki powinny obracać się również do przodu (obrót w tym samym kierunku).  
 
Jeżeli jeszcze tego nie zrobiliście, czas uruchomić mBlock (oparty na Scratch program do programowania robotów Makeblock oraz mBot). Klocki odpowiedzialne za silniki znajdziemy w zakładce roboty. Nazywają się "ustaw prędkość silnika...na..."  
 
Jeżeli jeszcze tego nie zrobiliście, czas uruchomić mBlock (oparty na Scratch program do programowania robotów Makeblock oraz mBot). Klocki odpowiedzialne za silniki znajdziemy w zakładce roboty. Nazywają się "ustaw prędkość silnika...na..."  
Obraz
+
 
 +
[[Plik:robot2.jpg]]
 +
 
 
A ponieważ mamy dwa silniki, do ich sterowania będziemy potrzebować dwóch bloczków. Oznaczenia M1 i M2 odpowiadają silnikom podłączonym do gniazd 1 i 2.  
 
A ponieważ mamy dwa silniki, do ich sterowania będziemy potrzebować dwóch bloczków. Oznaczenia M1 i M2 odpowiadają silnikom podłączonym do gniazd 1 i 2.  
 
Spróbujmy zatem poruszyć nasz pojazd do przodu. Zauważcie, wartość którą możemy przypisać silnikom wynosi od –255 do 255. Gdzie 255 oznacza ruch do przodu z całą prędkością, -255 to ruch do tyłu, a 0 to zatrzymanie silnika.  
 
Spróbujmy zatem poruszyć nasz pojazd do przodu. Zauważcie, wartość którą możemy przypisać silnikom wynosi od –255 do 255. Gdzie 255 oznacza ruch do przodu z całą prędkością, -255 to ruch do tyłu, a 0 to zatrzymanie silnika.  
Obraz
+
 
 +
[[Plik:robot3.jpg]]
 +
 
 
To jest odpowiedni moment aby przetestować działanie kodu. (Pamiętajcie o połączeniu z robotem)  
 
To jest odpowiedni moment aby przetestować działanie kodu. (Pamiętajcie o połączeniu z robotem)  
 
I co działa? A udało się go wam zatrzymać? A jak zrobić, żeby się zatrzymał?  
 
I co działa? A udało się go wam zatrzymać? A jak zrobić, żeby się zatrzymał?  
 
Oczywiście zatrzymywanie robota trzeba również zaprogramować, bez odpowiedniego kodu nic się samo nie zdarzy. Potrzebujemy zatem dodać następujący kod:  
 
Oczywiście zatrzymywanie robota trzeba również zaprogramować, bez odpowiedniego kodu nic się samo nie zdarzy. Potrzebujemy zatem dodać następujący kod:  
Obraz
+
 +
[[Plik:robot4.jpg]]
 +
 
 
Nasz robot potrafi jeździć do przodu i do tyłu, zatrzymuje się również jeżeli puścimy klawisz kierunkowy. Ale jak sprawić, żeby zaczął skręcać? Szybko zauważycie, że to nie samochód nie ma osi skrętnej, nasze koła są zamontowane na sztywno. Jak w takim bądź razie skręcać?  
 
Nasz robot potrafi jeździć do przodu i do tyłu, zatrzymuje się również jeżeli puścimy klawisz kierunkowy. Ale jak sprawić, żeby zaczął skręcać? Szybko zauważycie, że to nie samochód nie ma osi skrętnej, nasze koła są zamontowane na sztywno. Jak w takim bądź razie skręcać?  
 
Najprostszą metodą jest poruszanie tylko jednym silnikiem, dzięki czemu nasz pojazd skręci wokół unieruchomionego koła. Jest to jednak rozwiązanie mało efektywne. Lepszym rozwiązaniem jest napędzanie silników równocześnie ale w przeciwnych kierunkach (kiedy lewy ma wartość dodatnią to prawy ma taką samą wartość ale ujemną). Pozwoli to na obracanie pojazdu nawet w miejscu.  
 
Najprostszą metodą jest poruszanie tylko jednym silnikiem, dzięki czemu nasz pojazd skręci wokół unieruchomionego koła. Jest to jednak rozwiązanie mało efektywne. Lepszym rozwiązaniem jest napędzanie silników równocześnie ale w przeciwnych kierunkach (kiedy lewy ma wartość dodatnią to prawy ma taką samą wartość ale ujemną). Pozwoli to na obracanie pojazdu nawet w miejscu.  
 +
 
Gotowy kod sterowania powinien wyglądać następująco:  
 
Gotowy kod sterowania powinien wyglądać następująco:  
Obraz
+
 +
[[Plik:robot5.jpg]]
 +
 
 
Powyższe skrypty pozwalają nam swobodnie przemieszczać naszego robota. Mają one jednak jedną wadę. Nasz pojazd będzie się poruszał zawsze z ta samą prędkością (zadeklarowaną w skryptach).  
 
Powyższe skrypty pozwalają nam swobodnie przemieszczać naszego robota. Mają one jednak jedną wadę. Nasz pojazd będzie się poruszał zawsze z ta samą prędkością (zadeklarowaną w skryptach).  
 
A jak zaprogramować robota który mógłby zmieniać prędkość?  
 
A jak zaprogramować robota który mógłby zmieniać prędkość?  
Linia 50: Linia 59:
 
   
 
   
 
Przykładowy kod przypisania prędkości pod klawisz numeryczny:  
 
Przykładowy kod przypisania prędkości pod klawisz numeryczny:  
Obraz
+
 +
[[Plik:robot6.jpg]]
 +
 
 
W przypadku każdego klawisza musimy ustawić nasze 2 ręcznie wpisując pożądane parametry (jazda do przodu – dodatnie, do tyłu - ujemne).  
 
W przypadku każdego klawisza musimy ustawić nasze 2 ręcznie wpisując pożądane parametry (jazda do przodu – dodatnie, do tyłu - ujemne).  
 
Teraz wystarczy pozamieniać wartości w blokach sterujących silnikami i gotowe.  
 
Teraz wystarczy pozamieniać wartości w blokach sterujących silnikami i gotowe.  
 +
 
Przykładowy gotowy skrypt sterowania pojazdem poniżej:  
 
Przykładowy gotowy skrypt sterowania pojazdem poniżej:  
Obraz
+
Dla chętnych:  
+
[[Plik:robot7.jpg]]
 +
 
 +
'''Dla chętnych:'''
 +
 
 
Jakie alternatywne sposoby sterowania można jeszcze zaprogramować?  
 
Jakie alternatywne sposoby sterowania można jeszcze zaprogramować?  
 
Jeżeli wasz pojazd jest wyposażony w czujnik odległości, zaprogramujcie żeby ostrzegał was np.. Dźwiękiem jeżeli zbliżycie się za blisko ściany.
 
Jeżeli wasz pojazd jest wyposażony w czujnik odległości, zaprogramujcie żeby ostrzegał was np.. Dźwiękiem jeżeli zbliżycie się za blisko ściany.

Aktualna wersja na dzień 07:06, 10 wrz 2016

Macie zestaw Makeblock, którym do tej pory sterowaliście tylko i wyłącznie przez komórkę czy tablet? Chcecie samodzielnie zaprogramować ruch robota? Jeżeli odpowiedź brzmi tak, to ten scenariusz został stworzony specjalnie dla was.

Założenia projektu:

Celem zajęć jest stworzenie kodu, który pomoże wprawić robota w ruch. W dlaszej części za pomocą zmiennych stworzymy również możliwość regulacji prędkości poruszania się. Kształcimy naukę logicznego myślenia, orientację przestrzenną oraz kierunki,

Opis projektu:

Zajęcia z wykorzystaniem robota polegają na programowaniu ruchu robota, który będzie sterowany z poziomu komputera

Potrzebny sprzęt:

  • Zbudowany czołg lub trójkołowiec z dwoma silnikami (zestaw starter robot kit – makeblock).
  • Komputer z zainstalowanym programem mBlock

Rozpoczęcie pracy:

Mając zbudowanego robota potrzebujemy jeszcze zainstalowane oprogramowanie mBlock na naszym komputerze. Aby to zrobić udajemy się na stronę http://www.mblock.cc/ szukamy napisu "Download",ściągamy odpowiednią wersję i instalujemy na naszym komputerze. Program zawiera wszystko o jest potrzebne do zainstalowania i współpracy z naszym robotem. Jeżeli wasz zestaw wyposażony jest w bluetooth (najczęstsza opcja), z naszym robotem będziemy się łączyć właśnie przez bluetooth, który znajdziemy w zakładce "Połącz". Istnieje również możliwość połączenia za pomocą kabla usb, ale ponieważ naszym robotem chcemy sterować z poziomu komputera opcja połączenia przez bluetooth będzie wygodniejsza. Pamiętajcie, przy pierwszym połączeniu, koniecznie trzeba kliknąć "Aktualizuj firmware", które znajdziemy w zakładce "Połącz".

Jak to ruszyć?

Robot1.jpg

Trójkołowiec Źródło: makeblock.com Zanim rozpoczniemy składanie kodu, warto zastanowić się chwilę co porusza robotem? Na załączonym obrazku trójkołowca widzimy dwa silniki odpowiedzialne za ruch. Jeżeli zastanowimy się nad budową i pracą silnika, dosyć szybko dojdziemy do wniosku, że każdy silnik posiada możliwość obrotu do przodu i do tyłu. W przypadku trójkołowca, do każdego z silników zamocowane jest koło. Tak więc aby nasz pojazd poruszał się do przodu, oba silniki powinny obracać się również do przodu (obrót w tym samym kierunku). Jeżeli jeszcze tego nie zrobiliście, czas uruchomić mBlock (oparty na Scratch program do programowania robotów Makeblock oraz mBot). Klocki odpowiedzialne za silniki znajdziemy w zakładce roboty. Nazywają się "ustaw prędkość silnika...na..."

Robot2.jpg

A ponieważ mamy dwa silniki, do ich sterowania będziemy potrzebować dwóch bloczków. Oznaczenia M1 i M2 odpowiadają silnikom podłączonym do gniazd 1 i 2. Spróbujmy zatem poruszyć nasz pojazd do przodu. Zauważcie, wartość którą możemy przypisać silnikom wynosi od –255 do 255. Gdzie 255 oznacza ruch do przodu z całą prędkością, -255 to ruch do tyłu, a 0 to zatrzymanie silnika.

Robot3.jpg

To jest odpowiedni moment aby przetestować działanie kodu. (Pamiętajcie o połączeniu z robotem) I co działa? A udało się go wam zatrzymać? A jak zrobić, żeby się zatrzymał? Oczywiście zatrzymywanie robota trzeba również zaprogramować, bez odpowiedniego kodu nic się samo nie zdarzy. Potrzebujemy zatem dodać następujący kod:

Robot4.jpg

Nasz robot potrafi jeździć do przodu i do tyłu, zatrzymuje się również jeżeli puścimy klawisz kierunkowy. Ale jak sprawić, żeby zaczął skręcać? Szybko zauważycie, że to nie samochód nie ma osi skrętnej, nasze koła są zamontowane na sztywno. Jak w takim bądź razie skręcać? Najprostszą metodą jest poruszanie tylko jednym silnikiem, dzięki czemu nasz pojazd skręci wokół unieruchomionego koła. Jest to jednak rozwiązanie mało efektywne. Lepszym rozwiązaniem jest napędzanie silników równocześnie ale w przeciwnych kierunkach (kiedy lewy ma wartość dodatnią to prawy ma taką samą wartość ale ujemną). Pozwoli to na obracanie pojazdu nawet w miejscu.

Gotowy kod sterowania powinien wyglądać następująco:

Robot5.jpg

Powyższe skrypty pozwalają nam swobodnie przemieszczać naszego robota. Mają one jednak jedną wadę. Nasz pojazd będzie się poruszał zawsze z ta samą prędkością (zadeklarowaną w skryptach). A jak zaprogramować robota który mógłby zmieniać prędkość? Jednym z możliwych rozwiązań jest przypisanie różnych wartości prędkości pod klawisze numeryczne np.. 1=50,2=75,3=100,4=125,5=150,6=175,7=200,8=225,9=255. Dzięki temu rozwiązaniu, prędkość poruszania robota będziemy ustawiać wciskając odpowiedni klawisz. Co nam będzie potrzebne? Oczywiście zmienne w których będziemy przechowywali wybrane wartości. Potrzebujemy dwie zmienne, ja dla potrzeb tego projektu nazwałem je sp-front i sp-back. Tworzymy je wybierając zakładkę "Dane i Bloczki" oraz "Utwórz zmienną".Nazwa "sp" to skrót od słowa "speed" czyli prędkość, "front" to przód oraz "back" to tył. "Sp-front" to zmienna "prędkość do przodu", "Sp-back" to zmienna "prędkość do tyłu"

Przykładowy kod przypisania prędkości pod klawisz numeryczny:

Robot6.jpg

W przypadku każdego klawisza musimy ustawić nasze 2 ręcznie wpisując pożądane parametry (jazda do przodu – dodatnie, do tyłu - ujemne). Teraz wystarczy pozamieniać wartości w blokach sterujących silnikami i gotowe.

Przykładowy gotowy skrypt sterowania pojazdem poniżej:

Robot7.jpg

Dla chętnych:

Jakie alternatywne sposoby sterowania można jeszcze zaprogramować? Jeżeli wasz pojazd jest wyposażony w czujnik odległości, zaprogramujcie żeby ostrzegał was np.. Dźwiękiem jeżeli zbliżycie się za blisko ściany.