Puchaczov Napisano Styczeń 19, 2015 Udostępnij Napisano Styczeń 19, 2015 Cześć, potrzebuję napisać algorytm oparty o logikę rozmytą który będzie parkował samochód (taki teoretyczny). Nie mogę dociec dlaczego mi to nie działa, może ktoś podpowiedzieć czy mam poprawne dane wejściowe? Moimi zmiennymi wejściowymi są: kąt do osi X oraz odległość ciężarówki od osi X Wyjściem jest kąt skrętu kół. Oto moje funkcje zbiory rozmyte //kat do osi miejsca parkingowego left = new TrapezoidFunction(-180, 0, -180, -10); straight = new TrapezoidFunction(-20, 20, 0.0, 0.0); right = new TrapezoidFunction(0, 180, 10, 180); //odleglosc ciezarowki os osi x distVLeft = new TrapezoidFunction(-1000, -40, -1000, -60); distLeft = new TrapezoidFunction(-60, 0, -30, -30); distCenter = new TrapezoidFunction(-30, 30, 0, 0); distRight = new TrapezoidFunction(0, 60, 30, 30); distVRight = new TrapezoidFunction(40, 1000, 60, 1000); //kat o jaki maja zostac skrecone kola leftAngle = new TrapezoidFunction(-40, 0.0, -40, -10); centerAngle = new TrapezoidFunction(-10, 10, 0.0, 0.0); rightAngle = new TrapezoidFunction(0.0, 40, 10, 40); steeringAngle = new FuzzyFrame(-40, 40, new List<Function>() { leftAngle, centerAngle, rightAngle }); Od razu nasuwa mi się pytanie czy otrzymaną wartością z kontrolera powienien być przyrost kąta skrętu kół czy nowy kąt ustawienia kół? WheelAngle = updateWheelAngle(biezacyKatUstawieniaDoOsiX, xMiejscaParkingowego - xBiezacejPozycji); w taki sposob generuje nowy kąt pod którym skręcone są koła. Czy biezacyKatUstawieniaDoOsiX nie powinien być różnicą poprzedniego kąta i tego nowego tak jak w przypadku pozycji? var radians = DegToRad(WheelAngle); x = x + Velocity * Time * Math.Cos(radians); y = y + Velocity * Time * (Math.Sin(radians)); currAngle = currAngle + (Velocity * Time) / (Length * Math.Tan(radians)); w taki sposób próbuję wygenerować współrzędne nowego punktu. Jednak te punkty są niepoprawne. Kolejne iteracje nie powodują nawet zbliżania się do jakiegokolwiek sensownego wyniku. Zastanawiam się czy dobrze to próbuję policzyć. Velocity i Time przyjmuje jako 1 (stała prędkość) Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 19, 2015 Udostępnij Styczeń 19, 2015 Możesz udostępnić zbiory rozmyte w jakieś wizualnej wersji (wykres)? Skąd wzięły się konkretne wartości? Wyklucz błąd wynikający z tych zbiorów? Próbowałeś wspierać się Matalbem? Toolbox od sieci rozmytych jest całkiem przyjemny. Link do komentarza Share on other sites More sharing options...
Puchaczov Styczeń 20, 2015 Autor tematu Udostępnij Styczeń 20, 2015 dzięki za sugestie. Tak wygląda mój zestaw reguł wizualnie: Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »