MiniBCC #30 - Autopilot
Übersicht

![]() |
HolzchopfMeisterpackerBetreff: MiniBCC #30 - Autopilot |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es geht weiter! Herzlich willkommen zum
MiniBCC #30 ![]() Thema Programmiert einen Autopiloten für einen kleinen lustigen runden Roboter. Der Autopilot soll den Roboter durch eine Strecke führen. Aufgabe Ladet euch das Vorlagenpaket herunter. Eure Aufgabe ist es, einen Autopiloten zu schreiben. Also kopiert die Datei "AIs/holzchopf.bmx" oder "AIs/holzchopf.bb", gebt ihr einen eigenen Namen und füllt sie, um dem Roboter mit euren Skills eine bessere Intelligenz einzuhauchen! Ziel ist es, dass der Roboter möglichst schnell die Strecke abfährt. Danach postet ihr eure KI hier oder lasst sie mir per Privatnachricht zukommen. Natürlich müsst ihr nicht alles von Grund auf neu schreiben - ein bisschen tweaken tut's auch ![]() Am Schluss gibt's einen Wettkampf der Autopiloten! Dabei wird jede KI drei mal in die Runde geschickt und diejenige, die dann die beste Rundenbestzeit aufweist, hat gewonnen. Leider keinen Preis, sondern einfach den Wettkampf der Autopiloten. Der Gewinner des miniBCC wird ganz konservativ per demokratischen Entscheid erkoren. Hinweise zum Programm Auf dem Bildschirm seht ihr in der Mitte die Strecke mit dem Roboter und rundherum ganz viel HUD. Die Richtung des Roboters ist am kleinen schwarzen Punkt zu erkennen. Die grünen Punkte um den Roboter herum sind die Detektionsorte der Sensoren, auf die ihr zum Steuern zugreifen dürft. Links und rechts im HUD geben euch Balken über die Geschwindigkeiten der Räder links und rechts auskunft. Das "Spektogramm" unten zeigt euch, wie weit die einzelnen Sensoren sehen. Dann ist noch die Linie mit den Angaben für aktuelle Rundenzeit, Runde und Rundenbestzeit. Mit Escape könnt ihr das Menü öffnen. Ihr könnt als Steuerungsmethode auch manuell wählen - was euch erlaubt, den Roboter mit der Maus zu steuern. Für eure Steuerung stehen diese Funktionen zur Verfügung: GetV1#() und GetV2#() Gibt die aktuelle Geschwindigkeit des Rades links resp. rechts zurück. AccelerateRobot(pRobot, pAcc1#, pAcc2#) Beschleunigt die Räder links und rechts um die angegebenen Werte. Die Beschleunigung wird von der Simulation beschränkt auf ±MAX_ACC, höhere Werte werden begrenzt. AccelerateRobotTo(pRobot, pVel1#, pVel2#) Beschleunigt die Räder mit Maximalbeschleunigung auf die angegebenen Zielgeschwindigkeiten. Die Geschwindigkeit wird von der Simulation beschränkt auf ±MAX_VEL, höhere Werte werden begrenzt. Randbedingungen (die euch das Leben etwas einfacher machen)
Regeln (an die ihr euch halten müsst)
Termin Sonntagabend, 12.11.2017 um 23:59 Haut in die Tasten! |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
- Zuletzt bearbeitet von Holzchopf am Di, Nov 14, 2017 20:13, insgesamt 2-mal bearbeitet
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow ![]() Eine Frage hab ich: Du meintest, die KIs werden in drei Runden geschickt... Jetzt könnte man auf die Idee kommen in der Autopilot funktion daten über die strecke aufzuzeichnen und sie in der nächsten runde wiederzuverwenden. Wäre das erlaubt? Konkreter: darf ich irgendwelche Informationen von einem Aufruf in den nächsten mitnehmen? Ich werde mich an der Aufgabe jedenfalls versuchen. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das darfst du ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Leider hat es in meinen Versuchen so ausgesehen, dass man schneller ist, wenn der Roboter nicht sauber die Kurven ausfährt. Hab jetzt daher einen relativ simplen Algorithmus abgegeben (@Holzchopf PN).
Bin schon gespannt auf den Wettkampf ![]() |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genial! Ich bin entzückt ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
So ich habe auch mal meine Version eingesandt.
Hoffe es kommen noch ein paar mehr Einsendungen - sonst wird das ein Duell zwischen uns beiden Thunder ![]() lg, Count-Doku |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auch sehr schön, danke!
Eigentlich unglaublich, mit wie wenig Code man eine nicht nur zuverlässige sondern auch wettkampffähige Steuerung hinkriegt =) |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ich hatte eigentlich noch den Optimierungsgedanken entweder immer nur direkt um 90° zu drehen,
sobald ich einer Wand zu nahe komme. Nur würde dies eine Kenntnis über die Karte voraussetzen und die habe ich zwar als Programmierer aber mein Bot nicht, daher habe ich das weggelassen. |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jaaaa, Count, lange nichts mehr von dir gehört! Ich glaub ich hatte dich mal auf ICQ ... muss lang her gewesen sein ![]() Bin froh, dass ich nicht der Einzige im Turnier bin! ![]() |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
AI: Xaymars Dummkopf Einsendung BB
Benannt nachdem wie er/sie halt fährt. Kanten werden ignoriert und der absolut kürzeste Weg wird genommen. Auch wenn dies den Roboter beschädigen würde. Wie ein Roomba halt, nur noch weniger Intelligent. Rundenzeit: 0:16:06 (Bestzeit) BlitzBasic: [AUSKLAPPEN] AIName = "Xaymars Dummkopf" Edit: AI: Der Speedrunner Dies ist keine Einsendung, da ich ganz sicher bin das dies Schummeln ist. Fährt auch irgendwann einfach rückwärts die Strecke entlang wegen der Floating-Point Probleme. Rundenzeit: 0:00:62 (Best), 0:01:33 (Avg), 0:03:44 (Worst) BlitzBasic: [AUSKLAPPEN] AIName = "SPEEDRUN!!!" Edit 2: AI: Xaymars Ausweicher Ein weiterer Versuch, leider allerdings nicht schneller als der Dummkopf, dafür bleibt er etwas heiler. Keine Einsendung, da langsamer als der Dummkopf. BlitzBasic: [AUSKLAPPEN] ; Name des Autopilots |
||
Warbseite |
- Zuletzt bearbeitet von Xaymar am Mo, Nov 13, 2017 1:09, insgesamt 3-mal bearbeitet
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo...
Mathe ist nicht gerade meine Stärke aber es geht auch so... Code: [AUSKLAPPEN] AIName = "Rallimens Autopilot"
Function AutoPilotRobot(pRobot.TRobot, pDists#[SENSORS_VIS_CNT]) Links#= pDists[0]+pDists[1]+pDists[2]+pDists[3]+pDists[4]+pDists[5]+pDists[6] Mitte#=pDists[8]+pDists[9]+pDists[10]+pDists[11] rechts#=pDists[12]+pDists[13]+pDists[14]+pDists[15]+pDists[16]+pDists[17]+pDists[18] If Links# > 8 AccelerateRobotTo(pRobot, 0.005,0.05) Else If rechts# > 8 AccelerateRobotTo(pRobot, 0.05,0.005) Else If Mitte# > 0 Then If links < 2 Then If pDists[2] < 1Then AccelerateRobotTo(pRobot, 0.05,0.02) AccelerateRobotTo(pRobot, 0.05, 0.01) Else If rechts < 2 Then If pDists[17] < 1 Then AccelerateRobotTo(pRobot, 0.02, 0.05) AccelerateRobotTo(pRobot, 0.01, 0.05) Else AccelerateRobotTo(pRobot, 0.05, 0.05) EndIf EndIf End Function |
||
[BB2D | BB3D | BB+]
|
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kenne ja Thunders Code noch nicht, aber von der Beschreibung her, glaube ich fast,
dass Tunders, Xaymars Dummkopf und mein Bot ziemlich genau das selbe machen... Aber Rallimens Ansatz sieht auch minimalistisch interessant aus. |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mein Code ist da drinnen: https://www.blitzforum.de/upload/file.php?id=13322
Ist am ehesten mit dem von Rallimen zu vergleichen, finde ich. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hach Mist... Kommt mal ein echt genialer MBCC und ich hab's verpasst -.- | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group