Spis treści Wstęp 2 Opis robota mobilnego 3



Pobieranie 148.32 Kb.
Strona2/2
Data28.04.2016
Rozmiar148.32 Kb.
1   2

2.3.Język robota


Język robota jest zbiorem kilku poleceń wbudowanych w system operacyjny dostarczony przez producenta. Polecenia te to: SERV, POS, MOVE, MOTN, MOTV, MOTP, ODOM, ODOS, ODOF, READ, RNOD. Ogólnie rzecz biorąc system operacyjny robota jest wyposażony w dużo bogatszy zestaw instrukcji, które przykładowo umożliwiają odczytywanie wejść i wyjść cyfrowych, udostępniają operacje związane z zapamiętywaniem danych w pamięci robota, czy też obsługę nietypowych urządzeń dołączonych do systemu. Jednakże te polecenia pracują na względnie niskim poziomie i nie zapewniają minimum komfortu w korzystaniu z robota. Wymagają znajomości sprzętowej jego modułów. Opisano tu jedynie instrukcje pozwalające sterować w miarę „łatwo” ruchem i sonarami robota.

2.3.1.Instrukcje warstwy niższej


Zaliczono do tej grupy 3 instrukcje, są to: SERV, POS, MOVE. Znalazły się tutaj gdyż sterują robotem bez uwzględnienia zewnętrznego układu współrzędnych, a jedynie wartości enkoderów. Czyli prościej mówiąc nie znamy pozycji, ale wiemy ile razy obróci się prawe i lewe koło robota, bądź z jaką prędkością.

2.3.1.1.Instrukcja SERV


Instrukcja ta jest wykorzystywana aby zainicjować nisko poziomową pętlę kontroli ruchu robota. Może ona przyjąć postać:
SERV ON [T=]

[D=]

[N=]

[P=]

[F=
]

SERV OF [D=]


Parametry

ON tworzy zadanie pętli kontroli jednego z urządzeń

OF usuwanie zadania pętli kontroli jednego z urządzeń
[T=] typ pętli

OP otwarta pętla pozycji

OV otwarta pętla prędkości

BP zamknięta pętla pozycji

BV zamknięta pętla prędkości
[D=] numer urządzenia (od 1 do F), w zapisie heksadecymalnym

[N=] liczba określająca który z predefiniowanych zestawów parametrów pętli kontroli ma zostać wykorzystany. Liczba z zakresu 11 do FF w zapisie heksadecymalnym.

[P=] okres próbkowania pętli kontroli, w cyklach podstawowych zegara czasu rzeczywistego.

[F=] definiuje stałą zależność pomiędzy ilością cykli niskopoziomowej pętli kontroli i modułu generacji trajektorii


Wartości domyślne
T=BP zamknięta pętla kontroli pozycji

D=1 urządzenie nr 1.

N=11 pierwszy zestaw parametrów

P=1 pętla kontroli wykonuje się w każdym cyklu zegara czasu rzeczywistego

F=4 cztery cykle pętli kontroli na jeden punkt trajektorii
Przykład
Włącz zamkniętą pętlę kontroli pozycji dla urządzenia 2, na jeden cykl pętli kontroli ma przypadać jeden punkt trajektorii.
Albatros>serv on t=bp d=2 f=1
Wyłącz pętlę kontrolną urządzenia nr 1:

Albatros>serv of


Kody błędów
ACAD wskaźnik na tablicę wartości czujników nie istnieje w bloku DDB (Device Definition Block)

AOUT nie został, w bloku DDB, określony wskaźnik do procedury wysyłającej obliczony rozkaz do kanału wyjściowego

CGEN nie można znaleźć, w bloku DDB, wskaźnika do struktury określającej uogólnione współrzędne. Ten błąd może być zgłoszony jedynie przez polecenie SERV ON T=BP.

CLRC nie ma określonej procedury do czyszczenia rejestrów położenia (w bloku DDB)

DEVI błąd w określeniu numeru urządzenia (D=...])

ERAS błąd pojawia się przy próbie odczytu danych z bloku DDB

FREQ błąd w częstotliwości względnej pomiędzy pętlą niskopoziomową, generacją trajektorii [F=...]

ILL= nie legalne znak „=”

LECC wskaźnik do procedur przetwarzających dane z czujników na kontrolowalne zmienne nie istnieje w bloku DDB

NBAM brak numeru urządzenia w bloku DDB

NDEV nie można znaleźć statusu urządzenia w bloku DDB, prawdopodobnie urządzenie nie zostało zdefiniowane

NOPA brak bloku danych dla odpowiedniego typu kontrolnej pętli w bloku DDB

NOST brak wskaźnika określającego położenie stosu modułu generacji trajektorii

NUM1, NUM2

błąd podczas próby pobrania parametrów pętli kontroli

NUMB błędny numer pętli ([N=...])

OBIN nie mogę odnaleźć wskaźnika do wyjścia logicznego w DDB. Prawdopodobnie uszkodzone dane w bloku DDB

OFF! żadna pętla nie została aktywowana, błąd podczas próby wykonania komendy SERV OF

ON! pętla kontrolna została już uruchomiona, błąd podczas próby wykonania komendy SERV ON

SEQ1 systemowa flaga nie jest włączona. Wykonaj inicjalizację sprzętową całego systemu i spróbuj jeszcze raz.

SEQ2 nie można zakończyć, ponieważ urządzenie nie wykonało jeszcze wcześniejszego ruchu.

SAMP błąd okresu próbkowania (P=[...])

SYNT błąd składni, pojawia się gdy przełączniki ON lub OF nie pojawią się przed znakiem CR

TYPE błędny typ pętli ([T=...]), generalnie spowodowane jest to przez brak definicji w bloku DDB



2.3.1.2.Instrukcja POS


Instrukcja służy do pobrania pozycji urządzenia. Funkcja ta wykorzystuje jego wewnętrzne czujniki, takie jak optyczne enkodery lub potencjometry, aby wyznaczyć pozycję w podanej przestrzeni.
Składnia
POS [D=]

[S=
]

[O=]
Parametry

[D=] heksadecymalna liczba określająca numer urządzenia (1 do F)

[S=] określa przestrzeń dla której ma być estymowana pozycja urządzenia

S=S przestrzeń czujników

S=G przestrzeń uogólniona

S=C przestrzeń kartezjańska

Dopuszczalne parametry dla danego urządzenia są zależne od definicji w bloku DDB

[O=] liczba heksadecymalna określająca pozycję bufora na liczby 32-bitowe.


Wartości domniemane

D=1 urządzenie nr 1.

S=G współrzędne uogólnione.
Przykład
Podaj współrzędne urządzenia o numerze 3
Albatros>pos d=3
Kody błędów
ABUO nie ma zdefiniowanego bufora wyjściowego w bloku DDB

CART nie można znaleźć współrzędnych kartezjańskich w bloku DDB

DEVI nie można znaleźć urządzenia o podanym numerze

GENE nie można znaleźć współrzędnych uogólnionych w bloku DDB

ILL= niedopuszczalny znak „=”

NOID brak pola ID w bloku DDB

SENS adres czujników nie został odnaleziony w bloku DDB

SPAC błąd w określeniu przestrzeni współrzędnych

UPTR błędnie podany adres bufora wyjściowego


2.3.1.3.Instrukcja MOVE


Instrukcja sterująca ruchem dowolnego wielo-osiowego urządzenia
Składnia
MOVE par AC=
[,...]

RC=[,...]

AR=[,...]

[D=]

[P=]

[G=
]


Opis parametrów

par P ruch z kontrolą pozycji.

V ruch z kontrolą prędkości.

PA ruch z kontrolą pozycji jednostajnie przyspieszony.

PD ruch z kontrolą pozycji jednostajnie opóźniony.
Ten parametr musi odpowiadać parametrowi T podanemu przy poleceniu SERV ON wydanemu dla tego samego numeru urządzenia.
AC pozycja lub prędkość do uzyskania.

RC relatywna pozycja lub prędkość w stosunku do aktualnej.

AR relatywna pozycja. Komenda wykonuje to samo co RC, ale kasuje pozycję odczytywaną przez czujniki przed wykonaniem ruchu. Jest ona wykorzystywana np. z robotami mobilnymi gdy należy zmienić punkt odniesienia.
[D] numer urządzenia

[P] określa ilość cykli zegara w której należy zrealizować podaną komendę.

[G] określa pozycję w tabeli sterowań do wykonania. Gdy:

G=1 do F, jeden z 15 zdefiniowanych zestawów (jeśli istnieje) jest użyty

G>F, wtedy wartość G jest wskaźnikiem do tabeli sterowań umieszczonej w obszarze programu użytkownika.
Uwaga: Wszystkie wartości muszą być liczbami całkowitymi (16 bitów ze znakiem).
Wartości domniemane

par brak wartości domniemanej. Parametr jest konieczny.

AC, RC, AR brak wartości domniemanej. Ilość podanych liczb musi być taka sama jak ilość mechanicznych osi urządzenia.

D=1 urządzenie nr 1.

P=1 błędna wartość tego parametru może destabilizować system, szczególnie gdy czas podany na wykonanie ruchu jest zbyt krótki.

G poprzednia wartość. 1 jeśli pierwszy ruch po sprzętowej inicjalizacji.


Przykład
Przesuń urządzenie nr 2 do jego pozycji początkowej, wykorzystując 100 cykli niskopoziomowej pętli kontroli ruchu urządzenia:
Albatros>move p ac=0,0 d=2 p=100
Kody błędów

ADWA nie można zlokalizować obszaru roboczego w DDB

AR=X ruch typu AR jest nie dopuszczalny (tylko w systemach z kontrolą pozycji)

COM? zestaw komend nie został uruchomiony

COMM błąd podczas próby odczytania zestawu komend

DEVI błędny numer urządzenia

ERRC błąd w zestawie komend

GAGL nie ma górnej granicy przyspieszenia w bloku DDB

GAIN wystąpił błąd podczas próby konwersji numeru pobudzenia [G=...]

ILL= niedozwolony znak „=”

LIGL brak dolnego ograniczenia prędkości w bloku DDB

LIGU brak górnego ograniczenia prędkości w bloku DDB

NDEV nie można odnaleźć statusu urządzenia w bloku DDB. Błąd ten występuje najczęściej dla nie zdefiniowanego urządzenia.

NGAI podana tablica sterowań [G=...] nie istnieje w bloku DDB.

NOAS nie ma uruchomionej pętli sterowania. Należy uruchomić komendę SERV ON, przed dokonaniem próby poruszenia urządzeniem.

NOID nie można znaleźć pola identyfikacji w bloku DDB

NOPO nie została uruchomiona pętla kontroli pozycji. Należy wywołać komendę SERV OF, po czym komendę SERV ON T=BP.

NOVE nie została uruchomiona pętla kontroli prędkości. Należy wywołać komendę SERV OF, po czym komendę SERV ON T=BV.

SAMP błędnie podany okres próbkowania [S=...]

SEQ1 flaga systemu ALBATROS jest nie włączona. Zainicjuj sprzętowo cały system i spróbuj jeszcze raz.

SPGL nie ma zdefiniowanych górnych granic prędkości w bloku DDB

SYNT brak parametrów definiujących typ ruchu (P, V, PA, PD).




2.3.2.Instrukcje warstwy wyższej sterujące ruchem robota


Instrukcje te posługują się bardziej zaawansowanymi algorytmami kontroli ruchu robota. Dlatego też są łatwiejsze do wykorzystania. Dodatkowo instrukcja MOTN potrafi korzystać z systemu sonarów do wykrywania przeszkód (niestety do poprawnego działania tego udogodnienia robot musi być wyposażony w system sonarów w wersji drugiej, zaś dostępny robot jest wyposażony w wersję wcześniejszą).

2.3.2.1.Instrukcja MOTN


Instrukcja MOTN umożliwia inny sposób kierowania robotem niż instrukcja MOVE. Za jej pomocą łatwe staje się uzyskanie podstawowych ruchów robota, takich jak przesunięcia i obroty wokół centralnej osi (oś pomiędzy kołami robota), przez podanie jedynie odległości na jaką ma się przesunąć i prędkości. Dane do wykonania ruchu podaje się w metrach, bądź stopniach. Komenda MOTN dzieli każdy ruch na elementarne kroki, uważając na odpowiednie gradienty przyspieszenia bądź opóźnienia. Wszystkie elementarne kroki są wykonywane przez proces przebiegający w tle, dlatego też ruch może zostać przerwany w każdym momencie. Dodatkowo możliwa jest detekcja przeszkód, jeśli użytkownik tego sobie zażyczy. Detekcja jest realizowana przez sieć sonarów i jeżeli zostanie wykryta przeszkoda ruch robota jest automatycznie wstrzymywany.
Składnia:

MOTN ON|OF[F] [U=ON]

MOTN FO[RWARD]|BA[CKWARD] [D=] [V=
]

MOTN LE[FT]|RI[GHT] [A=] [V=


]

MOTN KI[LL]|WA[IT]

MOTN ST[ATUS] [O=]

Opis parametrów:

MOTN ON|OF[F] [U=ON]
ON

Aktywuje proces poruszania robotem


OFF

Dezaktywuje proces poruszania robotem


[U=ON]

Aktywuje proces wykrywania przeszkód. Proces ten ma automatycznie zatrzymać robota jeśli zaczyna przejeżdżać przez przeszkodę. Po jego uruchomieniu przestrzeń w kierunku ruchu robota jest nieustannie monitorowana i robot przerywa ruch, jeśli odległość do przeszkody staje się mniejsza niż odległość bezpieczna wynikła z prędkości robota. Dodatkowo, z powodów bezpieczeństwa, ruch jest przerywany jeśli najbliższa przeszkoda, w dowolnym kierunku, znajduje się bliżej niż stała odległość bezpieczeństwa (około 40 cm). Proces detekcji przeszkód spowoduje także, że ruch robota nie zostanie uruchomiony jeśli aktualna odległość od przeszkody jest mniejsza niż wymagana do ukończenia zadanego ruchu.


MOTN FO[RWARD]|BA[CKWARD] [D=] [V=
]
FO/BA

Ruch do przodu (FO) lub do tyłu (BA).


[D=]

Odległość w milimetrach, w zakresie od 0 do 231-1. Domniemana jest nieskończona odległość tzn. robot będzie się poruszał w wyznaczonym kierunku dopóki nie zostanie wysłana komenda MOTN KI, lub nie zostanie zatrzymany przez proces wykrywania przeszkód.


[V=]

Prędkość w mm/s, może być dowolna z zakresu od 25 do 800, jakkolwiek podczas procesu konwersji odległości na cykle ruchu, tylko wielokrotności 25 są wartościami znaczącymi, stąd podana wartość może być zaokrąglona. Domniemaną wartością jest 100 mm/s.


MOTN LE[FT]|RI[GHT] [A=] {V=
]
LE/RI

Obracaj w lewo (LE) lub w prawo (RI).


[A=]

Kątowa odległość w stopniach. Domniemana odległość jest odległością nieskończoną, czyli rotacja robota może zostać zatrzymana przez komendę MOTN KI lub przez proces wykrywania przeszkód.


MOTN KI[LL]|WA[IT]
KI

Przerwij (zakończ) aktualnie wykonywany ruch. Ruch nie kończy się natychmiastowo, istnieje faza zwalniania aby zabezpieczyć się przed nagłym zatrzymaniem urządzenia.


WA

Poczekaj na koniec aktualnie wykonywanego ruchu. Przełącznik ten został umieszczony, aby móc synchronizować poszczególne ruchy w programach aplikacyjnych. Jest on potrzebny gdyż polecenie MOTN nie układa kolejnych ruchów w kolejkę. Zastosowanie tego przełącznika spowoduje nie akceptowanie kolejnego ruchu dopóki aktualnie wykonywany się nie zakończy.


MOTN ST[ATUS] [O=]
ST

Podaj aktualny stan wykonywania ruchu. Odpowiedź robota jest postaci:



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.



1   2


©absta.pl 2016
wyślij wiadomość

    Strona główna