Das Programm LogTool
WhiteBot LogTool
Ziel dieser WPF-Anwendung ist es grafisch aufzuzeigen, wie gut eine gewünschte Strecke abgefahren wurde.
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.