Frage zu Robo Cup Spiel
-
Guten Morgen an alle die schon wach sind .
Ich möchte ein kleines Programm schreiben, in dem 2 Roboter gegeneinander Fussball spielen. Evtl. kennen einige von euch RoboCup. Es soll so ähnlich sein, mit dem UNterschied das zuerst nur ein Robotoer spielt.Ich möchte jeden Roboter mit verschiedenen Kameras ausstatten (Vorne, Links, Rechts).
Meine Frage ist nun wie die Grafikinformationen an den Roboter kommen.
Also konkret ich habe eine Roboterklasse, die sich bewegen kann. Hat also auf dem Spiel eine Position x,y und die Kamera (z.B) vorne soll das sehen was vor dem Roboter liegt.
Meine Idee war : Der Roboter bewgegt sich in eine Richtung und teilt seine Position einer Generellen Klasse mit diese gibt ihm ein Pixel Array zurück mit den Grafikinformationen.Ich hoffe das Konzept war verständlich. Ist erst mal nur eine erste Idee.
HAt jemand eine bessere Idee oder wie macht man das generell
-
Hallo Fischkopf2009,
du solltest dein Problem erst mal in kleinere Probleme zerlegen. Ich würde mit der Objekterkennung starten. Also dem Roboter die Kamera montieren und ihm zunächst beibringen, den Ball zu erkennen. Da stellt sich natürlich die Frage: Was für Informationen liefert die Kamera? Gibt es Helligkeitsinformationen, Farbwerte oder sogar Tiefeninformationen? Hat der Ball eine spezielle Farbe? Wenn ja muss ggf. nicht einmal die Form erkannt werden, sondern nur die Farbe.
Später sollte der Roboter natürlich noch die anderen Roboter auf dem Feld erkennen, aber wenn nur ein Roboter auf dem Feld ist, reicht es, wenn der Ball erkannt wird. Tore, Spielfeldmarkierungen können vermutlich (der Einfachheit halber) fest einprogrammiert werden.Der Roboter bewgegt sich in eine Richtung und teilt seine Position einer Generellen Klasse
Da dein Programm auf dem jeweiligen Roboter läuft (so wie ich es verstanden habe), reicht es wenn (zunächst) die Position des Balles bestimmt wird und der Roboter jeweils den Winkel berechnet um den Ball ins Tor zu befördern.
Viele Grüße,
MaBa
-
Danke für deine Antwort.
Leider habe ich mich nicht richtig ausgedrückt. das ganze soll eine Simulation auf dem PC Sein. Das heißt es gibt ein Programm, welches das Spielfeld anzeigt und die Bewegung der Roboter simuliert.Jeder Roboter hat 3 "Kameras" das sind keine echten. Er kann (zyklisch) Bilder abfragen, und genau hier habe ich mein erstes Problem.
Wie macht man das am sinnvolsten. Irgend jemand muss ja die Position der Roboter und des Balls verwlaten, und auch die Grafikinformationen zurückgegebn.
Oder geht das einfacher
-
Hallo,
auch wenn es nur eine Simulation ist, würde ich mich an der Realität orientieren. Bei einem einfachen Fußballspiel von Robotern würde ich davon ausgehen, dass jeder Roboter autonom spielt. Kommt der Ball in seine Nähe reagiert er entsprechend seiner Rolle (Torwart, "offensiver" Spieler). D.h. ich würde keine Verwaltung der Positionen vornehmen sondern den Roboter nur auf Ereignisse in seiner Umgebung reagieren lassen.
Sieht der Roboter keinen Ball bewegt er sich nicht. Ansonsten wird seine Bewegungsrichtung durch die Position des Balls, seine eigene Position und die des Tors bestimmt. Bei der Bewegung muss er aber natürlich auch aufpassen, dass er (später) keine anderen Roboter über den haufen fährt. Das fällt aber ggf. auch weg, wenn der gegnerische Roboter den Ball in der Simulation verdeckt.
Bei einem aufwendigeren Programm müsste man sich noch eine komplexere KI ausdenken, die auch die anderen Roboter in die Bewegungsabläufe einbezieht.
Viele Grüße,
MaBa
-
Danke für deine Antwort. Trotzdem habe ich noch ein Frage :
Es würde ja so ungefähr aussehen :
roboter.see();
Das heißt der roboter ruft eine Funktion auf die die Umgebung scannt. Aber wer Verwaltet diese Umgebung, Da es sich ja nur eine Simullation handelt, muss ja irgendwer die Bildinformationen liefern.
Wäre es da nicht sinnvoll eine zentrale Klasse (Environment) anzulegen, die dann die Pixel zurückgibt. Dies Auswertung ob Ball Tor unsw. das muss der Roboter selbst machen das ist klar.
Aber es geht um die daten ....
-
Das heißt es gibt ein Programm, welches das Spielfeld anzeigt und die Bewegung der Roboter simuliert.
Da es sich ja nur eine Simullation handelt, muss ja irgendwer die Bildinformationen liefern.
Ah, o.k. ich glaube jetzt hab ichs Die Simulationsumgebung existiert auch noch nicht, richtig? Dann hast du natürlich Recht. Das gesamte Spielfeld inklusive den Objekten muss modelliert werden, richtig.
Du brauchst eine Klasse Environment, die das Tor (später dann zwei Tore), den Roboter und die Spielfeldbegrenzung verwaltet. Der Einfachheit halber würden sich hier einfache Bounding-Boxes anbieten. Aus Position, Blickrichtung, Öffnungswinkel, etc. der Kamera muss dann berechnet werden, welche Objekte sichtbar sind.
Viele Grüße,
MaBa