6.4 KiB
Routenplanung To-do
Stand: 24.05.2026
Aktueller Stand
- Karten-Tab in
admin.htmlvorhanden - Wegpunkte können gesetzt werden
- Wegpunkte können verschoben werden
- Wegpunkte können gelöscht werden
- Klick auf die Route fügt einen Wegpunkt zwischen zwei vorhandenen Wegpunkten ein
- Route kann unter Namen gespeichert werden
- Gespeicherte Route kann geladen werden
- Gespeicherte Route kann gelöscht werden
Offene Produktentscheidung
Noch nicht final entschieden ist, wie die Fahrart zwischen zwei Wegpunkten festgelegt wird:
- Vollautomatisch aus der Richtungsänderung ableiten
- Pro Wegpunkt manuell festlegen
- Automatik als Standard, aber pro Wegpunkt übersteuerbar
Aktuell bevorzugte Idee:
- Automatik als Standard
- Pro Wegpunkt optionaler Override
Geplante Logik für Fahrart-Vorschlag
Beim Klick auf einen Wegpunkt soll sofort eine Empfehlung berechnet werden:
- unter
20°: einfachAckermann 20° bis 60°: engererAckermann-Bogen- über
60°: erstTurn on Point, danachAckermann
Wichtig:
- Die Winkeldifferenz soll aus den benachbarten Segmenten berechnet werden
- Bei inneren Wegpunkten: Richtung
vorheriger Punkt -> aktueller Punktgegenaktueller Punkt -> nächster Punkt - Beim ersten Wegpunkt: optional Richtung
Rover -> WegpunktgegenWegpunkt -> nächster Punkt - Beim letzten Wegpunkt: keine automatische Weiterfahr-Empfehlung oder eigener Sonderfall
Geplante UI-Erweiterungen
- Klick auf Wegpunkt zeigt Popup
- Im Popup soll zusätzlich zur Löschfunktion die berechnete Fahrart-Empfehlung stehen
- Im Popup soll klar stehen:
- berechneter Winkel
- empfohlene Fahrart
- kurze Begründung
- Später optional:
- manuelle Auswahl
Ackermann - manuelle Auswahl
Turn on Point - manuelle Auswahl
Ackermann-Bogen - manueller Override
Automatik
- manuelle Auswahl
Wegpunktlogik im Detail
Für jeden Wegpunkt sind später diese Fragen wichtig:
- Wie wird der Punkt angefahren?
- Muss am Punkt gestoppt werden?
- Muss am Punkt neu ausgerichtet werden?
- Soll direkt in das nächste Segment übergegangen werden?
Mögliche Varianten:
nur passieren- Punkt gilt als erreicht, wenn der Rover den Radius schneidet
präzise anfahren- Punkt gilt erst als erreicht, wenn der Rover im Radius steht und genug verlangsamt hat
stoppen und neu ausrichten- Punkt wird erreicht, dann
Turn on Pointauf gewünschte Richtung
- Punkt wird erreicht, dann
Segmentlogik
Später soll die Route nicht nur als Punktliste gesehen werden, sondern als Folge von Segmenten:
- Segment 1:
Start -> WP1 - Segment 2:
WP1 -> WP2 - Segment 3:
WP2 -> WP3
Für jedes Segment interessant:
- Segmentlänge
- Zielrichtung
- empfohlene Fahrart
- erlaubte Geschwindigkeit
- Abbruchbedingungen
Marsrover-inspirierte Denkweise
Für den ExoMy sinnvoll:
- nicht die ganze Route als einen Block behandeln
- sondern Abschnitt für Abschnitt
- vor jedem neuen Abschnitt bewerten:
- Zielrichtung
- Platzverhältnisse
- gewünschte Genauigkeit
- Sicherheitslage
Das bedeutet:
- Menschen planen die Route
- der Rover arbeitet Segment für Segment ab
- am Übergang zum nächsten Segment wird neu bewertet
Vorschlag für Standardregeln
Erste Regelbasis für die spätere Automatik:
- unter
20°:Ackermann 20° bis 60°:Ackermann-Bogen- über
60°:Turn on Point, danachAckermann
Zusätzliche mögliche Regeln:
- wenn Wegpunkt sehr nah am nächsten liegt:
- lieber präzise neu ausrichten
- wenn Toleranzradius klein ist:
- langsamer anfahren
- wenn wenig Platz oder Hindernisse:
- eher
Turn on Point
- eher
Pro-Wegpunkt-Override
Wahrscheinlich beste spätere Lösung:
- Standardmäßig entscheidet die Automatik
- pro Wegpunkt kann man die Entscheidung überschreiben
Mögliche Werte:
automatikackermannackermann_bogenturn_on_point
Was noch fehlt, bevor der Rover wirklich fahren kann
- sauberes Routenformat für den Rover
- Status je Wegpunkt:
offenaktiverreichtübersprungenfehler
- Status je Route:
bereitläuftpausiertabgebrochenfertig
- Start/Stop/Pause in der GUI
- Anzeige des aktuell aktiven Wegpunkts
- Anzeige der aktuell gewählten Fahrart
Sensorik-Fragen
Noch offen für die spätere echte Fahrfunktion:
- Woher kommt das Heading?
- IMU
- GPS-Bewegungsrichtung
- Fusion aus beidem
- Wie genau ist das GPS im Zielbereich?
- Brauchen wir zusätzlich Odometrie für den Nahbereich?
- Ab welcher Geschwindigkeit ist GPS-Kurs überhaupt brauchbar?
Sicherheitsfragen
Vor echter Abarbeitung der Route klären:
- Was passiert bei GPS-Verlust?
- Was passiert bei ROS-Verlust?
- Was passiert bei großem Positionssprung?
- Was passiert, wenn ein Wegpunkt nicht erreicht wird?
- Wann wird die Route automatisch abgebrochen?
- Muss der Rover bei Fehler immer sofort stoppen?
Spätere Komfortfunktionen
- Richtungspfeil oder Segmentrichtung in der Karte anzeigen
- Wegpunktnummern und geplante Fahrart direkt in der Karte
- Route duplizieren
- Wegpunktreihenfolge manuell ändern
- Route exportieren/importieren
- Routenkommentar oder Missionsname
- Toleranzradius pro Wegpunkt einstellen
- Geschwindigkeit pro Segment oder Wegpunkt einstellen
Späterer Unterbau für echte Rover-Route
Wenn aus der Planungsroute später eine ausführbare Rover-Route wird, soll das Datenformat erweitert werden:
namewaypoints- pro Wegpunkt:
idlatlonradius_mmodeodermode_override- optional
heading_deg - optional
stop_at_waypoint - optional
arrival_action - optional
speed_limit - optional
notes
Technische Folgefragen
- Woher kommt die zuverlässige aktuelle Fahrtrichtung?
- nur GPS ist bei langsamer Fahrt oft ungenau
- später besser mit IMU oder gemittelter Bewegungsrichtung
- Wann gilt ein Wegpunkt als erreicht?
- Toleranzradius in Metern
- Soll vor jedem neuen Segment neu entschieden werden?
- wahrscheinlich ja
Nächster sinnvoller Schritt
- Winkelberechnung zwischen Routensegmenten implementieren
- Fahrart-Vorschlag nach obiger Tabelle erzeugen
- Vorschlag im Wegpunkt-Popup anzeigen
- Danach entscheiden, ob wir direkt einen manuellen Override pro Wegpunkt einbauen
Nicht vergessen
- Die Route soll später leicht wiederzufinden und fortsetzbar sein
- Entscheidungen nicht still im Code verstecken, sondern in der GUI sichtbar machen
- Bei kleinen Rover-Geschwindigkeiten keine Scheingenauigkeit vortäuschen
- Lieber klare, nachvollziehbare Regeln als zu frühe komplizierte Autonomie