Low-cost smoothness Messung

Hallo,

kürzlich habe ich mit Lasertriangulationbzw. dem Lichtschnittverfahren (https://de.wikipedia.org/wiki/Lichtschnitt) für optische Profilmessung experimentiert.
Hierfür habe ich mir einen einigermaßen brauchbaren Linienlaser für ca. €15 gekauft, als Aufnahmegerät dient bei mir eine normale Spiegelreflexkamera mit Stativ, eine gute Smartphonekamera sollte aber auch gehen.
Die Kamera sollte im optimalen Fall so eingestellt sein, dass kein Pixel auf der Laserlinie überbelichtet ist. Das jpeg der Kamera wird dann mit einem Python-Skript eingelesen, daraus wird dann das Oberflächenprofil zunächst in Pixeln berechnet. Am Ende der Laserlinie auf dem Bild habe ich ein Referenzobjekt gelegt, mit den bekannten Dimensionen des Referenzobjektes lässt sich dann das Profil in mm angeben.

Was derzeit noch nicht drin ist:

  • Hochpassfilterung des Profils, um übliche Rauheitsparameter (https://de.wikipedia.org/wiki/Rauheit#Rauheitskennwerte_am_Profil) wie Ra, Rq oder Rz zu ermitteln und Linsenfehler zu eliminieren
  • Messung bei Umgebungslicht, momentan sind Messungen nur bei geringer Umgebungsbeleuchtung zuverlässig. Prinzipiell müsste das aber auch bei normalem Umgebungslicht einigermaßen funktionieren mit zwei Aufnahmen die korreliert und danach voneinander subtrahiert werden.
  • Benutzerfreundlichkeit

Für die Messung mit ca. 1-1.5m Abstand zur Oberfläche habe ich eine Messungenauigkeit von geschätzt ca. 0,3mm erreicht

Messung auf gepflasterter Oberfläche:

Messung auf frisch angelegtem Asphaltweg

Nun die Frage:
Wäre es denkbar, dass man mit den Messwerten der Oberflächenrauheit von Wegen den smoothness-key auf irgend eine Art objektiver gestalten könnte?
Ich bin z.B. ab und zu mit den Inline-Skates unterwegs, und finde die Differenzierung von smoothness=excellent und smoothness=good nicht optimal.
Auf langen Wegen machen raue Stecken einfach keinen Spaß. (Problematisch sind bei manchen Rollen auch Fugen längs des Weges, aber das ist eine andere Geschichte.)

ich stelle mir etwa eine Skala vor wie z.B.
smoothness=excellent: Rz=xx-xx mm
smoothness=good: Rz=xx-xx mm

Dazu eventuell angeben, dass smoothness messtechnisch ermittelt wurde und was genau der Messwert war.
Eventuell könnte man auch einen Inline-spezifischen Wert einführen, z.B. den RMS-Wert der Auslenkung eines Rades mit x mm Durchmesser, der über das Profil rollt. hochfrequente Anteile im Profil und tiefe schmale Gräben wären hier eher irrelevant.

Problematisch ist, dass der Messwert nicht genau reproduzierbar ist, je nachdem an welcher Stelle des Weges man misst.

Messgeräte sind relativ einfach und kostengünstig zu bauen, den Bauplan und die Umrechung würde ich open source zur Verfügung stellen. Denkbar wäre eine Smartphone-App die alle nötigen Berechnungen durchführt, das liegt allerdings weitab meiner Fähigkeiten.

Gibt es Interesse an den Thema oder ist das eher nichts für OSM?

Was es nicht alles gibt und was manche für Ideen haben. Finde ich gut und interessant, wenn auch weniger was für mich. Was mich interessieren würde. Kommt es beim Profil nicht auch darauf an, in welchem Winkel du den Laser und die Kamera auf den Boden richtest? Oder wird dies durch das Referenzobjekt ausgeglichen? Und meinst du das funktioniert auch auf bspw. Feldwegen?
Und wer weiß, wenn man da ein wenig weiter tüftelt, dann kommt da vielleicht was raus, dass alle paar Meter eine solche Messung macht und diese Daten dann automatisch in OSM integriert werden können. :wink: Veröffentliche doch einfach mal den Code und das Projekt. Möglicherweise gibt es ja Mitentwickler…

Ja, die Winkel sind eigentlich schon relevant, vor allem aber für die Auflösung. Das Referenzobjekt ist ja bekannt, dann muss man nur noch die vom Referenzobjekt verursachte Linienänderung im Bild in Pixeln messen und hat damit ein Maßstab px/mm Höhe und px/mm Länge.

Auf Feldwegen müsste das auch funktionieren, wenn nicht grade Gras oder Blätter in der Laserlinie liegen, sonst misst man eben nicht nur die Oberfläche sondern auch den Grashalm mit.

Ist in Arbeit. Es fehlt noch ein wenig Dokumentation und den Code müsste ich auch mal etwas ausmisten. Außerdem muss ich noch mit git oder sowas umgehen lernen, bin ja kein Informatiker :slight_smile:

Puh…nunja, da Du sicher nicht jeden dazu bekommen wirst, die smoothness-Messung annähernd genauso genau und damit auch detailliert zu bringen, ist die Idee eines entsprechenden Experten-Untertags gar nicht mal so abwegig.
Aber für den Otto-Normal-Tagger sollte es bei smoothness=xyz bleiben, für Experten könnte man den dann m.E. besser so hinzufügen
smoothness:xyz:Rz=12345

Interessant! Die Herausforderung für eine praktikable Messung von “Unebenheit” (zB Bodenwellen) über “Rauheit” hinaus wird es sein, die Aufnahmeapparatur in einem gemittelten konstanten Abstand über dem Weg zu halten.

Guck Dir mal an, was die Straßenforscher von der BASt machen:

http://www.bast.de/DE/FB-S/Fachthemen/gs4-zeb/zeb.html

Hallo jlcod,

das hört sich ja schon recht interessant an.

Beim Einsatz von Spiegelreflex- und spiegellosen Systemkameras mit Wechselobjektiven würde ich vorher eine Kamerkalibration durchführen und mit einem Stück Klebeband Zoomring (falls es kein Festbrennweitenobjektiv ist), Fokusring arretieren, da solche eine Kalibration nur für eine Zoom-Fokus-Kombination gilt. Für die Kamerakalibration mit Schachbrett-artigen Kalibrationsfeldern gibt es entsprechende Methoden in OpenCV (das hast du vermutlich eingesetzt, oder?). http://www.janeriksolem.net/2014/05/how-to-calibrate-camera-with-opencv-and.html

Was für Belichtungszeiten hast du denn? Wenn die kurz genug wären, könnte man das ja hinten oder vorne an ein Fahrzeug klemmen und während eine Straßennetz abfahren.

Eine Spiegelreflex (Nikon D90) und eine 35 mm-Festbrennweitenobjektiv habe ich schon. Was kostet der von dir verwendete Linienlaser?

Viele Grüße

Michael

Die Welligkeitsmessung habe ich bisher noch nicht gemacht, theoretisch sollte das aber auch möglich sein. Problematisch ist hier dann die Verzerrung des Objektivs, das man wie Nakaner beschreibt kalibrieren müsste.

Da ich nachts mit sehr niedrigem ISO fotografiert habe, waren es bei den Bildern ca. 1/5 bis 1/2s. Wenn man wirklich die Rauheit bei der Fahrt erfassen möchte, müsste man extrem schnell belichten (und einen sehr hellen Laser haben), da die ‘Poren’ im Asphalt ja auch im mm-Bereich liegen. 30km/h wären bei 1mm erlaubter Bewegung schon 1/8333 s Belichtungszeit nötig. Bei der Welligkeit wären die Anforderungen nicht so hoch. Aber wie gesagt, gegen das Umgebungslicht müsste man sich noch etwas ausdenken.

der Laser war der hier https://secure.picotronic.de/laserfuchs/product_info.php/info/p263_RESTPOSTEN–Linienlaser-Strichlaser-rot-650nm-3mW-90—3-4-5VDC-Glaslinienoptik-mit-zus–tzlicher-Schu.html/XTCsid/jsvqjg0chv9g1acnapddslijv0. Dazu habe ein Batteriegehäuse mit Schalter für 3xAA bei ebay gefauft für wenig Geld.
Übliche Linienlaser haben eine Kunstofflinse und damit eine weniger fokussierte Linie, daher habe ich Glas bevorzugt. Für weniger Anforderungen gibte Linienlaser auch bei Shops für Tabletop-Spiele.

nein, OpenCV habe ich noch nicht verwendet.

Meine Idee der Anwendung wäre ja folgende: Man clipst an das Smartphone einen (auszziehbaren?) Stab an, an den man vorne den Laser befestigt und legt ein Referenzobjekt auf den Boden. evtl. wäre ein kleines Stativ sinnvoll. Der Laser wird angeschaltet, ein Bild aufgenommen, der Laser ausgeschaltet und ein weiteres Bild aufgenommen. Die App erledigt dann den Rest.

Das Skript gibts nun unter https://github.com/kolg/light-section_script. Beispielaufnahmen fehlen noch.

edit:
Bezüglich der Montage am Auto zur Ebenheitsmessung habe ich nochmal nachgedacht, prinzipiell würde sowas schon funktionieren, allerdings eher nicht sehr günstig, da eine schnelle Videokamera und ein leistungsfähiges Bildverarbeitungssystem (FPGA, etc…) nötig wäre. Außerdem kommt man wohl in Konflikt mit der Straßenverkehrs-Zulassungs-Ordnung bezüglich den am Fahrzeug angebrachten lichttechnischen Einrichtungen.

Hier an der Schweizer Grenze gibt es eine Firma die sucht händeringend Programmierer die sich mit digitaler Bilderfassung/auswertung auskennen. Hintergrund ist die optische/digitale Erfassung von Minderprofil bei Reifen auf der Straße. Die haben sogar ein Vesuchsfeld an der B34 unter einer Brücke (zwecks Abschattung).

[Oops, mittlerweile wurden sie wohl ubernommen: [url]http://www.maha.de/maha-uebernimmt-procontour.htm?rdeLocaleAttr=de[/url] Neuer Arbeitsort wäre wohl Allgäu :wink: ]

Ciao
Ryu

Meine steinzeitliche Messmethode: Inliner anschnallen und dort wo es Spaß macht “smoothness=excellent”, ansonsten “smoothness=good” oder noch schlechter. Ansonsten ist mir bei Asphalt-Strecken aufgefallen, dass man mit den Inlinern deren Alter sehr genau feststellen kann. Soll heißen je Älter die Teerstrecke desto poröser (Verwitterung) ist sie auch, es sei den die Straßenbaufirma hat von Anfang an Billigasphalt aufgebracht.
Fazit: Hiermit möchte ich darauf hinweisen, dass auch der Wartungsaufwand für “super genau eingetragene Rauheitseigenschaften” steigt. Die Rolleigenschaften von Fahrbahnen werden jährlich schlechter … .

Ansonsten: Interessant auf was für Ideen manche kommen … .

Das stimmt, alte Strecken sind manchmal spürbar schlechter. Lediglich Spurrinnen auf Straßen werden manchmal glatter, aber da darf man sowieso meist nicht fahren.
supergenau sollte es sowieso nicht sein, lediglich eine Hilfe für das derzeit eher subjektive smoothness. Die Inline-Messmethode ist auch gut, liegt aber auch nicht jedem. :slight_smile:

So faszinierend die Methode ist, ihr wird kein großer Erfolg gegönnt sein, da der Aufwand verhältnismäßig hoch ist, sodass sich nicht viele finden lassen werden, die an dieser Art der Erfassung teilnehmen werden.

Nun ja, das kommt darauf an wie man das umsetzt. Wenn man es den Leuten einfach macht, dann kann ich mir schon vorstellen, dass es einige anwenden würden. Vor allem wenn es quasi “nebenbei” geht, wie bspw. Mapillary. Das Teil an das Fahrzeug oder das Rad und auf dem Weg zur Arbeit oder bei einem Ausflug produziert man Daten für OSM.

Und für das Problem, dass es jährlich schlechter wird: dann gibt man einfach das Messdatum mit an und so können dann Renderer die Werte hochrechnen, mit früheren Messungen vergleichen, angeben, wo mal wieder eine Messung nötig wäre, usw.

Ich mag ja auch alle Arten von Low Cost 3D-Anwendungen, und finde das Projekt daher - unabhängig von einem Einsatz bei OSM - toll!

Man könnte eine Straßenqualitätskarte erstellen?!
Aber ob das nicht mit den ohnehin in allen smartphones verbauten bewegungssensoren einfacher ginge?

Ja, warum nicht? Dazu müsste halt die Qualität von smoothness passen und die ist bisher, trotz guter Beschreibung, meiner Meinung nach immer noch zu sehr subjektiv.

Du könntest uns ja an deinen Ideen/Gedanken teilhaben lassen, warum du denkst, das es eventuell einfacher ginge. Ich stelle dazu gleich mal folgende Überlegung auf, warum ich denke das dies nicht so einfach ist: Wir beide fahren mit einem Samsung Galaxy S3, am Lenker befestigt Fahrrad … du mit einem 10bar aufgepumpten Rennrad, ich mit einem 3bar aufgepumpten full-suspenion trailbike.

Ich bin zwar nicht gefragt, wenn es Referenzstraßen gäbe, wäre es die Frage, ob man aufgrund dieser Daten via Statistik nichts machen könnte. Notwendig wäre vermutlich, dass diese Auswertung von Seiten von OSM stattfindet und nicht vom Mapper. Denn dein Fahhrad verändert auch seine Vibrationen beim gleichen Übergang. Die Frage ist, ob Gesetzmäßigkeiten dahinterstecken.

Vielleicht könnte man tatsächlich aufgrund von den Beschleunigungssensordaten wenn man eine große Datenmenge hat die “eigenschwingung” durch das individuelle Fahrrad modellieren (und dann vom Signal abziehen), so dass man dann doch Aussagen über die Oberflächenbeschaffenheit treffen kann. Ich würde das aber eher nicht so hoffnungsvoll sehen - ich denke, da sind zuviele Störeinflüsse da, die das Ergebnis dann nicht nutzbar machen. Aber versuchen könnte man es!

Was auch gehen könnte wäre das mittels Structure from Motion-Algorithmen zu machen, also on-the-fly ein 3D-Modell errechnen zu lassen. Ginge aus normalen RGB-Bildern, aber auch mit RGBD-Sensoren wie der Kinect und einer Prozessierung wie KinFu o.ä. hintendran (http://codewelt.com/kinect3dscan )

Bezüglich der Messung mit Beschleunigungssensor:
Ja, theoretisch könnte man das Fahrrad modellieren, problematisch aus Ingenieurwissenschaftlicher Sicht hierbei ist, dass das System ein wenig zeitvariant (Luft geht langsam aus dem Reifen raus oder wird manchmal wieder aufgepumpt), aber vor Allem nichtlinear ist (z.B. ist das Signal beim Überfahren eines rechteckförmigen Objektes mit 1cm Höhe und Länge nicht genau das Signal beim Überfahren eines rechteckigen Objektes mit -1cm Höhe und 1cm Länge mit umgekehrtem Vorzeichen). Dies liegt hauptsächlich am Rad selbst, wenn der Raddurchmesser gegen Null gehen würde, wäre die Messung linearer… :slight_smile: . Dazu kommt der Störeinfluss Mensch beim Radfahren und evtl Vibrationen durch die Mechanik, die Geschwindigkeit spielt ebenfalls eine Rolle. Für grobe subjektive Messungen (eben oder uneben) könnte so etwas tauglich, für quantitative Messgrößen eher untauglich sein.

Bezüglich der Straßenqualitätskarte noch einige Gedanken:
Je nach Definition der Straßenqualität müsste man die gesamte Breite der Straße erfassen können, bei einer superebenen Straße könnten ja auch tiefe Schlaglöcher irgendwo sein, die man z.B. mit dem Rad umfahren würde. Spurrillen fallen mir hierzu auch ein. Der Link von Pfad-Finder

zeigt rechts auf dem dritten Bild von oben ein Messsystem das das kann. Für OSM-Zwecke vielleicht etwas überdimensioniert… :slight_smile:

Sollte mit einem Raspberry machbar sein…über die Kamera eine Seiten/Mittelstreifenerkennung + Beschleunigersensor dazu… :roll_eyes: :sunglasses:

Das mit Beschleunigersensor hatte ich mir vor Jahren mal ausgedacht…aber damals gabs noch keine günstigen Mini-PCs die ohne dicken Bleiakku ausgekommen wären :wink: Den Sensor hatte ich an der vorderen Federgabe und nicht am Fahrrad geplant (!!!). Man will ja die Bodenbeschaffenheit und nicht das Rütteln des Fahrrads erfassen - was vor allem bei einem vollgefederten Fahrrad am Rahmen total sinnlos wäre, da dieser schon beim Kurbeln losrüttelt :roll_eyes: An der Federgabel, mit entsprechender Kalibrierung, sollte man ganz genau Asphalt, Schotter, Waldweg, “schlechter” Feldweg und “Offroad” erfassen können. Je länger die Federgabel, desto genauer das Ergebnis.
Auf die Idee kam ich, als ich vor etwa drei oder vier Jahren mein damals erstes Smartphone am Rahmen als Actioncam befestigt habe. Die Kamera war vorne Am rahmen und hat die Federgabel mit im Blickfeld gehabt. Da hat man deutlich die Unterschiede zwischen den Bodenblägen und der dazu gehörigen Federbewegung gesehen :slight_smile:

Mittels Photogrammertrie könnte man sogar durch seitliche Kameraaufnahmen die Umgebung aufnehmen - ala Streetview, aber halt in 3D. Zwei aufeinanderfolgende Bilder können zu einem 3D-Modell umgerechnet werden. Durch die Einschränkung der Auflösung (Full HD) könnte die Erkennung auf vielleicht 10-20 Meter gut funktionieren - oder man schießt halt Fotos mit bis zu 5 Megapixeln, was dann allerdings auch länger für die Berechnung braucht. Ob ein Haus da ist (sogar mit Anfang und Ende), Bäume (Wald) usw… Wenns nur nicht so kompliziert wäre zu programmieren :wink:

Aktueller Raspberry mit Quadcore kostet 38 €. Die Kamera dazu um 20 €. Display gibts ab 15 € (2-5"). Android geht auch drauf, falls man es als GPS-Navi/Logger mit Standard-Apps nutzen will, ohne jetzt was zu basteln/programmieren zu müssen.
Beschleunigersensor-Module gibts ab 8…10 €.

Dann vergiss aber nicht, noch die Wegbreite zu erfassen. Sollte doch eigentlich noch einfacher sein oder? :slight_smile: