AiR_ais_cw_8_joystick.pdf

(425 KB) Pobierz
292676686 UNPDF
Instrukcja do ćwiczenia nr 8 z Laboratorium Automatyki
1
Ćwiczenie 8.
Joystick force-feedback
292676686.006.png
Instrukcja do ćwiczenia nr 8 z Laboratorium Automatyki
2
Wstęp.
W skład stanowiska laboratoryjnego wchodzi:
– komputer PC z oprogramowaniem Matlab/Simulink pozwalający na wykonanie pomiarów oraz realizację
algorytmu sterowania,
– joystick Logitech Force 3D Pro będący obiektem sterowania,
– joystick Logitech Extreme 3D Pro służący jako źródło sygnału zadanego.
Rysunek 1. Stanowisko laboratoryjne. Po prawej joystick z force-feedback
Joystick Logitech Force 3D Pro posiada funkcję siłowego sprzężenia zwrotnego (force feedback) – pozwala on
nie tylko na pomiar położenia rękojeści, ale może także wywierać pewną siłę – wystarczającą do poruszania swobodną
rękojeścią w dwóch wymiarach.
Współpracę z joystickem z poziomu Simulinka umożliwia blok ff-joystick pokazany na rysunku 2. Sygnałami
wejściowymi dla bloku są wartość siły w osi x oraz siły w osi y. Sygnały wyjściowe to położenie joysticka (port
oznaczony jako „x”), prędkość („v”) i wywierana siła („f”) oraz położenie drugiego joysticka (bez sprzężenia siłowego,
port oznaczony jako "x(noFF)"). Sygnały te zawierają dwie współrzędne – dla osi x i y. Przyjęto, że oś x odpowiada
wychyleniom w lewo/prawo, oś y – wychyleniom do przodu/do tyłu. Aby rozdzielić sygnał na dwie współrzędne należy
skorzystać z bloku demux (położenia wykorzystywanych bloków w bibliotece Simulinka podano na końcu instrukcji),
co pokazano na rysunku.
292676686.007.png
Instrukcja do ćwiczenia nr 8 z Laboratorium Automatyki
3
Rysunek 2. Blok ff-joystick oraz sygnały wejściowe i wyjściowe
Zakresy wartości poszczególnych sygnałów wynoszą:
– dla położenia – wartości całkowite od -1000 do +1000, co odpowiada wychyleniu o około 15 stopni
odpowiednio w lewo i prawo / do przodu i do tyłu,
– dla sił w obu osiach – wartości całkowite od -10000 do +10000,
– prędkość obliczana jest przy pomocy filtru Golay'a-Savitzky'ego i przyjmuje wartości z zakresu
±1.6⋅10
4.
.
Uwaga. Działanie algorytmu w Simulinku zawierającego blok ff-joystick jest spowolnione w taki sposób, by
czas symulacji odpowiadał czasowi rzeczywistemu. Komunikacja z joystickiem wykonywana jest co 1/100 sekundy,
stąd w parametrach symulacji (menu Simulation, polecenie Configuration parameters) należy wybrać Type: Fixed-step
oraz Fixed-step size: sampletime . (zmienna sampletime powinna zostać zdefiniowana w Matlabie przed uruchomieniem
bloku ff-joystick, wartość: 0.01).
Blok ff-joystick komunikuje się z joystickiem korzystając z dodatkowego programu ff-const (skrót na
pulpicie). Program ten należy uruchomić i pozostawić działający w tle przez cały czas wykonywania ćwiczenia.
Po uruchomieniu Matlaba należy w linii wpisać polecenie:
start_joy
Zadanie 0. Zapoznać się z działaniem stanowiska laboratoryjnego:
– uruchomić program ff-const,
– uruchomić Matlab i Simulink (w Matlabie wpisać polecenie Simulink ),
292676686.008.png 292676686.009.png
Instrukcja do ćwiczenia nr 8 z Laboratorium Automatyki
4
– utworzyć nowy model (w oknie Simulinka: File > New > Model),
– z odpowiednich bloków złożyć schemat pokazany na rysunku 3,
– ustawić parametry symulacji zgodnie z informacjami podanymi powyżej, wpisać czas zakończenia symulacji
(Stop time) jako inf,
– uruchomić symulację, zbadać zakresy uzyskiwanych wartości oraz możliwości zadania siły (zmienić wartość
w bloku Constant lub Contant1 na różną od zera, np. 2000).
Rysunek 3.Schemat Simulinka do Zadania 0
Zadanie 1. Wyznaczenie odpowiedzi skokowej obiektu.
– zmodyfikować schemat z poprzedniego zadania, tak by zadawana w osi x siła zmieniała się skokowo od
wartości zero do wybranej wartości z zakresu 0-10000,
– schemat uzupełnić o blok To Workspace (w ustawieniach bloku wybrać rodzaj danych: Structure with time),
– ustawić joystick w położeniu zerowym (lub bliskim zera) w obu osiach,
– uruchomić symulację i zatrzymać po skoku,
– w Matlabie wykreślić przebieg siły i położenia joysticka w osi x w funkcji czasu:
plot( odp.time, odp.signals.values(:,1), 'r', odp.time,
odp.signals.values(:,2), 'b' )
– sprawdzić jak zależy kształt uzyskiwanej odpowiedzi od amplitudy skoku?
Zadanie 2. Wyznaczanie charakterystyki statycznej.
Pomiary z siłą zadawaną ręcznie:
– zbudować schemat edytorze Simulink pozwalający na zadawanie dowolnej siły i wykorzystać go do
wyznaczenia 10-20 punktów charakterystyki statycznej joysticka (dla jednej osi)
292676686.001.png 292676686.002.png
Instrukcja do ćwiczenia nr 8 z Laboratorium Automatyki
5
– punkty wpisać do Matlaba jako macierz i wykreślić poleceniem plot
Automatyczne wyznaczanie charakterystyki:
– zbudować schemat Simulinka, w którym generowany jest sygnał prostokątny (okres 2s, wypełnienie 50%) o
rosnącej amplitudzie, np. 200, 400, 600, itd. (Można skorzystać np. z bloków Ramp, Quantizer, Pulse
Generator oraz Product)
– wygenerowany sygnał podać jako siłę w osi x joysticka
– zarejestrować w Matlabie zadawaną siłę oraz uzyskiwaną pozycję joysticka (blok To Workspace – zmienić
nazwę zmiennej z "simout" na "pomiar", rodzaj zmiennej: Structure with time)
– skorzystać z pliku steady_char do uzyskania punktów charakterystyki statycznej:
[sU,sY] =steady_char( pomiar.signals.values(:,1), pomiar.signals.values(:,2) )
– powtórzyć pomiary dla ujemnych wartości siły
Zadanie 3. Wyznaczanie charakterystyki częstotliwościowej.
– schemat z poprzedniego zadania zmodyfikować tak by zadawana była siła o przebiegu sinusoidalnym
– ustalić wartość amplitudy, która zapewnia jak najmniej zniekształcony sygnał na wyjściu
– po wykonaniu pomiaru skorzystać z pliku sin_analyz do wyznaczenia amplitudy (ampl), przesunięcia
fazowego (phi) i okresu (period) sygnału wyjściowego:
[ampl, phi, period] = sin_analyz( pomiar.time, pomiar.signals.values(:,1),
pomiar.signals.values(:,2) );
– pomiary wykonać dla różnych częstotliwości – pamiętając, że próbkowanie jest z okresem 10ms
– wykreślić charakterystyki:
– logarytmiczną amplitudową i fazową (Bodego),
– amplitudowo-fazową (Nyquista)
– uwaga: w celu poprawienia dokładności działania programu sin_analyz można usunąć początkową część
zmierzonego przebiegu, np.: (usuwa początkowe 3 sekundy z pomiaru typu Structure with time)
pomiar = przytnij( pomiar, 3 );
Zadanie 4. Wyznaczanie prędkości
– zbudować układ pozwalający na obserwowanie prędkości joysticka obliczanej przy pomocy:
a) bloku Derivative z biblioteki Continuous
b) bloku Discrete Derivative z biblioteki Discrete (tylko Matlab >6.5)
c) bloku o transmitancji:
292676686.003.png 292676686.004.png 292676686.005.png
Zgłoś jeśli naruszono regulamin