gdzie jest znacznikiem stanu ruchu, a jest odległością przebytą od rozpoczęcia ruchu. Znacznik stanu ruchu może przybierać dwie wartości: 1 gdy odbywa się ruch i 0 gdy robot jest gotowy do przyjęcia następnego ruchu.
[O=]
Powoduje przeniesienie danych stanu ruchu do bufora wyjściowego. Dane o stanie ruchu będą zapamiętywane jako liczby typu long integer od podanego adresu w pamięci robota, warunek: adres musi być podany w postaci heksadecymalnej.
Przykłady
-
Polecenie wykonania ruchu o 5 metrów do przodu z prędkością 200 mm/s.
Robuter>motn fo d=5000 v=200
-
Polecenie wykonania obrotu o 180 stopni w prawo z prędkością 10 stopni/s (prędkość jest wartością domniemaną ).
Robuter>motn ri a=180
Kody błędów:
ANGL Kątowa odległość jest spoza dopuszczalnego zakresu.
DIST Odległość jest spoza zakresu.
PARM Błędny parametr.
VELY Prędkość jest z poza dopuszczalnego zakresu.
JSON Aktywny jest proces obsługi Joystick’a.
OBST Przeszkoda znajduje się na żądanym torze ruchu robota.
MOFF Proces wykonywania ruchu jest nie aktywny.
MOVE Robot się porusza – nie może przyjąć kolejnego ruchu.
SERV Pętla sterowania aktywna – nie można aktywować procesu wykonywania ruchu.
2.3.2.2.Instrukcja MOTV
Polecenie MOTV jest kolejnym sposobem sterowania robotem. Opiera się on o sterowanie za pomocą kontrolowania prędkości. Z tego też względu można poruszać robotem płynnie łącząc podstawowe ruchy, takie jak proste linie, okręgi czy proste rotacje. Dla każdego elementarnego ruchu mogą być odpowiednio zdefiniowane: liniowa i kątowa prędkość, a także liniowe i kątowe przyspieszenie. MOTV wykonuje kolejne ruchy płynnie zmieniając prędkości. Inne parametry takie jak: odległość, kąt lub czas wykonywania ruchu, pozwalają określić warunki końcowe każdego elementarnego ruchu. Polecenie MOTV może być także łatwo konsolidowane z zewnętrznymi czujnikami i Joystick-iem. Dodatkowo może wyznaczać parametry ruchu robota po klotoidzie.
Uwaga:
Nigdy nie używać poleceń SERV, MOVE i MOTN gdy proces MOTV jest włączony (ON).
Składnia:
Włączanie/Wyłączanie procesu
MOTV ON|OF
Dodawanie, uruchamianie ruchu
MOTV AD|LA [V=]|[V+]|[V-]
[W=]|[W+]|[W-]
[D=]|[A=]|[T=]|[IN]|[X=]
[L=]|[L+]
[K=]|[K+]
Zmiana aktualnego ruchu
MOTV CH [V=]|[V+]|[V-]
[W=]|[W+]|[W-}
[L=]|[L+]
[K=]|[K+]
Uaktualnienie odległości od zewnętrznego czujnika
MOTV SX X=
Przerywanie ruchu
MOTV KI [L=]|[L+]
[K=]|[K+]
Czyszczenie kolejki
MOTV RS
Kolejka ruchów
MOTV MS
Rozmiar kolejki
MOTV NS [O=]
Status
MOTV ST [O=]
Zwięzły status
MOTV SL [O=]
Pozycja ruchu
MOTV MP
Ograniczenie liniowej prędkości
MOTV VL J=
[V=]
[L=]|[L+]|[D=]|[T=]
Ograniczenie kątowej prędkości
MOTV WL J=
[W=]
[K=]|[K+]|[A=]|[T=]
Pobierz znacznik
MOTV GT N= [O=]
Skasuj znacznik
MOTV DT J=
Clothoid
MOTV CL V=|V+
A=
K=
[O=]
Tryb joystick-a
MOTV JK CH [V=<1_prędkość>][L=<1_przyspieszenie>][W=]
[K=][J=][R=
][C=<środek>]
Zmiana parametrów joystick-a
MOTV JK ON Uruchom poruszanie z wykorzystaniem joystick-a
MOTV JK OFF Zatrzymaj poruszanie z wykorzystaniem joystick-a
MOTV JK PP Drukuj parametry dla konwersji danych z joystick-a
MOTV OFF Zakończ podprogram wykonywania ruchu
MOTV ON [M.=] wystartuj podprogram wykonywania ruchu
Parametry:
Włączanie/Wyłączanie procesu
MOTV ON|OF
ON
Uruchamia podprogram wykonywania ruchu. Poza poleceniem MOTV CL, żadna inna komenda nie może być wykonana jeśli proces nie został uruchomiony.
[M=]
można podać adres (heksadecymalna postać) określający miejsce w pamięci gdzie mają zostać przepisywane aktualne parametry ruchu robota
(liczby long int):
(ad) czas; czas systemowy ostatniej modyfikacji
(ad+4) liniowa prędkość w mm/s
(ad+8) kątowa prędkość w mrad/s
OF
Zatrzymuje podprogram wykonywania ruchu. Ta komenda będzie odrzucana jeśli robot wciąż wykonuje ruch.
Dodawanie, uruchamianie ruchu
MOTV AD|LA [V=]|[V+]|[V-]
[W=]|[W+]|[W-]
[D=]|[A=]|[T=]|[IN]|[X=]
[L=]|[L+]
[K=]|[K+]
AD
(add motion) Dodaj do kolejki ruchów kolejny elementarny ruch opisany przez parametry V,W... W kolejce może być do 10 ruchów, są one wykonywane po kolei. Zakończenie jednego ruchu powoduje rozpoczęcie wykonywania kolejnego. Ruchy do kolejki mogą być dodawane nawet wtedy gdy robot się porusza. Gdy tylko ruch się zakończy odpowiednia komenda jest usuwana z kolejki. Jeżeli parametry ruchu nie zostały podane, do kolejki dodawany jest domniemany ruch (torem ruchu jest linia prosta, naprzód, z prędkością 100 mm/s). Aby uruchomić wykonanie ruchów ustawionych w kolejce, należy wysłać do robota komendę MOTV LA.
LA
(launch motion) Wywołana bez parametrów uruchamia wszystkie ruchy zgromadzone w kolejce sekwencyjnie, w kolejności pojawiania się w niej. W innym wypadku, MOTV LA uruchamia natychmiast ruch zdefiniowany przez parametry V, W... podane w wywołaniu polecenia. Ruch ten nie jest umieszczany w kolejce. Jeżeli robot się porusza, to aktualnie wykonywany ruch jest przerywany i zastępowany nowym. Po zakończeniu tego nowego ruchu, wykonywane są pozostałe ruchy z kolejki, jednakże ruch przerwany przez polecenie MOTV LA (z parametrami) nie zostanie wznowiony.
[V=]
Liniowa prędkość robota, w mm/s. Jest ona z zakresu <-100.., -50, 0, 50, ..., 1000>. Jeśli podana prędkość jest większa od 0 to robot będzie poruszał się do przodu, jeśli zaś mniejsza to do tyłu. Wartość V+ oznacza prędkość V=1000 (maksymalna prędkość), zaś wartość V- prędkość V=-1000.
[W=]
Kątowa prędkość robota, w mrad/s (miliradianach/sekundę). Dozwolony zakres jest następujący <-1000, -100, 0, 100, ..., 1000>. W+ znaczy W=1000 i podobnie W- znaczy
W=-1000. Na rysunku (Rys. 2) przedstawiono kierunek przemieszczania robota w zależności od znaków V i W.
Przy stałej prędkości, promień koła którym podąża robot opisuje się formułą:
R=V/W
Gdzie: R jest w mm, V w mm/s, a W w mrad/s.
Uwaga: promień koła musi być większy bądź równy 0.4 m. W innym wypadku ruch nie zostanie zaakceptowany i zostanie zwrócony błąd RADI.
Rys. 2 Kierunek ruchu w zależności od znaków parametrów V i W.
[D=]
Odległość w mm. Parametr ten musi być zawarty w przedziale <0, 231-1>. Jeśli podana prędkość liniowa nie jest równa zeru, to długość drogi jest liczona dla punktu położonego na środku osi kół napędowych robota (punkt RC). Jeśli prędkość liniowa jest równa zeru to robot będzie wykonywał jedynie rotację wokół punktu RC, zaś wartość D=... będzie znaczyła drogę pokonywaną przez każde z kół. Kiedy D=.. jest podane nie można używać parametrów A=..., T=..., X=... i przełącznika IN.
[A=]
Kąt w stopniach. Wartość parametru musi być w zakresie <0, 231-1>. Ten parametr może być podawany tylko dla zwykłych rotacji (wokół RC). Kiedy wykorzystujemy przełącznik A=..., parametry D=..., T=..., X=... i IN nie mogą być użyte.
[IN]
Nieskończony ruch. Robot wykonuje podany ruch dopóki nie zostanie podany nowy za pomocą polecenia MOTV LA ..., lub zostanie zatrzymany przez polecenie MOTV KI. Gdy wykorzystujemy parametr IN, parametry D=..., A=..., X=... i T=... nie są dozwolone.
[X=]
Odległość w mm, dozwolony zakres <0, 231-1>. X znaczy to samo co D=..., i określa drogę do przebycia. Gdy używamy parametrów D=..., A=... i T=..., proces MOTV uaktualnia wewnętrzne zmienne. Kiedy wykorzystujemy parametr X=..., zewnętrzny czujnik (poprzez system operacyjny robota) musi uaktualniać osiągniętą przez robota pozycję podczas ruchu za pomocą komendy:
MOTV SX X = pokonany_dystans
Parametr X= może być więc wykorzystany do śledzenia ruchu robota wykonującego ruch po prostych za pomocą zewnętrznych czujników. Gdy wykorzystujemy parametr X=..., parametry D=..., A=..., T=... i IN nie są dozwolone.
[L=]
Liniowe przyspieszenie, w mm/s2. Wartości dopuszczalne leżą w zakresie <1, 900>. Liniowa prędkość robota dana jest wzorem:
V = L * t + V0
Gdzie: V jest aktualną prędkością, L jest liniowym przyspieszeniem i V0 początkową prędkością robota (prędkością w momencie wywoływania komendy). MOTV wyznacz znak L podczas ruchu. L+ znaczy L=900, a wartością domniemaną jest L=500.
[K=]
Kątowe przyspieszenie, w mrad/s2. Wartości dopuszczalne <1, 900>. Kątowa prędkość jest dana wzorem:
W = K * t + W0
Gdzie: W jest aktualną kątową prędkością, K jest kątowym przyspieszeniem i W0 początkową prędkością robota (w momencie wywoływania komendy). MOTV proces wyznacza znak K podczas ruchu. K+ znaczy K=900, a domniemaną kątową prędkością jest 500 mrad/s2.
Zmiana aktualnego ruchu
MOTV CH [V=]|[V+]|[V-]
[W=]|[W+]|[W-}
[L=]|[L+]
[K=]|[K+]
CH
(change motion) Ta funkcja pozwala zmodyfikować aktualny ruch, podczas gdy robot się porusza. Parametry które można zmienić to:
[V=] liniowa prędkość
[L=] liniowe przyspieszenie
[W=] kątowa prędkość
[K=] kątowe przyspieszenie
Opis tych parametrów jest dostępny podczas omawiania komendy MOTV AD|LA.
Uaktualnienie odległości od zewnętrznego czujnika
MOTV SX X=
SX
Gdy wykorzystujemy parametr X rozkazu MOTV AD|LA, ta funkcja jest potrzebna aby uaktualniać odległość pokonaną przez robota, od rozpoczęcia ruchu.
Przerywanie ruchu
MOTV KI [L=]|[L+]
[K=]|[K+]
KI
(kill motion) MOTV KI pozwala przerwać aktualny ruch. Kiedy zostanie wykonywana robot automatycznie zaczyna fazę zwalniania aby zatrzymać robota łagodnie. Jeśli inne ruchy oczekują w kolejce na wykonanie to nie zostają one rozpoczęte. Aczkolwiek są one utrzymywane w kolejce i mogą być wystartowane przez komendę MOTV LA. Parametry L=... i K=... mogą być zastosowane aby zdefiniować liniowe i kątowe opóźnienia (patrz MOTV AD|LA aby zobaczyć ich opis).
Czyszczenie kolejki
MOTV RS
RS
(reset queue) MOTV RS wykorzystuje się aby opróżnić kolejkę oczekujących ruchów. Komenda ta nie zostanie przyjęta jeśli robot jest w ruchu.
Kolejka ruchów
MOTV MS
MS
Komenda ta wyświetla ruchy aktualnie dostępne w kolejce.
Rozmiar kolejki
MOTV NS [O=]
NS
Podaje ilość ruchów będących wciąż w kolejce (oczekujących na wykonanie).
[O=]
Zwraca ilość ruchów jako long integer i umieszcza ją pod wskazanym adresem (HEX) w pamięci robota.
Status
MOTV ST [O=]
ST
(status) Wyświetla status funkcji MOTV.
STATUS sekcja statusu mówi co aktualnie robi robot:
-READY robot oczekuje na nowe ruchy
-MOTION robot porusza się
M= podaje który ruch jest aktualnie wykonywany. Jeśli M.=0, robot oczekuje na nowe ruchy.
PHASE podaje fazę ruchu (przyspieszanie, opóźnianie, stała prędkość).
Dopuszczalne fazy to:
-STOP: robot się nie rusza
-START: robot zaczyna wykonywać ruch. W tej fazie robot nigdy nie pozostaje dłużej niż 10ms, w związku z tym komunikat ten rzadko będzie widoczny.
-ACCEL: robot jest w fazie przyspieszania, aby osiągnąć zadaną prędkość
-CONST: robot porusza się ze stałą prędkością
-CHANGE: robot przechodzi do wykonania następnego ruchu
-DECEL: robot jest w fazie hamowania
-END: robot wykonuje ostatni odcinek ruchu przed zatrzymaniem
-KILL: aktualny ruch został wstrzymany i robot wykonuje fazę hamowania. Jeśli występuje ta faza to nie ma fazy END
TOKEN podaje czy jest limitowana prędkość maksymalna (patrz MOTV VL). Jeśli identyfikator (token) jest :NONE to ruch nie ma limitowanych dodatkowo prędkości, w przeciwnym wypadku prędkość jest ograniczana i podana zostaje podana nazwa procesu ograniczającego prędkość.
Inne wyświetlane parametry to:
a= kąt o jaki robot się obrócił od rozpoczęcia aktualnego ruchu (w stopniach)
d= odległość pokonana od rozpoczęcia ruchu przez punkt RC (środek osi robota pomiędzy kołami napędowymi)
v= aktualna prędkość liniowa (mm/s)
w= aktualna kątowa prędkość (mrad/s)
l= aktualne liniowe przyspieszenie robota (mm/s2)
k= aktualne przyspieszenie kątowe robota (mrad/s2)
[O=]
jeśli zostanie podany (adres w formie heksadecymalnej), dane są zapisywane w pamięci robota zgodnie z podanym schematem (gdzie adres bazowy oznaczamy ad):
(ad) 0=READY
1=MOTION
(ad+4) zawarty tutaj jest numer kroku aktualnie wykonywanego
(ad+8) 0=START
1=STOP
2=ACCEL
3=CONST
4=CHANGE
5=DECEL
6=END
7=KILL
(ad+12) cztery litery (ASCII) identyfikator (TOKEN) procesu kontrolującego prędkość.
(ad+16) aktualna prędkość liniowa
(ad+20) aktualna prędkość kątowa
(ad+24) odległość w mm pokonana przez robota. W przypadku czystych rotacji, zawiera kąt w stopniach.
(ad+28) aktualne przyspieszenie liniowe, w mm/s2
(ad+32) aktualne przyspieszenie kątowe, w mm/s2
Zwięzły status
MOTV SL [O=]
SL
(compact status). Zwraca jedną linię statusu. Dane są w formie heksadecymalnej.
Bit 0: =0 nie ma ograniczeń prędkości
=1 prędkość jest ograniczona przez proces
Bit 1: =0 kątowa prędkość jest równa 0
=1 kątowa prędkość jest różna od 0
Bit 2: =0 liniowa prędkość jest równa 0
=1 liniowa prędkość jest różna od 0
Bit 5, 4, 3: wskazuje aktualny stan ruchu
000 START
001 STOP
010 ACCEL
011 CONST
100 CHANGE
101 DECEL
110 END
111 KILL
Bit 6: stan robota
=0 READY
=1 MOTION
Bity 31 do 37: zawiera odległość w mm pokonaną przez robota od rozpoczęcia wykonywania ostatniego ruchu. W wypadku czystej rotacji, zawiera kąt w stopniach.
[O=]
jeśli przełącznik został podany wraz z heksadecymalnym adresem to zwięzły status zostanie umieszczony w pamięci robota.
Pozycja ruchu
MOTV MP
MP
(motion position) MOTV MP zwraca dla ostatnich 10 kroków, następującą informację:
-
odległość pokonaną przez robota od rozpoczęcia ruchu (w mm). W wypadku zwykłej rotacji jest to odległość pokonywana przez każde z kół
-
estymowana pozycja X, na końcu ruchu (wewnętrzny układ wyznaczania pozycji)
-
estymowana pozycja Y, na końcu ruchu
-
estymowana orientacja robota na końcu ruchu
Obszar pamięci gdzie zapisywane są te wartości jest czyszczony za każdym razem gdy wykonywane jest polecenie MOTV LA (z parametrami lub bez), w wypadku gdy robot oczekuje na nowe ruchy (STATUS==READY).
Ograniczenie liniowej prędkości
MOTV VL J=
[V=]
[L=]|[L+]|[D=]|[T=]
VL
(linear velocity limitation) MOTV VL pozwala programowi użytkownika na ograniczenie liniowej prędkości robota podczas ruchu. W takich przypadkach, proces MOTV stara się utrzymać podaną ścieżkę. Gdy to jest koło, parametr W (kątowa prędkość) jest wewnętrznie poprawiany, według wzoru:
ograniczone_W = nieograniczone_W * ograniczone_V / nieograniczone_V
Parametr W jest jedynym który może byś zmieniany automatycznie.
MOT VL zapisuje do wewnętrznej tablicy maksymalną liniową prędkość (V=...) wyznaczoną przez program dający się określić przez identyfikator (J=..., patrz MOTV GT). Co 40ms, proces MOTV czyta tablicę i wyznacza najniższą prędkość, która jest potem wybierana na górne ograniczenie prędkości robota.
J=
Identyfikuje program wywołujący polecenie.
[V=]
najwyższa możliwa prędkość wyznaczająca górne ograniczenie, podana w mm/s. Dostępny zakres tego parametru to <0, ..., 1000>. Wartością domyślną jest V=1000. Jeśli V jest mniejsze niż 50, to przyjmuje się, że została podana prędkość V=0.
[L=], [D=], [T=]
mogą być wykorzystane aby zdefiniować liniowe przyspieszenie, aby uzyskać nową górną liniową prędkość.
[L=] liniowe przyspieszenie, w mm/s2. Zakres parametru to <1, 900>. L+ znaczy L=900. Gdy stosujemy parametr L=..., parametry D=... i T=... nie mogą zostać wykorzystane.
[D=] maksymalna droga, aby uzyskać nową prędkość, w mm, w zakresie <1, 231-1>. Parametr ten powoduje, że w aktualnej prędkości robota i wartości D=... wyznacza się liniowe przyspieszenie. Z parametrem D=... nie mogą być użyte parametry L=... i T=...
[T=] maksymalny czas na uzyskanie nowej prędkości. 1 jednostka jest równa 10ms, zakres parametru <1, 231-1>. MOTV proces wyznacza nową wartość przyspieszenia na podstawie aktualnej prędkości robota i wartości parametru T=... Gdy parametr T=... jest zdefiniowany parametry L=... i D=... nie mogą być wykorzystane.
Należy zaznaczyć że tak jak jest ograniczana maksymalna prędkość tak jest i ograniczane maksymalne przyspieszenie (jeśli wykorzystamy wyszczególnione wyżej parametry).
Ograniczenie kątowej prędkości
MOTV WL J=
[W=]
[K=]|[K+]|[A=]|[T=]
WL
(ograniczenie prędkości kątowej) MOTV WL pozwala programowi użytkownika na ograniczanie prędkości kątowej robota podczas ruchu. W takich przypadkach, proces MOTV próbuje utrzymać podaną ścieżkę. W przypadku koła jest modyfikowany parametr V... (liniowa prędkość). MOTV WL wyznacza maksymalną dozwoloną prędkość kątową tak jak MOTV VL. W wypadku gdy obie prędkości są ograniczone (liniowa i kątowa) proces MOTV wybiera tą ograniczoną bardziej.
J=
Identyfikuje program wywołujący polecenie.
[W=]
Wskazuje żądaną maksymalną wartość kątowej prędkości wykorzystanej jako górna granica w mrad/s. Jej wartość jest z zakresu <0, ..., 1000>, a wartością domniemaną jest W=1000. Jeśli W jest mniejsze niż 100, to przyjmowane za W jest W=0.
[K=], [A=], [T=]
mogą być wykorzystane aby zdefiniować minimalne kątowe przyspieszenie, aby zyskać nową kątową prędkość. Jeśli nic nie zostanie podane przyjmowana jest wartość 500 mrad/s2.
[K=] kątowe przyspieszenie, w mrad/s2. Jego zakres jest <1,900>. K+ znaczy K=900. Gdy wykorzystujemy K=..., nie możemy używać A=... i T=...
[A=] maksymalna droga kątowa na której powinniśmy uzyskać nową prędkość. Podaje się ją w stopniach, w zakresie <1, 231-1]. Proces MOTV wyznacza nowe przyspieszenie z aktualnej prędkości kątowej i wartości parametru A=... Z parametrem A=.. nie wolno wykorzystywać parametrów K=.. i T=...
[T=...] maksymalny czas aby uzyskać nową wartość prędkości. 1 jednostka to 10ms, zakres dozwolonych czasów <1, 231-1>. Przyspieszenie jest wyznaczane od aktualnej prędkości. Z tym parametrem nie mogą być użyte parametry K=... i A=...
Tak jak w przypadku kontroli prędkości MOTV przegląda wewnętrzną tablicę co 40 ms aby określić największe możliwe przyspieszenie. Gdy je znajdzie wykorzystuje je jako nowe przyspieszenie jeśli okazuje się że jest ono większe niż te podane przy zadawaniu ruchu.
Pobierz znacznik
MOTV GT N= [O=]
GT
(get token) Przed wykorzystaniem komend MOTV VL i MOTV WL, jakikolwiek program użytkownika musi pobrać znacznik. Dokonuje tego przez podanie swojej nazwy (4 litery lub cyfry). Program użytkownika jest wtedy wykorzystywany do kontrolowania maksymalnej prędkości robota. Ta właściwość jest szczególnie dobrze dostosowana do współpracy z czujnikami, takimi jak czujniki sonarowe. Dwa programy kontrolujące prędkość robota nie mogą mieć takich samych nazw. Nazwa może być wykorzystana aby zidentyfikować program, który aktualnie ogranicza prędkość ruchu robota (patrz polecenie MOTV ST). MOTV GT zwraca ilość wykorzystanych znaczników, tzn. takich które mogą być wykorzystane przez MOTV VL i WL. Możliwe jest zdefiniowanie do 10 znaczników od 0 do 9 (tyle jest dostępnych w systemie).
[O=]
pozwala zapisać ilość wykorzystanych znaczników w pamięci robota jako (long int) pod podanym adresem (w heksadecymalnej formie).
Skasuj znacznik
MOTV DT J=
DT
(delete token) Zwalnia podany znacznik gdy program użytkownika już go nie potrzebuje, nie będzie wykorzystywał komend MOTV VL i WL. Zwolniony znacznik może być wykorzystany przez inny program.
Klotoida
MOTV CL V=|V+]
A=
K=
[O=]
UWAGA: Ta komenda może być wykonywana przez okres czasu większy niż 10 ms
CL
(klotoida) MOTV CL wylicza parametry 2 pół-klotoid wykorzystywanych, aby zmienić kierunek ruchu robota. Należy jednak zaznaczyć, że RobuterTM nie może podążać w pełni klotoidalnym torem.
V=
Wyznacza prędkość robota w momencie rozpoczynania pierwszej klotoidy. Tor ruchu poprzedzający klotoidę musi być linią prostą, prędkość robota zaś musi być taka sama jak wyspecyfikowana dla klotoidy. Prędkość musi być z zakresu <-1000, ..., -50, 50, ..., 1000>.
A=
Definiuje docelowy kąt o jaki ma się obrócić robot, w stopniach. Zakres <0, 180>.
K=
Określa kątowe przyspieszenie, w mrad/s2, może to być dowolna wartość z zakresu <1, 900>.
MOTV CL zwraca czas t (1 jednostka to 10ms), który jest czasem trwania pół-klotoidy, odległości X i Y oraz drogę s pokonywaną przez punkt RC robota. Parametry klotoidy wyjaśniono na rysunku:
Rys. 3. Parametry klotoidy.
PRZYKŁAD:
Aby wykonać obrót o 60 stopni, z prędkością liniową 300 mm/s i kątowym przyspieszeniem 45 mrad/s2, następująca komenda musi zostać wprowadzona:
Robuter>motv cl v=300 a=60 k=45
Zwróci ona następujące dane:
W=214
T=119
X=1471
Y=243
S=1369
Na podstawie tych danych aby wykonać zamierzony skręt następujące instrukcje muszą zostać wywołane:
Robuter>motv ad v=300 d=2000-1471=529
Robuter>motv ad v=300 w=-214 t=119 k=45
Robuter>motv ad v=300 w=0 t=119 k=45
Robuter>motv ad v=300 d=2500-1471=1029
Odnośnie W poleca się wykorzystywać wartość nieco większą niż ta która została wyliczona. Jesteśmy wtedy pewni, że nie zostanie ona osiągnięta co ustrzeże nas przed uzyskaniem wycinku koła, a nie klotoidy.
[O=]
jeśli podamy łącznie z adresem (forma heksadecymalna) to wyliczone parametry zostaną umieszczone w pamięci robota. Struktura tych danych jest następująca (wszystkie dane typu long int):
(ad) W, w mrad/s
(ad+4) czas T
(ad+8) X, w mm
(ad+12) Y, w mm
(ad+16) s, w mm
Tryb joystick-a
MOTV JK CH [V=<1_prędkość>][L=<1_przyspieszenie>][W=] [K=][J=][R=
][C=<środek>] Zmiana parametrów joystick-a
MOTV JK ON Uruchom poruszanie z wykorzystaniem joystick-a
MOTV JK OFF Zatrzymaj poruszanie z wykorzystaniem joystick-a
MOTV JK PP Drukuj parametry dla konwersji danych z joystick-a
MOTV OFF Zakończ podprogram wykonywania ruchu
MOTV ON [M.=]
wystartuj podprogram wykonywania ruchu
OPIS:
Komenda MOTV jest aktualnie dostosowana do przyjmowania parametrów ruchu robota z interfejsu joystick’a. Parametry ruchu przyjmowane są przez interfejs analogowo-cyfrowy i przetwarzane na dane dla instrukcji MOTV. Istnieje możliwość zmodyfikowania parametrów wejścia analogowego tak, aby można było zastosować inny joystick niż ten, który oferuje firma produkująca robota. Także parametry konwersji danych z przetwornika na polecenia MOTV mogą być częściowo modyfikowane. Ogólny sposób konwersji został przedstawiony na rysunkach.
Rys. 4. Definicja liniowych i kątowych parametrów zależności prędkości od wychylenia.
Rys. 5. Definicja parametrów zależności promienia łuku od wychylenia.
JK CH
Zmiana domniemanych parametrów dla joystick’a
[J=]
heksadecymalny numer który określa adres, pod którym będą umieszczane dane określające wyjście z joystick’a. Zapamiętywana struktura składa się z dwóch liczb typu short.
[K=]
liczba dziesiętna określająca kątowe przyspieszenie [mrad/s2]
[W=]
zestaw 4 parametrów oddzielonych przecinkami. Opisują one konwersję danych z joystick’a na kątowe prędkości. Pierwsze dwa określają najniższą prędkość dla danego wyjścia z joystick’a. Ostatnie dwa określają zaś najwyższą prędkość. Każda dwójka parametrów składa się z liczby heksadecymalnej opisującej względną wartość odchylenia joystick’a od środka i wartości dziesiętnej określającej prędkość.
[C=]
zestaw 2 heksadecymalnych wartości które opisują pozycję X i Y joystick’a gdy jest on w pozycji centralnej.
[L=]
liczba dziesiętna opisująca wartość liniowego przyspieszenia.
[V=]
zestaw 4 parametrów oddzielonych przecinkami. Definiuję one konwersję danych z joystick’a na prędkość liniową. Pierwsze dwa parametry określają najniższą prędkość dla danego ustawienia joystick’a. Ostatnie dwa prędkość najwyższą. Para jest tworzona z liczby heksadecymalnej opisującej względną pozycję joystick’a od środka i liczby dziesiętnej opisującej prędkość.
[R=]
zestaw 4 parametrów oddzielonych przecinkami. Definiuję one konwersję danych z joystick’a na kąt. Pierwsze dwa parametry określają największy kąt dla danego ustawienia joystick’a. Ostatnie dwa kąt najmniejszy. Para jest tworzona z liczby heksadecymalnej opisującej względną pozycję joystick’a od środka i liczby dziesiętnej opisującej kąt.
JK OFF
wyłącz poruszanie robotem za pomocą joystick’a.
JK ON
włącz poruszanie robotem za pomocą joystick’a.
JK PP
drukuj parametry sterowania joystick’iem
KODY BŁĘDÓW POLECENIA MOTV
PARM Błędny parametr
LVEL Prędkość liniowa spoza zakresu
AVEL Prędkość kątowa spoza zakresu
DIST Odległość spoza zakresu
ANGL Kątowa odległość spoza zakresu
TIME Czas spoza zakresu
LACC Liniowe przyspieszenie spoza zakresu
AACC Kątowe przyspieszenie spoza zakresu
TOKE Znacznik spoza zakresu, lub nie istnieje
NOTO Nie ma więcej znaczników
NAEX Nazwa już istnieje
VELI Ograniczenie prędkości spoza zakresu
MOVE Robot się porusza
MOFF Nie aktywny podprogram poruszania robotem
FUST Kolejka ruchów jest pełna
EMST Kolejka ruchów jest pusta
RADI Kąt spoza zakresu
JKON Joystick jest w użyciu
SERV Pętla kontroli ruchu aktywna. Nie można aktywować podprogramu MOTV
2.3.3.Instrukcje procesu określania pozycji
Instrukcje te pozwalają skonfigurować i uruchomić proces określania pozycji robota w zewnętrznych, kartezjańskich współrzędnych.
System odometrii Robuter-a został zaprojektowany tak, aby jak najdokładniej określać pozycję robota w kartezjańskim układzie współrzędnych. Pozycja ta jest określana za pomocą trzech współrzędnych (x, y, ) gdzie x i y określają pozycję robota, zaś kąt określa orientację robota w odniesieniu do osi OX.
Estymowana pozycja robota odnosi się do jego punktu odniesienia, umieszczonego na środku osi napędowej robota. Rysunek pokazuje zorientowanie układu współrzędnych w stosunku do punktu odniesienia.
System odometrii wykorzystuje arytmetykę zmiennopozycyjną o rozszerzonej precyzji, umożliwia to osiągnięcie wysokiej dokładności obliczeń. Niestety takie rozwiązanie powoduje zwiększone obciążenie procesora robota, dlatego też proces wyznaczania pozycji może być dostosowywany do potrzeb wymaganej dokładności przez zmianę okresu próbkowania pozycji. Może to być konieczne jeśli system operacyjny robota jest mocno obciążony wieloma równolegle wykonywanymi procesami.
Rys. 6. Orientacja układu współrzędnych robota.
2.3.3.1.Instrukcja ODOM
Rozkaz ODOM pozwala uruchomić i zatrzymać proces odometrii, a także podaje pozycję robota. ODOM podaje aktualną pozycję robota w formacie:
x y
dx dy d
gdzie: zestaw współrzędnych (x, y, ) określa pozycję robota zaś trójka (dx, dy, d) pozycję robota w stosunku do poprzednio estymowanego punktu. Współrzędne kartezjańskie są podane w metrach zaś kąt w stopniach, patrz rysunek.
Składnia
ODOM
ODOM ON|OFF [P=]
ODOM O= [D]
Parametry:
ODOM
Wyświetla na standardowym wyjściu aktualną i względną pozycję robota w podanym wyżej formacie.
ODOM ON|OFF [P=
]
ON Uruchom proces odometrii
OFF Zatrzymaj proces odometrii
[P=] Okres próbkowania procesu odometrii. Okres musi być podany jako ilość cykli podstawowych (zwykle 10 ms). Domniemana wartość to P=5, czyli 50 ms.
ODOM O= [D]
O= Heksadecymalny adres bufora wyjściowego. Wykorzystanie tej opcji powoduje, że wartości wyjściowe są przesyłane pod podany adres. Wszystkie współrzędne są zapamiętywane jako liczby typu long integer. Współrzędne x i y są wyrażone w milimetrach, a kąt w stopniach.
[D] Zapisz wszystkie wymienione wyżej współrzędne jako wartości typu double (64 bitowe liczby zmienno pozycyjne), jednostki są takie same jak poprzednio.
Kody błędów
ADDR Adres bufora jest nieprawidłowy.
ODON Proces odometrii już był aktywowany.
PARM Błędny parametr.
PERD Nieprawidłowa wartość okresu próbkowania.
2.3.3.2.Instrukcja ODOS
Komenda ODOS powoduje zastąpienie aktualnej pozycji wyznaczonej przez proces odometrii, pozycją podaną przy wywołaniu polecenia.
Składnia:
ODOS C=, , <>
Parametry:
C= Pozycja urządzenia. Współrzędne x i y muszą być podane w milimetrach zaś kąt w stopniach. Wszystkie współrzędne muszą być podane jako liczby całkowite.
Kody błędów
PARM Błędny parametr.
Rys. 7. Zastosowanie komend ODOM i ODOS.
2.3.3.3.Instrukcja ODOF
Komenda ODOF powoduje przesunięcie pozycji wyznaczanej przez proces odometrii o podany wektor.
Składnia:
ODOF C=, ,
Parametry:
C= Offset. Wartości dx i dy muszą być podane w milimetrach, zaś wartość d w stopniach. Wszystkie współrzędne muszą być podane jako wartości całkowite.
Komendy przydatne podczas ćwiczeń laboratoryjnych:
odom on – włączenie systemu odometrycznego
motv on – wyłączenie hamulców
Dodawanie ruchów do kolejki (max 10 pozycji):
motv ad v=100 d=500 - ruch do przodu (prędkość 100mm/s, odległość 500mm)
motv ad v=0 w=100 a=90 - rotacja o 90
wykonanie kolejki:
motv la
Podsumowanie
Podłączenie: przez RS (TxD, RxD i GND). Parametry transmisji:
Baud: 9600, 8 bitów danych, brak parzystości, 1 bit stopu, brak sterowania przepływem.
Po resecie systemu Robuter wysyła przez linię zgłoszenie się systemu operacyjnego czasu rzeczywistego: Albatros. Następnie pojawia się linia poleceń. Wpisanie znaku powoduje wyświetlenie go na ekranie Hyper Terminala, czyli zostaje on odesłany. Linia poleceń wygląda tak:
Ro13 6.0>
System nie rozróżnia wielkich i małych liter, więc można wpisywać dowolnie.
Podstawowe komendy:
ODOM ON – powinno się wpisać na początku pracy.
MOTV ON – odblokowanie kół. Dopiero potem można jeździć.
Poniższe komendy nie spowodują bezpośrednio ruchu. Zapisywane są na kolejkę ruchów i wykonywane będą dopiero po starcie wykonywania tej kolejki.
MOTV AD V=100 D=200 – jazda do przodu (znak V) na odległość 200mm. V to prędkość w [mm/s]
MOTV AD V=-100 D=200 – jazda w tył
MOTV AD V=0 W=-100 A=30 – obrót w miejscu w prawo o kąt A [o] z prędkością W=-100 mrad/s
Wykonanie sekwencji ruchów odbywa się po wpisaniu komendy:
MOTV LA
Natychmiastowe wykonanie ruchu:
MOTV LA V=300 D=200
Komenda MOTV NS powoduje wyświetlenie liczby mówiącej ile ruchów zostało jeszcze do wykonania z sekwencji. Można to wpisywać w dowolnym momencie (podczas jazdy także).
Wyjście (zakończenie):
MOTV OFF
ODOM OFF
Dodatkowe komendy:
MOTV RS – kasuje kolejkę ruchów
MOTV KI – kasuje kolejkę i przerywa natychmiast wykonywany ruch (coś jak stop awaryjny). Nie następuje blokada kół i robot jedzie swoim pędem.