Natenoms Wiki

Weil Teilen Spaß macht :)

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Übersetzungen dieser Seite:

Navigation



Lizenz dieses Wikis
Über dieses Wiki
Feed des Wikis
Impressum
Datenschutz

verkehr:projekte:abstandsmesser:radmessers

RadmesserS (Stuttgart)

Die Messergebnisse meiner Fahrradfahrten sind öffentlich zugänglich. Eine der Dateien enthält fortlaufend alle bisher gesammelten Daten und wird alle paar Tage aktualisiert werden. Die Daten findest du unter public/radmessers/.

Aktuell erfasse ich folgende Daten:

  • id – Nummer des Datensatzes, also des Überholvorgangs
  • datetime – Datum Uhrzeit
  • cyclistspeed – Geschwindigkeit des Radfahrenden laut GPS in km/h, mit einem Dezimalpunkt als Trenner
  • spacerwidth – Ueberhang des Abstandshalters links über das Lenkrad in cm
  • distance – Gemessener Abstand in cm (exklusive Rückspiegel des Fahrzeugs); diesen kann man mit einem durchschnittlichen Wert von 10 cm bei jedem Überholvorgang abziehen. So hat man es beim Radmesser-Projekt des Tagesspiegel gemacht.
  • vehicletype – Fahrzeugtyp, Auto, Motorrad, Lkw, etc.
  • tracktype – 0 = Landstraße, 1 = Stadt, weitere möglich
  • optraffic – Opposit traffic; 0 = es gab keinen Gegenverkehr, 1 = es gab Gegenverkehr
  • incurve – 0 = Gerade, 1 = in Kurve überholt
  • honked – 0 = nicht gehupt, 1 = gehupt
  • wswiperactive – windscreen wiper, 0 = ohne Scheibenwischer, 1 = Scheibenwischer beim Überholen aktiviert

Da ich einen Radmesser von Zweirat Stuttgart zugeschickt bekommen habe, sollen hier alle Informationen dazu hinterlegt werden. Ein Teil dessen könnte dann in Zukunft ins Github-Repo des Projekts wandern.

Der Radmesser gibt sich per Bluetooth als Pulssensor aus. Über eine App kann man die Daten z. B. mit einer Android-App aufzeichnen und später zusammenführen.

Der Sensor misst im Betrieb in jeder Sekunde so schnell und so oft wie möglich die zu dieser Zeit auftretenden Abstände und meldet dann einmal pro Sekunde den kleinsten Wert davon als Puls über Bluetooth.1)

Das Gerät hat einen von außen zugänglichen Micro-USB-Anschluss zum Aufladen des Akkus und einen Ein-/Aus-Schalter. An ist das Gerät, wenn der Schalter zum USB-Port zeigt.

Den Code für die Programmierung als auch die Druck-Daten für das Gehäuse gibt es auf Github, siehe hier.

Vorderseite mit Ultraschallsensor
Rückseite (verschraubt)
Oberseite mit Befestigungsmöglichkeiten
Micro-USB-Port und An-/Aus-Schalter

Akku

Akku hat eine Kapazität von 1,1 Ah. Das interne Ladegerät 1 A. Wenn das verwendete externe Ladegerät 1 A liefert, sollte der Akku des Abstandsmessers in ca. 1 h geladen sein.

Beim Laden leuchtet eine rote LED im Gehäuse. Das Gerät ist geladen, sobald die grüne LED leuchtet; da jedoch das Gehäuse selbst rot ist, sieht das dann eher aus, wie ein schach leuchtendes rot.

Setup

Damit die Daten später gut zusammengeführt werden können, sollten die Uhren der Kamera und des Smartphones möglichst genau eingestellt sein oder zumindest gleich. Bei guter Ortskenntnis und einer Software, die die gemessenen Abstandswerte auf einer Karte darstellt, ist die Uhrzeit nicht so wichtig.

Befestigung am Fahrrad

An meinem Fahrrad habe ich den Radmesser an der Unterseite des Oberrohrs befestigt. Am Radmesser gibt es zur Befestigung an der Oberseite zwei abgerundete „Schlaufen“ durch die man Kabelbinder durchschieben kann; oder auch ein Band oder ähnliches. Letzteres ist besser, damit man es im Regen abnehmen kann. Das Gehäuse ist nämlich nicht regendicht.

Eingetragen als Offset (Breite des Lenkers von der Mitte bis zur Außenkante links) im Gerät habe ich 43 cm; das erledigt man mit der App „BLE Scanner“, siehe unten.

Der Lenker meines Fahrrads ist von der Fahrradmitte aus gemessen bis zur äußersten Außenkante (inklusive Rückspiegel) 45 cm breit. Da der Abstandsmesser mittig am Fahrrad angebracht ist und circa 4 cm breit ist, habe ich die halbe Gehäusebreite vom Offsetwert abgezogen.

FIXME Höhe sollte auch relevant sein bei der Montage, damit die Karroserie ausgewertet wird und nicht die (runde) Stelle ab den Fenstern, FIXME gibt es überhaupt so große Fahrräder.

FIXME Ausrichtung möglichst waagerecht? FIXME

Aktuell ist der Abstandsmesser etwas tiefer befestigt und liefert bessere Ergebnisse:

Lenkerbreite im Radmesser einstellen

Mit der App BLE Scanner stellt man die Breite in Zentimetern von der linken Kante des Sensors zur linken Kante des Lenkers bzw. des am weistesten abstehenden Punktes des Fahrrads ein. Dieser Wert wird dann automatisch vom gemessenen Abstand abgezogen, der per Bluetooth als Puls an das Smartphone gesendet wird.

  • Connect drücken beim „Polar H7 xxxxxx“-Gerät → Ganz unten „Custom Service“ öffnen → Bei „Custom Characteristic“ auf das „W“ drücken. Wert in Zentimetern eingeben und OK drücken. Der Wert ist nun im Radmesser eingespeichert und die App kann wieder deinstalliert werden.

RunnerUp konfigurieren

Mit Radmesser koppeln

Mit der App RunnerUp werden die Daten vom RadmesserS aufgenommen. Der Radmesser wird als Pulssensor in der App hinzugefügt und wenn man unterwegs ist, werden dessen Daten über diese App aufgezeichnet. Später können die Daten über eine entsprechende Software mit den GPS-Daten und dem Video zusammengeführt werden.

  • Settings → Heart Rate Monitor → Scan → „Bluetooth SMART (BLE)“ → „Polar H7 xxxxxx“ → Connect → raus aus Einstellungen → Hauptmenü → „Start GPS“ → Unten rechts wird jetzt ein Herzsymbol angezeigt mit dem aktuellen Abstand.

Bei Smartphones von Samsung darf nicht der Batterie-Sparmodus aktiviert sein, weil dann kein GPS verfügbar ist, sobald das Display länger als ein paar Minuten aus ist. Bei anderen Smartphones könnte das ähnlich sein.

Export der Daten

In RunnerUp auf „History“ drücken, die Aktivität auswählen mit einem Druck und diese dann teilen und so irgendwohin speichern oder versenden. Format muss „gpx“ sein.

Alternativ lässt sich RunnerUp auch so konfigurieren, dass automatisch alle aufgezeichneten Tracks in ein Verzeichnis auf dem Smartphone abgelegt werden. Dann ist keine Interaktion notwendig. Dies bietet sich an, wenn man z. B. Syncthing nutzt, um Daten zwischen Smartphone und PC zu synchronisieren.

Zum Einrichten öffnet man die „Settings“, drückt dann auf „Accounts“ und drückt den „Connect“-Knopf rechts des kleinen Verzeichnis-Symbols an.

Dann wählt man das Zielverzeichnis aus und stellt als Format „GPX“ ein.

Dann aktiviert man „Automatic Upload“ und drückt dann „OK“.

Aufzeichnung der Daten

RadmesserS einschalten, RunnerUp starten, abwarten, dass sich RunnerUp mit dem RadmesserS verbindet, auf GPS-Fix warten und Aktivität starten. Am Ende die Aktivität stoppen und das Ergebnis speichern.

Wenn die Synchronisation der Zeit auf Smartphone und Kamera nicht ganz passt, dann kann man sich auch eines Tricks bedienen: Zum Synchronisieren eine Uhr-App auf dem Smartphone starten und mit der Kamera filmen. Dann sieht man den Unterschied und kann diesen dann bei der Betrachtung der gpx-Daten einbeziehen.

Oder man verwendet eine Software, die zu jedem aufgezeichneten Punkt eines Tracks auch den Abstand (den Puls) anzeigt, wie z. B. GPXLab (siehe unten).

Bisher stürzte die App einmal ab, nachdem ich viele Kilometer aufgenommen hatte und in der App zwischen verschiedenen Ansichten wechselte (Karte, Diagramm, …). Deshalb bietet es sich an, jedes Mal, wenn man eine Pause macht, auch die Aktivität zu stoppen und zu speichern, statt nur zu pausieren. Für die Auswertung ist es unerheblich, ob man eine Datei hat oder 100.

Was die Rohdaten enthalten

In der exportierten GPX-Datei sind die einzelnen Punkte alle x Zeit enthalten, aus denen sich die gefahrene Strecke ergibt und zwischendrin auch für jede Sekunde der gemessene Abstand in Zentimetern (als Pulsdaten (:hr = Heart Rate) gekennzeichnet). Der maximale Wert von 255 kommt vom Sensor; größere Werte werden nicht erfasst. Da alle Daten einen Zeitstempel enthalten, lässt sich auch ohne spezielle Software eine Zuordnung zu den Abständen eines Videos realisieren, sofern die Zeiten auf Kamera und Smartphone übereinstimmen. Wenn die Uhrzeiten nicht ganz stimmen, so muss man den Unterschied ermitteln und das dann immer umrechnen.

Ein Datensatz mit Abstandsdaten (als Puls angegeben) sieht so aus: 2)

  <trkpt lon="8.123456" lat="48.123456">
    <time>2019-07-20T17:57:36Z</time>
    <extensions>
      <gpxtpx:TrackPointExtension>
      <gpxtpx:hr>95</gpxtpx:hr>
      </gpxtpx:TrackPointExtension>
    </extensions>
  </trkpt>

Je nach App können die Uhrzeiten als UTC+0 (das Z am Ende von 2019-07-20T17:57:36Z steht für Zero3)) gespeichert sein. In Deutschland entspricht die Winterzeit (Normalzeit) UTC+1 und die Sommerzeit UTC+2. D. h. aktuell (Juli 2019) auf dieses Beispiel bezogen ist die Uhrzeit in den Rohdaten (GPX-Datei) zwei Stunden weniger als auf der Kamera, die die Sommerzeit anzeigt. D. h. die Szene auf der Kamera ist für obiges Beispiel bei 19:57:36 zu finden.

Auswertung der Daten

Daten am PC zusammenführen

FIXME gpxlab anleitung, wie man es benutzt; auf Unterseite.

Da es unwahrscheinlich ist, dass der Rückspiegel eines Autos bei der Abstandsmessung erfasst wird, muss dieser noch manuell vom Abstand abgezogen werden. Da jedes Fahrzeug andere Rückspiegel hat, kann man das leider nicht als statischen Wert hinterlegen.

Optional kann man noch eine feste Breite des Rückspiegels von Autos in den Offset einprogrammieren (siehe „Lenkerbreite im Radmesser einstellen“). Die sind zwar in der Regel verschieden, man könnte aber trotzdem der Einfachheit halber einen festen Wert von 10 cm nutzen, wie das auch beim Radmesser-Projekt des Tagesspiegel getan wurde.4)

FIXME Overlay ins Video mit Windows-Anwendung; optional in VM.

Probleme

Es traten Messfehler in folgenden Situationen auf:

  • Benutzen der Airzound kurz vor einer Messung, während einer Messung oder kurz nach einer Messung.
  • Knatternder Motor eines Motorrats beim Überholen.
  • Selbst bei freier Straße werden ab und zu Dinge gemessen; hängt das mit Musik zusammen, die ich fast immer per Bluetooth-Box höre?
  • FIXME

GPX Zeit

Todo

  • Script, das mehrere GPX dateien eines Tages zu einer GPX-Datei merged.
  • Script, das alle Uhrzeiten einer GPX-Datei um xx Sekunden vor oder zurück anpasst.
  • Script, das eine GPX-Datei ausliest und aus allen Punkten eine mit dem CSV-Format kompatible Liste aller dieser Punkte erstellt. Dann muss ich beim Validieren nicht mehr alles manuell kopieren, sondern nur noch die nicht benötigtem Punkte/Zeilen zwischendrin löschen und die fehlden Daten wie „geschätzte Geschwindigkeit des Überholenden“ eintragen. Dabei sollten auch die Koordinaten drin bleiben.
  • Script, das vor dem Hochladen aus den Daten die Koordinaten löscht. Später kann man diese möglicherweise hochladen.
  • Überlegen, welche Erkenntnisse man vermitteln möchte und dazu ein Repo aus verschiedenen Plots erstellen.
    • Hier wäre Hilfe von Menschen schön, die sich mit sowas auskennen; sollte mit matplotlib und Python gelöst sein.
  • Am Ende alles ins Github pushen.
1)
Das sind ca. 20 - 40 Werte pro Sekunde. Je näher das Auto, desto schneller eine Messung, weil die Software dann einen Wert bekommt und nicht auf das Timeout wartet.
2)
Es ist möglich, noch viele Daten mehr wie Genauigkeit, Geschwindigkeit usw. in der GPX-Datei hinterlegen zu lassen, wenn man in RunnerUp den Haken für „Genauigkeit hinzufügen“ aktiviert
verkehr/projekte/abstandsmesser/radmessers.txt · Zuletzt geändert: 2019/08/22 03:06 von Natenom