WhiteBot LogTool

Ziel dieser WPF-Anwendung ist es grafisch aufzuzeigen, wie gut eine gewünschte Strecke abgefahren wurde.

Screenshot LogTool
Die schwarz gestrichelte Linie zeigt den gewünschten Weg, die roten Markierungen zeigen den wirklichen Verlauf der Bewegungen.
Aus der Liste links können die einzelnen PathPlanner-Kommandolisten ausgewählt werden, die in den Logfiles gefunden wurden und diese können danach einzeln ausgewählt und angezeigt werden.

Die Logfiles werden in das Verzeichnis der WhiteBot-Binary geschrieben und dieser Ordner sollte auch angewählt werden. Beispieldaten sind im Ordner *WhiteBot\LogTool\Logs\sample benchmark* abgelegt.

Die Logfiles

Es gibt drei .log Dateien pro Controller. Diese sind:

robot0_controller

Enthält Logs, die von RobotController geschrieben werden.
Implementiert im AbstractRobotController.

Format der Zeilen:
Timestamp | RobotControllerName | Befehl
RobotControllerName ist entweder [ RobotControllerAbstract, RobotControllerPID, RobotControllerML ]
Der Befehl kann zusätzlich noch in Klammern Zusatzinformationen enthalten,
zum Beispiel:
Rotate(angle: -0,818822292975193 | angular: 943,790162763996)
oder
Stop(reason: path was finished)

robot0_pathplanner

Enthält Logs, die vom Pathplanner geschrieben werden.

Format der Zeilen:
Timestamp | "PathPlanner" | Informationen
oder
Timestamp | "PathPlanner" | "Controller:" | "Start task "[taskname](taskInformation)
oder
Timestamp | "PathPlanner" | "Controller:" | "Finished task "[taskname]

Beispiel:

14:28:33:650	PathPlanner	Start session
14:29:18:630	PathPlanner	Controller:	start task	LookAt(x:180|y:100)
14:29:19:860	PathPlanner	Controller:	Finished task LookAt

robot0_log:

Enthält die Positionsdaten mit Tabs getrennt zu jedem Tick.
Implementiert im AbstractRobotController.

Format der Zeilen:
Timestamp | Position.X | Position.Y | LookDirection.X | LookDirection.Y | Gravity.X | Gravity.Y | Gravity.Z | DirectionVector.X | DirectionVector.Y

Ablauf

Das Pathplanner-Logfile wird einmal komplett gelesen und die Timestamps aller Einträge Start session werden gespeichert.
Beispiel:
14:28:33:650 PathPlanner Start session

Diese werden dem Benutzer in einer Liste angezeigt.
Der Benutzer kann dann auf ein Element klicken und den Button Analyze anwählen.
Dadurch wird das Logfile noch einmal gelesen und alle Zeilen, die sich zwischen dem Start session dieses Timestamps und dem nächsten Start session (oder einem Stop session oder dem Dateiende) befinden werden weiterverarbeitet.

Zu diesen Timestamps werden aus dem PathPlanner-Log die gewünschten MoveTo-Befehle auf die Oberfläche mit einer schwarz gestrichelten Linie gezeichnet.
Die tatsächlich erreichten Positionen des Robot0-Logs werden zu den passenden Timestamps auf die Oberfläche gezeichnet.
Danach kann der Unterschied zwischen den zwei Wegen visuell überprüft werden.
Numerische Auswertungen wären natürlich auch möglich, allerdings müsste zuerst geklärt werden, ob die Abweichung von der gewünschten Position zu einem bestimmten Zeitpunkt oder die Abweichung vom gewünschten Pfad bewertet werden soll.
Screenshot LogTool