6 Punkte von GN⁺ 2025-04-20 | 4 Kommentare | Auf WhatsApp teilen
  • PiLiDAR ist ein laufendes Projekt, das Raspberry Pi 4, LDRobot LiDAR, Raspberry Pi HQ Camera und einen Schrittmotor kombiniert, um einen DIY-360°-3D-Panoramascanner zu bauen
  • Zu den Kernfunktionen gehören benutzerdefinierte serielle Treiber für LD06·LD19·STL27L, die Erzeugung von 6K-360°-Kugelpanoramen und die Erstellung von 3D-Szenen durch das Zusammensetzen von 2D-Ebenen anhand von Winkel und Offset
  • Panoramen werden erstellt, indem Fischaugenfotos mit Hugin gestitcht werden; der Weißabgleich wird durch EXIF-basierte Belichtungskonstanz und iterative Optimierung der Farbverstärkung angepasst, und 3D-Szenen sampeln die vertex color aus dem Panorama
  • Die Ergebnisse können mit Open3D visualisiert und als PCD·PLY·e57 exportiert werden; für die Ausrichtung mehrerer Szenen werden global registration und ICP-Feinabstimmung verwendet, für die Oberflächenerzeugung Poisson Surface Meshing
  • Die Teilekosten liegen ohne Stromversorgung mit Stand April 2025 bei etwa 200–280 US-Dollar; Poisson Surface Meshing ist auf dem Pi4 sehr langsam, daher wird die Ausführung auf einem PC empfohlen

Was PiLiDAR baut

  • PiLiDAR ist ein Projekt zum Selbstbau eines 360°-3D-Panoramascanners auf Raspberry-Pi-Basis und ist derzeit als Work in Progress gekennzeichnet
  • Der Aufbau ist grob in drei Teile gegliedert
    • LiDAR: benutzerdefinierte serielle Treiber für LDRobot LD06, LD19 und STL27L
    • Panorama: Erzeugung einer 6K-360°-Kugelkarte
    • 3D Scene: Aufbau einer 3D-Szene durch Zusammensetzen von 2D-Ebenen anhand von Winkel und Offset

LiDAR-Verarbeitungsfunktionen

  • Der LiDAR-Treiber enthält eine CRC-Paketintegritätsprüfung
  • Das Hardware-PWM des Raspberry Pi verwendet rpi_hardware_pwm und wird per Kurvenanpassung kalibriert
  • Unterstützt 2D-Live-Visualisierung und Export
    • Exportformate sind numpy oder CSV

Erzeugung von Panoramen und 3D-Szenen

  • Das 6K-360°-Kugelpanorama wird erzeugt, indem Fischaugenfotos mit Hugin Panorama photo stitcher gestitcht werden
  • Die Kamerabelichtung wird konstant gehalten, indem die EXIF-Daten automatisch aufgenommener Bilder gelesen werden
  • Der Weißabgleich wird durch iterative Optimierung der Farbverstärkung konstant gehalten
  • Die 3D-Szene wird durch Zusammensetzen von 2D-Ebenen auf Basis von Winkel und Offset aufgebaut
    • Dabei wird die vertex color aus dem Panorama gesampelt
    • Unterstützt Open3D-Visualisierung sowie den Export nach PCD, PLY und e57
    • Für die Ausrichtung mehrerer Szenen werden global registration und ICP-Feinabstimmung verwendet
    • Poisson Surface Meshing ist auf dem Pi4 sehr langsam, daher wird die Ausführung auf einem PC empfohlen

Vorläufige Ergebnisse und Scan-Zeit

  • Die vorläufigen Ergebnisse basieren auf einem einzelnen Scan und wurden ohne Registration und Nachbearbeitung erzeugt
  • Externe Scans werden als Beispiel mit colormapped intensity gezeigt, interne Scans mit vertex color
  • Beispielhafte Scan-Zeiten sind wie folgt
    • Initialisierung: 12 Sekunden
    • Aufnahme von 4 Fotos: 17 Sekunden
    • 0,167° × 0,18°-Scan: 1 Minute 24 Sekunden
    • Stitching und Bereinigung: 37 Sekunden

Hardware-Konfiguration und Kosten

  • Als LiDAR wird eines von drei Modellen verwendet
    • LDRobot LD06: 80 US-Dollar
    • LDRobot LD19: 70 US-Dollar
    • LDRobot STL27L: 160 US-Dollar
  • Kamera und Objektiv bestehen aus einer Raspberry Pi HQ Camera mit ArduCam M12 Lens und sind mit 60 US-Dollar angegeben
  • Raspberry Pi 4 ist mit 50 US-Dollar, NEMA17 42-23-Schrittmotor und A4988-Treiber mit 10 US-Dollar angegeben
  • Für die Stromversorgung gibt es zwei Varianten
    • v1: 2 18650-Batterien und ein Step-Down-Converter
    • v2: 10.000-mAh-USB-Powerbank und ein Step-Up-Converter
  • Die Gesamtkosten liegen ohne Stromversorgung mit Stand April 2025 bei etwa 200–280 US-Dollar
  • Kauf-Links sind nur Beispiele und nicht zwingend empfohlene Bezugsquellen

Motor, Getriebe und 3D-Druck

LiDAR-Spezifikationen und serielles Protokoll

  • LD06-Spezifikationen
    • Abtastfrequenz: 4500Hz
    • baudrate: 230400
    • Scanfrequenz: 5~13Hz
    • Distanz: 2cm~12m
    • Umgebungslicht: 30kLux
  • STL27L-Spezifikationen
    • Abtastfrequenz: 21600Hz
    • baudrate: 921600
  • Ein LD06-Paket hat insgesamt 48 Byte und verwendet eine Big-Endian-Struktur
    • Startzeichen: 1 Byte, fester Wert 0x54
    • Datenlänge: 1 Byte, derzeit fest auf 12 Messpunkte
    • Geschwindigkeit: 2 Byte, Winkel pro Sekunde
    • Startwinkel und Endwinkel: jeweils 2 Byte, Einheit 0,01 Grad
    • Daten: 36 Byte, 12 Datenpunkte × 3 Byte
    • Jeder Datenpunkt besteht aus 2 Byte Distanz und 1 Byte luminance
    • Zeitstempel: 2 Byte, Einheit ms; beginnt nach Erreichen von 30000 erneut zu zählen
    • CRC check: 1 Byte
  • Der Winkel jedes Datenpunkts wird durch lineare Interpolation zwischen Startwinkel und Endwinkel berechnet

Raspberry-Pi-Anschluss und Einrichtung

  • Der Anschluss von LD06 oder STL27L besteht aus UART Tx, PWM, GND und VCC 5V
  • Für die GPIO-Verbindungen des Raspberry Pi werden folgende Pins verwendet
    • LD06 UART0 Rx: GP15
    • LD06 PWM0: GP18
    • Power Button: GP03
    • Scan Button: GP17
    • A4988 direction: GP26
    • A4988 step: GP19
    • A4988 microstepping mode: GP5, GP6, GP13
  • Der Power Button ist fest mit Pin 3 verdrahtet und gpio-shutdown ist aktiviert
  • Beim GY-521-MPU-6060-Beschleunigungssensor wird i2c-GPIO verwendet, um benutzerdefinierte I2C-Pins zuzuordnen, da GPIO3 für den Power Button verwendet wird
    • SDA: GPIO22
    • SCL: GPIO27
  • Der Scan Button wird über ein GPIO-Interrupt-Skript als systemd-Dienst registriert und automatisch gestartet
  • UART-Berechtigungen werden entweder vorübergehend für /dev/ttyS0 gesetzt oder per udev-Regel im neuen Verfahren mit der Gruppe dialout und MODE="0660"

Software und Remote-Arbeit

  • Für das Hardware-PWM des Raspberry Pi wird das Overlay pwm-2chan aktiviert und die RPi Hardware PWM library installiert
  • Für Panorama-Stitching werden Hugin und das enblend-Plugin installiert
  • Zur Steuerung der Stromversorgung von USB-Ports wird das CLI-Tool uhubctl verwendet
  • Jupyter wird für den Remote-Netzwerkzugriff mit den Optionen --ip und --no-browser gestartet
  • Für die Open3D-Visualisierung aus der Ferne wird statt des Open3D Web Visualizer eher Plotly empfohlen
    • Plotly scheint clientseitig zu rendern
    • Der Open3D Web Visualizer rendert hostseitig und streamt JPG-Sequenzen, was CPU und WLAN des Pi belastet

Speicherung von Scan-Daten und Fehlerbehebung

  • Um Scans auf USB-Speicher zu dumpen, ist ein Verfahren zum Klonen und Installieren von usb_dump enthalten
  • In der Konfigurationsdatei wird /home/pi/PiLiDAR/scans als Quellverzeichnis angegeben
  • Die Fehlerbehebung umfasst unter anderem
    • CP210x Universal Windows Driver für Windows
    • RPi.GPIO RuntimeError: Failed to add edge detection, verursacht durch die Entfernung der sysfs-GPIO-Schnittstelle in Raspberry Pi OS Bookworm
    • als Alternative die Verwendung von rpi-lgpio
    • Deaktivieren der Hardwarebeschleunigung, wenn VS Code auf dem Raspberry Pi schlecht läuft
    • Da es kein pye57-Wheel für Raspberry Pi arm64 gibt, nach Installation von libxerces-c-dev aus dem Quellcode bauen
    • Verfahren zum Hinzufügen von WLAN-Einstellungen per SSH mit wpa_supplicant.conf

Referenzimplementierungen und Inspiration

4 Kommentare

 
GN⁺ 2025-04-20
Meinungen auf Hacker News
  • Wirklich cool. Bei einem Hardware-Produkt würde ich empfehlen, beim Erstellen der Stückliste (BOM) Links und geschätzte Kosten mit anzugeben.
    Die Preise werden sich ändern, aber eine grobe Kostenspanne hilft enorm dabei, etwa auf HN zu entscheiden, ob man es selbst ausprobieren will. Entscheidend ist nicht die exakte Zahl, sondern die ungefähre Größenordnung.
    Was man bereits recherchiert hat, sollte man festhalten. Selbst wenn nicht für andere, dann für das zukünftige Ich. Viele Bauteile haben verwirrende Namen; mit Links lässt sich leichter prüfen, ob es dasselbe Teil ist. Und während des Projekts hat man die Teile ohnehin schon gekauft, also hat man Links und Preise vorliegen, was kaum zusätzliche Zeit kostet.
    Nach ein paar Tagen oder Wochen erinnert sich niemand mehr daran, also muss man es dokumentieren. 10 Sekunden Notieren können später 30 Minuten erneutes Suchen ersparen. Das war eine der wichtigsten Lektionen, die ich zu Beginn als Ingenieur gelernt habe, und man muss gegen den dummen Teil im Kopf ankämpfen, der flüstert: „Das spart keine Zeit.“ Bei Code-Dokumentation ist es genauso.[0]
    Nach grob 15 Minuten Suche sehen die Werte ungefähr so aus und können ungenau sein. Beim Lidar ist es eines von LD06 $80 https://www.aliexpress.us/item/3256803352905216.html, LD19 $70 https://amazon.com/DTOF-D300-Distance-Obstacle-Education/dp/…, STL27L $160 https://www.dfrobot.com/product-2726.html, Kamera und Objektiv $60 https://amazon.com/Arducam-Raspberry-Camera-Distortion-Compatible/dp/…, Raspberry Pi 4 $50, NEMA17 42-23 Stepper $10 https://www.amazon.com/SIMAX3D-Nema17-Stepper-Motor/dp/B0CQLFNSMJ
    Selbst ohne Netzteil und Buck Converter liegt man bei etwa $200–$280.
    [0] Als ich den Code zum ersten Mal schrieb, wussten nur ich und Gott, was da passiert; inzwischen weiß es nur noch Gott.

    • Solche Lernprojekte dürften wegen extremer Zölle und der Abschaffung der Freigrenze für Kleinsendungen deutlich schwerer zugänglich werden.
      Je nach Quelle und Anzahl der Lieferungen muss man die Stücklistenpreise womöglich mit 2 oder 3 multiplizieren.
      Es ist wirklich deprimierend, wenn der Zugang zu günstigen, guten Lernmaterialien, mit denen man Kindern und Erwachsenen Elektronik näherbringen kann, durch Steuern im Namen von Dingen wie der Verbesserung der Wettbewerbsfähigkeit der USA verschwindet. Ein komplettes Eigentor.
    • Es ist auf GitHub, also kann man helfen, indem man einen Stücklisten-PR schickt.
    • Ich weiß, was ein Buck Converter ist, frage mich aber, warum er „buck converter“ heißt.
      Im Wörterbuch finde ich keine Bedeutung, die in Richtung „die Menge von etwas reduzieren“ geht. [0]
      Wikipedia behandelt die Etymologie auch nicht näher. [1]
      [0] https://www.merriam-webster.com/dictionary/buck
      [1] https://en.wikipedia.org/wiki/Buck_converter
    • Erstaunlich, dass so etwas für Unternehmen wie Tesla zu teuer sein soll.
    • Das ist der undankbarste Kommentar, den ich heute gesehen habe: jemanden dafür anzufahren, dass er es „so hätte machen sollen“.
      Dann mach es doch selbst.
      Aus der Perspektive von jemandem mit Familie, der viel zu wenig Zeit hat: Schon ein Projekt fertigzustellen ist anstrengend genug, und zur Dokumentation kommt man wahrscheinlich kaum. Wenn ich später alles noch einmal machen müsste, würde ich es vielleicht einfach lassen. Nicht jeder lebt im Keller seiner Mutter und hat freie Zeit übrig.
  • Der eigentliche Scanner ist hier: [1]
    Maximale Reichweite 12 m, und ab diesem Punkt scheint es teuer zu werden. Lichtquelle, Filter und Sensor müssen alle besser werden.
    Für die meisten kleinen Roboter ist das ausreichend, und es könnte auch als Zusatzsensor für autonome Fahrzeuge taugen, um Kinder und Hunde rund ums Auto zuverlässig zu erkennen. Aber ein oben montiertes Langstrecken-LIDAR bleibt weiterhin schwierig.
    [1] https://www.ldrobot.com/

    • Ich würde gern wissen, woher dieser Preisanstieg tatsächlich kommt. Beim Suchen findet man dazu kaum etwas.
      Meine erste Vermutung wäre, dass ab dieser Reichweite Lasersicherheit zu einem aktiv geregelten Prozess wird. Der Spiegel eines Laserscanners muss sich ständig bewegen, damit sich keine für die menschliche Netzhaut schädliche Energie ansammelt; daher braucht man ein sicherheitskritisches Steuersystem, das Spiegelgeschwindigkeit und -position kontinuierlich überwacht und den Laser abschaltet, wenn er zu langsam wird. Wie sehr liege ich daneben?
  • Vieles war in den „guten alten Zeiten“ besser, aber es ist wirklich erstaunlich, in einer Zeit zu leben, in der talentierte Einzelpersonen solche Technologien selbst bauen können.

  • In losem Zusammenhang: Ich suche eine günstige Möglichkeit, auf etwa 300 mm Abstand Distanzen mit ungefähr 10 Mikrometern Genauigkeit zu messen. Hat jemand eine Idee?

    • Das klingt nach dem Bereich von Digital Readouts (DROs), wie sie bei Fräsmaschinen und Drehbänken verwendet werden.
      my mechanics hat vor ein paar Tagen ein Austauschvideo hochgeladen; die vorhandene Ausrüstung hatte eine Genauigkeit von 5 Mikrometern.
      Beim Preis bin ich mir nicht sicher.
    • Wichtig ist, ob sich der zu messende Abstand stark bewegt und ob das Messsystem ihn berühren oder daran befestigt werden kann.
      Mit einem guten Paar Messschiebern scheint das machbar. Je nach Genauigkeitsanforderung könnte man denselben Ansatz verwenden: ein Gitter aus kapazitiven Zellen, das über eine Messzelle gleitet, während ein Mikrocontroller beim Bewegen die Werte ausliest und anschließend Atan2() für das Endergebnis verwendet. Nur der Meter-/Anzeige-Teil davon wird separat DRO (Digital ReadOut) genannt.
    • Ich hatte ein ähnliches Problem und musste eine kundenspezifische Vorrichtung bauen, die peinlich teuer war. Deshalb würde ich empfehlen, zuerst nach einem DRO-Kit für CNC-Fräsmaschinen zu schauen.
      Wenn das Budget keine Rolle spielt, gibt es auch fertige Closed-Loop-Stage-Lösungen:
      https://www.pi-usa.us/en/
      https://xeryon.com
      Viel Glück – und mach dich auf einen Preisschock gefasst.
    • Ich habe ein paar Ideen für ein DIY-Systemdesign; entscheidend ist, wie viel Geld und Zeit du in Experimente stecken kannst.
      Außerdem ist wichtig, was für dich „günstig“ bedeutet.
      Ich denke darüber nach, so etwas in diese Richtung zu automatisieren:
      https://youtu.be/hnHjrz_inQU?si=dNzXVBVFsr7e8m_6
      Auch Standard-Laser und Kamerasensoren können beim DIY-Basteln ziemlich unerwartete Präzision liefern.
    • Zur Inspiration lohnt sich auch das hier: https://youtu.be/qMYBwbTIL-0
  • Das Sketchfab-Beispiel ist fantastisch. Man kann sich durch den 3D-Raum bewegen, als wäre es eine Science-Fiction-Simulation.
    Allerdings ist die Mausbedienung extrem verwirrend. Es erscheint ein „Greifen“-Icon, aber tatsächlich fühlt es sich nicht nach Greifen an, und die Bewegungsrichtung ist umgekehrt, sodass es sich völlig unnatürlich anfühlt.

  • Solche Teile könnte man vermutlich auch aus Saugrobotern von eBay oder Goodwill ausbauen.

    • Mit „solche Teile“ sind hier LIDAR-Sensoren gemeint.
  • Wirklich beeindruckend. Ich habe das Projekt nur grob überflogen, vielleicht ist es also schon enthalten, aber ich frage mich, ob es Genauigkeitsdaten gibt.
    Zum Beispiel die Genauigkeit bei 10 m Entfernung – falls dieses LIDAR bei dieser Distanz nicht arbeitet, würde mich auch eine kürzere Entfernung interessieren.
    Mit FARO-Scannern bin ich vertraut; sie verwenden einen anderen Mechanismus und sind für das Vermessen von Gebäuden ausreichend genau.
    Mir ist klar geworden, dass der Scanner-Markt viele Segmente hat, darunter Leute, die Genauigkeit brauchen, und Leute, die Inhalte für Medien wie Spiele erstellen. Dieses Projekt ist wirklich kaum zu glauben.

  • Ich habe mich in letzter Zeit etwas mit Photogrammetrie beschäftigt, um Innenräume und Flächen zu scannen. Bisher scheint Metashape am besten zu passen, aber die Präzision ist noch nicht besonders gut, und ich verbessere noch meine Aufnahmetechnik.
    Das Hauptziel ist, reale Gebäudeinnenräume in digitale Modelle für Erhaltung und Analyse zu überführen. LIDAR hatte ich kurz in Betracht gezogen, aber als zu schwierig und teuer beiseitegelegt; dieses Projekt scheint diese Annahme infrage zu stellen.
    Mich würde interessieren, wie die Nachbearbeitungssoftware aussieht. Kann man eine Punktwolke erzeugen und sie mit anderen Daten wie DSLR-Fotos zum Texturieren kombinieren?
    Auf dem zweiten Bild[1] sieht man, dass ein Teil der Wand wegen der hängenden Lampe nicht gescannt wurde, und wahrscheinlich konnte das LIDAR auch die Oberseite des Sofas nicht sehen. Kann man zwei oder mehr Punktwolken zusammenführen, um hinter Objekte und Kanten zu schauen? Kann die Software anhand gemeinsamer Wände oder Punkte automatisch ausrichten, dass es sich um denselben realen Raum handelt, oder muss man ziemlich viel manuell nachjustieren? Gibt es bei LIDAR etwas Entsprechendes zu coded targets oder ARTag[0]? Lässt sich das auf mehrere Räume skalieren?
    Ich frage mich, ob es sich im Vergleich zu gut gemachter Photogrammetrie lohnt, oder ob es nur mehr Aufwand bedeutet.
    Entschuldigung für die Fragen auf dem Niveau „ich weiß nicht einmal, was ich nicht weiß“.
    0: https://en.wikipedia.org/wiki/ARTag
    1: https://github.com/PiLiDAR/PiLiDAR/raw/main/images/interior....

    • Das ist zwar unverhohlene Werbung, aber wenn du ein iPhone Pro oder iPad Pro mit integriertem Lidar hast, solltest du Dot3D einmal ausprobieren. Es bietet alle von dir beschriebenen Funktionen und ist auf einfache Bedienung ausgelegt.
  • Danke fürs Teilen dieser großartigen Arbeit. Mich interessieren Skalierbarkeit und Performance von PiLiDAR, wenn es auf große Outdoor-Datensätze angewendet wird.
    Falls ihr es auf Datensätzen wie SemanticKITTI oder nuScenes gebenchmarkt habt, könntet ihr etwas zu Laufzeit, Speicherverbrauch und dazu sagen, wie gut es über die in der Arbeit verwendeten Innenraumszenen hinaus generalisiert?

    • Ich glaube, hier liegt ein Missverständnis vor. Korrigiert mich gern, falls ich falsch liege, aber das ist kein Modell zur Datenverarbeitung, sondern ein DIY-LIDAR-Scanner zur Datenerfassung.
      Solche Datensätze werden meistens mit RGBA-Kameras erstellt, und die Punktwolken werden später in der Nachbearbeitung erzeugt.
      Es ist also kein Verarbeitungsmodell, sondern ein Hardware-Hack, um echte Tiefendaten zu erfassen. Du kannst damit scannen, was du willst.
  • Genau das habe ich vor ein paar Wochen gesucht. Ich hatte seit Wochen Teile bei Amazon im Warenkorb, um ungefähr so etwas zu prototypen, war mir aber bei der eigentlichen Auswahl des LIDAR-Scanners nicht sicher.
    Wenn ich aus dem Osterurlaub zurück bin, werde ich mir das als Ausgangspunkt ansehen.

 
chcv0313 2025-04-22

Was ist die Taschenlampen-Community?

 
savvykang 2025-05-03

https://www.reddit.com/r/flashlight/
Das ist ein kleines Reddit-Subforum, das in Korea in etwa der Taschenlampen-Minor-Galerie von DC Inside entsprechen würde.

 
chcv0313 2025-05-20

Danke.