Diskussion: ctSim-Erweiterungen

Die Programmierung des c't-Sim
Antworten
Eggi

Diskussion: ctSim-Erweiterungen

Beitrag von Eggi » 05 Feb 2008, 08:06

Hallo liebe ctSim-Entwickler. Mein derzeitiger Arbeitgeber möchte für verschiedene Studiengänge ein Robotik-KI-Praktikum anbieten, welches auf Basis eines simulierten ctBots stattfinden soll. Ziel das Praktikums soll der Entwurf und die Implementation verschiedener Bestandteile einer Bot-KI sein. Der Bot hat die Aufgabe in einem ihm unbekannten Terrain sämtliche Lichtquellen zu finden und diese mindest einmal besuchen. Dabei soll ein Missionmanagment über den Energiestatus des Bots wachen und gegebenfalls diesen zur letzten bekannten Lampe zum Laden seiner Akkus zurück schicken.

Da diese Erweiterung auch wieder in die Community als Patch oder integriertes Feature zurück laufen soll, möchte ich hier auf Ideensammlung gehen bzw. mit erfahreneren Entwicklern über die Änderungen diskutieren.
Grundlegend ergeben sich durch mich erstmal folgende Anforderungen, welche ich gerne noch durch weitere Vorschläge ergänzen möchte:
  • Überwachung, welche Lampen schon erreicht wurden/ welche noch anzufahren sind
  • Kostenbewertung der Sensor-/Aktortätigkeiten um Energiemanagment einzuführen
Da ich mir schon einen kleinen Überblick im derzeitgen Entwicklungscode verschafft habe, möchte ich auch gleich einige Vorschläge bieten, wo Änderungen einzupflegen sind.

Die Überwacher des "Simulationsfortschrittes" sind ja die Judge-Klassen, von welchen schon zwei existieren. Allerdings möchte ich anmerken, dass deren Implementierung eher rudimentär ist und man diese Klasse in der derzeitigen Version eigentlich auch weglassen könnte. Hinsichtlich des MCV-Patterns, wäre nun Wolrd das Modell und Judge eine der zugehörigen Controller Klassen. Um nun Judge eine Missionsüberwachung und -bewertung zu ermöglichen, müsste eine Schnittstelle geschaffen werden, über welche Judge Missionsparameter abfragen kann, z.B. zu erreichende Lampen, zu erreichende Zielpositionen. Hier sollte man nun Ideen sammeln, welche "Missionsziele" weiterhin interessant wären!
Der nächste Punkt ist das "Energiemanagment". Der reale Bot hat nur seine Akkus und diese verbrauchen sich bei jedem Sensorscann / Aktoreingriff. Um die nötigen Features für einen simulierten Bot implementieren zu können, hätte ich eine erweiterte ctBotSimTest-Klasse vorgeschlagen, welche den derzeitigen Energiestatus des Bots enthält und sämtlich Aktionen bewertet.

Wie gesagt ich möchte meine Vorschläge als Diskussionsgrundlage verstehen, allerdings soll das nicht heißen das man diese "Grundlage" nicht auch noch völlig anders gestalten kann :D

eax
Friends of Robby
Friends of Robby
Beiträge: 758
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Beitrag von eax » 05 Feb 2008, 23:48

Kurze Zusammenfassung unserer IRC-Diskussion dazu:
  • Judge fordert bei World eine Liste der aktiven Bots an und fragt pro Bot ab, ob ein Zwischen-Zielpunkt (z.B. eine Lampe) erreicht wurde, analog zu finishReached() beim Wettbewerbsjudge.
  • Die Koordinatenberechnungen laufen komplett in World ab, der Judge bekommt nur auf Anfrage zu Bot X zurück, welcher (Zwischen-)Zielpunkt erreicht wurde.
  • Außerdem kann der Judge abfragen, wie viel (Zwischen-)Ziele es gibt (z.B. Lampen).
  • Ob der Bot nur ein Ziel (ODER Verknüpfung) oder alle Ziele (UND) erreichen muss, wird komplett in der Judge-Klasse implementiert.
  • Für das Energiemanagement bekommen die Bots eine Komponente "Akku", deren Wert mit der Zeit um einen Betrag X abnimmt und je nach Motordrehzahl zusätzlich noch um Betrag Y.
Ich glaube das war alles ;-)

Antworten