Programmieren mit Python: Algorithmus für Linien in Voxelgittern

Computergeschichte für die Zukunft: Wir haben einen alten Algorithmus zum Zeichnen von 2D-Linien für 3D erweitert und ganz modern mit Numpy implementiert.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen

(Bild: Thorsten Hübner)

Lesezeit: 16 Min.
Inhaltsverzeichnis

Digitale Scans der physischen Welt helfen beim Planen, Dokumentieren, Archivieren und taugen als Basis, um die Zukunft zu visualisieren. Ein Scan der eigenen Wohnung wäre ganz schön praktisch und die nötigen Sensoren kosten nur noch knapp 100 Euro. Ein Roboter könnte die dafür nötigen Daten zusammentragen. Doch eine Software muss diese Daten zu einem Modell zusammenfügen, damit man sie sinnvoll nutzen kann.

Programmieren in Python

Alle Photonen aus einem Laser haben die gleiche Wellenlänge, weshalb sie sich beim Überlagern auslöschen oder verstärken. Die dabei entstehenden Interferenzmuster kann man auswerten, um Time-of-Flight-Sensoren zu bauen, die Entfernungen entlang des Laserstrahls messen. Das geht in Millisekunden, weshalb nichts dagegen spricht, den Laser mit einem schnell rotierenden Spiegel durch die Gegend zu schwenken und systematisch die Entfernung zu Tausenden Punkten zu messen. Da eine Apparatur, die das macht, an ein Radar erinnert, werden die Sensoren als "Licht-Radar", kurz "Lidar" bezeichnet.

Staubsaugerroboter nutzen das Prinzip, um 2D-Karten ihrer Wohnung zu erstellen; selbstfahrende Autos integrieren gleich mehrere solcher Sensoren, die Umgebung und Gegenverkehr sogar in 3D abbilden. Archäologen nutzen auf ein Stativ montierte Lidar-Sensoren, um Pharaonengräber und Steinzeithöhlen zu digitalisieren. Die Daten fallen nur leider in einem unpraktischen Datenformat aus dem Lidar: je ein Entfernungswert und zwei Winkel für Rotation und Nicken. Für Sensorfusion, das Zusammenrechnen der Messwerte mehrerer Sensoren, und nutzbringende Weiterverarbeitung wäre es viel praktischer, die Daten auf Voxel umzurechnen. "Voxel" steht für volumetrische Pixel, also Raumwürfel statt flacher Quadrate, aus denen sich die Darstellung zusammensetzt.