Komputerowa symulacja walk robotów SUMO
Transkrypt
Komputerowa symulacja walk robotów SUMO
Dominik Kilian Marcin Rzepka Mateusz Komorkiewicz Komputerowa symulacja walk robotów SUMO Walki robotów sumo ● Zasady – – – – – ● pełna autonomiczność, ring, klasy, ograniczenia wagowe, wymiary. Przebieg turnieju Strategia a strategia ● Problem może wydawać się trywialny: – ● ● ● ● ● budowa zabawki. Najprostsza strategia zmieści się nawet w 2 kB, Naprawdę ambitne potrzebowałyby mikrokontrolerów DSP Filtr kalmana, predykcja położenia, Czujniki – kamera, rozpoznawanie obrazu, Enkodery, żyroskopy, czujniki przyśpieszenia. Kolejna bariera - koszty Na koszt robota sumo składają się: ● duża ilość czujników, ● koszty elektroniki ( uC + mostki H) ● mechanika ● Wysokie ceny akumulatorów modelarskich razem ok. 1000zl Znaczne utrudnienie w budowie dwóch lub więcej robotów. Pomysł - symulator ● Powody powstania oprogramowania ➔ ➔ ➔ Testowanie strategii, Walki pomiędzy dwoma robotami, Łatwa zmiana oprogramowania. Struktura symulatora Symulator - Ode - OpenGl - akwizycja danych socket Robot 1 - czujniki - strategia socket socket socket - czujniki - strategia Robot 2 Moduł - Symulator OpenGl wizualizacja akw. danych ODE silnik fizyczny Modele fizyczne robotów sterowanie Komunkacja ze strategiami Dane z fizyki dla czujników Silnik Fizyczny ● Jakiś print screen Przenośność kodu ● ● ● ● ● W praktyce inżynierskiej najbardziej rozpowszechnionym językiem programowania mikrokontrolerów jest język C. Program umożliwia pełną przenośność kodu pomiędzy platformami ( PC <-> uC ) Przenośność na poziomie rejestrów Wystarczy podmienić plik nagłówkowy Kompilujemy program, w którym jednym z modułów jest nasz program, pozostała część kodu odpowiada za jego obsługę i obsługę czujników Przykład - przenośności kodu Struktura rzeczywistego robota czujnik uC M Stopień czujnik program mocy M czujnik Moduł – Robot # Dane z fizyki Socket wirtualne czujniki komunikacja z symulatorem program sterowanie Wirtualne czujniki ● ● Program umożliwia odwzorowanie każdego typu czujnika ( może oprócz kamer ). Odwzorowanie jest bardzo dokładne ( charakterystyka i zakłócenia ) --arguments for function gp2y0a -- x,y - position of robot or sensor -- xe,ye - position of enemy robot -- q - angle of robot (veritical = 0) -- p - cone of the sensor (in rad) -- e - randomized generated noise function gp2y0a(x:float;y:float;xe:float;ye:float;q:float;r:float;qc:float ) return character is begin --spline of gp2y0 characteristic --up to 8 cm - linear function --further - cubic function if(l<8) then put('n'); return character'val(integer((2.0**8)/5.0*0.18*xf)); else put('t'); return character'val(integer((2.0**8)/5.0*(-0.00000124061556781*xf*xf*xf + 0.00048409784080504*xf*xf - 0.06553441086755000*xf + 3.57274796190532000))); end if; end gp2y0a; Wynik pracy Symulatora ● ● ● Program zapisuje plik *.csv z danymi z przebiegu symulacji W plikach znajdują się mi : – Dane o położeniu w funkcji czasu, – Obliczone funkcje kowariancji i korelacji dla otrzymanych danych. Pozwala to na łatwe przeanalizowanie pojedynku, bez konieczności ponownego uruchamiania symulatora Some print screen's