Skip to content
Snippets Groups Projects
USE CASE 0 Mars Rover steuern
Goal in Context Befehle an den Mars Rover senden.
Scope & Level System: Mars Rover Steuerungssystem
Level: Primary Task
Preconditions Rover ist eingeschaltet und verbunden.
Success End Condition Rover hat Befehle erfolgreich ausgeführt.
Failed End Condition Rover hat Befehle nicht ausgeführt oder ist offline.
Primary, Secondary Actors Primary Actor: Missionskontrolle
Secondary Actors: Kommunikationssysteme
Trigger Missionskontrolle startet einen Steuerungsvorgang.

DESCRIPTION

Step Action
1 Verbindung zum Rover aufbauen.
2 Steuerbefehl senden.
3 Rückmeldung vom Rover analysieren.

EXTENSIONS

Step Branching Action
2a Wenn Verbindung scheitert: Wiederholungsversuch oder Abbruch.
3a Wenn Rückmeldung negativ: Fehlerprotokoll erstellen und alternativen Befehl schicken.

SUB-VARIATIONS

Step Branching Action
1 Alternative Kommunikationskanäle testen.

#####################|

USE CASE 1 Rover vorwärts bewegen
Goal in Context Den Rover auf der Marsoberfläche vorwärts bewegen.
Scope & Level System: Mars Rover Bewegungssystem
Level: Subfunction
Preconditions Rover ist eingeschaltet und unter Kontrolle, es befindet sich kein Hindernis direkt vor dem Rover und innerhalb der Plateau-Grenzen.
Success End Condition Der Rover hat sich erfolgreich vorwärts bewegt und die neue Position wird angezeigt.
Failed End Condition Der Rover konnte sich nicht vorwärts bewegen (z.B. aufgrund eines Hindernisses oder technischer Probleme), eine Fehlermeldung wird angezeigt.
Primary, Secondary Actors Primary Actor: Mars Mission Control
Secondary Actors: Mars Rover Bewegungssystem, Mars Rover Hinderniserkennungssystem (ODS), Mars Rover Navigationssystem
Trigger Die Mars Mission Control sendet den Befehl zur Vorwärtsbewegung ('F').

DESCRIPTION

Step Action
1 Überprüfe, ob ein Hindernis vor dem Rover liegt (via ODS).
2 Überprüfe, ob eine Bewegung die Plateau-Grenzen überschreiten würde (via Navigationssystem).
3 Sende den Befehl an das Bewegungssystem, sich vorwärts zu bewegen.
4 Empfange eine Rückmeldung über die erfolgte Bewegung und die neue Position.

EXTENSIONS

Step Branching Action
1a Wenn ein Hindernis erkannt wird: Stoppe den Bewegungsvorgang und informiere die Missionskontrolle.
2a Wenn die Bewegung die Plateau-Grenzen überschreiten würde: Stoppe den Bewegungsvorgang und informiere die Missionskontrolle.
3a Wenn das Bewegungssystem einen Fehler meldet: Zeige eine Fehlermeldung an und stoppe den Vorgang.

SUB-VARIATIONS

Step Branching Action
3 Bewege den Rover um eine kurze Distanz vorwärts.
3 Bewege den Rover um eine mittlere Distanz vorwärts.
3 Bewege den Rover um eine lange Distanz vorwärts.

#####################

USE CASE 2 Rover rückwärts bewegen
Goal in Context Den Rover auf der Marsoberfläche rückwärts bewegen.
Scope & Level System: Mars Rover Bewegungssystem
Level: Subfunction
Preconditions Rover ist eingeschaltet und unter Kontrolle, es befindet sich kein Hindernis direkt hinter dem Rover und innerhalb der Plateau-Grenzen.
Success End Condition Der Rover hat sich erfolgreich rückwärts bewegt und die neue Position wird angezeigt.
Failed End Condition Der Rover konnte sich nicht rückwärts bewegen (z.B. aufgrund eines Hindernisses oder technischer Probleme), eine Fehlermeldung wird angezeigt.
Primary, Secondary Actors Primary Actor: Mars Mission Control
Secondary Actors: Mars Rover Bewegungssystem, Mars Rover Hinderniserkennungssystem (ODS), Mars Rover Navigationssystem
Trigger Die Mars Mission Control sendet den Befehl zur Rückwärtsbewegung ('B').

DESCRIPTION

Step Action
1 Überprüfe, ob ein Hindernis hinter dem Rover liegt (via ODS).
2 Überprüfe, ob eine Bewegung die Plateau-Grenzen überschreiten würde (via Navigationssystem).
3 Sende den Befehl an das Bewegungssystem, sich rückwärts zu bewegen.
4 Empfange eine Rückmeldung über die erfolgte Bewegung und die neue Position.

EXTENSIONS

Step Branching Action
1a Wenn ein Hindernis erkannt wird: Stoppe den Bewegungsvorgang und informiere die Missionskontrolle.
2a Wenn die Bewegung die Plateau-Grenzen überschreiten würde: Stoppe den Bewegungsvorgang und informiere die Missionskontrolle.
3a Wenn das Bewegungssystem einen Fehler meldet: Zeige eine Fehlermeldung an und stoppe den Vorgang.

SUB-VARIATIONS

Step Branching Action
3 Bewege den Rover um eine kurze Distanz rückwärts.
3 Bewege den Rover um eine mittlere Distanz rückwärts.
3 Bewege den Rover um eine lange Distanz rückwärts.

#####################

USE CASE 3 Rover nach links drehen(45°)
Goal in Context Die Ausrichtung des Rovers nach links ändern.
Scope & Level System: Mars Rover Steuerungssystem
Level: Subfunction
Preconditions Rover ist eingeschaltet und unter Kontrolle.
Success End Condition Der Rover hat sich erfolgreich nach links gedreht und die neue Ausrichtung wird angezeigt.
Failed End Condition Der Rover konnte sich nicht nach links drehen (z.B. aufgrund technischer Probleme), eine Fehlermeldung wird angezeigt.
Primary, Secondary Actors Primary Actor: Mars Mission Control
Secondary Actors: Mars Rover Steuerungssystem
Trigger Die Mars Mission Control sendet den Befehl zum Linksdrehen ('L').

DESCRIPTION

Step Action
1 Sende den Befehl an das Steuerungssystem, sich nach links zu drehen.
2 Empfange eine Rückmeldung über die erfolgte Drehung und die neue Ausrichtung.

EXTENSIONS

Step Branching Action
1a Wenn das Steuerungssystem einen Fehler meldet: Zeige eine Fehlermeldung an und stoppe den Vorgang.

SUB-VARIATIONS

Step Branching Action
1 Drehe den Rover um einen kleinen Winkel nach links.
1 Drehe den Rover um einen mittleren Winkel nach links.
1 Drehe den Rover um einen großen Winkel nach links.

#####################

USE CASE 4 Rover nach rechts drehen(45°)
Goal in Context Die Ausrichtung des Rovers nach rechts ändern.
Scope & Level System: Mars Rover Steuerungssystem
Level: Subfunction
Preconditions Rover ist eingeschaltet und unter Kontrolle.
Success End Condition Der Rover hat sich erfolgreich nach rechts gedreht und die neue Ausrichtung wird angezeigt.
Failed End Condition Der Rover konnte sich nicht nach rechts drehen (z.B. aufgrund technischer Probleme), eine Fehlermeldung wird angezeigt.
Primary, Secondary Actors Primary Actor: Mars Mission Control
Secondary Actors: Mars Rover Steuerungssystem
Trigger Die Mars Mission Control sendet den Befehl zum Rechtsdrehen ('R').

DESCRIPTION

Step Action
1 Sende den Befehl an das Steuerungssystem, sich nach rechts zu drehen.
2 Empfange eine Rückmeldung über die erfolgte Drehung und die neue Ausrichtung.

EXTENSIONS

Step Branching Action
1a Wenn das Steuerungssystem einen Fehler meldet: Zeige eine Fehlermeldung an und stoppe den Vorgang.

SUB-VARIATIONS

Step Branching Action
1 Drehe den Rover um einen kleinen Winkel nach rechts.
1 Drehe den Rover um einen mittleren Winkel nach rechts.
1 Drehe den Rover um einen großen Winkel nach rechts.

#####################

USE CASE 5 Rover-Befehlskette senden
Goal in Context Eine Sequenz von Befehlen zur automatisierten Ausführung an den Rover senden.
Scope & Level System: Mars Rover Steuerungssystem
Level: Subfunction
Preconditions Rover ist eingeschaltet und unter Kontrolle.
Success End Condition Die gesamte Befehlskette wurde erfolgreich an den Rover gesendet und eine Bestätigung empfangen.
Failed End Condition Die Befehlskette konnte nicht gesendet werden (z.B. aufgrund einer fehlerhaften Verbindung oder eines ungültigen Befehls).
Primary, Secondary Actors Primary Actor: Mars Mission Control
Secondary Actors: Mars Rover Steuerungssystem
Trigger Die Mars Mission Control initiiert das Senden einer vordefinierten Befehlskette.

DESCRIPTION

Step Action
1 Stelle die Befehlskette zusammen.
2 Überprüfe die Syntax und Validität der Befehle in der Kette.
3 Sende die Befehlskette an den Rover.
4 Empfange eine Bestätigung, dass die Befehlskette erfolgreich übertragen wurde.

EXTENSIONS

Step Branching Action
2a Wenn ein ungültiger Befehl in der Kette gefunden wird: Zeige eine Fehlermeldung an und erlaube dem Benutzer, die Kette zu korrigieren.
3a Wenn die Übertragung der Befehlskette fehlschlägt: Versuche die Übertragung erneut oder brich den Vorgang ab.

SUB-VARIATIONS

Step Branching Action
1 Senden einer einfachen Befehlskette (z.B. Bewegung und Drehung).
1 Senden einer komplexen Befehlskette (mit Schleifen, Bedingungen etc. - falls unterstützt).

#####################

USE CASE 6 Hindernisprüfung vor Bewegung
Goal in Context Erkennen potenzieller Hindernisse im geplanten Bewegungspfad des Rovers, bevor die Bewegung ausgeführt wird.
Scope & Level System: Mars Rover Hinderniserkennungssystem (ODS)
Level: Subfunction
Preconditions Rover ist eingeschaltet, ein Bewegungsbefehl ('F' oder 'B') ist aktiv und das ODS ist betriebsbereit.
Success End Condition Das ODS hat den Bereich vor oder hinter dem Rover (abhängig vom Bewegungsbefehl) überprüft und kein Hindernis innerhalb des Sicherheitsabstands detektiert.
Failed End Condition Das ODS erkennt ein oder mehrere Hindernisse innerhalb des Sicherheitsabstands.
Primary, Secondary Actors Primary Actor: Mars Rover
Secondary Actors: Mars Rover Hinderniserkennungssystem (ODS)
Trigger Der Rover empfängt einen Befehl zur Vorwärts- ('F') oder Rückwärtsbewegung ('B').

DESCRIPTION

Step Action
1 Aktiviere das Hinderniserkennungssystem (ODS).
2 Erfasse Daten aus den Sensoren des ODS im relevanten Bereich vor oder hinter dem Rover.
3 Analysiere die erfassten Daten, um festzustellen, ob sich Hindernisse innerhalb des definierten Sicherheitsabstands befinden.
4 Melde das Ergebnis der Hindernisprüfung.

EXTENSIONS

Step Branching Action
3a Wenn Mehrdeutigkeiten in den Sensordaten auftreten: Führe zusätzliche Messungen durch oder verwende fortgeschrittenere Algorithmen zur Hinderniserkennung.
4a Wenn ein Hindernis erkannt wird: Melde die Art und ungefähre Position des Hindernisses.

SUB-VARIATIONS

Step Branching Action
2 Scanne einen breiten Bereich vor/hinter dem Rover.
2 Fokussiere den Scan auf den direkten Bewegungspfad.

#####################

USE CASE 7 Bewegungsabbruch bei Hindernis
Goal in Context Die aktuelle Bewegung des Rovers sofort stoppen, wenn ein Hindernis erkannt wird, um Kollisionen zu vermeiden.
Scope & Level System: Mars Rover Bewegungssystem, Mars Rover Hinderniserkennungssystem (ODS)
Level: Subfunction
Preconditions Der Rover befindet sich in einer Vorwärts- oder Rückwärtsbewegung und das ODS ist aktiv.
Success End Condition Die Bewegung des Rovers wurde sicher gestoppt, nachdem ein Hindernis erkannt wurde, und die Mars Mission Control wurde informiert.
Failed End Condition Der Rover fährt trotz erkannter Hindernisse weiter.
Primary, Secondary Actors Primary Actor: Mars Rover
Secondary Actors: Mars Rover Bewegungssystem, Mars Rover Hinderniserkennungssystem (ODS)
Trigger Das Hinderniserkennungssystem (ODS) detektiert während einer Bewegung ein Hindernis innerhalb des kritischen Sicherheitsabstands.

DESCRIPTION

Step Action
1 Das ODS erkennt ein Hindernis während der Bewegung.
2 Sende ein sofortiges Stoppsignal an das Bewegungssystem.
3 Das Bewegungssystem stoppt die aktuelle Bewegung des Rovers.
4 Sende eine Benachrichtigung an die Mars Mission Control über den Bewegungsabbruch und die Hinderniserkennung.

EXTENSIONS

Step Branching Action
1a Wenn das ODS ein unerwartetes oder sich schnell bewegendes Hindernis erkennt: Führe eine Notbremsung durch.
4a Zusätzlich zur Benachrichtigung: Sende Bilder oder Sensordaten des erkannten Hindernisses an die Missionskontrolle.

SUB-VARIATIONS

Step Branching Action
3 Sanftes Abbremsen der Bewegung.
3 Sofortiges, abruptes Stoppen der Bewegung.

#####################

USE CASE 8 Plateau-Rand-Prüfung vor Bewegung
Goal in Context Sicherstellen, dass eine geplante Vorwärts- oder Rückwärtsbewegung den Rover nicht über die definierten Plateau-Grenzen hinausführt.
Scope & Level System: Mars Rover Navigationssystem
Level: Subfunction
Preconditions Rover ist eingeschaltet, ein Bewegungsbefehl ('F' oder 'B') ist aktiv und das Navigationssystem ist betriebsbereit.
Success End Condition Das Navigationssystem hat die geplante Bewegung analysiert und festgestellt, dass sie innerhalb der Plateau-Grenzen bleibt.
Failed End Condition Das Navigationssystem prognostiziert, dass die geplante Bewegung den Rover über die Plateau-Grenzen hinausführen würde.
Primary, Secondary Actors Primary Actor: Mars Rover
Secondary Actors: Mars Rover Navigationssystem
Trigger Der Rover empfängt einen Befehl zur Vorwärts- ('F') oder Rückwärtsbewegung ('B').

DESCRIPTION

Step Action
1 Empfange den Bewegungsbefehl und die geplante Distanz.
2 Rufe die aktuelle Position und Ausrichtung des Rovers vom Navigationssystem ab.
3 Berechne die voraussichtliche Endposition nach der Bewegung.
4 Überprüfe, ob die voraussichtliche Endposition innerhalb der definierten Plateau-Grenzen liegt.
5 Melde das Ergebnis der Plateau-Rand-Prüfung.

EXTENSIONS

Step Branching Action
4a Wenn die voraussichtliche Endposition nahe am Rand liegt: Gib eine Warnung aus.
4b Wenn die genauen Plateau-Grenzen unsicher sind: Verwende konservative Schätzungen.

SUB-VARIATIONS

Step Branching Action
4 Überprüfe nur die Endposition.
4 Überprüfe den gesamten Bewegungspfad auf mögliche Grenzüberschreitungen.

#####################

USE CASE 9 Bewegungsabbruch am Plateau-Rand
Goal in Context Die aktuelle Bewegung des Rovers sofort stoppen, wenn er den definierten Plateau-Rand erreicht, um ein Verlassen des sicheren Operationsgebiets zu verhindern.
Scope & Level System: Mars Rover Bewegungssystem, Mars Rover Navigationssystem
Level: Subfunction
Preconditions Der Rover befindet sich in einer Vorwärts- oder Rückwärtsbewegung und das Navigationssystem ist aktiv.
Success End Condition Die Bewegung des Rovers wurde sicher gestoppt, nachdem der Plateau-Rand erreicht wurde, und die Mars Mission Control wurde informiert.
Failed End Condition Der Rover fährt über den Plateau-Rand hinaus.
Primary, Secondary Actors Primary Actor: Mars Rover
Secondary Actors: Mars Rover Bewegungssystem, Mars Rover Navigationssystem
Trigger Das Navigationssystem erkennt während einer Bewegung, dass der Rover den Plateau-Rand erreicht hat.

DESCRIPTION

Step Action
1 Das Navigationssystem erkennt, dass der Rover den Plateau-Rand erreicht hat.
2 Sende ein sofortiges Stoppsignal an das Bewegungssystem.
3 Das Bewegungssystem stoppt die aktuelle Bewegung des Rovers.
4 Sende eine Benachrichtigung an die Mars Mission Control über den Bewegungsabbruch am Plateau-Rand.

EXTENSIONS

Step Branching Action
1a Wenn der Rand abrupt erreicht wird: Führe eine Notbremsung durch.
4a Zusätzlich zur Benachrichtigung: Sende die aktuelle Position und gegebenenfalls Sensordaten an die Missionskontrolle.

SUB-VARIATIONS

Step Branching Action
3 Sanftes Abbremsen der Bewegung kurz vor Erreichen des Rands.
3 Sofortiges, abruptes Stoppen der Bewegung beim Erreichen des Rands.

#####################

USE CASE 10 Rückmeldung über ausgeführte Befehle
Goal in Context Die Mars Mission Control über den Erfolg oder Misserfolg der an den Rover gesendeten Befehle informieren.
Scope & Level System: Mars Rover Kommunikationssystem
Level: Subfunction
Preconditions Der Rover hat mit der Ausführung einer einzelnen Anweisung oder einer Befehlskette begonnen oder diese abgeschlossen/abgebrochen.
Success End Condition Eine detaillierte Rückmeldung über den Status und das Ergebnis der ausgeführten Befehle wurde erfolgreich an die Mars Mission Control gesendet.
Failed End Condition Es konnte keine Rückmeldung gesendet werden oder die gesendete Rückmeldung ist fehlerhaft oder unvollständig.
Primary, Secondary Actors Primary Actor: Mars Rover
Secondary Actors: Mars Rover Kommunikationssysteme
Trigger Der Rover schließt die Ausführung einer einzelnen Anweisung oder einer Befehlskette ab oder bricht diese ab.

DESCRIPTION

Step Action
1 Erfasse den Status und das Ergebnis der Befehlsausführung (z.B. erfolgreich, fehlgeschlagen mit Fehlercode, Teilerfolg).
2 Formatiere eine Rückmeldung, die die ausgeführten Befehle und deren Status enthält.
3 Sende die formatierte Rückmeldung über das Kommunikationssystem an die Mars Mission Control.

EXTENSIONS

Step Branching Action
1a Bei einem Fehler: Füge detaillierte Fehlerinformationen (z.B. Fehlercode, Beschreibung) zur Rückmeldung hinzu.
3a Wenn die Übertragung der Rückmeldung fehlschlägt: Versuche die Übertragung erneut oder speichere die Rückmeldung für einen späteren Versand.

SUB-VARIATIONS

Step Branching Action
2 Sende eine einfache Erfolgsmeldung.
2 Sende eine detaillierte Rückmeldung mit allen Schritten und Ergebnissen.

#####################

USE CASE 11 Rover-Positionsverfolgung auf Karte
Goal in Context Die aktuelle Position und Ausrichtung des Rovers auf einer Karte in der Mars Mission Control visualisieren und nachverfolgen.
Scope & Level System: Mars Mission Control Kartierungssystem
Level: Primary Task
Preconditions Eine digitale Karte der Rover-Operationsumgebung ist vorhanden und das Kartierungssystem ist aktiv. Die Mars Mission Control empfängt regelmäßig Positions- und Ausrichtungsdaten vom Rover.
Success End Condition Die Karte zeigt die aktuelle Position und Ausrichtung des Rovers korrekt an und wird bei jeder neuen Rückmeldung aktualisiert.
Failed End Condition Die Kartenanzeige ist fehlerhaft, zeigt die Position des Rovers nicht an oder die Aktualisierung erfolgt nicht korrekt.
Primary, Secondary Actors Primary Actor: Mars Mission Control
Secondary Actors: Mars Rover, Mars Rover Kommunikationssysteme
Trigger Die Mars Mission Control empfängt eine neue Rückmeldung mit Positions- und/oder Ausrichtungsdaten vom Rover.

DESCRIPTION

Step Action
1 Empfange die aktuellen Positions- und/oder Ausrichtungsdaten vom Rover.
2 Verarbeite die empfangenen Daten, um sie im Kartenformat darzustellen.
3 Aktualisiere die Anzeige des Rovers auf der digitalen Karte mit den neuen Daten.
4 Zeige gegebenenfalls den zurückgelegten Pfad des Rovers an.

EXTENSIONS

Step Branching Action
1a Wenn fehlerhafte oder ungültige Positionsdaten empfangen werden: Zeige eine Warnung an und verwende gegebenenfalls die zuletzt bekannte gültige Position.
3a Wenn die Aktualisierung der Karte fehlschlägt: Zeige eine Fehlermeldung an.

SUB-VARIATIONS

Step Branching Action
3 Zeige nur die aktuelle Position.
3 Zeige die aktuelle Position und die Ausrichtung (z.B. durch einen Pfeil).
4 Zeige den gesamten bisher zurückgelegten Pfad.
4 Zeige den Pfad der letzten X Zeiteinheiten oder Y Distanz.
USE CASE 12 Karte/Plateau mit Teleskop beobachten
Goal in Context Identifizieren und Zurückgeben der Koordinaten von Hindernissen (als "besetzte Zellen" interpretiert) auf einer Karte oder einem Plateau mithilfe des Teleskops.
Scope & Level System: Mars Mission Control Beobachtungssystem (Teleskop-Modul)
Level: Primary Task
Preconditions Das Teleskop-Objekt wurde mit einem gültigen Karten- oder Plateau-Objekt initialisiert (map_object). Das Beobachtungssystem ist aktiv. Das Karten-/Plateau-Objekt kann Informationen über Hindernisse (obstacles) bereitstellen.
Success End Condition Das Teleskop hat die Beobachtung erfolgreich durchgeführt und eine Liste der Koordinaten aller identifizierten Hindernisse (besetzte Zellen) korrekt zurückgegeben. Die Daten stehen der Mars Mission Control oder einem anfordernden System zur Verfügung.
Failed End Condition Das Teleskop konnte die Beobachtung nicht durchführen (z.B. aufgrund eines nicht korrekt initialisierten map_object oder fehlender obstacles-Daten im map_object). Die zurückgegebene Liste ist fehlerhaft, unvollständig oder es wird ein Fehler gemeldet.
Primary, Secondary Actors Primary Actor: Mars Mission Control (oder ein anderes System, z.B. Pfadplanung)
Secondary Actors: Teleskop-Objekt, Karten-/Plateau-Objekt
Trigger Die Mars Mission Control oder ein automatisiertes System fordert eine Beobachtung der Karte/des Plateaus über die observe()-Methode des Teleskops an.

DESCRIPTION

Step Action
1 Die observe()-Methode des Teleskops wird aufgerufen.
2 Das Teleskop greift auf das ihm bei der Initialisierung zugewiesene map_object (Karte/Plateau) zu.
3 Das Teleskop prüft, ob das map_object direkt ein obstacles-Attribut besitzt oder ob ein darin enthaltenes plateau-Objekt ein obstacles-Attribut besitzt.
4 Wenn ein obstacles-Attribut gefunden wird, extrahiert das Teleskop die Liste der Koordinaten der Hindernisse.
5 Das Teleskop gibt die gesammelte Liste der Hinderniskoordinaten als "besetzte Zellen" zurück.
6 Die Mars Mission Control oder das anfordernde System empfängt die Liste der besetzten Zellen für weitere Verarbeitung oder Anzeige.

EXTENSIONS

Step Branching Action
2a Wenn das map_object im Teleskop nicht korrekt initialisiert oder nicht zugreifbar ist: Die observe()-Methode gibt eine Fehlermeldung oder eine leere Liste mit einer entsprechenden Protokollierung zurück.
3a Wenn im map_object (oder dessen plateau-Attribut) kein obstacles-Attribut gefunden wird: Das Teleskop gibt eine leere Liste zurück (da keine Hindernisse über dieses Attribut definiert sind).
4a Wenn das obstacles-Attribut vorhanden, aber leer ist oder ein unerwartetes Format hat: Das Teleskop gibt eine leere Liste oder die verarbeitbaren Teile zurück und protokolliert ggf. eine Warnung.
6a Wenn die Übermittlung der Daten an das anfordernde System fehlschlägt: Protokolliere den Fehler im System.

SUB-VARIATIONS

Step Branching Action
3 Das Teleskop könnte erweitert werden, um auch auf andere Attribute des map_object (z.B. grid oder map wie im Code angedeutet, aber nicht für occupied_cells genutzt) zuzugreifen, um weitere Arten von besetzten Zellen (z.B. Rover-Positionen, wenn separat geführt) zu identifizieren.
5 Die zurückgegebenen Koordinaten werden in einem spezifischen Format für eine direkte Visualisierung aufbereitet (z.B. als Overlay für USE CASE 11).
5 Die zurückgegebenen Koordinaten werden für eine automatisierte Kollisionsprüfung oder Pfadplanung verwendet.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Vorgehensweise Aufgabe6

Aufsetzen von Aider -konnte nicht meine Python.exe bzw den Path nicht finden. weshalb folgender code genutzt wurde:

& "$HOME.local\bin\aider.exe" --model openrouter/deepseek/deepseek-coder --api-key openrouter-...

  • Aider erstellte Korrekt eine Hello world.py
  • Aider konnte auch erfolgreich änderungen an der File vornehmen, durch die implementierung eines Calculators.
  • Bei dem Wechsel auf mein Roverscript: Pyscript.py begann sich aider seltsam zu verhalten.
  • Es fanden keine Änderungen mehr in Pyscript.py mehr statt und die Prozesse welche im Terminal liefen hatten keinen Bezug zu dem Code oder dem gegebenen befehl. Auch nicht mehr bei der Hello World.Py
  • FIX: Recherche in der Offizielen Doku ergab das zunächst das Terminal mit /clear gesäubert werden muss und das Model mit /model gewechselt werden muss. Ich wechselte auf das Sonnet model. Das Problem war behoben

Erste implementierung der Telescope klasse

  • Zunächst sollte via /ask ein Plan erstellt werden wie eine Mögliche implementierung aussehen soll
  • im nächsten Schritt gab ich die Anweisung den vorgeschlagenen Code zu implementieren:

Please add a new class called Telescope to Pyscript.py.

The class should:

- Take a Map or Plateau object as input in the constructor.

- Provide a method observe(self) -> List[Tuple[int, int]] that returns the coordinates of all occupied cells (i.e., obstacles or rovers).

- Access the map/grid data from the given object, using getattr() to support either .grid or .map.

'''Aufgabe wurde falsch angegangen weshlb ich paar dinge überarbeiten musste'''

Erstellung der Plateu Klasse

folgender prompt wurde verwendet:

Create a new file named plateau.py and define the Plateau class within it.

Include the following:

  • An attribute named grid which should be represented as a list of lists or a list of tuples, as noted in the diagram ("grid is a list of list or a list of tuples").
  • Define the constructor __init__(self, size_x: int, size_y: int) -> None. Add the docstring based on the diagram note: "The init constructor creates a plateau with x times y size."
  • Define the method move(self, x: int, y: int) -> None. Add the docstring based on the diagram note: "notes the obstacles' positions and the true position of the rover on the grid."
  • Add a class docstring explaining its purpose and the grid attribute.
  • Use pass inside the method bodies for now, as we are only creating the structure.Create a new file named plateau.py and define the Plateau class within it.

Include the following:

  • An attribute named grid which should be represented as a list of lists or a list of tuples, as noted in the diagram ("grid is a list of list or a list of tuples").
  • Define the constructor __init__(self, size_x: int, size_y: int) -> None. Add the docstring based on the diagram note: "The init constructor creates a plateau with x times y size."
  • Define the method move(self, x: int, y: int) -> None. Add the docstring based on the diagram note: "notes the obstacles' positions and the true position of the rover on the grid."
  • Add a class docstring explaining its purpose and the grid attribute.
  • Use pass inside the method bodies for now, as we are only creating the structure.

Erstellung der Map Klasse

Create a new file named map.py and define the Map class within it.

Include the following:

  • An attribute named map which should be represented as a list of lists or a list of tuples, as noted in the diagram ("map is a list of list or a list of tuples").
  • Define the method move(self, x: int, y: int) -> None.
  • Add a class docstring explaining its purpose and the map attribute.
  • Add a method docstring for the move method.
  • Use pass inside the method body for now.

Erstellung der Rover Klasse

Prompt:

Create a new file named rover.py and define the Rover class within it.

This class should be an abstract base class.

  • Import the necessary modules from abc (ABC and abstractmethod).
  • The Rover class must inherit from ABC.
  • Define an abstract method drive(self, cmd: str) -> str.
  • Add a method docstring for drive based on the diagram note: "takes the drive commands and returns a sequence of letters, which were successfully executed. If the ODS stops the rover, the method returns a substring containing successfully executed commands."
  • Add a class docstring indicating it's an abstract base class for a rover.

Erstellung der Mars Klasse

Create a new file named mars.py and define the Mars class within it.

Include the following:

  • Define the method drive(self, cmd: str) -> str.
  • Add a class docstring explaining its purpose ("Eine Klasse zur Repräsentation des Mars.").
  • Add a method docstring for the drive method based on the diagram and your previous plan ("Führt Fahrbefehle auf dem Mars aus." etc.).
  • Use pass inside the method body for now.

Erstellung der Telescope Klasse:

Create a new file named telescope.py and define the Telescope class within it.

Include the following:

  • Define a constructor __init__(self, plateau). Add a docstring: "Initializes the Telescope with a Plateau object." Also store the plateau object as an instance attribute (e.g., self.plateau = plateau).
  • Define the method observe(self) -> any. Add a docstring based on the diagram note: "Observes the Plateau's grid."
  • Add a class docstring explaining its purpose ("Eine Klasse zur Repräsentation eines Teleskops, das das Plateau beobachtet.").
  • Use pass inside the method body for now.

Aider hatte hier Probleme, es passierte zunächst nichts, im anschluss wurde die Klasse 3 mal erstellt.

Erstellung der Mission Control Klasse

Create a new file named mission_control.py and define the MissionControl class within it.

Include the following:

  • Define a basic constructor __init__(self).
  • Add a class docstring explaining its purpose based on the diagram and the plan: "A class for controlling the mission, coordinating interactions between Map, Telescope, Mars, and Rover."
  • Use pass inside the __init__ method body for now.

Functional code

Aider nach der erstellung der Struktur bitten, funktionale Codes zu implementieren.

Okay, the basic structure for all classes is now set up in separate files. Please proceed with implementing the actual logic for the methods (__init__, move, drive, observe, etc.) within these classes, based on the UML diagram and the descriptions we discussed from the assignment. Replace the pass statements with functional code.

aider hat die Plateu klasse nicht miteinbezogen

Please update the plateau.py file to implement the methods in the Plateau class.

  • In the __init__ method, initialize the self.grid attribute to be a 2D structure (list of lists or similar) of the specified size_x and size_y.
  • Implement the move(self, x: int, y: int) -> None method. This method should update the plateau's grid to note the position of obstacles and the rover's current position. (You might need to decide on a simple representation for the grid content, e.g., '.' for empty, '#' for obstacle, 'R' for rover).
  • Add and implement the method is_obstacle(self, x: int, y: int) -> bool. This method should check the grid at (x, y) to see if there's an obstacle.
  • Add and implement the method is_within_bounds(self, x: int, y: int) -> bool. This method should check if the coordinates (x, y) are within the size_x and size_y dimensions of the plateau.
  • Ensure existing docstrings are kept and updated if needed.

Aider bekommt die Anweisung die Drive Methode zu implementieren und einen test script um die funktionalitöt zu testen

Aider hatte wieder das selbe Problem wie im 1. statement, das modell musste wieder gewechselt werden.

rest api und die tests

Aider hatte erneut fehler bei der Ausführung wie zuvor

Nach mehreren versuchen Aider auszführen und einigen Anpassungen funktionierte es und der Code wurde erfolgreich angepasst.

Eine Rest schnittstelle wurde implementiert. Meine vorherigen Unittests liefen ohne Probleme allerdings dauerte der durchlauf der tests länger.

Die API tests die von Aider erstellt wurden hatten einen Assertion error da der erwartete Output im Header nicht dem tatsächlichen output entsprochen hat. Ich habe Aider das Problem geschildert und dieser hat die API tests nochmal angepasst. Alle tests laufen ohne fehler.