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

Podobne dokumenty