Programowanie ruchu robota

Programowanie ruchu robota

Programowanie silnika polega na kontrolowaniu jego pracy. Z lektury poprzednich sekcji wiesz, że silniki sterowane są przez wysyłanie sygnałów sterujących prędkością obrotową i położeniem wału. Wały silników są połączone z kołami, nogami lub gąsienicami i pozwalają robotowi się poruszać. Roboty wyposażone w koła i gąsienice mogą wykonywać cztery podstawowe rodzaje ruchów:

  • do przodu po linii prostej,
  • obrót,
  • po łuku,
  • zatrzymanie.

Ruchy te mogą zostać połączone w sekwencję, w której robot będzie wykonywał skomplikowane manewry i przemieszczał się w środowisku pracy. Wykonanie każdego z wymienionych ruchów wymaga ustalenia pewnych danych — na przykład w celu wykonania ruchu po linii prostej w tył lub w przód silniki muszą wiedzieć, jak długo mają pracować lub jak daleko mają się przemieścić. Obrót robota wymaga podania kąta i kierunku. Oto lista parametrów niezbędnych do wykonania poszczególnych ruchów:

  • do przodu: czas, kierunek, odległość;
  • obrót: kąt w stopniach, kierunek;
  • po łuku: promień, kierunek

Niektóre ruchy mogą być ze sobą łączone — robot może na przykład jechać po łuku do przodu. Parametry mogą przyjmować wartości dodatnie lub ujemne — ruch może mieć kierunek zgodny z kierunkiem ruchu wskazówek zegara lub przeciwny do niego, robot może skręcać w prawo lub w lewo, a także wykonywać ruch do przodu i do tyłu. Dodatkowym parametrem charakteryzującym
ruch robota jest prędkość. Jak zaprogramować silniki w celu wykonania tych ruchów? Sposób programowania zależy od liczby silników napędzających robota i kilku innych czynników.

 

Ile silników?

Sposób napędzania robota jest ważnym czynnikiem wpływającym na sposób jego programowania, a także na możliwość ruchu w różnych warunkach. Roboty poruszające się na kołach, podobnie jak samochody, mogą być wyposażone w napęd na dwa koła lub na cztery koła. W przypadku napędu na cztery koła każde koło jest napędzane za pomocą oddzielnego silnika. W przypadku napędu na dwa koła dwa silniki napędowe są montowane z przodu lub z tyłu robota. Roboty poruszające się na gąsienicach mogą być wyposażone w dwa silniki z kołami zębatymi znajdujące się po obu stronach korpusu (do kół zębatych doczepione są gąsienice, a także dodatkowe koła). Rysunek 7.19 przedstawia różne konfiguracje układów przeniesienia napędu robota.

Rysunek 7.19. Wybrane konfiguracje układów przeniesienia napędu robota

Każda konfiguracja napędu charakteryzuje się pewnymi wadami i zaletami. Większa liczba silników oznacza większy moment obrotowy. Wcześniej opisaliśmy rożne problemy, które muszą pokonywać roboty poruszające się — zagadnienia te dotyczyły prędkości, momentu obrotowego, masy, terenu, przyczepności itp.

 

Wykonywanie ruchów

Istnieją różne rozwiązania umożliwiające koordynację silników w celu wykonywania ruchów do przodu, obrotu, po łuku i zatrzymania się — może być to na przykład układ sterowania znany z samochodów (zwany również układem Ackermana), skręcanie kół tylnej osi, koła wielokierunkowe i niezależne sterowanie prędkością obrotową poszczególnych kół (technika ta pozwala na zmianę prędkości obrotowej wybranych kół w celu zmiany kierunku ruchu robota). Dwa pierwsze rozwiązania są skomplikowane i wymagają stosowania serwomotorów i układów logicznych. Najprostszą metodą, którą warto poznać, rozpoczynając swoją przygodę z programowaniem autonomicznych robotów, jest niezależne sterowanie prędkością obrotową poszczególnych kół.
Niezależne sterowanie prędkością obrotową poszczególnych kół umożliwia zmianę prędkości i kierunków obrotu poszczególnych kół w celu wykonywania określonych manewrów. Roboty korzystające z tej techniki są zwykle wyposażone w dwa koła napędowe zamontowane po przeciwnych stronach podwozia. Roboty takie mogą być wyposażone również w pasywne koła, takie jak na przykład koło samonastawne zapobiegające przewróceniu się robota. Oto lista podstawowych operacji, które mogą być wykonane dzięki niezależnemu sterowaniu prędkością obrotową poszczególnych kół:

  • Gdy oba koła obracają się z taką samą prędkością i w tym samym kierunku, robot porusza się do przodu lub do tyłu po linii prostej.
  • Gdy jedno koło obraca się szybciej od drugiego, robot porusza się po łuku, skręcając w kierunku koła obracającego się wolniej.
  • Gdy koła obracają się w przeciwnych kierunkach, robot obraca się, stojąc w miejscu.
  • Gdy koła obracają się z tą samą prędkością w przeciwnych kierunkach, robot może obrócić się o 360°.

 

Programowanie ruchów

W tej sekcji znajdziesz pseudokod i stworzony na jego bazie kod programu obsługującego silniki prądu stałego firmy Tetrix za pośrednictwem mikrokontrolera EV3 i sterownika silników firmy Tetrix. W listingu 7.1 przedstawiliśmy program korzystający z interfejsu programistycznego leJOS, a także klas TetrixControllerFactory, TetrixMotorController i TetrixRegulatedMotor. Listing zawiera pseudokod i opracowany na jego podstawie kod w Javie. Program ten pozwala sprawdzić działanie silników, wykonując związane z nimi podstawowe operacje.

Listing 7.1. Mechanizm PUMT — testowanie silników robota Unit1

Dane wejściowe mechanizmu PUMT

Rama projektowa Softbot
Nazwa: Unit1
Części:
Sekcja silników:
Dwa silniki prądu stałego
Akcje:
Krok 1.: Inicjalizuj silniki.
Krok 2.: Sprawdź działanie silników, wykonując wybrane podstawowe operacje.
Zadania:
Sprawdź działanie silników, wykonując wybrane podstawowe operacje.
Koniec ramy

 

Dane wyjściowe mechanizmu PUMT: implementacja w Javie

73 public static void main(String [] args) throws Exception
74 {
75     basic_robot Unit1 = new basic_robot();
76     Unit1.testMotors();
77     Unit1.closeLog();
78 }

 

W 75. linii deklarowany jest obiekt basic_robot. Następnie wywoływane są dwie funkcje (metody).

 

Listing 7.2 zawiera kod konstruktora.

Listing 7.2. Mechanizm PUMT — konstruktor obiektu basic_robot
Dane wyjściowe mechanizmu PUMT: implementacja w Javie

28 public basic_robot() throws InterruptedException,Exception
29 {
30     Log = new PrintWriter("basic_robot.log");
31     Port APort = LocalEV3.get().getPort("S1");
32     CF = new TetrixControllerFactory(APort);
33     Log.println("Zakończono konstrukcję współczynnika kontrolera firmy Tetrix");
34     MC = CF.newMotorController();
35     LeftMotor = MC.getRegulatedMotor(TetrixMotorController.MOTOR_1);
36     RightMotor = MC.getRegulatedMotor(TetrixMotorController.MOTOR_2);
37     LeftMotor.setReverse(true);
38     RightMotor.setReverse(false);
39     LeftMotor.resetTachoCount();
40     RightMotor.resetTachoCount();
41     Log.println("Zakończono konstrukcję obiektów typu silnik");
42     Thread.sleep(1000);
43 }

Spójrz jeszcze raz na 31. linię kodu:

31 Port APort = LocalEV3.get().getPort("S1");

LocalEV3 jest egzemplarzem mikrokontrolera EV2. Klasa ta jest używana do zwracania różnych zasobów systemowych podłączonych do mikrokontrolera. Funkcja getPort() zwraca obiekt Port dla S1 — określa port, do którego podłączony jest kontroler silnika prądu stałego. Zmienna APort jest przekazywana do funkcji TetrixControllerFactory.

W 34. linii kodu:

34 MC = CF.newMotorController();

MC jest obiektem TetrixMotorController, który jest używany do zwracania egzemplarzy obiektów podłączonych do niego silników.

W liniach 35. i 36.:

35 LeftMotor = MC.getRegulatedMotor(TetrixMotorController.MOTOR_1);
36 RightMotor = MC.getRegulatedMotor(TetrixMotorController.MOTOR_2);

LeftMotor i RightMotor są obiektami TetrixRegulatedMotor. Aby metody działały poprawnie, do sterowanego silnika należy domontować enkoder podłączony do sterownika.

W liniach 37. i 38.:

37 LeftMotor.setReverse(true);
38 RightMotor.setReverse(false);

lewy silnik (LeftMotor) jest konfigurowany do wykonywania obrotów w tył, a prawy silnik (RightMotor) do pracy w przód.

W liniach 39. i 40.:

39 LeftMotor.resetTachoCount();
40 RightMotor.resetTachoCount();

wyzerowywane są tachometry obu silników. Tachometr jest urządzeniem mierzącym prędkość obrotową wału silnika (wyrażaną w stopniach). Wyzerowanie tachometru powoduje zatrzymanie  wału silnika.

 

Programowanie robotów. Sterowanie pracą robotów autonomicznych Autorzy: Cameron Hughes, Tracey Hughes Wydawnictwo: Helion

Podobne artykuły

Podziel się ze znajomymi tym artykułem - udostępnij na FB lub wyślij e-maila korzystając z poniższych opcji:

wszystkie oferty