3
1
dydaktyka/chris/MIN_2016/Zajecia_9.md

3.2 KiB

Wykorzystanie pakietu jFuzzyLogic do modelowania sterownika rozmytego c.d.

Zadanie - Aktywny tempomat

Wykorzystując pakiet jFuzzyLogic zaprojektuj system rozmyty sterujący samochodem. Celem jest utrzymanie stałego dystansu od śledzonego samochodu.

Możesz wziąć pod uwagę np. dwie zmienne opisujące sytuacje: szybkość samochodu i dystans do samochodu jadącego z przodu i sterować zmianą prędkości: przyspieszaj, hamuj, utrzymuj prędkość.

Nazwy zmiennych lingwistycznych powinny być następujące:

VAR_INPUT 
  distance : REAL;
  speed : REAL;
END_VAR

VAR_OUTPUT
  acceleration : REAL;
END_VAR

Pod systemem Linux dla poprawy wydajności grafiki należy przekazać do maszyny wirtualnej Java następujący parametr -Dsun.java2d.opengl=true

Kompilacja w laboratoriach:

    javac -cp jFuzzyLogic.jar [[FuzzyChase]].java 

Uruchomienie Windows

    java -cp jFuzzyLogic.jar;. [[FuzzyChase]]

Uruchomienie Linux

    java -cp jFuzzyLogic.jar:. [[FuzzyChase]]

Pamiętaj by archiwum z biblioteką JFuzzyLogic jFuzzyLogic.jar wgrać do katalogu z którego uruchamiasz program.

Poniżej rozwiązanie proponowane przez Kazuo Tanaki.

Użyj go jako punkt wyjścia do konstrukcji sterownika.

  • Czy spełnia on swoją rolę?
  • Poeksperymentuj z definicjami poszczególnych zmiennych lingwistycznych.
  • Jak wprowadzane zmiany wpływają na zachowanie samochodów?
  • Jak powinny być one ustawione by sterownik działał optymalnie?
  • Czy funkcje przynależności zmiennych powinny być symetryczne?

Dystans, szybkość i zmiana - zmienne lingwistyczne

  • dystans

{{attachment:chris/MIN_2013/Zajecia_9/dystans.jpg}}{=mediawiki}

  • szybkość

{{attachment:chris/MIN_2013/Zajecia_9/szybkosc.jpg}}{=mediawiki}

  • zmiana szybkości

{{attachment:chris/MIN_2013/Zajecia_9/przyspieszenie.jpg}}{=mediawiki}

Zbiór reguł

  • R1: IF dystans jest krótki AND szybkość jest mała THEN utrzymuj szybkość
  • R2: IF dystans jest krótki AND szybkość jest duża THEN redukuj szybkość
  • R3: IF dystans jest długi AND szybkość jest mała THEN zwiększaj szybkość
  • R4: IF dystans jest długi AND szybkość jest duża THEN utrzymuj szybkość

{{attachment:chris/MIN_2013/Zajecia_9/reguly.jpg}}{=mediawiki}

Ilustracja działania sterownika:

{{attachment:chris/MIN_2013/Zajecia_9/sterownik1.jpg}}{=mediawiki}

Zadanie 1

Oblicz stan sterownika dla parametrów wejściowych:

  • prędkość 45 km/h
  • dystans 25 m

Zadanie 2

Zaimplementuj sterownik w pliku tempomat.fcl, uruchom, przetestuj i dobierz optymalne jego parametry